Pulsar入门与架构设计探究

Pulsar简介

Pulsar是云原生分布式消息流平台(即可作为消息中间件),最初源于Yahoo,支持Yahoo应用服务140万个主题,日处理超过1000亿条消息。Pulsar于2016年开源并捐赠给Apache软件基金会,现为Apache软件基金会顶级项目。

Pulsar的特性如下:

  • 支持多租户,通过多租户可为每个租户单独设置认证机制、存储配额、隔离策略等。
  • 具有高吞吐、低延时、强容错等特性   
  • 原生支持多集群部署,集群间支持无缝的数据复制(Geo-replication)
  • 高扩展性,能够支撑上百万个topic
  • 支持多语言客户端,如Java、Go、Python和C++
  • 支持多种消息订阅模式(exclusive, shared, failover,下文会有介绍)
  • 高可靠的消息持久化存储
  • 支持数据分层式存储,可将冷数据保存到S3、GCS等低成本的存储系统中

 

为什么使用Pulsar

MQ对比:

Pulsar入门与架构设计探究_第1张图片

Pulsar除了性能好、可靠性高之外,Pulsar有多租户、GEO-replication以及横向扩展能力等方面上的优势。

 

Pulsar基础知识

Topic组成部分

在Pulsar中topic的格式为:{persistent|non-persistent}://tenant/namespace/topic

persistent://public/default/order_status_changed_event

这里会涉及到几个概念

topic名称组成

描述

持久化/非持久化

pulsar支持两种主题类型:持久化和非持久化,默认是持久化。对于持久化的主题,消息会持久化到磁盘中,而非持久化则不会。

租户(tenant)

租户是topic最基本单位,租户可以跨集群分布,每个租户都可以有单独的认证和授权机制,租户也是存储配额、消息TTL(即消息自动确认时间)和隔离策略的管理单元。

命名空间(namespace)

将相关联的topic作为一个组来管理,是管理topic的基本单元。大多数对topic的管理都是以命名空间为粒度,比如GEO-replication是以namespace为单元。

主题(topic)

即主题名

下图以一个直观的视角来看一个topic的组成:(其中Property对应到tenant)

Pulsar入门与架构设计探究_第2张图片

 

主题订阅模式

pulsar的主题订阅模式包括四种:独占(exclusive)、共享(shared)、灾备(failover)、key共享(key_shared)。

Pulsar入门与架构设计探究_第3张图片

  • 独占:一个订阅只与一个消费者可以关联,只有这个消费者接收到topic的全部消息,如果这个消费者故障了就会停止消费。该模式适用于全局有序的消息消费。
  • 灾备:一个订阅可以与多个消费者关联,但只有一个消费者会消费到数据,当该消费者故障时,由另一个消费者来继续消费。该模式适用于全局有序的消息消费。
  • 共享:一个订阅可以与多个消费者关联,消息通过轮询机制发送给不同的消

你可能感兴趣的:(Pulsar,java,消息队列,kafka)