您的位置:首页 > 娱乐 > 明星 > 蚌埠app制作公司_网站建设企业邮箱_百度开户联系方式_国外引流推广平台

蚌埠app制作公司_网站建设企业邮箱_百度开户联系方式_国外引流推广平台

2025/7/23 14:34:43 来源:https://blog.csdn.net/weixin_38118016/article/details/142308921  浏览:    关键词:蚌埠app制作公司_网站建设企业邮箱_百度开户联系方式_国外引流推广平台
蚌埠app制作公司_网站建设企业邮箱_百度开户联系方式_国外引流推广平台

一、Kafka 主要用来做什么

作为消息系统:Kafka 具备系统解藕,流量削峰,缓冲,异步通信,扩展性,可恢复性等功能,以及消息顺序性保障和回溯消费

作为存储系统:Kafka 把消息持久化到磁盘,相比较基于内存存储的系统,降低了数据丢失的风险,可以将数据保留策略设置为永久或启用主题的日志压缩功能即可,这里我也没有见到过实际的应用,留在这里暂时作为了解即可

作为流式处理平台:未来需要时再研究

二、Kafka 的基本概念

1 Producer,Broker 和 Consumer

Kafka 体系架构包括若干个 Producer, 若干个 Broker,若干个 Consumer,以及一个 Zookeeper 集群。

Producer 将消息发给 Broker,Broker 负责将收到的消息存储到硬盘,而 Consumer 负责从 Broker 订阅并消费消息。

Zookeeper 主要负责管理 Broker 集群。

我们常说的 Kafka 集群,其实就这其中的若干个 Broker 组成的集群

2 Topic 和 Partition
2.1 理解概念

其实个人感觉这里的理解可以类比 Mysql,Topic 就是这个表的结构,消息就是表里面的每一行数据,Partition 就是分表。

同一个 Topic,Producer 可以发多个消息,这么多个消息都存储在不同的 Partition 上,并且通过 offset 来进行标识(类似 Mysql 里的主键 ID),不过 offset 并不跨区,就相当于 Mysql 不同分表里的主键 ID 一样

每一条消息被发送到 broker 之前,会根据分区规则来选择存储在哪个具体的分区

1.Kafka 同一主题下的不同分区包含的消息是不同的

2.Kafka 的分区可以分布在不同的 broker 上,所以一个主题可以横跨多个 broker,解决了单机 IO瓶颈问题,通过修改分区的数量,还可以实现水平扩展

2.2 Partition 和 Replica

2.2.1  Kafka 的分区有多副本 Replica 机制,不同的副本处于不同的 broker 上,当 leader 出现故障时,从 follower 中重新选举出新的 leader 副本对外提供服务。通过增加副本的数量,可以提升容灾的能力。

虽然 leader 宕机之后,可以故障转移快速选举出一个新的 leader,但是宕机的时候写入 leader 的消息,如果还没来得及同步,消息也一样会丢失。

这个时候需要在业务系统里实现补偿重试的逻辑,比如添加 ack 等到全部同步之后才认为是成功,否则就进行重试,再次发送消息到 Kafka 中。

Producer 和 Consumer 只和 leader 副本进行交互,follower 副本只负责消息的同步。

若 Kafka 有 10 个分区,3个副本,总体一共有 30 个副本,其中包含 10 个 leader 副本和 20个 follower 副本。

Kafka 消费端也具备一定的容灾能力,Consumer 使用 Pull 模式从服务端拉取消息,并且保存消费的具体位置?当 Consumer 宕机后恢复上线可以根据之前保存的消费位置重新拉取需要的消息进行消费,这样就不会造成消息丢失 ?  -- Consumer 都宕机了,offset 保存在哪?

2.2.2  理解 ISR,OSR 和 AR

分区里的所有副本统称为 AR(Assigned Replicas)

  • 与 leader 保持同步副本叫 ISR (In-Sync Replicas),包含 leader
  • 与 leader 副本同步滞后过多的副本叫 OSR (Out-of-Sync Replicas),不包含 leader

leader 宕机之后只会从 ISR 集合中选择下一个 leader

2.2.3  理解 HW,LEO 和 SR 之间的关系

HW (High WaterMark)高水位,可消费消息的最后一位 + 1

LEO(Low End Offset), 已有的消息的最后一位 +1,也是当前即将要写入最新消息的位置

消费者只能消费 HW 之前的消息,之后的消息表示还没有同步完成

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com