Apache Pulsar在微信的大流量实时推荐场景实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. Apache Pulsar 在微信大流量实时推荐场景实践 刘燊 2022.08.27
2. 自我介绍 • 腾讯微信高级研发工程师 • Apache Pulsar Contributor • GitHub ID:@dragonls • 联络方式:liushen001@126.com 2
3. 目录 • 业务场景简介 • 大流量场景下的k8s部署实践 • 非持久化Topic的应用 • 负载均衡与broker cache优化 • COS Offloader开发与应用 • 未来展望与计划 3
4. 1 业务场景简介 业务介绍 业务应用 推荐业务 数据接入 SDK 风控 监控系统 消息中间件 AI平台 数据计算 … 数据存储 MQ 数据采集 KV 4
5. 1 业务场景简介 为何选型Pulsar • 云原生 • 支持资源隔离 • 灵活的Namespace/Topic策略管控 • 便捷扩容 • 多语言Client 5
6. 2 大流量场景下的k8s部署实践 6
7. 2 大流量场景下的k8s部署实践 原生Pulsar on K8s部署架构 Pulsar on K8s Proxy 0 Producer Consumer In Proxy 1 Out Broker 0 In Out … Proxy N statefulset Zookeeper 0 Bookie 0 In*Replica Broker 1 Bookie 1 Out … Broker N … Bookie N statefulset Zookeeper 1 … Zookeeper N statefulset statefulset Pulsar Manager deployment 7
8. 2 大流量场景下的k8s部署实践 优化后Pulsar on k8s部署架构 Pulsar on K8s Proxy 0 … Broker 0 Proxy N Broker 1 statefulset Producer Consumer In Out Zookeeper 0 Bookie 0 In*Replica Bookie 1 Out … Broker N … Bookie N statefulset Zookeeper 1 … Zookeeper N statefulset statefulset Pulsar Manager deployment 8
9. 2 大流量场景下的k8s部署实践 Pulsar on K8s部署优化 • 去Proxy • Bookie使用多盘多目录 + 本机SSD • 日志采集:腾讯云CLS(日志服务) • 指标采集:Grafana + Kvass + Thanos 9
10. 3 非持久化Topic的应用 10
11. 3 非持久化Topic的应用 持久化与非持久化Topic的异同 持久化Topic(Persistent Topic) Producer Consumer Broker Dispatcher Managed Ledger Bookie Client Bookie 非持久化Topic(Non-persistent Topic) Producer Consumer Broker Dispatcher 11
12. 3 非持久化Topic的应用 非持久化Topic在大流量实时推荐下的应用场景 • 可容忍少量数据丢失 - 大流量+消费端处理能力不足的实时训练任务 - 时效性敏感的实时训练任务 - 抽样评测任务 12
13. 4 负载均衡与broker cache优化 13
14. 4 负载均衡与broker cache优化 Broker负载均衡——反复出现bundle unload 14
15. 4 负载均衡与broker cache优化 Broker负载均衡 loadManagerClassName=org.apache.pulsar.broker.loadbalance.impl.ModularLoadManagerImpl loadBalancerLoadSheddingStrategy=org.apache.pulsar.broker.loadbalance.impl.ThresholdShedder loadBalancerBrokerThresholdShedderPercentage=10 loadBalancerBrokerOverloadedThresholdPercentage=70 Load bundle处理类(select for broker):org.apache.pulsar.broker.loadbalance.impl.LeastLongTermMessageRate 需要unload的bundle: 20% Threshold shedder load: 10% 80% Avg load: 50% 60% 10% Broker 1 Broker 2 Broker 3 15
16. 4 负载均衡与broker cache优化 Broker负载均衡 loadManagerClassName=org.apache.pulsar.broker.loadbalance.impl.ModularLoadManagerImpl loadBalancerLoadSheddingStrategy=org.apache.pulsar.broker.loadbalance.impl.ThresholdShedder loadBalancerBrokerThresholdShedderPercentage=10 loadBalancerBrokerOverloadedThresholdPercentage=70 Load bundle处理类(select for broker):org.apache.pulsar.broker.loadbalance.impl.LeastLongTermMessageRate Threshold shedder load: 10% 80% Avg load: 50% 60% 10% Broker 1 Broker 2 Broker 3 16
17. 4 负载均衡与broker cache优化 Broker负载均衡优化 loadManagerClassName=org.apache.pulsar.broker.loadbalance.impl.ModularLoadManagerImpl loadBalancerLoadSheddingStrategy=org.apache.pulsar.broker.loadbalance.impl.ThresholdShedder loadBalancerBrokerThresholdShedderPercentage=10 loadBalancerBrokerOverloadedThresholdPercentage=70 Load bundle处理类(select for broker):在低于平均负载的broker中随机选择 loadBalancerDistributeBundlesEvenlyEnabled=false (相同的代码实现:PR-16059) Threshold shedder load: 10% 60% 60% Broker 1 Avg load: 50% 30% Broker 2 Broker 3 类似代码实现:PR-16281 loadBalancerLoadPlacementStrategy=org.apache.pulsar.broker.loadbalance.impl.LeastResourceUsageWithWeight 17
18. 4 负载均衡与broker cache优化 Broker负载均衡优化效果 优化前 优化后 18
19. 4 负载均衡与broker cache优化 实时推荐场景下的Broker cache优化 • 消费任务数量众多 • 消费速度参差不齐 • 消费任务经常重启 19
20. 4 负载均衡与broker cache优化 实时推荐场景下的Broker cache优化 managedLedgerCacheSizeMB managedLedgerCursorBackloggedThreshold managedLedgerCacheEvictionTimeThresholdMillis 20
21. 4 负载均衡与broker cache优化 Broker cache优化效果 优化前 优化后 21
22. 5 COS Offloader开发与应用 22
23. 5 COS Offloader开发与应用 Pulsar Offloader概览 23
24. 5 COS Offloader开发与应用 Bookie存储成本较高 • Bookie Journal/Ledger盘都使用SSD • 业务需求存储时间长,数据存储量大 • 数据消费任务异常,需要容忍较长时间的数据backlog • 数据回放需求 开发腾讯云COS Offloader插件并应用于线上 24
25. 6 未来展望与计划 25
26. 6 未来展望与计划 未来展望与计划 • 跟进社区版本升级与bugfix • Broker负载均衡与cache优化 • Flink、Pulsar、数据湖全链路打通 26
27. Thanks

Accueil - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-17 02:57
浙ICP备14020137号-1 $Carte des visiteurs$