pulsar利用指南

打印 上一主题 下一主题

主题 1782|帖子 1782|积分 5346

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)处置处罚异常场景。

五、安装与部署


  • 单机模式(适合开发测试)

    • 下载与解压
      1. wget https://archive.apache.org/dist/pulsar/pulsar-2.8.1/apache-pulsar-2.8.1-bin.tar.gz
      2. tar xvfz apache-pulsar-2.8.1-bin.tar.gz
      复制代码
    • 启动服务
      1. 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集群地址。
    • 启动服务
      1. bin/pulsar-daemon start zookeeper  # 启动ZooKeeper
      2. bin/pulsar-daemon start bookie     # 启动BookKeeper
      3. bin/pulsar-daemon start broker     # 启动Broker
      复制代码


六、核心概念与利用


  • 生产与消耗消息

    • 命令行工具
      1. # 生产消息
      2. bin/pulsar-client produce my-topic --messages "Hello Pulsar"
      3. # 消费消息
      4. bin/pulsar-client consume my-topic -s "my-subscription"
      复制代码
    • Java客户端示例
      1. // 创建客户端
      2. PulsarClient client = PulsarClient.builder().serviceUrl("pulsar://localhost:6650").build();
      3. // 生产者发送消息
      4. Producer<byte[]> producer = client.newProducer().topic("test-topic").create();
      5. producer.send("Message".getBytes());
      6. // 消费者订阅
      7. Consumer<byte[]> consumer = client.newConsumer().topic("test-topic").subscriptionName("sub").subscribe();
      8. 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)隔离资源:
      1. bin/pulsar-admin tenants create my-tenant
      2. 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 功能)进一步巩固了其在消息中心件领域的领先职位。



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曹旭辉

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表