Kafka的结构、特点和原理(细节)

一、Kafka的结构

重点在于Broker的结构。每一个消息归宿于特定的Broker下的特定的Topic下特定的Partion。而这些对应关系则被ZooKeeper记录下来。

 二、特点

异步通信

一种典型的观察者模式的实现。

观察者模式—菜鸟教程

解耦

 可以并行的任务可以作为不同的消息放进消息队列,由多个系统并行处理。如上图当支付完成后,向消息队列中放入多个不同的任务(消息),后台系统通过订阅拉取对应的任务进行处理。即可做到解耦和异步通信。

削峰

 类似于延迟满足,通过拖延消息处理来缓解消息压力。

三、原理(细节)

由上面可以看出来,Kafka的结构可以理解为一个列表(Broker)套列表(Topic)套队列(Partion)。而消息本身就像树节点一样不具备记录自身路径的能力,记录树这个数据结构的就是ZooKeeper。

这里比较特殊的一点是:Kafka中的分区(Partion)可以分布在不同的服务器(broker)上,即一个主题可以跨越多个broker。Kafka保证的是分区有序而不是主题有序。分区(Partion)还有多个副本(Replica)用来进行容灾备份。多个副本之间是一主多从结构。

假设有三个主题P1-3,每个主题有1个分区,每个分区有三个备份(Kafka中的备份即是全部的主+从数目)。分布在4个Broker上。

 分区(Partion)由偏移量(Offset)进行指示:

 Last Committed Offset:Consumer最后提交的位置。

Current Position:Consumer当前读取的位置,但是还没有提交给broker。提交之后就变成Last Commit Offset。

High Watermark(HW):consumer不能读取超过HW的消息,因为这意味着读取到未完全同步(因此没有完全备份)的消息。

Log End Offset:当前的最新日志写入(或者同步)位置。

一个Leader,多个Follower。那么肯定有些和Leader完全同步,构成ISR集合。有些没有完全同步,构成OSR集合。所有的副本(Replica)即Total(Leader+Follower) 统称为AR,即AR=ISR+OSR。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值