文章目录
- 介绍:
- 部署安装讲解:
- 安装单机版本测试(Linux下):
介绍:
PulsarMQ 现托管于apache Apache 软件基金会顶级项目,2016年由雅虎公司开源的分布式多租户消息中间件 ,是下一代云原生分布式消息流平台,集消息、存储、轻量化函数计算为一体,采用计算与存储分离架构设计,支持多租户、持久化存储、跨区域复制、具有强一致性、高吞吐、低延迟及高可扩展性等流数据存储特性。支持 Pub/Sub 模型和消息队列模型。
官网:
https://pulsar.apache.org/
消息ACK确定机制,两种主要是由于pulsar单条,也可以批处理。
1.Being acknowledged individually. With individual acknowledgment, the consumer acknowledges each message and sends an acknowledgment request to the broker.
被单独承认。通过单独的确认,消费者确认每条消息,并向代理发送确认请求。
2.Being acknowledged cumulatively. With cumulative acknowledgment, the consumer only acknowledges the last message it received. All messages in the stream up to (and including) the provided message are not redelivered to that consumer.
被累计承认的。对于累积确认,消费者只确认其接收到的最后一条消息。流中直到(包括)所提供消息的所有消息都不会重新传递给该消费者。
两种方式的API确定(单条,累计)
consumer.acknowledge(msg);
consumer.acknowledgeCumulative(msg);
值的注意的是:
累积确认不能在共享订阅类型中使用,因为共享订阅类型涉及有权访问同一订阅的多个使用者。在共享订阅类型中,消息是单独确认的。
部署安装讲解:
pulsar支持单节点以及集群模式都可以,支持使用docker或者k8s,以下是官网的经典图:
In this diagram, connecting clients need to communicate with the Pulsar cluster using a single URL. In this case, pulsar-cluster.acme.com abstracts over all of the message-handling brokers. Pulsar message brokers run on machines alongside BookKeeper bookies; brokers and bookies, in turn, rely on ZooKeeper.
在该图中,连接客户端需要使用单个URL与Pulsar集群进行通信。在这种情况下,pulser-cluster.ame.com对所有消息处理代理进行了抽象。Pulsar消息代理(broker经纪人)与BookKeeper博彩公司(bookie)一起在机器上运行;而经纪人和博彩公司则依赖ZooKeeper。
乍一看很复杂,怎么说呢,比起其他MQ确实是很复杂,且更加抽象化和组件化,一个完整的pulsar服务需要以上的支持。而zookeeper和broker,bookkeeper的联系如下:
在 Pulsar 中,ZooKeeper 的作用是存储 Pulsar 集群的元数据,例如租户、命名空间、主题等信息。Pulsar Broker 则负责处理客户端的请求,并将消息传递给相应的 BookKeeper 副本进行持久化。而 BookKeeper Bookie 则是实际进行数据存储和检索操作的组件。
具体来说,当客户端发送消息到 Pulsar Broker 时,Broker 会首先将消息写入内存缓冲区,并返回 Acknowledgment(ACK)给客户端。然后,Broker 将消息异步地提交给 BookKeeper 进行持久化。BookKeeper 接收到消息后,会将其写入磁盘,并返回 ACK 给 Broker。当 Broker 接收到来自大多数(通常是半数以上) BookKeeper 副本的 ACK 后,就会确认消息已经成功持久化,并将其从内存缓冲区中删除。
在此过程中,ZooKeeper 负责管理 Pulsar 集群的元数据,例如 Broker 和 BookKeeper 的位置信息、租户的配置信息等。Broker 和 BookKeeper 通过 ZooKeeper 进行注册和发现,并获取集群的配置信息。需要注意的是,Pulsar 支持多个 ZooKeeper 实例进行共享存储,以提高集群的可伸缩性和可用性。
当然ZooKeeper 也是可替换的,可以换成一些其他的注册中心,还有etcd,nacos等等取舍可看一下比较:
etcd、ZooKeeper 和 Nacos 都是分布式存储和协调工具,用于管理和维护分布式系统中的元数据信息,例如配置信息、服务发现、任务调度等。它们各自有一些优点和适用场景,下面进行简要对比:
1)etcd:etcd 是一个高可用的键值存储系统,支持分布式部署和数据复制,并且拥有以下特点:
简单易用:API 设计清晰明了,操作简单;
性能高效:读写性能均较优;
可靠性高:支持多数派复制机制,保证数据的可靠性和一致性;
安全性好:支持 TLS 加密传输和访问控制。
2)ZooKeeper:ZooKeeper 是一个分布式协调服务,提供共享配置管理和分布式锁等功能,具有以下特点:
一致性高:采用 ZooKeeper Atomic Broadcast(ZAB)协议,可以保证分布式系统中各个节点间的数据一致性;
功能强大:提供了多种 API 和工具,支持分布式锁、选举、任务调度等常见的分布式应用场景;
生态丰富:已经被广泛应用于 Hadoop、Kafka、Pulsar 等开源项目和商业产品中。
3)Nacos:Nacos 是一个分布式的配置中心和服务发现平台,旨在帮助企业实现微服务的构建和管理,具有以下特点:
功能全面:支持服务注册、配置管理、服务发现、流量管理等多个功能;
可扩展性好:支持集群部署和主从复制,可以提高系统的可用性和容错性;
易用性强:提供了丰富的客户端和工具,可以快速地接入和使用。
综上所述,etcd 适合对性能要求较高的应用场景;ZooKeeper 适合需要高一致性和更多功能的应用场景;而 Nacos 则适合构建和管理微服务架构。选择使用哪种工具应该根据具体需求和场景进行综合考虑,并进行权衡取舍。
安装单机版本测试(Linux下):
根据我们要使用的PulsarMQ版本选择jdk,本案例使用3.0.0,故先先安装jdk17,可参考帖子:https://blog.csdn.net/xtho62/article/details/131229216
1.下载
## 官方链接,如果直接shell中下载较慢,建议使用迅雷下载后传上去
wget https://archive.apache.org/dist/pulsar/pulsar-3.0.0/apache-pulsar-3.0.0-bin.tar.gz
2.解压安装
mkdir /usr/local/pulsar
tar -zxvf apache-pulsar-3.0.0-bin.tar.gz -C pulsar/
3.开两个窗口在pulsar安装目录下的bin目录执行生产和消费操作:
生产者
可以使用命令行客户端生产消息、消费消息,执行./pulsar-client produce my-topic --messages “hello-pulsar”,即往"my-topic"这个topic生产了一条消息,内容是"hello-pulsar"。
消费者
执行./pulsar-client consume my-topic -s “first-subscription”,即可从"my-topic"这个topic消费消息。生产者客户端和消费者客户端都会自动创建topic,如果操作的topic不存在的话
先投递消息,后消费,日志打印消费成功。