kafka 中相关组件topic、broker、producer、consumer原理及负载均衡策略 |
您所在的位置:网站首页 › consumer名词 › kafka 中相关组件topic、broker、producer、consumer原理及负载均衡策略 |
目录 1.kafka2.topic3.broker4.producer5.consumergroup6.负载均衡策略1.kafka kafka是类jms消息队列,与jms不同的是,kafka可以有多个消费者consumer主动拉取数据。 2.topic topic是逻辑上:一个目标发送目的地,物理上:一个磁盘上的partition的目录。 一个topic可以对应多个partition; 一个partition可以划分多个segment; 一个segment的默认值是1G; 一个segment包括index 和 log 文件。 注意点: topic不仅可以设置partition,还可以设置replication number,并且在多个replication中选取leader。 该主从模式与mysql的主从不同,此模式下所有的读写操作均通过leader管理,而mysql的主从则是为了读写分离。在kafka中,读写操作都是leader; 在mysql中,leader负责写,follower负责读。 3.producer producer负责数据生产到broker中,producer决定数据分发策略,默认使用key的哈希值对分区数取模算法,该算法和hdfs中partition算法相同。 4.broker broker是当前服务器上运行的kafka的实例,在kafka集群中每一个broker对应一个唯一的ID,即brokerId。 broker不关心数据何时生产,何时消费,它只关心数据存储。 5.consumergroup consumergroup是数据消费组,该组可以设置多个,组与组之间消费的数据都是一样的; 在同一个组内可以有多个consumer,在同一个组内的成员共同消费一个topic数据,组内成员不能重复消费数据。 6. 负载均衡策略 分组策略:数据如何分组默认是 (key.hashcode)%numPartitions。 安全策略:消息是否确认接收ack机制, 0是不等待broker返回确认消息, 1是等待topic中某个partition的leader保存成功statement, -1是等待topic中某个partition所有副本都保存成功statement。 保存策略:消息如何保存在理论环境下,broker按照顺序读写的机制,可以每秒保存600M的数据。主要通过pagecache机制,尽可能的利用当前物理机器上的空闲内存来做缓存。当前topic所属的broker,必定有一个该topic的partition,partition是一个磁盘目录,partition的目录中有多个segment组合。 存放策略:partition与broker 关系partition轮询依次访问broker,这样负载均衡在多个broker上。 消费策略:partition与consumergroup关系理想策略是一个consumer对应一个partition; 若consumer数量大于partition数量,则会出现空闲的consumer; 若consumer数量小于partition数量,则使用如下算法: 假如topic, 具有如下partitions: P0,P1,P2,P3 加入group中,有如下consumer: C1,C2 首先根据partition索引号对partitions排序: P0,P1,P2,P3 根据consumer.id排序: C0,C1 计算倍数: M = [P0,P1,P2,P3].size / [C0,C1].size, 本例值M=2(向上取整) 然后依次分配partitions: C0 = [P0,P1],C1=[P2,P3], 即 Ci = [P(i * M),P((i + 1) * M -1)] 有序策略:信息消费全局有序性数据生产可以做producer集群,数据存储可以做broker集群,数据消费可以做consumergroup; 倘若保证消息消费的全局有序,则保证数据生产有序,数据存储有序,数据消费有序。 若满足一个producer,一个partition,一个consumer,则可以保证数据消费的全局有序。
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |