By 大数据技术与架构
场景描述:2019 年 7 月,Apache Pulsar 正式发布了 2.4.0 版本,在 2.3.2 版本的基础上新增了诸多功能并修复了大量漏洞,包括存储端、Broker 端、Schema、安全、客户端、Pulsar Functions、Pulsar IO、Pulsar Kafka、Pulsar Flink 和 Pulsar Storm 等多方面。
关键词:Pulsar Meetup
2019年9月份 Apache Pulsar Meetup北京站已经落下帷幕了。来自腾讯、智联、阿里的工程师分享了pulsar在各自工程中的应用。
Apache Pulsar 开始慢慢进入大家视野。我个人出于爱好,整理了本次大会的一些特别值得我们关注的内容。方便大家学习。
Apache Pulsar 在腾讯计费场景下的实践
该篇演讲由来自腾讯的刘德志提供。
腾讯的计费场景如下:
腾讯计费系统对分布式消息队列的要求如下:
- 一致性要求:计费场景要求数据一条不能丢,这是最基本的诉求。
- 高可用要求:需具备容灾能力,在异常情况下能够自动修复。
- 海量存储需求:在移动互联网时代,产生大量的交易数据,需要具备海量堆积能力。
- 快速响应要求:在亿级支付场景下,要求 MQ 能提供平滑的响应时间,尽可能控制在 10ms 内。
针对自己的业务场景,腾讯对Pulsar做了四个方面的优化:
- 支持延迟消息和定时重试(2.4.0 支持)。
- 支持二级 Tag。
- 完善控制台,支持消息查询和消费追踪。
- 完善的监控和告警体系。
整体架构如下:
- Broker 作为消息队列代理层,负责消息的生产和消费请求,支持水平扩展,根据负载按 Topic 自动进行均衡。
- BookKeeper 作为消息队列的分布式存储中心,可配置多个消息副本,在异常情况下具备 Failover 能力。
- ZooKeeper 作为消息队列的元数据和集群配置中心。
- 支持多种消费模式,其中 Shared 模式下的消费者突破对分区个数的依赖, function 模式非常适合简单的交易流水清洗场景。
- 提供了统一的 HTTP proxy 接入能力,方便其它语言接入。
- 腾讯计费还有部分业务是 JS 和 PHP 等语言,提供了统一的 HTTP proxy 接入能力,并对客户端加上生产失败重试能力,提升生产成功率。集群出现异常时,客户端会做降级处理,将消息发送至本地或发送至容灾集群。
Apache Pulsar 在 EMQ 物联网平台产品 ActorCloud 上的应用
该篇演讲作者:Rocky Jin,产品总监,杭州映云科技有限公司 EMQ X 产品负责人。
ActorCloud选择Pulsar的原因包括:
- 高可用、高扩展性、部署简单、易运维。
- 高吞吐:单个分区高达 1.8 M 消息/秒,这一特点完全符合我们数据量大的需求。
- Pulsar Functions 是一个轻量化的计算平台,能从一个或多个 Pulsar 主题中消费消息,把用户提供的处理逻辑应用于每个消息,把计算结果发布到另一个主题。Pulsar Functions 支持 Thread、Process、Kubernetes 等运行时,这为我们编写、运行和部署 Functions 提供了很好的灵活性,所以我们只用关心计算逻辑,无需处理复杂的配置或管理,更便捷地构建基于消息触发的流平台。
- 存储计算分离,IO 隔离,能够灵活处理数据,处理和存储可以独立扩展。
ActorCloud 把基于 SQL 的业务规则通过 API 的方式传入到数据处理规则管理引擎中,并将这些业务规则翻译为 Pulsar 中对应的 Source、Functions 和 Sink。Pulsar 的 Source 通过共享订阅的方式对接入 EMQ X Broker 设备数据进行消费,Pulsar 将这些数据进行持久化 ,并通过扩展 Pulsar 的 Functions 来对消息进行实时处理,处理完后通过 Sinks 将数据发送到相关的外部系统中。
ActorCloud 利用Pulsar Functions 支持 Thread、Process、Kubernetes 的特性,为编写、运行和部署 Functions 提供了很好的灵活性,所以在 ActorCloud 物联网平台上,只需关注计算逻辑,无需处理复杂的配置或管理,就能更加便捷地构建基于消息触发的流平台。
我们看一个案例:
Apache Pulsar 在雅虎日本用户案例
本文作者:Nozomi Kurihara 雅虎日本消息平台团队经理
雅虎日本选择Pulsar的主要原因如下:
- 可扩展性
- 多租户支持
- 异地备份
雅虎日本使用Pulsar的架构如下:
雅虎日本在生产中的应用案例:
- 内容更新通知
- 邮箱服务队列
- 日志收集
- 日志过滤收集