《王旭-哔哩哔哩CQRS架构下的异步事件治理实践.pdf》由会员分享,可在线阅读,更多相关《王旭-哔哩哔哩CQRS架构下的异步事件治理实践.pdf(28页珍藏版)》请在三个皮匠报告上搜索。
1、哔哩哔哩CQRS架构下的异步事件治理实践主讲人:王旭演讲嘉宾介绍王旭哔哩哔哩资深开发工程师 2015年加入B站,现任C端业务架构负责人、公司Golang基础库负责人,深度参与B站微服务体系演进 从零搭建B站限流平台、故障演练平台、异步事件处理系统 专注与设计业务通用组件和规模化提升服务端整体质量和效率CONTENT目录2023K+01演进下的事件问题与挑战Bilibili事件处理演进之路020304Railgun架构设计与未来展望Railgun平台的诞生Part 01Bilibili事件处理演进之路 单体应用时代 微服务时代 早期稿件架构升级 直播房间架构升级单体应用时代2009年,哔哩哔哩基
2、于织梦DedeCMS创站,直到2015年使用Golang重写。业务特征:后端人员规模 100人业务形态复杂:稿件、互动、专栏、直播业务互相交错早期稿件架构升级教训独立的领域事件,而不是绑定数据库Binlog背景膨胀的代码逻辑难以维护,任何一个功能开发涉及多部门协作,急需解耦,让架构可持续演进直播房间架构升级原因1.架构与组织形态匹配【康威定律】2.责任分离、规避系统风险Part 02演进下的事件问题与挑战 CQRS架构介绍 事件处理的问题与挑战CQRS架构介绍CQRS Command Query Responsibility Segregation针对读、写特性优化最终一致,数据补偿事件驱动,
3、简化协作问题优势 需要处理大量且复杂用户请求,能快速响应性能要求高 多个团队协作,业务逻辑耦合不易维护业务耦合 高并发和复杂的业务带来更高的一致性要求数据一致性CQRS下架构事件问题与挑战可用性事件丢失MQ故障处理出错消费延迟处理能力扩展热点问题分布不均可观测运行状态感知调试告警协作类型约束模式定义开发成本Part 03Railgun平台的诞生 平台目标与定位 应用场景举例:MQ故障 应用场景举例:消费能力不足 应用场景举例:数据倾斜导致热点积压事件处理平台-Railgun诞生2022 事件治理至今在这多年异步事件的业务实践中,发生了多次有较大影响的事故,痛定思痛,2022年我们开始系统性的对
4、异步事件的治理的探索。大目标:提升异步事件稳定性低改造成本效果能长效维持最终收益:问题能自动提前预警、多种干涉手段,降低95%+的故障率我们将这套方案总结成了Railgun事件处理系统、应用于数千场景应用场景举例:MQ故障降级能力可设置多个数据来源根据情况灵活降级中间件全部不可用时,降级到直推,尽量挽回损失来自直播送礼的一个案例:影响时间:2021-01-12 15:00 16:052021-01-12 16:10 16:552021-01-12 20:10 20:45直接经济损失:约20万 间接经济损失:10万+其他权益损失影响用户数(观看中断/黑屏):100万+人次 影响付费用户:2+万人
5、用户反馈:400+例 数据补偿人力消耗:约10人日直播送礼异常问题原因Kafka集群异常,宕机3h平台能力应用场景举例:消费能力不足基于内部线程的垂直扩容能力水平扩容容量巡检与预警用户硬币计数延迟更新2h原因问题高峰期job消费能力不足平台能力应用场景举例:数据倾斜导致热点积压自动化识别热点数据转移到独立Topic,数据隔离,降低影响老干妈事件新评论无法展示原因问题由于单个评论区内顺序处理,热门评论区阻塞影响其他评论,热点问题平台能力热点隔离Part 04Railgun架构设计与未来展望 Railgun控制面设计 Railgun客户端接口设计 Railgun客户端架构事件处理平台-Railgu
6、n架构Railgun控制面设计1.灵活、丰富的管控能力2.配置下发能尽快生效3.统一事件集散中心4.完善的调试、监控、预警功能核心能力处理器列表Railgun控制面设计1.灵活、丰富的管控能力2.配置下发能尽快生效3.统一事件集散中心4.完善的调试、监控、预警功能核心能力处理器配置项Railgun控制面设计1.灵活、丰富的管控能力2.配置下发能尽快生效3.统一事件集散中心4.完善的调试、监控、预警功能核心能力血缘关系Railgun控制面设计1.灵活、丰富的管控能力2.配置下发能尽快生效3.统一事件集散中心4.完善的