第三章 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 记录
  • 消费者注册
相关推荐
lifallen34 分钟前
Kafka 内存池MemoryPool 设计
数据结构·kafka·apache
在未来等你5 小时前
Kafka面试精讲 Day 7:消息序列化与压缩策略
大数据·分布式·面试·kafka·消息队列
在未来等你5 小时前
Kafka面试精讲 Day 10:事务机制与幂等性保证
大数据·分布式·面试·kafka·消息队列
iiYcyk7 小时前
kafka如何保证消息的顺序性
分布式·kafka
PXM的算法星球1 天前
ZooKeeper vs Redis:分布式锁的实现与选型指南
redis·分布式·zookeeper
THMAIL1 天前
量化基金从小白到大师 - 金融数据获取大全:从免费API到Tick级数据实战指南
人工智能·python·深度学习·算法·机器学习·金融·kafka
楠枬1 天前
Curator 如何实现分布式锁
分布式·zookeeper
喂完待续1 天前
【Big Data】Apache Kafka 分布式流处理平台的实时处理实践与洞察
分布式·kafka·消息队列·big data·数据处理·序列晋升
mask哥1 天前
详解flink性能优化
java·大数据·微服务·性能优化·flink·kafka·stream
hqxstudying1 天前
Kafka 深入研究:从架构革新到性能优化的全面解析
java·开发语言·微服务·kafka·springcloud