第三章 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 记录
  • 消费者注册
相关推荐
数智启示录14 小时前
Apache Kafka Consumer 扩到 40 个仍不提速:Partition 上限锁死有效并行度 【Kafka合集】
数据库·经验分享·分布式·缓存·面试·kafka·apache
数智启示录14 小时前
Apache Kafka 幂等 Producer 的边界:Exactly-Once 到了 MySQL 为什么失效 【Kafka合集】
数据库·经验分享·分布式·mysql·面试·kafka·apache
数智启示录15 小时前
Apache Kafka 不只是消息队列:日志与 Offset 分离如何让事件可重放 【Kafka合集】
经验分享·分布式·面试·kafka·apache
数智启示录15 小时前
Apache Kafka 同 Key 仍会乱序:从分区 Offset 到业务可见的四道边界 【Kafka 合集】
大数据·数据库·经验分享·分布式·面试·kafka·apache
老周聊架构16 小时前
Flink 连接器与生态:Kafka Offset 提交修复与 MySQL Binlog 延迟指标
mysql·flink·kafka
小白羊丨1 天前
Kafka任务重试、退避与失败恢复怎么做?
分布式·kafka
zhougl9963 天前
从ZooKeeper到微服务生态:分布式协调核心原理
分布式·微服务·zookeeper
爱三盖浇饭3 天前
挑战从零开始学习Kafka2: Kafka 常见问题解决方案
学习·kafka
山鬼龙王3 天前
吃透 Kafka:一篇讲清楚核心原理和高频考点
kafka
pnoker5 天前
IoT DC3 消息总线:六适配器可插拔设计
物联网·架构·kafka·消息队列·rabbitmq