新一代MQ:Apache pulsar

1、安装

1.1 安装包下载

官网下载地址:http://pulsar.apache.org/download/

1.2 安装(standalone)

上传安装包,解压即可

tar xvfz apache-pulsar-2.7.1-bin.tar.gz

1.3 启动/停止

# 后台启动
bin/pulsar-daemon start standalone

# 停止
bin/pulsar-daemon stop standalone

1.4 客户端生产消费消息

# 从 my-topic 主题消费消息,消费者名称是 "first-subscription",若主题不存在会自动创建 
bin/pulsar-client consume my-topic -s "first-subscription"

# 向主题 my-topic 中生产消息 "hello-pulsar" , 若主题不存在会自动创建
bin/pulsar-client produce my-topic --messages "hello-pulsar"

2. 概念

2.1 消息(message)

消息保留和过期(Message retention and expiry)

操作粒度到主题namespace层,默认是消费成功的删除,没消费成功的持久化到磁盘。

 

Message deduplication:pulsar 提供消息去重特性,可以和其他的流计算引擎实现精确一次消费语义。

Delayed message delivery:延迟的消息会在DelayedDeliveryTracker(内存)保存时间索引(time -> messageId),当经过指定时间后就会发送给下游消费者。(只在Shared subscription mode有效)

2.2 生产者(Producers)

  • 发送模式

Producers有两种两种发送模式: 同步(sync)  、  异步(async)

异步发送是通过阻塞队列(blocking queue)实现的,Producers将消息发送到阻塞队列中,客户端在后台将消息发送到broker中。

  • 消息压缩(Compression)

当前支持压缩方式   LZ4ZLIBZSTDSNAPPY

  • 批量发送

批量发送是将一批消息当做一个整体,只有所有都发送成功才算成功。

  • 分块发送

批量和分块只能选择其一

一个生产者对应一个消费者:

消费者缓冲(consumer buffers)会将接受的分块存储在内存,直到接收到所有的分块并合并为一条消息,然后发送给客户端。

多个生产者对应一个消费者:

消费者为每个大消息都维护一个缓冲,接受、缓存、合并消息,然后发送给客户端。对内存需求较高。

2.3 消费者(Consumers)

  • Receive modes

  • Acknowledgement

单独回应:消费一条消息回应一条

批量回应:只回应最后一条消息的状态

消费失败的消息会存储到 dead letter topic

broker接受到negative acknowledgement 会重新发送消息。

支持消息消费失败自动重新发送机制,设置enableRetry = true 

2.4 主题(topic)

主题结构:{persistent|non-persistent}://tenant/namespace/topic

订阅模式(Subscription mode)

支持四种模式: exclusivesharedfailover, and key_shared。默认是exclusive 。

exclusive : 只能一个消费者消费改订阅主题

shared : 订阅主题的消息通过轮询的方式均匀的发送给多个消费者

failover:当主消费者失去联系后,根据优先级发送给下一个消费者。

Key_Shared:消息必须有key,根据key值发送给下游的消费者,相同key发送给同一个消费者,即使消费失败重试也是发送给原来的消费者。

分区主题

分区主题是通过多个内部主题实现的,主题各个分区存储在哪个broker是pulsar内部自动分配的。

 

Routing modes : 目前有三种模式  RoundRobinPartition(默认方式)、SinglePartition、CustomPartition

RoundRobinPartition:没有key时,通过轮询的方式均匀的发布到所有分区,吞吐量最大;有key时,根据key的hash值发布到特定的分区

SinglePartition:没有key时,将所有的消息发布到随机挑选的分区;有key时,根据key的hash值发布到特定的分区

CustomPartition:用户自定义将消息发布到哪个分区

保序性(Ordering guarantee)

3.体系结构

Brokers

消息负载均衡

接受和处理生产者和消费者的请求

通过dispatches管理数据读写

支持远程地域复制,可以在不同的数据中心进行数据复制。

bookies 

Apache BookKeeper分布式预写日志系统,用于持久化数据(副本冗余)。

ZK

ZooKeeper集群协调管理pulsar集群,包括元数据、集群配置、协调。

详细请阅读官网文档:http://pulsar.apache.org/docs/en/concepts-architecture-overview/

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值