美文网首页分布式@架构师
Apache Pulsar[3] 概念进阶

Apache Pulsar[3] 概念进阶

作者: QuinnSun | 来源:发表于2020-06-29 14:37 被阅读0次

    订阅模型

    Pulsar提供了灵活的消息模型,支持三种订阅类型:

    • Exclusive subscription:排他,只能有一个Consumer,接收一个Topic所有的消息
    • Shared subscription:共享,可以同时存在多个Consumer,每个Consumer处理Topic中一部消息(Shared模型是不保证消息顺序的,Consumer数量可以超过分区的数量)
    • Failover subscription:灾备模式,同一时刻只有一个有效的Consumer,其余的Consumer作为备用节点,在Master Consumer不可用后进行替代(看起来适用于数据量小,且解决单点故障的场景)


      image.png

    分区

    为了解决吞吐等问题,Pulsar和Kafka一样,采用了分区(Partition)的机制。


    image.png

    Pulsar提供了一些策略来处理消息到Partition的路由(MessageRouter):

    • Single partitioning:Producer随机选择一个Partition并将所有消息写入到这个分区
    • Round robin partitioning :采用Round robin的方式,轮训所有分区进行消息写入
    • Hash partitioning:这种模式每条消息有一个Key,Producer根据消息的Key的哈希值进行分区的选择(Key相同的消息可以保证顺序)。默认
    • Custom partitioning:用户自定义路由策略

    持久化

    Pulsar通过BookKeeper来存储消息,保证消息不会丢失


    image.png

    Pulsar采用“存储和服务分离”的两层架构(这是Pulsar区别于其他MQ系统最重要的一点,也是所谓的“下一代消息系统”的核心):

    Broker:提供发布和订阅的服务(Pulsar的组件)
    Bookie:提供存储能力(BookKeeper的存储组件)
    通过两层架构使broker变成无状态,可以水平扩容。高可靠和一致性通过bookkeeper保证。

    数据复制

    image.png
    • 采用ZooKeeper存储元数据,集群配置,作为协调器
      -- local zk负责Pulsar Cluster内部的配置等
      -- global zk则用于Pulsar Cluster之间的数据复制等
    • 采用Bookie作为存储设备
    • Broker负责负载均衡和消息的读取、写入等
    • Global replicators负责集群间的数据复制

    GEO-REPLICATION(地理复制)

    多个Broker节点组成一个Pulsar Cluster;多个Pulsar Cluster组成一个Pulsar Instance。
    Pulsar通过GEO-REPLICATION支持一个Instance内在不同的地域发送和消费消息。


    image.png

    在这个图中,每当 P1、P2 和 P3 的生产者分别向Cluster-A、Cluster-B和Cluster-C 中的T1 topic发送消息时,这些消息很快在不同的集群中复制,C1,C2可以在自己的集群内消费到所有的数据。

    相关文章

      网友评论

        本文标题:Apache Pulsar[3] 概念进阶

        本文链接:https://www.haomeiwen.com/subject/uxcwfktx.html