新一代消息中间件-Pulsar

Apache Pulsar 是一个云原生的分布式消息流平台,提供多租户、高性能、低延迟和高扩展性的特性。它支持多种订阅模式,并利用 Apache BookKeeper 进行持久化存储。Pulsar 具有单个实例支持多个集群的能力,可实现跨机房的数据复制。文章介绍了Pulsar的消息发送架构,提供了单机安装步骤和Java实例,包括生产者和消费者的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

  • Pulsar 是一个用于服务器到服务器的消息系统,具有多租户、高性能等优势。 Pulsar 最初由 Yahoo 开发,目前由 Apache 软件基金会 管理。
    是 Apache 软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体,采用计算与存储分离架构设计,支持多租户、持久化存储、多机房跨区域数据复制,具有强一致性、高吞吐、低延时及高可扩展性等流数据存储特性,被看作是云原生时代实时消息流传输、存储和计算最佳解决方案;
  • Pulsar 的关键特性如下:
    • Pulsar 的单个实例原生支持多个集群,可跨机房在集群间无缝地完成消息复制。
    • 极低的发布延迟和端到端延迟。
    • 可无缝扩展到超过一百万个 topic。
    • 简单的客户端 API,支持 Java、Go、Python 和 C++。
    • 支持多种 topic 订阅模式(独占订阅、共享订阅、故障转移订阅)。
    • 通过 Apache BookKeeper 提供的持久化消息存储机制保证消息传递 。
      • 由轻量级的 serverless 计算框架 Pulsar Functions 实现流原生的数据处理。
    • 基于 Pulsar Functions 的 serverless connector 框架 Pulsar IO 使得数据更易移入、移出 Apache Pulsar。
    • 分层式存储可在数据陈旧时,将数据从热存储卸载到冷/长期存储(如S3、GCS)中。

Pulsar 消息发送架构图

处理一个 producer 和一个订阅 consumer 的分块消息

处理多个 producer 和一个订阅 consumer 的分块消息

单机安装 Pulsar

$ tar xvfz apache-pulsar-2.7.1-bin.tar.gz
$ cd apache-pulsar-2.7.1
$ ./bin/pulsar standalone
# 后台启动
$ ./bin/pulsar-daemon start standalone
# 终止后台运行
$ ./bin/pulsar-daemon stop standalone
  • 查看日志,启动成功会有如下日志:tail -100f logs/pulsar-standalone-XXX.log

Java实例

  • 编辑 pom.xml,添加pulsar依赖
<!-- https://mvnrepository.com/artifact/org.apache.pulsar/pulsar-client -->
<dependency>
    <groupId>org.apache.pulsar</groupId>
    <artifactId>pulsar-client</artifactId>
    <version>2.7.1</version>
</dependency>
<!--对自定义配置项生成自己的配置元数据文件-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>
  • 编辑 application.properties,如下:
server.port=8086
# pulsar服务端地址
pulsar.url = pulsar://192.168.163.131:6650
# 多个topic以逗号分隔
pulsar.topic= pulsar-topic
# 消费者组
pulsar.subscription=pulsar-topicGroup
  • Pulsar配置文件类 PulsarConfig
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import lombok.Data;
@Data
@Configuration
@ConfigurationProperties(prefix = "pulsar")
public class PulsarConfig {
   
   
	/**
	 * pulsar服务端地址
	 */
	private String url;
	/**
	 * topic
	 */
	private String topic;
	/**
	 * 消费者组
	 */
	private String subscription;
}
生产者(Producer)
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import javax.annotation.PostConstruct;
import org.apache.pulsar.client
### Apache Pulsar 介绍 Apache Pulsar 是一种分布式消息传递平台,具有独特的分层架构设计。Pulsar 将计算与存储分离,使得其能够提供更高效的性能以及更好的可扩展性和灵活性[^1]。 ### 安装配置指南 #### 准备工作环境 为了部署 Apache Pulsar 集群,需先准备好运行环境。通常情况下,在 Linux 或 macOS 上安装较为方便。对于 Windows 用户来说,则建议使用 Docker 来简化设置过程。 #### 下载并解压二进制包 可以从官方网站获取最新版本的 Pulsar 发行版,并将其下载到本地机器上。接着按照常规方式解开压缩文件夹即可完成初步准备工作[^5]。 ```bash wget https://downloads.apache.org/pulsar/pulsar-2.9.0/apache-pulsar-2.9.0-bin.tar.gz tar xvzf apache-pulsar-2.9.0-bin.tar.gz cd apache-pulsar-2.9.0 ``` #### 启动单节点集群模式 对于测试目的而言,可以采用最简单的单机多进程模拟集群的方式来进行快速体验: ```bash bin/pulsar standalone ``` 这一步骤将会自动创建一个简易版的消息队列服务实例供开发者调试学习之用。 ### 使用教程概览 当成功搭建好开发环境之后,就可以着手编写应用程序来连接至 Pulsar 并发送接收数据流了。具体操作流程如下所示: - 创建生产者对象用于向指定主题发布新消息; - 构建消费者实体订阅感兴趣的主题等待接收来自其他端点的数据项; - 利用管理工具对整个系统的状态进行监控维护; 上述功能均可以通过编程接口实现自动化处理逻辑,同时也支持命令行形式的手工干预选项[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值