两个优秀的分布式消息流平台:Kafka与Pulsar剖析

本文向读者介绍两个优秀的分布式消息流平台:Kafka与Pulsar。Kafka与Pulsar。

Apache Kafka(简称Kafka)

Apache Pulsar(简称Pulsar)

基础功能:

(1)消息系统:

优点:

系统解耦:生产者与消费者逻辑解耦,互不干预。如果需要对消息添加新的处理逻辑,则只需要添加新的消费者即可,非常方便。

流量削峰:消息系统作为消息缓冲区,以低成本将上游服务(生产者)的流量洪峰缓存起来,下游服务(消费者)按照自身处理能力从消息队列中读取数据并进行处理,避免下游服务由于大量的请求流量而崩溃。

数据冗余:消息系统将数据缓存起来,直到数据被处理,避免下游服务由于崩溃下线、网络阻塞等原因无法及时处理数据而导致数据丢失。

(2)存储系统:

(3)实时流数据管道:

(4)流计算应用:

高吞吐、低延迟:

持久化、一致性:

高可扩展性(伸缩性):

故障转移(容错):

Kafka与Pulsar虽然提供的基础功能类似,但它们的设计、架构、实现并不相同,本书将深入分析Kafka与Pulsar如何实现一个分布式、高扩展、高吞吐、低延迟的消息流平台。另外,本书也会介绍Kafka与Pulsar中连接器、流计算引擎等功能的应用实践。

将Kafka与Pulsar都视为一个简单的消息系统,消息流转流程如下图所示。

docx image

图中展示了消息系统中的4个基本概念。它们在Kafka与Pulsar中都存在,并且含义相同。

消息Message:

生产者Producer:

消费者Consumer:

主题Topic:

结合一个例子ka的基础概念

下面介绍Kafka的一些基础概念。

Kafka消费组:

Broker:

分区Partition:

副本Replica:

AR(Assigned Replicas):

ISR:

ACK机制:

mBroker收到生产者发送的消息并成功存储这些消息后,返回成功响应(可以将该成功响应理解为一种ACK)给生产者,这时生产者可以认为消息已经发送成功,否则生产者可能需要做一些补偿操作,如重发消息。

m消费者收到Broker投递的消息并成功处理后,返回消费成功响应给Broker,Broker收到这些消费成功响应后,可以认为消费者已经成功消费了消息,否则Broker可能需要做一些补偿操作,如重新投递消息。该场景下消费者通常需要将消费成功的消息位置(或者消息Id等)发送给Broker,并且Broker需要存储这些消费成功的位置,以便后续消费者重启后从该位置继续消费。该场景也是我们关注的重点。

在Kafka中,每个消息都存在一个偏移量offset,如果将一个Kafka主题理解为一个简单的消息数组,那么可以将消息偏移量理解为该消息在该数组中的索引。消费者会将最新消费成功的消息的下一个偏移量发送给Broker(代表该偏移量前面的消息都已经消费成功),Broker会存储这些偏移量,以记录消费者的最新消费位置。为了方便描述,本书后面将消费者提交ACK信息中的偏移量称为ACK偏移量。

另外,Kafka与Pulsar都使用ZooKeeper存储元数据,完成分布式协作等操作,ZooKeeper是一种分布式协作服务,专注于协作多个分布式进程之间的活动,可以帮助开发人员专注于应用程序的核心逻辑,而不必担心应用程序的分布式特性。本书后面会详细分析ZooKeeper为Kafka与Pulsar提供了哪些服务。Kafka 2.8开始提供KRaft模块,支持Kafka脱离ZooKeeper独立运行部署,本书后面也会详细分析该模块的设计与实现。

下图展示了Kafka集群的基础架构。

docx image

下面介绍Pulsar的基础概念

Pulsar订阅组:

非分区主题、分区主题:

Broker:

Bookie:

Ledger:

Entry:

租户、命名空间:

docx image

Cluster集群:

ACK机制:

下图展示了Pulsar集群的基础架构。

docx image

本文介绍了Kafka与Pulsar的起源发展与系统特性,以及Kafka与Pulsar中最基本的核心概念。如果还想学习更多,《深入理解Kafka与Pulsar:消息流平台的实践与剖析》这本书中会详细介绍这些概念的具体含义与作用,也会逐渐补充Kafka与Pulsar中其他的关键概念,如果读者对某个概念不太理解,也可以先带着疑问阅读本书。

想要深入了解Kafka与Pulsar吗?

快来看看这本书吧!

▊▊《深入理解Kafka与Pulsar:消息流平台的实践与剖析》

梁国斌 著

详细介绍Kafka与Pulsar的使用方式

深入分析Kafka与Pulsar的实现原理

本书详细介绍了Kafka与Pulsar的使用方式,并深入分析了它们的实现机制。通过阅读本书,读者可以快速入门和使用Kafka与Pulsar,并深入理解它们的实现原理。

本书通过大量实践示例介绍了Kafka与Pulsar的使用方式,包括管理脚本与客户端(生产者、消费者)的使用方式、关键的配置项、ACK提交方式等基础应用,以及安全机制、跨地域复制机制、连接器/流计算引擎、常用监控管理平台等高级应用。这些内容可以帮助读者深入掌握Kafka与Pulsar的使用方式,并完成日常管理工作。另外,本书深入分析了Kafka与Pulsar的实现原理,包括客户端(生产者、消费者)的设计与实现、Broker网络模型、主题(分区)分配与负载均衡机制,以及磁盘存储与性能优化方案、数据同步机制、扩容与故障转移机制。最后,本书介绍了Kafka与Pulsar的事务机制,并深入分析了Kafka事务的实现及Kafka的分布式协作组件KRaft模块。这部分内容可以帮助读者轻松理解Kafka与Pulsar的架构设计与实现原理。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容