Kafka如何保证高吞吐量

上一篇 << 下一篇 >>>Kafka集群环境搭建


如果单个消费者的话,吞吐量会非常低,如何保证呢?
采用工作队列+thread线程处理。

每个工作队列都应该一个Thread,如果有多个的话,消息顺序也会被打乱。

1.支持顺序读写磁盘实现数据存储

Kafka是采用不断的将数据追加到文件中,该特性利用了磁盘的顺序读写性能比传统的磁盘读写可以减少寻地址浪费的时间;

2.支持批量投递和获取消息,减少IO操作

传统方式消息投递:
在1s内有1W消息,循环遍历1W次投递到MQ中;非常浪费服务器内存,异步批量投递,可能会丢失。
可以将消息投递到缓存区中,在以定时或者/缓存大小方式将数据写入到MQ服务器中,这样可以减少IO的网络操作,但是这种方式也存在很大缺陷数据可能会丢失。【所以缓冲区都应该做到持久化】

3.采用零拷贝机制--可减少用户空间的拷贝

4.采用分区存放消息,根据Partition实现对我们的数据的分区

5.对我们的数据实现压缩,减少网络的传输


推荐阅读:
<<<消息中间件的核心思想
<<<消息中间件常见问题汇总
<<<基于Netty简单手写消息中间件思路
<<<消息队列常用名词与中间件对比
<< << << << << << << << << << << << << << << << << << << << << << << << << << << << << << << <<

你可能感兴趣的:(Kafka如何保证高吞吐量)