Pulsar分布式消息处理平台实战

简介: Pulsar分布式消息处理平台实战

Pulsar分布式消息处理平台实战

什么是Pulsar?

Pulsar是由Apache基金会孵化的一款分布式消息处理平台,它具备如下特点:

  1. 分布式架构:Pulsar可以在多个集群节点上运行,消息可以在各个节点之间进行传递。多集群部署时,Pulsar还具备跨集群消息复制和应用级别的容错机制。
  2. 高性能:Pulsar的消息传递速度非常快,可以处理百万级消息。另外,Pulsar的消费模型支持多队列方式,可以充分利用CPU和网络带宽。
  3. 可扩展:Pulsar的设计理念是可扩展的,可以方便地扩展其处理能力。Pulsar还支持Kafka API,这意味着用户可以使用Kafka客户端来访问Pulsar。
  4. 多种语言支持:Pulsar的客户端支持多种编程语言,包括Java、C++、Python、Go等。

Pulsar的核心概念

在使用Pulsar之前,需要先了解Pulsar的一些核心概念。

Topic

Topic是消息发布和订阅的逻辑地址,可以理解为消息的目的地。Pulsar的Topic采用的命名规则是“pulsar://tenant/namespace/topic”,其中tenant是租户标识,namespace是命名空间标识,topic是Topic名称。

Producer

Producer是消息的生产者,用于往Topic中发送消息。一个Topic可以有多个Producer。

Consumer

Consumer是消息的消费者,用于从Topic中消费消息。一个Topic可以有多个Consumer。

Subscription

Subscription是一种消费模式,用于控制Consumer如何消费消息。Pulsar支持两种Subscription类型:Exclusive Subscription和Shared Subscription。

  1. Exclusive Subscription:一个Topic只能被一组Consumer消费,消费模式为Exclusive Subscription时,同一时间只能有一个Consumer消费Topic。
  2. Shared Subscription:一个Topic可以被多组Consumer消费,消费模式为Shared Subscription时,多个Consumer可以同时消费同一个Topic。

Message

Message是Pulsar中的消息对象,可以包含任何数据。在Pulsar中,一条消息由三个部分组成:Payload、Key、Properties。Payload是消息的内容,Key是消息的唯一标识,Properties是消息的一些属性信息,可以用于筛选和路由消息。

Pulsar的安装和使用

环境准备

在开始使用Pulsar之前,需要先安装Java 8+和Maven。另外,建议使用Linux系统来运行Pulsar。

Pulsar的安装

Pulsar可以通过源码编译和二进制发行版两种方式来安装。

源码编译安装
  1. 下载源代码
git clone https://github.com/apache/pulsar.git
cd pulsar
  1. 编译源代码
mvn clean install -DskipTests
  1. 解压二进制包

在pulsar/distribution/server/target目录下可以找到生成的二进制包。

tar xvfz apache-pulsar-2.8.0-incubating-bin.tar.gz
cd apache-pulsar-2.8.0-incubating
二进制发行版安装
  1. 下载二进制包
wget https://archive.apache.org/dist/incubator/pulsar/pulsar-2.8.0-incubating/apache-pulsar-2.8.0-incubating-bin.tar.gz
  1. 解压二进制包
tar xvfz apache-pulsar-2.8.0-incubating-bin.tar.gz
cd apache-pulsar-2.8.0-incubating

Pulsar的启动和关闭

启动Pulsar

在Pulsar的bin目录下,执行如下命令启动Pulsar服务:

./pulsar standalone

这里启动的是单机版的Pulsar服务,如果要启动分布式Pulsar服务,需要修改配置文件,具体配置方式请参考Pulsar官方文档。

关闭Pulsar

在Pulsar的bin目录下,执行如下命令关闭Pulsar服务:

./pulsar-daemon stop standalone

Pulsar的实战演练

使用Pulsar的Java客户端

Pulsar的Java客户端支持生产者和消费者的编程,可以通过Maven来引入Java客户端的依赖项。

引入Java客户端的依赖项:

<dependency>
    <groupId>org.apache.pulsar</groupId>
    <artifactId>pulsar-client</artifactId>
    <version>2.8.0-incubating</version>
</dependency>
发送消息

在Pulsar中发送消息需要创建一个Producer对象,然后使用Producer对象来发送消息。

创建Producer的代码如下:

Producer<String> producer = PulsarClient.builder()
    .serviceUrl("pulsar://localhost:6650")
    .build()
    .newProducer(Schema.STRING)
    .topic("my-topic");

其中,serviceUrl是Pulsar服务的地址,Schema.STRING表示发送的数据类型为字符串,topic是消息目的地。

使用Producer对象发送消息:

producer.send("hello world");
接收消息

在Pulsar中接收消息需要创建一个Consumer对象,然后使用Consumer对象来接收消息。

创建Consumer的代码如下:

Consumer<String> consumer = PulsarClient.builder()
    .serviceUrl("pulsar://localhost:6650")
    .build()
    .newConsumer(Schema.STRING)
    .topic("my-topic")
    .subscriptionName("my-subscription")
    .subscriptionType(SubscriptionType.Exclusive)
    .subscribe();

其中,serviceUrl是Pulsar服务的地址,Schema.STRING表示接收的数据类型为字符串,topic是消息目的地,subscriptionName是订阅者名称,subscriptionType是订阅类型。

接收消息的代码如下:

while (true) {
    Message<String> message = consumer.receive();
    System.out.println("Received message: " + message.getValue());
    consumer.acknowledge(message);
}

Pulsar的Web管理界面

Pulsar提供了Web管理界面,可以通过Web界面来管理Pulsar服务。

访问Web管理界面的地址为:http://localhost:8080,其中localhost为Pulsar服务所在的主机名或IP地址。

操作Pulsar的命令行工具

Pulsar还提供了命令行工具pulsar-admin,可以通过pulsar-admin来管理Pulsar服务。

查看集群信息

使用pulsar-admin查看集群信息的命令如下:

bin/pulsar-admin clusters list
查看Tenant信息

使用pulsar-admin查看Tenant信息的命令如下:

bin/pulsar-admin tenants list
查看Namespace信息

使用pulsar-admin查看Namespace信息的命令如下:

bin/pulsar-admin namespaces list
查看Topic信息

使用pulsar-admin查看Topic信息的命令如下:

bin/pulsar-admin topics list
创建Topic

使用pulsar-admin创建Topic的命令如下:

bin/pulsar-admin topics create persistent://public/default/my-topic
删除Topic

使用pulsar-admin删除Topic的命令如下:

bin/pulsar-admin topics delete persistent://public/default/my-topic

总结

Pulsar是一款高性能、可扩展、可靠的分布式消息处理平台,具备多种语言支持和易于使用的API。通过本文的介绍,你应该已经掌握了Pulsar的核心概念、安装和使用方法,以及如何使用Pulsar的Java客户端来发送和接收消息。如果想要深入了解和使用Pulsar,建议参考P


相关文章
|
3月前
|
人工智能 Kubernetes 数据可视化
Kubernetes下的分布式采集系统设计与实战:趋势监测失效引发的架构进化
本文回顾了一次关键词监测任务在容器集群中失效的全过程,分析了中转IP复用、调度节奏和异常处理等隐性风险,并提出通过解耦架构、动态IP分发和行为模拟优化采集策略,最终实现稳定高效的数据抓取与分析。
Kubernetes下的分布式采集系统设计与实战:趋势监测失效引发的架构进化
|
5月前
|
消息中间件 运维 Kafka
直播预告|Kafka+Flink双引擎实战:手把手带你搭建分布式实时分析平台!
在数字化转型中,企业亟需从海量数据中快速提取价值并转化为业务增长动力。5月15日19:00-21:00,阿里云三位技术专家将讲解Kafka与Flink的强强联合方案,帮助企业零门槛构建分布式实时分析平台。此组合广泛应用于实时风控、用户行为追踪等场景,具备高吞吐、弹性扩缩容及亚秒级响应优势。直播适合初学者、开发者和数据工程师,参与还有机会领取定制好礼!扫描海报二维码或点击链接预约直播:[https://developer.aliyun.com/live/255088](https://developer.aliyun.com/live/255088)
384 35
直播预告|Kafka+Flink双引擎实战:手把手带你搭建分布式实时分析平台!
|
5月前
|
消息中间件 运维 Kafka
直播预告|Kafka+Flink 双引擎实战:手把手带你搭建分布式实时分析平台!
直播预告|Kafka+Flink 双引擎实战:手把手带你搭建分布式实时分析平台!
185 12
|
28天前
|
消息中间件 监控 Java
Apache Kafka 分布式流处理平台技术详解与实践指南
本文档全面介绍 Apache Kafka 分布式流处理平台的核心概念、架构设计和实践应用。作为高吞吐量、低延迟的分布式消息系统,Kafka 已成为现代数据管道和流处理应用的事实标准。本文将深入探讨其生产者-消费者模型、主题分区机制、副本复制、流处理API等核心机制,帮助开发者构建可靠、可扩展的实时数据流处理系统。
220 4
|
7月前
|
数据采集 存储 数据可视化
分布式爬虫框架Scrapy-Redis实战指南
本文介绍如何使用Scrapy-Redis构建分布式爬虫系统,采集携程平台上热门城市的酒店价格与评价信息。通过代理IP、Cookie和User-Agent设置规避反爬策略,实现高效数据抓取。结合价格动态趋势分析,助力酒店业优化市场策略、提升服务质量。技术架构涵盖Scrapy-Redis核心调度、代理中间件及数据解析存储,提供完整的技术路线图与代码示例。
677 0
分布式爬虫框架Scrapy-Redis实战指南
|
3月前
|
数据采集 缓存 NoSQL
分布式新闻数据采集系统的同步效率优化实战
本文介绍了一个针对高频新闻站点的分布式爬虫系统优化方案。通过引入异步任务机制、本地缓存池、Redis pipeline 批量写入及身份池策略,系统采集效率提升近两倍,数据同步延迟显著降低,实现了分钟级热点追踪能力,为实时舆情监控与分析提供了高效、稳定的数据支持。
分布式新闻数据采集系统的同步效率优化实战
|
4月前
|
缓存 NoSQL 算法
高并发秒杀系统实战(Redis+Lua分布式锁防超卖与库存扣减优化)
秒杀系统面临瞬时高并发、资源竞争和数据一致性挑战。传统方案如数据库锁或应用层锁存在性能瓶颈或分布式问题,而基于Redis的分布式锁与Lua脚本原子操作成为高效解决方案。通过Redis的`SETNX`实现分布式锁,结合Lua脚本完成库存扣减,确保操作原子性并大幅提升性能(QPS从120提升至8,200)。此外,分段库存策略、多级限流及服务降级机制进一步优化系统稳定性。最佳实践包括分层防控、黄金扣减法则与容灾设计,强调根据业务特性灵活组合技术手段以应对高并发场景。
1154 7
|
8月前
|
Java 关系型数据库 MySQL
新一代 Cron-Job分布式任务调度平台 部署指南
简单易用、超低延迟,支持用户权限管理、多语言客户端和多租户接入的分布式任务调度平台。 支持任何Cron表达式的任务调度,支持常用的分片和随机策略;支持失败丢弃、失败重试的失败策略;支持动态任务参数。
239 112
|
8月前
|
Java 调度 Maven
新一代 Cron-Job 分布式任务调度平台 正式发布!
简单易用、超低延迟,支持用户权限管理、多语言客户端和多租户接入的分布式任务调度平台。 支持任何Cron表达式的任务调度,支持常用的分片和随机策略;支持失败丢弃、失败重试的失败策略;支持动态任务参数。
337 106

热门文章

最新文章