kafka的相关要点总结

1.kafka每个节点叫做broker,producer向kafka发送消息时,是将消息发送给指定的topic。同时每个topic下面还细问分partition,具体到每条消息细分到哪个partition,是根据消息的key参数以及配置的partition规则来的,由于多个partition的存在,所以针对同一个topic,其吞吐量更高,并发性也越强
2.partition中消息都是直接追加写到尾部的,这种顺序记录的方式其实比随机访问内存还快,从而使得读取消息也是能够顺序读取,速度也很快。
3.每个partition中又细分为segment,这是存储消息的最小物理单位,也是为了便于定时清理过期消息数据
4.kafka中有LEO(LogEndOffset:日志最后位置)和HW(highWaterMark:副本同步位置)的概念,其中LEO为每个partition的log最后一条日志的位置,HW为consumer能够看到的此partition的位置。一般来说,HW是要等到所有kafka follower都确认同步好partition后的partition的位置。LEO有可能不会等于HW的。
5.kafka并没有利用zookeeper来选举leader,而是利用zookeeper来记录每个partition的信息的,记录的信息有:每个consumer对应消费的partition的offset,consumer group中消费partition对应的consumer id,每个分片partition的副本同步状态等等
6.kafka选举:kafka leader负责所有的write和read(这点跟zookeeper好像不一样,zookeeper的leader负责write,follower可以read)候选kafa必须是已经同步了kafka lead所有commit的消息的follower中选举出来,这样能保证消息丢失的最小化
7.kafka的消息传送:默认都是以sync方式发送,也可以手动设置为async形式发送,虽然提高了效率,但是增大了丢失消息的风险。producer发送消息时,原则是是exactly once,但是还是存在at least once的可能:比如producer与kafka的网络中断,producer无法收到kafka的ack确认消息,会重试多次,这里就造成了at least once.
8.kafka会保证topic下面的每个消息只被consumer group下面的一个consumer消费,一个consumer会对应到一个topic下面的一个或者多个partition,一个partition只会被一个consumer group下面的consumer对应消费
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值