做网站主要来源,wordpress怎么社交分享插件,免费网站建设视频教程,自己可以做电子商务网站定位#xff1a;kafka是一款分布式#xff0c;高吞吐量#xff0c;基于发布/订阅的消息中间件。
核心组件#xff1a;
broker#xff1a;kafka服务器#xff0c;负责消息的存储和转发。
topic#xff1a;主题#xff0c;消息的类别#xff0c;kafka按照topic分类消…定位kafka是一款分布式高吞吐量基于发布/订阅的消息中间件。
核心组件
brokerkafka服务器负责消息的存储和转发。
topic主题消息的类别kafka按照topic分类消息。
partition:分区一个topic可以有多个partition分区topic中的消息保存在各个partition上。
offset偏移量。消息在kafka消息文件中的位置可以理解为消息在partition上的偏移量也是代表该消息的唯一序号。
producer:消息的生产者。
consumer:消息的消费者。
consumer group: 消费组消费者的分组每个消费者分组必须要属于一个group
zookeeper配置中心保存kafka集群的broker,topic,partition等信息另外还负责broker的故障发现,partition的leader选举负载均衡等。 Kafka的存储设计
partition分区数据文件offset,messageSizedata
partition中的每条message包含3个属性offset表示这个消息在partition中的偏移量可以看作每个消息的消息顺序id。messageSIze则是消息的大小data为消息的内容。
数据文件分段segement顺序读写分段命令二分查找
partition物理上是由多个segement文件组成每个segement文件大小相同顺序读写。而且每个segement文件都是以当前文件中offset最小的值命名.log这样我们查offset消息时就可以很快二分查找定位到这个offset消息在哪个segement文件中。
数据文件索引分段索引、稀疏存储
kafka为每个segement文件建立了索引文件文件名与segement文件名相同.index。但是kafka并没有给每一条消息都建立索引而是采取稀疏索引的方式每隔一定字节的数据建立索引从而避免索引文件过大因此可以将索引文件放入内存中。 生产者设计负载均衡
由于topic是由多个partition组成且partition均匀分布在不同的broker上因此为了有效的利用broker的集群性能提高吞吐量producer会通过hash或者随机等方式将消息平均发送到多个partittion上以实现负载均衡。
批量发送
批量发送也是提高吞吐量的重要方式Producer端可以在内存中合并多条消息以一次请求的方式批量发送给不同的Broker从而大大减少broker存储消息时的io操作所以也一定程度上影响消息的实时性但是换取了更好的吞吐量。
消息压缩
producer端可以用GZIP或者Snappy对消息集合压缩。producer端压缩后consumer也需要解压压缩解压需要消耗少量cpu资源但是好处是减少传输的数据量减轻网络压力在大数据处理上往往瓶颈体现在网络上而不是cpu。
消费者设计
consumer group
同一 Consumer Group 中的多个 Consumer 实例不同时消费同一个 partition等效于队列模 式。partition内消息是有序的Consumer通过pull方式消费消息。Kafka不删除已消费的消息 对于partition顺序读写磁盘数据以时间复杂度O(1)方式提供消息持久化能力。