Kafka学习笔记【一】-原理

一、kafka的重要概念
[img]http://dl2.iteye.com/upload/attachment/0129/8524/54960e7a-89c9-38c5-ae37-e67b89baa1fb.jpg[/img]
1. kafka 分为 Producer、Consumer、Broker,基于topic发布与订阅消息。
2. 一个topic可以分多个partition,每个partition可以分布在不同的broker中。
3. 物理存储主要依赖partition。
4. 每个totic可以设置 Replications,因此物理存储partition也会有多个Replications。partition的replication中只有一个leader作为读写用。
5. producer负责产生消息,当往broker中放消息失败时可重发。
6. consumer负责消费消息,并维护消息消费pos, 这里的pos是对应partition中的位置。
7. 一个topic有多个partition的时候,每个partition能够保证内部有序,但不能保证跨partition的顺序。因此绝对有序,每个topic只能有一个partion,这影响性能。如果一个topic分多个patition,多个patition可以并发读写,可以提升性能,但是只能保证相对有序。
[img]http://dl2.iteye.com/upload/attachment/0129/8526/75905e53-5fe3-393d-8c28-83e26f155507.png[/img]
8. 一个topic可以被多个consumer group订阅, 每个consumer维护自己的pos.broker可以设置消息的生存时间,只有超过这个时间才会被删除,否则消息将一直存留。只要消息还没有被删除,consumer也可以更改pos重复消费。
9. consumer group包含多个consumer, 一个partition只能被consumer group中的一个consumer消费。因此consumer group中的consumer数量建议小于等于topic的partition数量,多了就会有consumer没有分配partition的浪费。
[img]http://dl2.iteye.com/upload/attachment/0129/8530/46488c94-adbc-36c6-a69b-990815c53940.png[/img]
10.相同consumer group中的consumer可以并发消费同一个topic,因为读写的是不同的partition,因此提升了性能,且保证一个消息只被消费一次。
11. Kafka中的Producer和consumer采用的是push-and-pull模式, 即producer推消息,consumer主动拉消息。
12. producer 向kafka推消息的时候,可以设置(acks)等待多少个replications响应才返回。设置为0就是异步,可以提升性能,但有可能丢失。建议设置为1.
13、Kafka支持以消息集合为单位进行批量发送,以提高push效率
14、Kafka中会把消息持久化到本地文件系统中,持久化是批量刷新,保持效率。
15、建议消息大小不要超过1M
16、默认情况下,Kafka根据传递消息的key来进行分区的分配,即hash(key) % numPartitions
17、kafka server.properties中配置的num.partitions为集群总的partitions数量。如果集群中的机器配置的num.partitions不一致,会提示跟lead节点不一致。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值