独特架构打造新一代消息队列Apache Pulsar

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
日志服务 SLS,月写入数据量 50GB 1个月
应用型负载均衡 ALB,每月750个小时 15LCU
简介: Apache Pulsar 是一个开源的分布式消息流平台,由雅虎开发并于 2016 年开源,2018 年成为 Apache 顶级项目。Pulsar 通过独特的架构提供多租户、持久化存储和批处理等高级功能,支持高吞吐量、低延迟的消息传递。其核心组件包括 Broker、Apache BookKeeper 和 Apache ZooKeeper,分别负责消息处理、持久化存储和集群管理。

概述

Apache Pulsar 是一个开源的分布式消息流平台,设计用于处理高吞吐量、低延迟的消息传递需求。Pulsar 最早由雅虎开发,并于 2016 年开源,2018 年成为 Apache 基金会的顶级项目。Pulsar 的独特架构使其能够提供多租户、持久化存储和批处理等高级功能,同时保持高性能和可扩展性。

消息传递


添加图片注释,不超过 140 字(可选)


在 Pulsar 中,消息传递是通过主题(Topic)进行的。生产者将消息发布到主题,消费者从主题订阅消息。主题可以进一步分为分区(Partition),以实现更高的并发和负载均衡。Pulsar 支持多种消息传递模式,包括:

  1. 独占模式(Exclusive):一个主题只有一个消费者。
  2. 共享模式(Shared):多个消费者共享同一个主题,消息被均匀分配。
  3. 故障转移模式(Failover):多个消费者中只有一个处于活动状态,故障时自动切换到下一个消费者。

架构


添加图片注释,不超过 140 字(可选)


Pulsar 的架构由三个主要组件组成:Broker、Apache BookKeeper 和 Apache ZooKeeper。各组件的设计和功能如下:

Broker

Broker 是 Pulsar 的核心组件,负责处理客户端(生产者和消费者)的连接、管理主题和分区、以及协调消息的存储和读取。Broker 还负责负载均衡,将主题的分区均匀分布在多个 Broker 上,以优化资源使用和提高系统性能。

Apache BookKeeper

Apache BookKeeper 提供了 Pulsar 的持久化存储层。消息被持久化到 BookKeeper 的 Bookie 中,确保数据的高可用性和持久性。BookKeeper 采用分布式日志结构,将消息存储在多个 Bookie 中,并进行数据复制,以防止单点故障。

Apache ZooKeeper

Apache ZooKeeper 用于管理集群的元数据和协调集群中的各种操作。ZooKeeper 负责存储主题、分区、Broker 信息等元数据,并执行领导者选举和服务发现等功能,确保集群的高可用性和一致性。

工作原理

Pulsar 的存储层基于 Apache BookKeeper,这使得 Pulsar 能够提供强大的持久化和数据保证。BookKeeper 使用分布式日志的方式存储消息,确保数据可以快速写入和读取。每条消息都会被复制到多个 Bookie,确保即使个别节点出现故障,数据仍然安全。BookKeeper 的日志结构也有助于实现高效的顺序写入和读取操作。


添加图片注释,不超过 140 字(可选)


Pulsar 的工作原理基于以下几个关键概念:

  1. 生产者和消费者
  • 生产者将消息发布到主题,Broker 接收消息并将其写入到 BookKeeper 中。
  • 消费者从 Broker 读取消息,Broker 从 BookKeeper 获取消息并传递给消费者。
  • 分区和主题
  • 主题可以分为多个分区,每个分区由不同的 Broker 处理。分区有助于提高并发处理能力和负载均衡。
  • 数据复制和存储
  • 消息在多个 Bookie 之间复制,以确保数据的高可用性。即使某个 Bookie 发生故障,数据仍然可用。

组件


添加图片注释,不超过 140 字(可选)


以下是 Pulsar 的主要组件及其职责:

  1. Broker
  • 处理客户端连接和请求。
  • 管理主题和分区。
  • 负责负载均衡和消息缓存。
  • Apache BookKeeper(Bookies)
  • 持久化消息存储。
  • 提供高可用性的数据复制。
  • 进行分布式日志管理。
  • Apache ZooKeeper
  • 管理元数据和配置信息。
  • 执行领导者选举和服务发现。
  • 协调集群中的操作和故障转移。



如果你喜欢此文章,不要忘记关注+点赞哦!你的支持是我创作的动力。如果你有任何意见或建议,欢迎在下方留言,非常期待与你的交流和讨论。

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
2月前
|
消息中间件 存储 负载均衡
2024消息队列“四大天王”:Rabbit、Rocket、Kafka、Pulsar巅峰对决
本文对比了 RabbitMQ、RocketMQ、Kafka 和 Pulsar 四种消息队列系统,涵盖架构、性能、可用性和适用场景。RabbitMQ 以灵活路由和可靠性著称;RocketMQ 支持高可用和顺序消息;Kafka 专为高吞吐量和低延迟设计;Pulsar 提供多租户支持和高可扩展性。性能方面,吞吐量从高到低依次为
174 1
|
3月前
|
存储 SQL Apache
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
Apache Doris 是一个基于 MPP 架构的高性能实时分析数据库,以其极高的速度和易用性著称。它支持高并发点查询和复杂分析场景,适用于报表分析、即席查询、数据仓库和数据湖查询加速等。最新发布的 2.0.2 版本在性能、稳定性和多租户支持方面有显著提升。社区活跃,已广泛应用于电商、广告、用户行为分析等领域。
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
|
4月前
|
SQL 存储 分布式计算
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
67 9
|
4月前
|
存储 分布式计算 druid
大数据-155 Apache Druid 架构与原理详解 数据存储 索引服务 压缩机制
大数据-155 Apache Druid 架构与原理详解 数据存储 索引服务 压缩机制
107 3
|
4月前
|
消息中间件 分布式计算 druid
大数据-154 Apache Druid 架构与原理详解 基础架构、架构演进
大数据-154 Apache Druid 架构与原理详解 基础架构、架构演进
120 2
|
4月前
|
存储 SQL 缓存
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
从 3.0 系列版本开始,Apache Doris 开始支持存算分离模式,用户可以在集群部署时选择采用存算一体模式或存算分离模式。基于云原生存算分离的架构,用户可以通过多计算集群实现查询负载间的物理隔离以及读写负载隔离,并借助对象存储或 HDFS 等低成本的共享存储系统来大幅降低存储成本。
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
|
4月前
|
存储 消息中间件 druid
大数据-150 Apache Druid 安装部署 单机启动 系统架构
大数据-150 Apache Druid 安装部署 单机启动 系统架构
72 1
|
7月前
|
消息中间件 C语言 RocketMQ
消息队列 MQ操作报错合集之出现"Connection reset by peer"的错误,该如何处理
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
7月前
|
消息中间件 Java C语言
消息队列 MQ使用问题之在使用C++客户端和GBase的ESQL进行编译时出现core dump,该怎么办
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
3月前
|
消息中间件 存储 Kafka
MQ 消息队列核心原理,12 条最全面总结!
本文总结了消息队列的12个核心原理,涵盖消息顺序性、ACK机制、持久化及高可用性等内容。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。

热门文章

最新文章

推荐镜像

更多