Apache Pulsar 在涂鸦智能的实践

展开查看详情

1.Apache Pulsar 在涂鸦智能的实践 开放平台组研发⼯程师 张永红

2. Contents 01 关于涂鸦智能 02 涂鸦的消息系统架构 03 邂逅Apache Pulsar 04 消息队列的对⽐ 05 pulsar实践分享 06 对pulsar的规划和期望

3.01 关于涂鸦

4.关于涂鸦

5.关于涂鸦

6.关于涂鸦

7. 02 涂鸦的消息系统架构

8.涂鸦的消息系统架构

9.涂鸦的消息系统架构

10.涂鸦的消息系统架构 业务痛点: 1. HTTP投递⽅式不够灵活 2. Kafka的topic数量与⽇俱增 3. 租户之间相互影响

11. 03 邂逅Apache Pulsar

12.涂鸦的消息系统架构 Pulsar: 1. 丰富的投递/订阅策略 2. 运维难度⼩ 3. 多租户隔离 4. 社区活跃

13.邂逅Apache Pulsar

14. 04 消息队列的对⽐

15.消息队列的对⽐ LeviMQ Kafka NSQ Pulsar 稳定性 ⾼ ⾼ ⾼ ⾼ 缩/扩容 ⾼ 中 中 ⾼ 运维 ⾼ 低 ⾼ ⾼ ⽣态 低 ⾼ 中 ⾼ 性能 ⾼ ⾼ ⾼ ⾼ 注:测评等级分为低,中,⾼

16.消息队列的对⽐ LeviMQ 优点: 1. 计算与存储分离,⾼可靠性,易扩展 2. 公司⾃研,易于维护 缺点: 1. 基于MQTT,功能简单,更多的是充当⽹关使⽤。 2. ⽣态相对不够丰富

17.消息队列的对⽐ Kafka 优点: 1. 性能优秀,⾼吞吐量,⾼可靠性 2. ⽣态丰富,案例较多 缺点: 1. 缩/扩容操作相对复杂且耗时 2. 应⽤部署会导致订阅组rebalance,期间会消息堆积

18.消息队列的对⽐ NSQ 优点: 1. golang编写,性能优秀,⾼吞吐量,⾼可靠性 2. 没有Kafka消费组rebalance的问题 缺点: 1. 与社区版本的NSQ设计差别较⼤,相关资料较少 2. ⽬前在缩/扩容⽅⾯存在耗时问题

19.消息队列的对⽐ Pulsar 优点: 1. 计算与存储分离,降低缩/扩容带来的影响 2. ⽀持多种订阅模式,适⽤场景丰富 3. namespace级别的租户隔离策略 缺点: 1. 引⼊bookkeeper及相关概念,有⼀定的学习成本 2. 相⽐于Kafka,⽹上资料较少

20. 05 pulsar实践分享

21.Apache Pulsar 实践分享 实践1:服务运⾏⼀段时间后,消息出现堆积! 没有发现报错⽇志。重启服务后,消息恢复正常。 然⽽过了⼀段时间,⼜出现堆积现象!

22.Apache Pulsar 实践分享 堆积原因:flow计数机制

23.Apache Pulsar 实践分享 解决⽅案:定时发送Flow指令

24. Apache Pulsar 实践分享 实践2: pulsar-client-java发送的消息, pulsar-client-go解析紊乱

25.Apache Pulsar 实践分享

26.Apache Pulsar 实践分享

27.Apache Pulsar 实践分享 紊乱原因:payload内还有⼀层结构

28.Apache Pulsar 实践分享 实践3: 消息重复消费!

29. Apache Pulsar 实践分享 消息重复消费原因: failover模式下,某个topic下新加⼊的消费者有⼏率会成为active状态 此时旧的消费者可能还有⼀部分消息还未消费完。 如果没做相应处理,部分消息就被新旧消费者同时消费