博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
为什么要选择Apache Pulsar(二)
阅读量:6465 次
发布时间:2019-06-23

本文共 1913 字,大约阅读时间需要 6 分钟。

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

\\

读写IO隔离

\\

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

\\

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

\\

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

\\

伸缩性

\\

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

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

安全

\\

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

\\

多语言API

\\

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

\\

运维成熟度

\\

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

\\

企业级

\\

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

\\

总结

\\

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

\\

查看英文原文

\\

感谢对本文的审校。

转载地址:http://vdezo.baihongyu.com/

你可能感兴趣的文章
第二周总结
查看>>
【转】知道这20个正则表达式,能让你少写1,000行代码
查看>>
自定义 启动和关闭 oracle 的命令
查看>>
Quartz
查看>>
正则表达式介绍
查看>>
初识Scala反射
查看>>
第三十九天
查看>>
Redis详解
查看>>
论程序员加班的害处
查看>>
codeblocks快捷键
查看>>
基于HTML5的WebGL设计汉诺塔3D游戏
查看>>
WPF资料链接
查看>>
过滤DataTable表中的重复数据
查看>>
再次更新
查看>>
mysql的数据类型int、bigint、smallint 和 tinyint取值范围
查看>>
利用网易获取所有股票数据
查看>>
移动铁通宽带上网设置教程
查看>>
Python算法(含源代码下载)
查看>>
利用Windows自带的Certutil查看文件MD5
查看>>
通过原生js添加div和css
查看>>