美文网首页轻巧随笔
【Pulsar 精选】Apache Pulsar 架构简介

【Pulsar 精选】Apache Pulsar 架构简介

作者: 熊本极客 | 来源:发表于2022-08-25 19:24 被阅读0次

    1.什么是 Apache Pulsar?

    1.1 简介

    Apache Pulsar 是新一代云原生分布式消息流平台,集消息存储轻量化函数式计算为一体,采用计算与存储分离架构设计,支持多租户持久化存储多机房跨区域数据复制,具有强一致性高吞吐低延时高可扩展性等流数据存储特性。

    1.2 Pulsar 项目发起的背景

    需求:解决 Yahoo 多租户、支撑上百万的 Topic 的问题,同时满足低延迟、持久化和跨地域复制要求。

    已有系统存在的问题
    ① 存储和计算耦合
    ② 存储对文件系统依赖太强
    ③ 运维复杂,替换机器、扩容需要重新均衡数据

    2.架构

    Pulsar 实例是由 1 个或者多个 Pulsar 集群构成, 其中多个 Pulsar 集群可以复制数据

    如下图所示,Pulsar 集群的组件有Borker、Bookie(BookKeeper)、ZK(Zookeeper)
    ● Broker 负责负载均衡、消息的读取和写入等;
    ● 采用 ZooKeeper 存储元数据、集群配置,作为 Coordination

    ■ Local Zookeeper 负责 Pulsar Cluster 内部的配置等
    ■ Global Zookeeper 则用于 Pulsar Cluster 之间的数据复制等

    ● 采用 Bookie 作为持久化存储
    ● Broker 中的 Global Replicators 负责集群间的数据复制

    image.png

    3.组件

    3.1 Broker

    Broker 是无状态的组件,主要由 4 个模块组成:
    Dispatcher:调度分发模块,承担协议转换、序列化反序列化等
    Load balancer:负载均衡模块,对访问流量进行控制管理
    Service discovery:服务发现模块,为每个 topic 选择无状态的主节点
    Global replicator:跨集群复制模块,承担异步的跨集群消息同步功能

    说明:为了有更好的性能,通常是从 Managed Ledger 获取消息,如果挤压消息 backlog 超过缓存大小,则 Broker 会从 BookKeeper 读取数据。

    3.2 元数据管理、集群配置和集群协调器 - Zookeeper

    3.2.1 元数据管理

    Pulsar 集群的元数据,包括 topic 元数据、schema、broker load data 等。

    说明
    ① 元数据和集群配置都需要全局一致的
    ② 每个集群都有自己的本地 ZooKeeper 集合,管理元数据、Broker 负载、BookKeeper ledger 元数据等

    3.2.2 集群配置管理

    维护一个 Pulsar 实例的所有配置,包括集群、租户、命名空间、topic partition 等。一个 Pulsar 实例可以有一个本地集群、多个本地集群或多个跨区域集群。因此,配置存储可以在 Pulsar 实例下的多个集群之间共享配置。

    3.3 持久化存储 - BookKeeper

    Pulsar 采用 Apache BookKeeper 作为消息的持久化存储。BookKeeper 是一个分布式 write-ahead log (WAL) 系统,有如下关键优势:
    提供独立日志 ledgers,topic 都会创建自己的 ledger
    高效存储,为有序的数据提供多个高效率副本
    强一致性,如果系统发生故障,可以保证 ledger 的读写一致性
    负载均衡,在多个 Bookies 之间均衡分布 I/O
    横向扩容,支持 Bookies 水平扩展,即可以向集群添加多个 Bookies
    Bookies 支持数千个 ledger 同时读写

    说明:BookKeeper 除了持久化消息数据,还会保存消费者的游标。

    如下所示,Pulsar 支持持久化消息存储,即 topic 前缀体现了持久性:

    persistent://tenant01/namespace01/myTopic
    
    image.png

    3.4 消息代码 - Pulsar proxy

    Pulsar 客户端可以直连 Pulsar 集群,也可以通过代理间接通信,例如云环境、Kubernetes 等平台。Pulsar 代理相当于集群中的网关

    说明:为了性能和容错,可以运行任意多的 Pulsar 代理实例。

    从架构的角度,Pulsar 代理是通过 Zookeeper 获取集群信息,其启动命令如下所示

    $ cd /path/to/pulsar/directory
    $ bin/pulsar proxy \
      --metadata-store zk:my-zk-1:2181,my-zk-2:2181,my-zk-3:2181 \
      --configuration-metadata-store zk:my-zk-1:2181,my-zk-2:2181,my-zk-3:2181
    

    3.5 服务发现

    Pulsar 服务发现中,当客户端对端点执行 HTTP 请求的时候,例如 pulsar://pulsar-cluster.acme.com:6650`,客户端可以通过 DNS 可以访问到集群。

    image.png

    相关文章

      网友评论

        本文标题:【Pulsar 精选】Apache Pulsar 架构简介

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