Pulsar
Pulsar
为什么要学习Apache Pulsar
什么是云原生
- DevOps:指的就是开发和运维不再是分开的两个团队,而是你中有我,我中有你的一个团队。
- 微服务:指是应用需要具备低耦合+高内聚。
- 持续交付:指的在不影响用户使用服务的前提下,频繁将新功能发布给用户使用,当然这一点也是云原生中比较难以达到的。
- 容器化:指的是在运维的时候,不需要再关心每个服务所使用的技术栈,每个服务都被无差别的封装在容器中,可以被无差别的管理和维度,比如目前docker和k8s。
Apache Pulsar基本介绍
Apache Pulsar是一个云原生企业级的发布订阅(pub-sub)消息系统。
Apache Pulsar的功能与特性:
- 多租户模式;
- 灵活的消息系统;
- 云原生架构;
- segmented Sreams(分片流);
- 支持跨地域复制;
多租户模式
- 租户和命名空间(namespace)是Pulsar支持多租户的两个核心概念。
- 在租户级别,Pulsar为特定的租户预留合适的存储空间、应用授权和认证机制。
- 在命名空间级别,Pulsar有一系列的配置策略(policy),包括存储配额、流控制、消息过期策略和命名空间之间的隔离策略。
灵活的消息系统
- Pulsar做了队列模型和流模型的统一,在Topic级别只需要保存一份数据,同一份数据可多次消费。以流式、队列等方式计算不同的订阅模型,大大提升了灵活度。
- 同时Pulsar通过事务采用Exactly-Once(精准一次)在进行消息传输过程中,可以确保数据不丢不重。
消息队列模式
流模式
云原生架构
- Pulsar使用计算与存储分离的云原生架构,数据从Broker搬离,存在共享存储内部。上层是无状态的Broker,复制消息分发和服务;下层是持久化的存储层Bookie集群。Pulsar存储是分片的,这种架构可以避免扩容时受限制,实现数据的独立扩展和快速恢复。
segmented Sreams(分片流)
- Pulsar将无界的数据看作是分片的流,分片分散存储在分层存储(tiered storage)、BookKeeper集群和Broker节点上,而对外提供一个统一的、无界数据的视图。其次,不需要用户显式迁移数据,减少存储成本并保持近似无限的存储。
支持跨地域复制
- Pulsar中的跨地域复制是将Pulsar中持久化的消息在多个集群间备份。在Pulsar 2.4.0中新增了复制订阅模式(Replicated-subscriptions),在某个集群失效的情况下,该功能可以在其他集群恢复消费者的消费状态,从而达到热备模式下消息服务的高可用。