【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

为什么要选择 Apache Pulsar(二)

  • 2017-11-27
  • 本文字数:1772 字

    阅读完需:约 6 分钟

这是介绍 Apache Pulsar 关键特性系列文章的第二篇。Pulsar 是由 Yahoo 开发并开源的下一代发布订阅消息系统。在第一篇文章里,我们介绍了Pulsar 对消息模型的灵活支持、多租户、多地域复制和持久性。在这一篇文章里,我们将继续介绍Pulsar 的IO 隔离机制、伸缩性、安全模型、多语言API 和易操作性。

读写IO 隔离

在大多数消息系统里,消费者的速度延迟会导致性能下降。同一个主题的消费者,如果其中一个出现速度延迟,就会影响到其他速度更快的消费者。这是因为慢消费者强制要求消息系统从存储里获取数据,导致IO 出现抖动,降低吞吐量。那些需要将数据先加载到内存里的消费者就会受到影响。导致这一问题的原因主要是读操作和写操作共享同一个执行路径。

Pulsar 通过使用 BookKeeper 作为存储系统解决了这一问题。有了 BookKeeper,Pulsar 就可以为读操作和写操作提供不同的执行路径,实现 IO 隔离。常规的读操作直接由 Pulsar broker 处理,写操作使用 BookKeeper 的预写式日志(WAL),Catch-up 读使用 BookKeeper 的后端存储设备。

对于系统中消息的发布,在任何情况下都能提供可控的,可预计的延迟是十分重要的。有了 IO 隔离,即使在磁盘承受高负载的读操作时,仍然能够保证消息的发布延迟是很低的、可以预计的。

伸缩性

消息系统的可伸缩性也是很重要的。发布订阅消息系统的伸缩性可以从以下几个维度来衡量:

  • 高吞吐量——Pulsar 的高吞吐量,通过最大限度的使用磁盘带宽(IOPS)来实现。吞吐量取决于消息的大小,例如,如果消息的大小为 1KB,那么 Pulsar 可以达到每秒 120MB 的吞吐量。但如果消息很小,比如只有 10 个字节,那么吞吐量可能只有 1.8M 每秒。这两种结果都是基于单个发布者向一个主题(topic)分区写入消息而得出的,99% 的写入延迟都在 5 毫秒以内。
  • 主题数量——主题伸缩性是发布订阅消息系统用以支持海量主题的一项能力。Pulsar 可以支持从几百到百万级别的主题数量的扩展,同时还能一直保持良好的性能。主题的伸缩性取决于数据的组织和存储方式。如果一个主题的数据被保存在单独的文件或目录里,就会影响伸缩性,因为磁盘的 IO 是分散的,这些文件会定期从页面缓存冲刷到磁盘上。不过 Pulsar 的数据保存在 bookie(BookKeeper 服务器)上,不同主题的消息被聚合起来,经过排序,保存到大文件里,并进行索引。Pulsar 也因此能够支持大量的主题。

安全

Pulsar 支持可插拔的认证机制,可以通过配置使用多种认证实现。认证的目的是为了建立客户端标识,并为客户端分配一个角色令牌。这个令牌被用来判断一个客户端可以做哪些操作。Pulsar 提供了两个默认的认证实现:TLS 客户端认证和 AthenZ (由 Yahoo 开发的一种基于角色的认证系统)。

多语言 API

应用程序可以通过多种编程语言与 Pulsar 发生交互。Pulsar 为三种主流语言提供了官方的客户端: C++ Java Python 。用户可以根据实际需要选择一种客户端。这些客户端 API 非常直观,而且在不同语言之间保持了一致性。另外,Pulsar 的官方客户端还为不同风格的应用程序提供了同步和异步两种读写操作。同步和异步的语义是一样的:要么阻塞方法等待操作完成,要么返回一个 Future 对象用于追踪操作是否完成。

运维成熟度

Pulsar 易于管理,你可以在系统运行的同时加入新的 broker 节点和存储节点来扩展容量。如果一个存储节点宕机,后台进程会自动将宕机节点所包含的数据从其他节点上的可用副本中复制到可用的存储节点上。Pulsar 为集群管理提供了多种方式,可以使用命令行工具,也可以使用 Java 库或 REST API。后者提供了更大灵活性,你可以基于它们开发自己的管理工具或者与已有的工具结合在一起使用。

企业级

Yahoo 设计 Pulsar 是为了解决现有开源消息系统存在的一些问题和场景。满足了高吞吐量(处理数千亿个消息)、强持久性保证和低延迟的需求。Pulsar 已经在 Yahoo 运行了三年,支持着 140 万个主题,99% 延迟低于 5 毫秒,部署在 10 多个数据中心(启用了全网格复制),已经处理了超过 100 万亿个消息。

总结

Pulsar 是下一代发布订阅消息系统,弥补了其他开源消息系统的不足。在这两篇文章里,我们介绍了 Pulsar 的各种关键特性,并解释了 Pulsar 如何通过使用 broker 和 bookie 来实现 IO 隔离,以及它如何支持企业级的特性,如持久性、多租户、多地域复制、高吞吐量和主题伸缩。

查看英文原文 Why Apache Pulsar? Part 2

感谢杜小芳对本文的审校。

2017-11-27 17:183154
用户头像

发布了 322 篇内容, 共 134.5 次阅读, 收获喜欢 144 次。

关注

评论

发布
暂无评论
发现更多内容

区块链项目:白皮书+PPT海报设计,热度视频/MG动画,出海包装/宣发,经济模型设计

区块链软件开发推广运营

数字藏品开发 dapp开发 区块链开发 链游开发 NFT开发

mac电脑数据转换 EasyDataTransform激活最新版

胖墩儿不胖y

数据转换 Mac软件 数据处理软件

数据库深分页介绍及优化方案 | 京东云技术团队

京东科技开发者

京东云 企业号9月PK榜

DPText-DETR: 基于动态点query的场景文本检测,更高更快更鲁棒 | 京东探索研究院

京东科技开发者

京东云 企业号9月PK榜

ARTS 打卡 第三周,向阳而生

海风极客

ARTS 打卡计划

ARTS 打卡第 4 周

AI帅辉

ARTS 打卡计划 学习分享

第四周ARTS打卡

犇犇

ARTS 打卡计划

ARTS 打卡第 4 周

atom

破局DevOps|8大北极星指标指引研发效能方向

laofo

DevOps 研发效能 研发度量 效能度量 研发效能度量

ARTS 打卡第 4 周

Geek_wu

ARTS 打卡计划 左耳朵耗子

区块链dapp程序开发,app项目系统搭建

V\TG【ch3nguang】

手机+卫星的科技狂想

脑极体

手机 卫星

Spring 中 Bean 的生命周期

小万哥

Java spring 程序员 springboot SpringCloud

谷沁清益生菌清口含片,守护口腔健康的第一道防线

联营汇聚

蓝易云:提升网站性能:Nginx五种高效负载均衡策略详解!

百度搜索:蓝易云

nginx 云计算 Linux 运维 云服务器

macos轻量级思维导图软件 ClickCharts最新激活版

mac大玩家j

思维导图 Mac软件 思维导图软件

持续部署:提高敏捷加速软件交付(内含教程)

SEAL安全

ci 持续部署 CD 软件交付 企业号9月PK榜

文盘Rust -- 给程序加个日志 | 京东云技术团队

京东科技开发者

京东云 企业号9月PK榜

ARTS 打卡第四周

请务必优秀

张勇卸任阿里云董事长与CEO,该职务将由集团CEO吴泳铭兼任

B Impact

Rich Bowen: 无论你在创造什么,最终交付的是信任。

亚马逊云科技 (Amazon Web Services)

开源 亚马逊云科技

区块链DAPP系统开发搭建

V\TG【ch3nguang】

区块链应用开发

数据驱动决策:以经验与洞察引领工作智慧

叶小鍵

解锁社交媒体的未来:SocialFi 的承诺

区块链软件开发推广运营

交易所开发 数字藏品开发 合约交易所开发 NFT开发 区块链开发DAPP开发

元宇宙优势与劣势、机遇与挑战分析-元宇宙解决方案

3DCAT实时渲染

元宇宙解决方案

蓝易云:Tomcat 部署及优化详细教程!

百度搜索:蓝易云

Java tomcat Linux Web

探索GreatADM:如何快速定义监控

GreatSQL

CnosDB 签约京清能源,助力分布式 光伏发电解决监测系统难题

CnosDB

开源 时序数据库 CnosDB 京清能源

【Y 码力】WAL 与性能

YMatrix 超融合数据库

性能提升 WAL 超融合数据库 故障恢复 YMatrix

为什么要选择Apache Pulsar(二)_开源_Karthik Ramasamy_InfoQ精选文章