pulsar利用指南
Apache Pulsar 是 Apache 软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体,采用计算与存储分离架构计划,支持多租户、持久化存储、多机房跨区域数据复制,具有强一致性、高吞吐、低延时及高可扩展性等流数据存储特性。以下从核心架构、功能特性、技能优势及应用场景等方面举行详细介绍:一、核心架构
[*] 分层架构计划
Pulsar 采用 计算与存储分离 的云原生架构,由无状态服务层(Broker)和持久化存储层(BookKeeper)构成:
[*]Broker:负责消息的路由、负载均衡和元数据管理,不存储数据,支持快速扩容和故障转移。
[*]BookKeeper:由多个 Bookie 节点构成,提供分布式日志存储,通太过片(Segment)机制将数据均匀分布,每个分片独立存储并多副本复制,保障数据可靠性和高吞吐。
[*]ZooKeeper:负责集群元数据和谐和一致性管理。
[*] 分片存储与扩展
[*]每个 Topic 分区的数据被拆分为多个分片(Segment),分片作为最小存储单元分布在 Bookie 节点上,支持动态扩容时无需数据迁徙。
[*]存储层扩容通过新增 Bookie 节点实现,新分片优先写入新节点,避免传统分区存储的容量倾斜题目。
二、核心功能特性
[*] 多租户与资源隔离
[*]支持租户(Tenant)和命名空间(Namespace)两级隔离,可配置存储配额、访问权限和消息过期策略,适合企业级多团队共享集群。
[*] 灵活的订阅模式
[*]独占(Exclusive):单消耗者独占订阅,保障严格顺序性。
[*]故障转移(Failover):主备消耗者自动切换,提升高可用性。
[*]共享(Shared):多消耗者轮询消耗,提高吞吐但无序。
[*]键共享(Key_Shared):雷同 Key 的消息路由到同一消耗者,保证 Key 级有序。
[*] 跨地域复制与分层存储
[*]原生支持跨数据中心数据同步(同步/异步模式),用于灾备和环球化部署。
[*]分层存储可将历史数据自动迁徙至 S3、HDFS 等低成本存储,淘汰热数据存储成本。
[*] 流批一体与轻量计算
[*]支持消息队列和流式处置处罚的同一模子,同一数据可多次消耗。
[*]内置 Pulsar Functions 框架,实现无服务器(Serverless)及时数据处置处罚,如过滤、转换和路由。
三、技能优势
[*] 性能与可靠性
[*]低延迟高吞吐:P99 延迟稳定在 5-15ms,支持每秒百万级消息处置处罚,性能不随分区数增加而下降。
[*]强一致性:基于 Quorum 协议的多副本同步写入,保障数据一致性。
[*] 云原生与扩展性
[*]无状态 Broker 和分片存储计划,支持独立扩缩容,适合 Kubernetes 等云环境。
[*]单集群可支持百万级 Topic,远超 Kafka 的扩展能力。
[*] 生态兼容性
[*]提供多语言客户端(Java、Go、Python 等),兼容 Kafka API(KoP 组件),支持无缝迁徙。
[*]与 Flink、Spark 等流计算框架深度集成,支持 SQL 查询和及时分析。
四、典型应用场景
[*]金融领域:及时交易处置处罚、风控监控,利用低延迟和强一致性保障业务可靠性。
[*]电商与物联网:订单异步处置处罚、设备数据收罗,通过共享订阅和分层存储应对高并发。
[*]媒体与日志处置处罚:及时保举、日志流水网络,联合 Pulsar Functions 实现流式 ETL。
[*]微服务通讯:解耦服务间依靠,支持事务消息和死信队列(DLQ)处置处罚异常场景。
五、安装与部署
[*] 单机模式(适合开发测试)
[*]下载与解压:wget https://archive.apache.org/dist/pulsar/pulsar-2.8.1/apache-pulsar-2.8.1-bin.tar.gz
tar xvfz apache-pulsar-2.8.1-bin.tar.gz
[*]启动服务:bin/pulsar standalone# 自动启动ZooKeeper和BookKeeper
[*]验证运行:
查看日志logs/pulsar-standalone.log,或执行bin/pulsar-admin clusters list,返回standalone表示成功。
[*] 集群模式(生产环境)
[*]依靠组件:
[*]ZooKeeper:管理元数据和和谐集群(配置conf/zookeeper.conf)。
[*]BookKeeper:持久化存储消息(配置conf/bookkeeper.conf,指定zkServers)。
[*]Broker配置:
修改conf/broker.conf,设置zookeeperServers和configurationStoreServers指向ZooKeeper集群地址。
[*]启动服务:bin/pulsar-daemon start zookeeper# 启动ZooKeeper
bin/pulsar-daemon start bookie # 启动BookKeeper
bin/pulsar-daemon start broker # 启动Broker
六、核心概念与利用
[*] 生产与消耗消息
[*]命令行工具:# 生产消息
bin/pulsar-client produce my-topic --messages "Hello Pulsar"
# 消费消息
bin/pulsar-client consume my-topic -s "my-subscription"
[*]Java客户端示例:// 创建客户端
PulsarClient client = PulsarClient.builder().serviceUrl("pulsar://localhost:6650").build();
// 生产者发送消息
Producer<byte[]> producer = client.newProducer().topic("test-topic").create();
producer.send("Message".getBytes());
// 消费者订阅
Consumer<byte[]> consumer = client.newConsumer().topic("test-topic").subscriptionName("sub").subscribe();
Message<byte[]> msg = consumer.receive();
[*] 订阅模式
[*]独占订阅(Exclusive):仅答应一个消耗者毗连,实用于严格有序场景。
[*]故障转移(Failover):主消耗者故障时自动切换备用消耗者,适合高可用需求。
[*]共享订阅(Shared):多个消耗者轮询消耗,吞吐量高但无序。
[*]键共享(Key_Shared):雷同Key的消息路由到同一消耗者,保证Key级有序(需消息指定Key)。
七、高级配置与优化
[*] 负载均衡
[*]动态扩缩容:Broker无状态计划,新增节点后负载自动迁徙。
[*]策略配置:
[*]修改conf/broker.conf启用loadBalancerEnabled=true。
[*]选择卸载策略(如ThresholdShedder)和放置策略(如ModularLoadManager)。
[*] 存储与性能
[*]BookKeeper优化:
[*]配置I/O隔离路径(写入、追尾读、追赶读分离)。
[*]调解journalSyncData=false提升写入性能(捐躯部分持久性)。
[*]消息批处置处罚:启用batchingEnabled淘汰小消息开销。
八、监控与维护
[*] 日志与指标
[*]查看logs目录下的Broker/Bookie日志。
[*]集成Prometheus监控(配置metricsProvider=org.apache.bookkeeper.stats.prometheus.PrometheusMetricsProvider)。
[*] 多租户管理
[*]通过租户(Tenant)和命名空间(Namespace)隔离资源:bin/pulsar-admin tenants create my-tenant
bin/pulsar-admin namespaces create my-tenant/my-namespace
九、最佳实践
[*]开发发起:
[*]利用persistent://tenant/namespace/topic规范Topic命名。
[*]避免Shared模式下的消息顺序依靠。
[*]生产环境调优:
[*]调解JVM堆内存(PULSAR_MEM参数)。
[*]启用TLS加密通讯(配置webServiceUrlTls和brokerServiceUrlTls)。
十、总结
Apache Pulsar 凭借其云原生架构、多模式消息处置处罚和高扩展性,成为及时数据场景的优选方案。无论是金融级强一致需求,照旧海量物联网数据流,Pulsar 均能提供高效可靠的解决方案。其活跃的社区和持续迭代(如 2024 年发布的 3.1.x 版本加强 Geo-Replication 功能)进一步巩固了其在消息中心件领域的领先职位。
https://i-blog.csdnimg.cn/direct/bd319778500c4f958a5a107c1dee570a.jpeg#pic_center
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]