作者 | 蔡柱梁
审校 | 重楼目标
- 了解 Kafka 的重要概念
- 搭建 Kafka 服务端
- 使用SpringBoot 实现简单的 Demo
Kafka 在我们工作中最常扮演的三个角色:
- 消息系统
- 存储系统
- 流式处理平台
文章插图
上图(图出自于《深入理解Kafka核心设计与实践原理》)体现了 Kafka 的整体架构 , Producer 发送消息 , Kafka 将元数据存储在 ZK 中并交由ZK 管理 , Consumer 通过拉模式获取消息 。
- Producer
- Broker
- Consumer
上面的概念都是物理层面上的 , 但是在实际使用过程中还有很多逻辑方面的定义 , 这些概念也是需要了解的 。如果不了解 , 就算勉强写出了代码 , 但是自己还是一脸懵不知道自己都定义了什么 , 它们都有什么意义 , 估计离生产故障就不远了 。
接下来我们再去了解三个重要的逻辑概念:
- Topic(主题)
- Partition(分区)
- Offset(偏移量)
为了更好 , 更直观体现上面三者的关系 , 我们先一起看下图(图出自于《深入理解Kafka核心设计与实践原理》)
文章插图
该图展示了一个拥有4个 Partition 的 Topic , 而分区里面的阿拉伯数字就是 Offset(也表示着一条消息) , 虚线部分代表新消息可以插入的位置 。每条消息在发送到 Broker 之前 , 会先计算当前消息应该发送到哪个 Partition 。因此 , 只要我们设置合理 , 消息可以均匀地分配在不同的 Partition 上 , 当发现请求数量激增时 , 我们也可以考虑通过适当增加 Partition(Broker 也要增加)的方式 , 从而降低每个 Broker 的 I/O 压力 。
另外 , 为了降低消息丢失的风险 , Kafka 为 Partition 引进了多副本(Replica)机制 , 通过增加副本数量来提高容灾能力 。副本之间采用的是“一主多从”的设计 , 其中 Leader 负责读写请求 , Follower 则仅负责同步 Leader 的消息(这种设计方式 , 大家应该要意识到会存在同步滞后的问题) , 并且副本处于不同的 Broker 中 , 当 Leader 出现故障(一般是因为其所在的 Broker 出现故障导致的)时 , 就从 Follower 中重新选举出新的 Leader 提供服务 。当选出新的 Leader 并恢复服务后 , Consumer 可以通过之前自己保存的 Offset 来继续拉取消息消费 。
推荐阅读
- 如何通乳
- 草鱼习性详解,掌握后可搞清鱼道,快速诱鱼进窝
- 如何快速提高英语口语水平
- 孕妇肚子胀气怎么办快速解决方法
- 翡翠中的纹、裂、棉,一文搞懂
- 快速打通任督二脉的方法 打通任督二脉的方法
- 如何快速瘦腿瘦屁股
- 一文搞懂CSS line-height和vertical-align
- 什么是商用密码?数字时代商用密码为何重要?一文解读
- “一统美国”进程加快?特斯拉充电技术正快速发展成为美国行业标准