第三章 zookeeper+kafka群集

消息队列

概念

  • 消息(Message)是指在应用间传送的数据
  • 消息队列(Message Queue)是一种应用间的通信方式解决方法,确保消息的可靠传递

特征

存储

  • 将消息存储在某种类型的缓冲区中,直到目标进程读取这些消息或将其从消息队列中显式移除为止。

异步

  • 消息队列通过缓冲消息可以在应用程序中公开一定程度的异步性,允许源进程发送消息并在队列中累积消息,而目标进程则可以挑选消息进行处理

为什么需要消息队列

  • 解耦、冗余、扩展性、灵活性、峰值处理能力、可恢复性、顺序保证、异步通信

kafka

概念

  • Kafka 是一种高吞吐量的分布式发布/订阅消息系统
  • kafka 是 Apache 组织下的一个开源系统
  • 可以实时的处理大量数据以满足各种需求场景

kafka角色术语

|----------------------|-----------------------------------------------------------------------------------------------------------|
| 角色 | 说明 |
| Broker(经纪人) | Kafka 集群包含一个或多个服务器,每个服务器被称为 broker |
| Topic(主题) | 每条发布到 Kafka 集群的消息都有一个分类,这个类别被称为 Topic |
| Producer(生产者) | 负责发布消息到 kafka broker |
| Consumer(消费者) | 从kafka broker拉取数据,并消费这些已发布的消息 |
| Partition(分区) | Partition 是物理上的概念,每个 Topic 包含一个或多个 Partition,每个 partition 都是一个有序的队列。partition 中的每条消息都会被分配一个有序的 id(offset) |
| Consumer Group(消费者组) | 可以给每个 Consumer 指定消费组,若不指定消费者组,则属于默认的 group |
| Message(消息) | 通信的基本单位,每个 producer 可以向一个 topic 发布一些消息 |

kafka架构

zookeeper

概念

  • ZooKeeper 是一种分布式协调技术,所谓分布式协调技术主要是用来解决分布式环境当中多个进程之间的同步控制,让他们有序的去访问某种共享资源,防止造成资源竞争(脑裂)的后果。

工作原理

master启动

  • 各节点向 ZooKeeper 中注册节点信息,以编号最小算法选举出一个主节点,另外的节点就是备用节点,由 zookeeper 完成对两个 Master 进程的调度,和了主、备节点的分配和协作。

master故障

  • 如果主节点A发生了故障,这时候它在 ZooKeeper 所注册的节点信息会被自动删除,并会再次发出选举

master恢复

  • 如果主节点恢复了,它会再次向 ZooKeeper 注册自身的节点信息,但注册的节点信息编号会变小,因此不会称为 master,而是另一台节点继续担任 master

zookeeper架构

zookeeper集群主要角色有 server 和 client,其中 server 又分为 leader、follower 和 observer 三个角色

  • Leader:领导者角色,主要负责投票的发起和决议,以及更新系统状态。
  • follower:跟随着角色,用于接收客户端的请求并返回结果给客户端,在选举过程中参与投票。
  • observer:观察者角色,用户接收客户端的请求,并将写请求转发给 leader,同时同步 leader 状态,但是不参与投票。observer 目的是扩展系统,提高伸缩性。
  • client:客户端角色,用于向zookeeper发起请求。

zookeeper在kafka中的作用

  • Broker 注册
  • Topic 注册
  • 生产者负载均衡
  • 消费者负载均衡
  • 记录消息分区与消费者的关系
  • 消息消费进度 Offset 记录
  • 消费者注册
相关推荐
indexsunny7 小时前
互联网大厂Java面试实战:从Spring Boot到微服务架构的技术问答解析
java·spring boot·redis·微服务·kafka·jwt·flyway
AC赳赳老秦14 小时前
DeepSeek一体机部署:中小企业本地化算力成本控制方案
服务器·数据库·人工智能·zookeeper·时序数据库·terraform·deepseek
liux352816 小时前
MySQL -> Canal -> Kafka-> ES 完整数据同步流程详解
mysql·elasticsearch·kafka
Byte Beat17 小时前
使用docker单机部署kafka,以KRaft模式运行,不使用zookeeper,
docker·kafka·kraft
你这个代码我看不懂17 小时前
Kafka常见问题解答
分布式·kafka
小二·18 小时前
Go 语言系统编程与云原生开发实战(第8篇)消息队列实战:Kafka 事件驱动 × CQRS 架构 × 最终一致性(生产级落地)
云原生·golang·kafka
what丶k1 天前
深度解析:以Kafka为例,消息队列消费幂等性的实现方案与生产实践
java·数据结构·kafka
liux35282 天前
Kafka 4.1.1 部署指南:单机版与安全认证配置
安全·kafka·linq
Jackyzhe2 天前
从零学习Kafka:配置参数
分布式·学习·kafka
Go高并发架构_王工2 天前
Kafka Streams:流处理应用开发实战
分布式·kafka·linq