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)
-
批量发送
批量发送是将一批消息当做一个整体,只有所有都发送成功才算成功。
-
分块发送
批量和分块只能选择其一
一个生产者对应一个消费者:
消费者缓冲(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)
支持四种模式: exclusive, shared, failover, 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/