经过Apache Pulsar在智联投入生产环境的4个多月,从最初每天3000万的消息量到20亿+消息量,逐渐替换掉原有的Kafka系统。智联总结了Pulsar在实际生产环境中线上的最佳实践方案。同时,智联也积极参与Apache Pulsar社区讨论并贡献了一些在实际业务中需要的重要特性,比如Client Interceptors,Dead Letter Topic等。我们也专门在ppt中介绍如何参与Apache项目的讨论开发,及其相关流程。

注脚

展开查看详情

1.Apache Pulsar 实践经验及社区参与总结 演讲者 / 李李鹏辉

2.⾃自我介绍 李李鹏辉 智联招聘-研发⼯工程师 / Apache Pulsar Committer

3.⽬目录 Pulsar在智联的现状 部署及服务配置 利利⽤用Pulsar特性定制化需求 使⽤用经验总结 值得期待的新特性 参与社区

4.Apache Pulsar 推进时间轴 ALI-CLOUD 1亿/天 IDC-B 7⽉月 8⽉月 9⽉月 10⽉月 11⽉月 12⽉月 IDC-A 10亿/天 20亿/天

5.⽣生产环境指标 ⽇日均线上事件分发 20亿+ 20+ Namespaces ⽇日均事件存储 2TB 1000+ Topics 接近 99.9% < 5ms

6.覆盖业务范围 职位服务 职位搜索 搜索推荐 Passport 简历服务 简历投递 ⽤用户⾏行行为搜集 …

7.Apache Pulsar 监控展示

8.Apache Pulsar 监控展示

9.Apache Pulsar 监控展示

10.Apache Pulsar 监控展示

11.Apache Pulsar 监控展示

12.⽬目录 Pulsar在智联推进现状 部署及服务配置 利利⽤用Pulsar特性定制化需求 使⽤用经验总结 值得期待的新特性 参与社区

13.部署情况 2个⾃自有机房 + 阿⾥里里云 Broker + Bookie 裸机 ⽇日志盘与数据盘分离 1个副本同步刷盘

14.⽬目录 Pulsar在智联推进现状 部署及服务配置 利利⽤用Pulsar特性定制化需求 使⽤用经验总结 值得期待的新特性 参与社区

15.利利⽤用拦截器器实现消息链路路跟踪 Interceptors Log 1 Before Send TraceId SpanId ParentId Sample 2 Send Acknowledge TraceId SpanId ParentId Sample 3 Before Consume TraceId SpanId ParentId Sample 4 Consume Acknowledge TraceId SpanId ParentId Sample

16.利利⽤用ServiceUrlProvider实现热切换 pulsar://172.17.5.170:6650 Pulsar Client ZK 172.17.5.170 172.17.6.170 172.17.7.170

17.利利⽤用ServiceUrlProvider实现热切换 pulsar://172.17.6.170:6650 Pulsar Client ZK 172.17.5.170 172.17.6.170 172.17.7.170

18.客户端指标搜集 Prometheus ZK Pulsar Client Pulsar Client Pulsar Client

19.客户端指标搜集

20.⽬目录 Pulsar在智联推进现状 部署及服务配置 利利⽤用Pulsar特性定制化需求 使⽤用经验总结 值得期待的新特性 参与社区

21.Retention Backlog Expiry

22.经验总结 1 正确使⽤用 Backlog 策略略

23.经验总结 2 停⽌止 receive != 停⽌止消费

24.经验总结 3 消息回溯时注意Backlog限制

25.经验总结 4 重要业务添加Backlog监控

26.经验总结 5 慎⽤用 ConsumerBuilder Clone

27.经验总结 6 避免 Message Properties Key 重复

28.经验总结 7 添加MaxProducersPerTopic限制

29.经验总结 8 设置合理理的 Bookie Compact 速度限制

30.经验总结 9 消息回溯时限制消费速度

31.⽬目录 Pulsar在智联推进现状 部署及服务配置 利利⽤用Pulsar特性定制化需求 使⽤用经验总结 值得期待的新特性 参与社区

32.延时消息 Message Message Message Message Dispatch Consumer

33.冷数据存储⾄至HDFS Pulsar Topic Log Segment 0 Segment 1 Segment 2 Segment 3 Segment 4 Offload HDFS

34.⽬目录 Pulsar在智联推进现状 部署及服务配置 利利⽤用Pulsar特性定制化需求 使⽤用经验总结 值得期待的新特性 参与社区

35.社区参与路路线图 1 参与社区讨论 2 提需求提BUG 3 提交⼀一个PR

36.社区讨论 https://apache-pulsar.slack.com Mail users@pulsar.apache.org

37.提需求提BUG

38.提需求提BUG Expected behavior Actual behavior Step to reproduce System configuration

39.提PR 1 Fork 2 Clone Contributing to Apache Pulsar : 3 Add remote pulsar.apache.org/en/contributing 4 New branch 5 Push

40.社区⻆角⾊色 Contributor Committer PMC

41.什什么时候需要 PIP 要对 Apache Pulsar 做⼀一些⼤大的变化 • 添加新特性、⼦子模块或者对旧的功能有⼤大的改动 • 影响Pulsar的接⼝口定义

42.PIP - 命名 PIP 24: Simplify memory settings Proposal Number Proposal Topic

43.PIP - 应该包含哪些内容 Motivation 描述解决那些问题或者达到什什么⽬目的 Goals 列列出要达到的⽬目标 Changes 表达需要作出的改变,包括接⼝口的变化、服务端的变化、客户端的变化等等以及这些变化带来的影 响。如果是接⼝口的变化需要将接⼝口清晰的描述在提议中 Solution 可能有多个解决⽅方案,描述清楚不不同解决⽅方案的设计以及优劣势

44.PIP - 流程 编写PIP 发送⾄至Apache List PMC & Developers 建议 提议被通过 Coding

45.

46.我们可以 ⼀一起聊聊Pulsar Thanks