kafka总结

来源:互联网 发布:淘宝客一淘活动广场 编辑:程序博客网 时间:2024/05/18 18:19

本文是我在学习kafka的过程中的一些随笔笔记,拿出来跟大家分享一下,后续我会继续更新。

大家如果想了解kafka的一些知识:http://blog.csdn.net/xiaoyu_BD/article/category/6377427


1.Consumer 的group 是在消费者里创建的,当使用不新的gropuid消费时,会在zk中注册新的gropuid,新的group的消费者只能
消费注册之后产生的消息。而不是在KafkaProperties配置里创建,也就是说只有指定消费一个新组的时候才会创建。
新group内的consumer消费的信息是在group创建之后produce的信息。创建之前的消息不会被消费。


2.同group里的不同consumer消费的信息是连续的


3.不同group的consumer可以消费同一个partition的消息


4.如果同group内有多个consumer,那么一个partition
将只有一个consumer能够消费


5.producer和consumer都是指定topic的


6.一个 Topic 中的每个 partions,只会被一个"订阅者"中的一个 consumer 消费,不过一个 consumer 可以
消费多个 partitions 中的消息。


7.kafka 的设计原理决定,对于一个 topic,同一个 group 中不能有多于 partitions 个数的 consumer 同时消费,否则将意味着某些
consumer 将无法得到消息


8.在创建Topic时候可以使用–partitions <numPartitions>指定分区数。
也可以在server.properties配置文件中配置参数num.partitions来指定默认的分区数。
分区时分区数最好是broker的整数倍,这样才能均匀分布。
          
9.可以通过指定key来制定分区


10.如果这个topic不存在,producer可以创建,但是我们需要保证auto.create.topics.enable参数设置成ture了(默认值就是true)。


11.partitions是属于某个topic的,而consumer group是kafka全局的,而不是某个topic。


12.一个partition只能是一个特定的consumer消费,不会出现一个partition被两个或更多的consumer消费


13.Kafka保证同一Consumer Group中只有一个Consumer会消费某条消息,实际上,Kafka保证
的是稳定状态下每一个Consumer实例只会消费某一个或多个特定 Partition的数据,而某个Partiti
on的数据只会被某一个特定的Consumer实例所消费。也就是说Kafka对消息的分配是以 Partition
为单位分配的,而非以每一条消息作为分配单元。这样设计的劣势是无法保证同一个Consumer 
Group里的Consumer均匀消费数据,优势是每个Consumer不用都跟大量的Broker通信,减少通
信开销,同时也降低了分配难度,实现也更简单。另外,因为同一个Partition里的数据是有序的
,这种设计可以保证每个Partition里的数据可以被有序消费。


14.如果某Consumer Group中Consumer(每个Consumer只创建1个MessageStream)数量少
于Partition数量,则至少有一个 Consumer会消费多个Partition的数据,如果Consumer的数量与
Partition数量相同,则正好一个Consumer消费一个 Partition的数据。而如果Consumer的数量多
于Partition的数量时,会有部分Consumer无法消费该Topic下任何一条消息。


15.auto.commit.interval.ms 配置在consumer中,单位ms。




16.enable.auto.commit=true (默认为true)
官网配置说明:If true the consumer's offset will be periodically committed in the background.
意思是:如果为true,consumer's offset将定期向zookeeper发送。
发送周期配置为:auto.commit.interval.ms 配置在consumer中,单位ms。




17.zookeeper客户端/controller_epoch -> int    (get controller_epoch)
此值为一个数字,kafka集群中第一个broker第一次启动时为1,以后只要集群中center controller中央控制器所在broker变更或挂掉,
就会重新选举新的center controller,每次center controller变更controller_epoch值就会 + 1; 


18.Topic分区中消息只能由消费者组中的唯一一个消费者处理,所以消息肯定是按照先后顺序进行处理的。但是它也仅仅是保证Topic的
一个分区顺序处理,不能保证跨分区的消息先后处理顺序。 所以,如果你想要顺序的处理Topic的所有消息,那就只提供一个分区。


19.生产者发送到一个特定的Topic的分区上的消息将会按照它们发送的顺序依次加入 
消费者收到的消息也是此顺序 
如果一个Topic配置了复制因子( replication facto)为N, 那么可以允许N-1服务器宕机而不丢失任何已经增加的消息


20.kafka如何重新消费已消费的消息??
创建一个新group消费者可以重新消费partitions的所有消息。但是groupid必须在消息producer之前在zk中注册,新group只能消费注册之
后的产生的消息。


21.如何删除group???
详见:

http://blog.csdn.net/xiaoyu_BD/article/category/6377427

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 垫江县沙坪镇 万州到垫江车票 垫江离重庆多远 垫江南山 垫片规格型号大全 石墨垫片 2017年国标垫片规格对照表 金属缠绕垫片 石墨缠绕垫片 平垫片规格表 防松垫片 钛垫片 止退垫片 板式换热器垫片 黄铜垫片 橡胶垫片厂家 橡胶密封垫片 滤网垫片 泡棉垫片 耐高温垫片 石棉橡胶垫片 耐油石棉垫片价格 金属缠绕垫片价格 石棉垫片厂家 螺丝绝缘垫片 陶瓷垫片 石棉密封垫片 缠绕垫片价格 紫铜密封垫片 垫片图片 聚四氟乙烯垫片加工 齿形垫片厂家 导热垫片厂家 密封垫片厂家 聚四氟垫片 塑料垫片 陶瓷纤维垫片厂家 硅胶密封垫片 金属缠绕垫片生产厂家 绝缘垫片 轮毂加宽垫片安全吗