乐趣区

关于pulsar:Pulsar-vs-Kafka一文掌握高性能消息组件Pulsar基础知识

什么是 Pulsar?

Apache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代 云原生 分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐以及低延时的高可扩大流数据存储个性。

Pulsar 的要害个性

  • Pulsar 的单个实例原生反对 多个集群,可跨机房在集群间无缝地实现音讯复制。
  • 极低的公布提早和端到端提早。
  • 可无缝扩大到超过 一百万 个 topic。
  • 简略的客户端 API,反对 Java、Go、Python 和 C++。
  • 反对多种 topic 订阅模式(独占订阅、共享订阅、故障转移订阅)。
  • 通过 Apache BookKeeper 提供的长久化音讯存储机制保障消息传递。
  • 由轻量级的 serverless 计算框架 Pulsar Functions 实现流原生的数据处理。
  • 基于 Pulsar Functions 的 serverless connector 框架 Pulsar IO 使得数据更易移入、移出 Apache Pulsar。
  • 分层式存储 可在数据古老时,将数据从热存储卸载到冷 / 长期存储 (如 S3、GCS) 中。

Pulsar vs Kafka

下方链接为 Pulsar 与 Kafka 具体比照报告,可自行下载查看

https://streamnative.io/en/bl…

https://streamnative.io/zh/bl…

  • 性能与可用性

基准测试(StreamNative)

数据起源

https://mp.weixin.qq.com/s/UZ…

https://streamnative.io/en/bl…

https://streamnative.io/white…

  • 吞吐量(Throughput)

在与 Kafka 的持久性保障雷同的状况下,Pulsar 可达到 605 MB /s 的公布和端到端 吞吐量 (与 Kafka 雷同)以及 3.5 GB/s 的 catch-up read 吞吐量(比 Kafka 高 3.5 倍)。Pulsar 的吞吐量不会因分区数量的减少和持久性级别的扭转而受到影响,而 Kafka 的吞吐量会因分区数量或持久性级别的扭转而受到重大影响。

  • 提早性(Latency)

在不同的测试实例 (包含不同订阅数量、不同主题数量和不同持久性保障) 中,Pulsar 的提早显著低于 Kafka。Pulsar P99 提早在 5 到 15 毫秒之间。Kafka P99 提早可能长达数秒,并且会因主题数量、订阅数量和不同持久性保障而受到微小影响。

  • 功能性

  1. 多语言客户端(C/C++、Python、Java、Go …)
  2. 管理工具(Pulsar Manager vs Kafka Manager)
  3. 内置流解决 Built-In Stream Processing(Pulsar Function vs Kafka Streams)
  4. Rich Integrations (Pulsar Connectors)
  5. Exactly-Once Processing
  6. 日志压缩
  7. 多租户(Pulsar)
  8. 平安治理(Pulsar)

架构设计

Pulsar 采纳存储和计算拆散的软件架构。在音讯畛域,Pulsar 是第一个将存储计算拆散 云原生 架构落地的 开源 我的项目。因为在 Broker 层不存储任何数据,这种架构为用户带来了更高的可用性、更灵便的扩容和治理、防止数据的 reblance 和 catch-up。

在 Apache Pulsar 的分层架构中,服务层 Broker 和存储层 BookKeeper 的每个节点都是对等的。Broker 仅仅负责音讯的服务反对,不存储数据。这为服务层和存储层提供了刹时的节点扩大和无缝的失效恢复。

长久化存储(Persistent storage)

Pulsar 应用 BookKeeper 分布式日志存储数据库作为存储组件,在底层应用日志作为存储模型。

Pulsar 将所有未确认音讯 (即未解决音讯) 存储在 BookKeeper 中的多个“bookie”服务器上。

BookKeeper 通过 Quorum Vote 的形式来实现数据的一致性,跟 Master/Slave 模式不同,BookKeeper 中每个节点也是对等的,对一份数据会 并发 地同时写入指定数目的存储节点。

一个 Topic 实际上是一个 ledgers 流。Ledger 自身就是一个日志。所以一系列的子日志 (Ledgers) 组成了一个父日志(Topic)。

Ledgers 追加到一个 Topic,条目 (音讯或者一组音讯) 追加到 Ledgers。Ledger 一旦敞开是不可变的。Ledger 作为最小的删除单元,也就是说咱们不能删除单个条目而是去删除整个 Ledger。

Ledgers 自身也被合成为多个 Fragment。Fragment 是 BookKeeper 集群中最小的散布单元。

每个 Ledger(由一个或多个 Fragment 组成)能够跨多个 BookKeeper 节点 (Bookies) 进行复制,以实现数据容灾和晋升读取性能。每个 Fragment 都在一组不同的 Bookies 中复制(存在足够的 Bookies)。

conf/bookkeeper.conf

#############################################################################

## Server parameters

#############################################################################

# Directories BookKeeper outputs its write ahead log.

# Could define multi directories to store write head logs, separated by ','.

journalDirectories=/data/appData/pulsar/bookkeeper/journal

#############################################################################

## Ledger storage settings

#############################################################################

# Directory Bookkeeper outputs ledger snapshots

# could define multi directories to store snapshots, separated by ','

ledgerDirectories=/data/appData/pulsar/bookkeeper/ledgers

conf/broker.conf

### --- Managed Ledger --- ###

# Number of bookies to use when creating a ledger

managedLedgerDefaultEnsembleSize=2

# Number of copies to store for each message

managedLedgerDefaultWriteQuorum=2

# Number of guaranteed copies (acks to wait before write is complete)

managedLedgerDefaultAckQuorum=2

元数据存储(Metadata storage)

Pulsar 和 BookKeeper 都应用 Apache Zookeeper 来存储元数据和监控节点健康状况。

$ $PULSAR_HOME/bin/pulsar zookeeper-shell

> ls /

[admin, bookies, counters, ledgers, loadbalance, managed-ledgers, namespace, pulsar, schemas, stream, zookeeper]

更多福利

云智慧已开源集轻量级、聚合型、智能运维为一体的综合运维治理平台 OMP(Operation Management Platform),具备 纳管、部署、监控、巡检、自愈、备份、复原 等性能,可为用户提供便捷的运维能力和业务管理,在进步运维人员等工作效率的同时,极大晋升了业务的连续性和安全性。点击下方地址链接,欢送大家给 OMP 点赞送 star,理解更多相干内容~

GitHub 地址:https://github.com/CloudWise-OpenSource/OMP

Gitee 地址:https://gitee.com/CloudWise/OMP

微信扫描辨认下方二维码,备注【OMP】退出 AIOps 社区运维治理平台 OMP 开发者交换群,与更多行业大佬一起交流学习~

退出移动版