您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 
 订阅
新一代MQ apache pulsar的架构与核心概念
 
作者:六翼天使
  2605  次浏览      15
 2021-7-27 
 
编辑推荐:
本篇文章主要介绍 了Pulsar基本架构、ACK、消息订阅、消息分区、消息的存储与过期、消息去重、消息存储等相关内容。
来自于知乎,由火龙果软件Anna编辑、推荐。

Pulsar基本架构

Pulsar采用存储计算分离的架构,pulsar使用了bookkeeper做消息的存储,bookkeeper保证了消息存储的可靠性和高效性,bookkeeper为pulsar提供了存储的扩展能力

Pulsar使用zk做元数据存储

多租户,pulsar最初的设计就是支持多租户的

命名空间:一个租户可以有多个命名空间,一个topic属于一个命名空间,pulsar中的配置都是以命名空间为单位配置的

Pulsar的broker用于处理消息的读写,broker中会有消息的本地缓存,因为多数场景下,消息被写入后会立刻被消费,因此broker中持有的新消息的缓存能非常有效的提高性能和MQ的整体吞吐

相比kafka、rocketmq等MQ,pulsar基于bookkeeper的存储计算分离架构,使得pulsar的消息存储可以独立于broker而扩展。

ACK

当一个消息被消费者消费后,pulsar会给broker发送一个ack,pulsar有三种消息的ack模式:

One by One:依次确认每一个消息,保证确认的顺序

Cumulative:累积的方式确认,只需要确认一条消息,用于表示这条消息以及之前的消息都已确认

每个消息独立确认:shared消费模式下可独立确认每一个消息

消息订阅

Pulsar支持exclusive、shared和failover三种消息订阅模式,这三种模式的示意图如下:

Exclusive模式(独占模式)是pulsar默认的消息订阅模式,在这种模式下,中能有一个consumer消息消息,一个订阅关系中只能有一台机器消费每个topic,如果有多于一个consumer消费此topic则会出错,消费示意图如下:

Failover模式下,一个topic也是只有单个消费消费一个订阅关系的消息,与exclusive模式不同之处在于,failover模式下,每个消费者会被排序,当前面的消费者无法连接上broker后,消息会由下一个消费者消费,消费示意图如下:

Shared模式(共享模式)下,消息可被多个consumer同时消费,这种模式下,无法保证消息的顺序,并且无法使用one by one和cumulative的ack模式,消息通过roundrobin的方式投递到每一个消费者,消费示意图如下:

key_shared模式是shared模式的一种,不同的是它按key对消息做投递,相同的key的消息会被投递到同一个消费者上,消费示意图如下:

消息分区

单个topic的消息一般是由单个broker处理,为了提高topic的消息处理能力,pulsar提供了partitioned topic的支持,与kafka和rocketmq一样,每个partition由不同的broker处理,在消费时,单个partition可选择exclusive, failover和shared模式

Partitioned topic实际上是由n(partition的数量)个内部的topic组成的,每个内部的topic由一个broker处理,每个broker可处理多个topic,当消息发送到broker前,在producer端会通过routing mode将消息路由到某一个partition上,消息的生产与消费示意图如下:

消息的存储与过期

默认情况上,当broker会立刻删除所有收到了ack的消息,没有被ack的消息会持久化存储,但是我们可以修改pulsar的行为,pulsar允许我们存储已经收到ack了的消息,也可以给未收到ack的消息设置过期时间(TTL)

消息去重

Pulsar支持在broker端对消息做去重,当打开消息去重后,重发的消息(重试等产生的)不会被重新存储,这个特性使得pulsar对流式计算引擎(例如flink)更加友好,流式计算引擎更容易实现exactly-once语义的计算任务,消息去重的存储示意图如下:

消息存储

Pulsar使用apache bookkeeper做消息存储

 

   
2605 次浏览       15
相关文章

企业架构、TOGAF与ArchiMate概览
架构师之路-如何做好业务建模?
大型网站电商网站架构案例和技术架构的示例
完整的Archimate视点指南(包括示例)
相关文档

数据中台技术架构方法论与实践
适用ArchiMate、EA 和 iSpace进行企业架构建模
Zachman企业架构框架简介
企业架构让SOA落地
相关课程

云平台与微服务架构设计
中台战略、中台建设与数字商业
亿级用户高并发、高可用系统架构
高可用分布式架构设计与实践

最新活动计划
MBSE(基于模型的系统工程)4-18[北京]
自然语言处理(NLP) 4-25[北京]
基于 UML 和EA进行分析设计 4-29[北京]
以用户为中心的软件界面设计 5-16[北京]
DoDAF规范、模型与实例 5-23[北京]
信息架构建模(基于UML+EA)5-29[北京]
 
 
最新文章
架构设计-谈谈架构
实现SaaS(软件及服务)架构三大技术挑战
到底什么是数据中台?
响应式架构简介
业务架构、应用架构与云基础架构
最新课程
软件架构设计方法、案例与实践
从大型电商架构演进看互联网高可用架构设计
大型互联网高可用架构设计实践
企业架构师 (TOGAF官方认证)
嵌入式软件架构设计—高级实践
更多...   
成功案例
某新能源电力企业 软件架构设计方法、案例与实践
中航工业某研究所 嵌入式软件开发指南
某轨道交通行业 嵌入式软件高级设计实践
北京 航天科工某子公司 软件测试架构师
北京某领先数字地图 架构师(设计案例)
更多...