技术专家:为什么我们最终选择Apache Pulsar替代Kafka?
导读:在传统消息系统中,存在一些问题。一方面,消息的存储和服务一般是紧耦合的,节点的扩容和运维不便,特别是在需要多备份来保证高可用性的场景。另一方面,消息的消费模式被固定,在企业内部需要维护多套系统来保证不同的消息消费场景。另外消息系统中,多租户,多机房互备等企业级的特性和功能也不太丰富。
Apache Pulsar采用了分层的架构,解决了存储计算的耦合,同时提供了很好的扩展性和可维护性。Pulsar也通过订阅层的抽象,提供了统一的消息消费模型。特别是在Pulsar的设计之初,就注重对多租户,多机房互备等方面的需求,提供了众多完备的企业级的特性。
Apache Pulsar从2015年初在Yahoo全球近十个机房内部大规模部署,稳定服务了Yahoo内部邮箱,金融,Flickr,广告,NoSQL等众多的应用场景,一共创建了80多个租户,230多万个topic。 智联招聘在18年用Pulsar替换了线上原有的RabbitMQ,作为内部的消息总线,服务内部的20多个应用,每天会产生6亿多条消息和3TB的数据。在减轻硬件,运维和部署成本的同时,为系统提供了更好的服务质量和扩展性。
Apache Pulsar,是一个使用Apache Bookkeeper提供持久化的pub/sub消息平台,它可以提供如下特性:
持久化:采用 BookKeeper 作为存储层,灵活性强。
Ordering:每个消息有全局唯一的 ID,消息重发简单。
Delivery Guarantees:At least once, at most once 和 effectively once。
高吞吐:单个分区高达 1.8 M 消息/秒。
低延迟:99% 的生产延迟小于 5 ms。
统一消息模型:同时支持两种消费模型,流和队列。
多租户:单个群集可支持多租户和用例。
跨地域复制:原生可用。
高可用、高扩展性、易运维
架构概述
Pulsar使用分层结构,将存储机制与broker隔离开来。此体系结构为Pulsar提供以下好处:
1、独立扩展broker,负责处理Producer发来的消息并分发给消费者。通过一个全局的ZK集群来处理多种协作式任务,例如说基于地理位置的复制。并将消息存储到BookKeeper中,同时单个集群内也需要有一套ZK集群,来存储一些元数据。
2、独立扩展存储(Bookies)
3、更容易容器化Zookeeper, Broker and Bookies
4、ZooKeeper提供集群的配置和状态存储
亮点如下:
1、负载均衡器:Pulsar内置负载均衡器,可在内部将负载分配给所有broker
2、服务发现:Pulsar具有内置的服务发现功能,可以识别在何处以及如何连接到broker。
3、全局复制器:可以在为同一个命名空间配置的N个borker之间复制数据。
4、全局ZK:全局ZK用于实现跨地域复制
跨地域复制
跨地域复制是Pulsar提供的解决方案。全局集群可以在名称空间级别进行配置,以便在任意数量的集群(n-wayMesh解决方案)中进行复制。从下面的示例中,数据中心C没有消费者,但数据中心A或B中仍会根据订阅模型消费消息。
多租户
多租户特性通过对数据存储的隔离,帮助为企业建立Pulsar集群。这一内置功能将大大降低组织的基础设施建设和运营成本。
零Rebalancing时间
Pulsar的分层架构和代理的无状态性质有助于实现零Rebalancing时间。如果一个新的broker被添加到集群中,它将立即可用;无需在集群中rebalancing数据。
从Bookies的角度来看:当一个新的Bookie添加到集群中时,由于其底层的分布式日志架构(读/写隔离),该节点立刻可以写入数据。基于段复制配置的数据rebalance在后台进行,不会对集群产生任何影响。
统一的队列和流模型
Pulsar使用同一个模型支持流和队列语义。这个特性可以通过订阅模型实现。消费者使用订阅模型中的任何一个订阅主题:
1、Exclusive - 支持流语义
2、Failover - 支持流语义
3、Shared - 支持队列语义
函数
函数是能够在Pulsar内部或外部存在的本地监听器。从用途本身来看,函数可用于基于内容的路由,这将帮助企业应用程序路由预期的消息。
Proxy
当broker部署在云或Kubernetes中时,需要使用proxy将broker暴露于外部世界。Proxy本身可以提供身份验证和授权。Proxy内置将授权令牌传递给broker以进行命名空间权限验证的功能。
结论
Apache Pulsar使用基于分层体系结构的pub/sub模型,它具有跨地域复制、多租户、零Rebalancing时间等功能。
原文地址:https://medium.com/@pckeyan/apache-pulsar-gentle-introduction-465ca6da0e18
作者:Karthikeyan Palanivelu,由方圆翻译
不知大家读完此文,是否被Pulsar所吸引?它确实弥补了一些竞品的短板,例如地域复制、多用户、扩展性、读写隔离等等。如果大家想了解更多关于Apache Pulsar的知识,那么就参加本月21-23日,由msup和高可用共同举办的GIAC全球互联网架构大会吧!
Apache Pulsar和Apache BookKeeper的PMC成员和Committer翟佳将出席GIAC深圳站,作为中间件专场讲师分享《下一代分布式消息系统Apache Pulsar》的话题。参加2019年GIAC深圳站,可以了解业界动态,和业界专家近距离接触。
本届大会,组委会还特别邀请到了105位来自Google、微软、Oracle、eBay、百度、阿里、腾讯、商汤、图森、字节跳动、新浪、美团点评等一线互联网大厂嘉宾作为讲师出席,分享他们的实践经验、遇到的问题及解决方案。现在席位所剩不多,快来识别图中二维码报名吧!
转载于:https://juejin.im/post/5d05c6a96fb9a07eaf2b8fa0
技术专家:为什么我们最终选择Apache Pulsar替代Kafka?相关推荐
- 为什么要选择Apache Pulsar:IO隔离
本文由 「AI前线」原创,原文链接:为什么要选择Apache Pulsar:IO隔离 作者|Matteo Merli & Karthik Ramasamy 译者|薛命灯 编辑|Emily AI ...
- 为什么要选择Apache Pulsar(一)
Apache Pulsar是由Yahoo开发并开源的下一代发布订阅消息系统.Pulsar用于解决现有开源消息系统的不足,并已在Yahoo的生产环境中运行了三年多时间,助力Yahoo的主要应用,如Yah ...
- 为什么要选择Apache Pulsar(二)
这是介绍Apache Pulsar关键特性系列文章的第二篇.Pulsar是由Yahoo开发并开源的下一代发布订阅消息系统.在第一篇文章里,我们介绍了Pulsar对消息模型的灵活支持.多租户.多地域复制 ...
- Apache Pulsar的多租户消息系统
在之前的博客文章中,我们介绍了多个选择Apache Pulsar作为企业级实时业务所用消息解决方案的原因.后续文章中,将会深入介绍其中的一些企业级功能,例如预防数据丢失的持久化存储.多租户功能.多地域 ...
- 完整版 | 2021 年 Apache Pulsar 用户调查报告
本篇文章翻译自 StreamNative 博客,作者郭斯杰.Carolyn King.本调查报告翻译由两位社区志愿者 Mattisonchao 与刘梓霖联合完成,特此感谢! 简介 在过去一年的社区观察 ...
- 再见传统金融消息架构!Apache Pulsar 在平安证券的应用
作者|陈翔.王东松 在金融场景中,伴随着业务的扩展,应用系统也相应地增加更多的场景,这些新场景对消息系统提出更多样的需求,导致原有架构面临一系列挑战.在尝试使用 Apache Pulsar 后,平安证 ...
- 案例推荐|服务 50+ 业务线,Apache Pulsar 在科大讯飞 SRE 的探索与实践
本文整理自 8 月 Apache Pulsar Meetup 上的分享.科大讯飞是中国最大的智能语音技术提供商,在中文语音合成.语音识别.口语评测等多项技术上拥有国际领先的成果.2022 年 3 月, ...
- Apache Pulsar:实时数据处理中消息,计算和存储的统一
本文转载自"AI前线",整理自翟佳在 QCon2018 北京站的演讲,在本次演讲中,翟佳介绍了 Apache Pulsar 的架构.特性和其生态系统的组成,并展示了 Apache ...
- 技术干货:Apache Pulsar 在移动云上的应用
业务背景 随着移动云的快速发展,越来越多的客户对云原生消息中间件提出了更多需求,从而可以将主要的精力聚焦在应用程序上,大致有以下方面: 快速弹性伸缩,计算和存储资源能够按需扩展,以满足不同流量峰值和存 ...
最新文章
- python 发布包_如何将自己的Python包发布到PyPI
- 睿云智合(Wise2C)谈论docker
- hook修改信息_React系列二十一 Hook(二)高级使用
- 未能加载程序集或它的一个依赖项_英伟达发布kaolin:一个用于加速3D深度学习研究的PyTorch库...
- Cygwin,Nutch安装配置,检验是否正确(对网友守望者博客的修改---在此感谢守望者)4
- PHP应对洪水般的恶意访问接口 访问冲击
- linux数组操作 增删改查,linuxea:go数组与数组增删改查(19)
- 【转】SharePoint 中的编程模型
- 解决为什么导入了tomcat进入myeclipse却在server中找不到
- HTML通过java信息保存,如何使用java邮件API将HTML格式的数据保存为java邮件的主体?...
- Python学习笔记:生成器(Generator)
- 使用selenium启动(无界面)浏览器的隐私模式
- IDEA格式化HTML页面
- 下载链接大全,持续更新...
- 插件//better-scroll(BScroll/滚动插件)使用方法及其在 vue 中使用
- 免费tk域名+freewebhostingarea空间
- 易优cms 后台登录报:验证码错误 Eyoucms快速入门
- 手机虚拟摄像头_科幻电影成为现实?感受虚拟键盘的狂拽炫酷
- 成为会带团队的技术人 大项目:把握关键点,谋定而后动
- Linux远程操作(rcp/rsh)命令实战