本文由 「AI前线」原创,原文链接:为什么要选择Apache Pulsar:IO隔离
作者|Matteo Merli & Karthik Ramasamy
译者|薛命灯
编辑|Emily

AI 前线导读:”这是介绍 Apache Pulsar 关键特性系列文章的第二篇。Pulsar 是由 Yahoo 开发并开源的下一代发布订阅消息系统。在第一篇文章《为什么要选择Apache Pulsar》里,我们介绍了 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 隔离,以及它如何支持企业级的特性,如持久性、多租户、多地域复制、高吞吐量和主题伸缩。

查看英文原文:streaml.io/blog/why-ap…

更多干货内容,可关注AI前线,ID:ai-front,后台回复「AI」、「TF」、「大数据」可获得《AI前线》系列PDF迷你书和技能图谱。

为什么要选择Apache Pulsar:IO隔离相关推荐

  1. 为什么要选择Apache Pulsar(一)

    Apache Pulsar是由Yahoo开发并开源的下一代发布订阅消息系统.Pulsar用于解决现有开源消息系统的不足,并已在Yahoo的生产环境中运行了三年多时间,助力Yahoo的主要应用,如Yah ...

  2. 为什么要选择Apache Pulsar(二)

    这是介绍Apache Pulsar关键特性系列文章的第二篇.Pulsar是由Yahoo开发并开源的下一代发布订阅消息系统.在第一篇文章里,我们介绍了Pulsar对消息模型的灵活支持.多租户.多地域复制 ...

  3. 技术专家:为什么我们最终选择Apache Pulsar替代Kafka?

    导读:在传统消息系统中,存在一些问题.一方面,消息的存储和服务一般是紧耦合的,节点的扩容和运维不便,特别是在需要多备份来保证高可用性的场景.另一方面,消息的消费模式被固定,在企业内部需要维护多套系统来 ...

  4. Apache Pulsar:实时数据处理中消息,计算和存储的统一

    本文转载自"AI前线",整理自翟佳在 QCon2018 北京站的演讲,在本次演讲中,翟佳介绍了 Apache Pulsar 的架构.特性和其生态系统的组成,并展示了 Apache ...

  5. 案例推荐|服务 50+ 业务线,Apache Pulsar 在科大讯飞 SRE 的探索与实践

    本文整理自 8 月 Apache Pulsar Meetup 上的分享.科大讯飞是中国最大的智能语音技术提供商,在中文语音合成.语音识别.口语评测等多项技术上拥有国际领先的成果.2022 年 3 月, ...

  6. Apache Pulsar的多租户消息系统

    在之前的博客文章中,我们介绍了多个选择Apache Pulsar作为企业级实时业务所用消息解决方案的原因.后续文章中,将会深入介绍其中的一些企业级功能,例如预防数据丢失的持久化存储.多租户功能.多地域 ...

  7. 技术干货:Apache Pulsar 在移动云上的应用

    业务背景 随着移动云的快速发展,越来越多的客户对云原生消息中间件提出了更多需求,从而可以将主要的精力聚焦在应用程序上,大致有以下方面: 快速弹性伸缩,计算和存储资源能够按需扩展,以满足不同流量峰值和存 ...

  8. 完整版 | 2021 年 Apache Pulsar 用户调查报告

    本篇文章翻译自 StreamNative 博客,作者郭斯杰.Carolyn King.本调查报告翻译由两位社区志愿者 Mattisonchao 与刘梓霖联合完成,特此感谢! 简介 在过去一年的社区观察 ...

  9. 用户案例|告别传统金融消息架构:Apache Pulsar 在平安证券的实践

    本文首发自 InfoQ <告别传统金融消息架构:Apache Pulsar 在平安证券的实践>. 在金融场景中,伴随着业务的扩展,应用系统也相应地增加更多的场景,这些新场景对消息系统提出更 ...

最新文章

  1. 我的4年学习心得:AI 应该是一个整体!
  2. 洛谷P1417 烹调方案
  3. 数据段、数据报、数据包、帧的区别与联系
  4. ubuntu中使用apt-get安装zbar
  5. Windows GDI和GDI+编程实例剖析(1)
  6. 输出第二个整数(信息学奥赛一本通-T1002)
  7. [转载]监控 Linux 性能的 18 个命令行工具
  8. 从 0 到 1 实现 React 系列 —— 1.JSX 和 Virtual DOM
  9. HTTP协议基本原理简介(一)
  10. CentOS下配置apache+gitweb
  11. 游戏美术专业人士如何评价Share Creators智能数字资产管理系统
  12. 计算机第一个应用领域是,第一代计算机主要应用领域是什么
  13. linux limits.conf 生效,linux修改limits.conf不生效
  14. c语言重复测试,C语言检测过零的方法--等待过零检测法
  15. (三篇长文让你玩6Pandas)数据分析入门_PART2常用工具包_CH02数据分析工具:Pandas__Part03(统计分析基础)
  16. 手机计算机怎么玩24点游戏,计算器游戏怎么玩_计算器游戏新手玩法介绍_快吧手游...
  17. 数据的写出(FileWriter)
  18. hdu - 1789 题解
  19. scrapinghub 爬取amztracker页面信息
  20. 移动光驱安装centos_Centos7 光驱安装

热门文章

  1. 谷歌推网页爬虫新标准,开源robots.txt解析器
  2. Go开发之路 -- 指针类型
  3. 设计模式 - 迭代器模式(iterator pattern) 具体解释
  4. 【Thread】简单说说java.lang.Thread.State
  5. 设计模式-职责链模式
  6. C# 利用WMI对象获取物理内存和可用内存大小
  7. I2C总线学习(二)--数据传送格式
  8. 使用FAI+PXE批量部署Debian。
  9. Linux系统运维工程师PDF文档精选
  10. 5G NR — 国内运营商的频段和带宽划分