Apache Pulsar 在腾讯云稳定性优化实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. Apache Pulsar 在腾 讯云稳定性优化实践 腾讯云微服务中心
2. Who am I • PingCAP -> StreamNative -> Tencent • Apache Pulsar committer • Apache BookKeeper contributor • RoP maintainer • Apache Pulsar Go client 作者 • Apache Pulsar Go Functions 作者 • StreamNative/pulsarctl 作者
3. Agenda • 消息空洞的影响及规避措施 • 从消息生命周期看 TTL, Backlog 及 Retention 策略 • 延迟消息与 TTL 的关系 • Admin API Block 的优化处理 • zk-node 泄漏 • Bookie Ledger 泄漏 • Apache Pulsar 多级缓存的优化 • 未来稳定性规划
4. • 单条消息 Ack (在线消息) --> Ack Hole • 如何理解 individuallyDeletedMessages? 消息空洞的 影响及规避 措施 • Broker 处理失败? Client 没有调用 Ack? • 精确计算 Backlog Size?Broker 主动补偿?
5. Broker 主动补偿机制 --- Backlog 策略 • Producer Exception • Producer Request Hold • Consumer Backlog Eviction
6. Broker 主动 补偿机制 Pulsar 计算 Backlog Size 的方式
7. Broker 主动 补偿机制 • 获取 individuallyDeletedMessages 集合的第一个元素 • 启动定时任务 Excutor Service • 定期向 Client 推送 individuallyDeletedMessages
8. 再谈 TTL, Backlog 及 Retention 策略 • TTL: 表示消息在指定时间内没有被用户 Ack 时会在 Broker 主动 Ack 掉。 • Backlog:表示 Producer 发送的消息与 Consumer 接收消息之间的差距。 • Retention:表示的是当消息被 Ack 之后,继续在 Bookie 侧保留多久的时间, 以 Ledger为最小操作单元。 如果 TTL 和 Retention 同时设置, 那么一条消息的生命周期是怎么计算的?
9. 再谈 TTL, Backlog 及 Retention 策略 • TTL: 根据设置的时间,定期检查, 不断更新 cursor 的位置(见右 图),将消息过期掉 • Retention:检查 Ledgers 的创建 时间以及 Entry 的大小来决定是否 要删除某一个 Ledger
10. 再谈 TTL, Backlog 及 Retention 策略 • TTL < Retention: • 消息的生命周期:TTL + Retention • TTL >= Retention: • 消息的生命周期:TTL Time TTL 策略为什么要选择 Ledger 发生 切换的这个时机来触发 Ledger 的删 除操作?
11. 延迟消息与 TTL 的关系 丢消息?
12. 延迟消息与 TTL 的关系 • 一次性从 Entry 中获取 publishTime 和 delayTime • delayTime 是要发送时间点的时间 戳 https://github.com/apache/pulsar/pull/15628
13. Admin API Block 的优化处理 • 异步调用同步 • Http Lookup Service • Pulsar WEB 服务性能较差 (CompletableFuture 的误用) • Metadata Store 线程池的抽象 • 加入超时的处理避免 block
14. zk-node 泄漏 zk-node 泄漏
15. Zk-node 泄漏de 泄漏 • 首先获取 zk-node 下所有的 topic 列表 • 通过 pulsar-admin check 集群中是否存 在该 topic • 切记: 清理 zk 数据之前,请先备份 zk 数 据
16. Bookie Ledger 泄漏de 泄漏 • 触发 Ledger 删除的唯一路径: Retention 策略 • Bookie CLI ??? • 获取 LedgerInfo 中创建 Ledger 的时间 • 确认 Ledger 是否存在 Bookie 中且 Broker 不存在该 Topic • 切记:高危操作,请先备份!!
17. Pulsar 缓 存优化
18. Pulsar 缓存 优化
19. Pulsar 缓存优化-- OHC +LRU
20. 未来稳定性规划 • 1 s 耗时的规避及优化 • 客户端超时时间内的重试策略 • Broker 和 Bookie OOM 的优化 • Bookie Auto Recover 优化 • Bookie 消息丢失的情况复现(周边工具完善)
21. 鸣谢 • 腾讯云中间件团队 • StreamNative Platform 团队
22. Q & A 路漫漫其修远兮,吾将上下而求索 腾讯云微服务中心

首页 - Wiki
Copyright © 2011-2024 iteam. Current version is 2.125.1. UTC+08:00, 2024-05-17 19:08
浙ICP备14020137号-1 $访客地图$