B站稿件生产架构演进:从单体到微服务的挑战与实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. 演讲人:匡锡斌
2.
3. 目录
01 微服务化演进
02 多活与弹性混合云
03 总结与展望
4.
5. 微服务化演进
6. 你感兴趣的视频都在 站
1亿日活 3亿月活
日均使用时长增长至99分钟
数十亿海量视频内容
日均视频播放量超48亿次
既然有消费当然就需要生产,稿件生产是B站的核心功
能之一,后端系统伴随业务发展也在不断地进行着微服
务演进。
7. •
•
•
•
•
•
•
•
•
•
•
•
要做一个社区
要支持UP视频投稿
要批量投稿
一个稿件多个视频
多人联合投稿
互动视频
PUGC投稿
轻剪辑/专业剪辑/一键投稿
换源编辑
知识付费,课堂稿件
商业化,带货稿件、广告视频、充电视频
...
业务模式在迭代,音视频流媒体能力在发展,体验要求
在不断提高。
8. 创作工具
发布上传
稿件生产
数据开放
9. 独立
完备
内聚
自治
横向,站在服务视角看角色定位
纵向,站在业务权责视角看边界
10. 与面向C端用户的高读场景(feed流、进房、视频详情/商详页)、高写场景(抢单、刷礼物、发弹幕)
不太一样的技术架构体系。
两种数据
1.业务数据(稿件元信息、视频元信息)
2.视频文件(存储、计算、传输)
成本
网络资源
物理硬件
稳定
存储资源 云上资源
计算资源 调度策略
效能
寻求 成本 vs 稳定 vs 效能 不可得三角的解法
11. 稿件是生产过程中的逻辑实体,视频是生产
过程中的物理对象,一个稿件对应多个视频。
Tip: 越是底层的数据模型,改动成本越大。
12. 生产流程的输入输出是围绕稿件业
务实体展开的一系列标准环节。
类比到制造业的生产过程,非常类
似制造业的MES系统
(Manufacturing Execution
System)。
- 在生产过程中执行操作、捕获数据、
追踪流程、记录状态
13. 多个业务都有“生产加工”的诉求,
需要这样一套工作流,串联不同的原
子能力,要求生产流程可被调度、异
步化。
由业务共性抽象一套
,支持业务编排、在线
处理流程、离线处理流程、流程检索。
Tip: 定制化需求 vs 平台化能力
14. CQRS将生产消费关注点分离、权责分离,
让架构与组织形态相匹配。
Tips:
表字段共享,数据模型有交集但不匹配
消息驱动模式中不要暴露元数据binlog
CQRS模式数据异步传输,数据一致性问题
15. 消息丢失
消息乱序
消息堆积
MQ故障
• 可回溯,可对账,最终一致性
• partition有序,不依赖绝对有序,消息顺序标识
seq
• 异常突增,lag感知,水平垂直扩容,分组并发,
IO聚合,热点隔离
• 异步消费兜底转同步Notify
一站式异步事件治理平台
Railgun
16. 下钻生产效率指标,将大盘指标转化为归一化的单位指标:
这个公式可以理解为:每一秒可以生产X秒的视频内容,我们希望通过各种技术手段优化这个
效率越高越好(但是会有体验上的权衡),直至前资源能做到的边际效应边界。
Total(Duration) = sum(A+B+C+...)
- Duration下钻:品类/时长/清晰度/活动
Total(Cost) = sum(CostX+CostY+CostZ+...)
- Cost下钻:端到端/链路耗时/系统空转
17. 资源调度
流式切片
并行处理
Tips:
分片粒度 vs 启动任务数
多路并发 vs 多次物料拉取
18. To B业务中用户个例失败带来的损失会”压倒看上去尚健康的大盘指标”
技术指标无异常 NOT EQUAL 业务100%成功率
所有开放的稿件,是否全部进行过安全审核?有没有漏审?黑灰产稿件占比多少?
业
务
问
题
业务复杂度不断提升,一些失败行为发生在端上另一些在服务端,端到端的日常问
题排查、用户行为回溯该怎么做?
平台每天生产的稿件中,优质、大V、重要稿件的生产效率如何?有没有被block?
19. 将全局分散的【稿件事件】收集起来,就可以还原
Client端Trace生成算法+SDK
API提交携带Client Trace ID和扩展字段
Server Opentracing Mapping
Server Trace关联稿件AID
20. • Lancer(数据上报传输组
件)+Kafka+Flink+CK
• 日5亿事件流,QPS 1W
• 标准上报协议与SDK
• 事件校准,容忍率 vs DQC
成本
• 冷热数据隔离,冷数据归档
• 数据应用工程
21. 耗时分位统计,效率分析,异动定位
事件丢失统计,流程中断、链路阻塞
事件段对账,捕获安全漏出风险
22. 多活与弹性混合云
23. 决策支持
• 自上而下认同
• 技术决策是政治
决策
生产力工具
• 技术基线统一
• 平台工具标准化
人员储备
合适时机
• 领域专家储备
• 降本增效环境
• 成熟稳定合作关系 • 系统稳定性投入的
ROI
24. 挑战:原片存储多活、上行带宽、存储
网关调度
挑战:存算资源、单元化部署、混合云
架构、工程改造成本
25. DCDN
Invoker(流量调度平台)
API Gateway
Discovery(服务注册中心)
Navigator(服务流量治理平
台)
Service
Cache
MQ/Canal
DB/KV
26. 南北流量管控
Invoker(流量调度平台),在CDN层控制流量到不同
IDC SLB的流量比例来切流,故障切流 & 常规演练
东西流量管控
Navigator(微服务流量治理平台),Client Routing
Zone优先、染色优先、WRR、keyhash等策略
异构语言通过Sidecar Proxy劫持流量解决
Tip:
复杂的东西流量管控与验证
27. 当前处于第一阶段 RZone
DB通过proxy代理流量
KV proxyless模式
Tips:
proxy多一跳的超时问题排查
proxy对server的长连接数
跨Zone force master
proxyless的连接保活
28. DTS(数据传输服务)
DB drive cache flush by DTS
binlog broadcast
异构数据源聚合转存
数据迁移增量实时数据同步
Tips:
lock/incr cache 是否同步?
DTS join DB or Call API?
LWW Register Data Type Sync?
29. 本单元内生产和消费
消费其他所有单元消息
消息单元化是指业务在一个单元
内生产和消费,不进行跨单元生
产和消费。
Tips:
多种send/consume排列组合
更灵活的Message Routing
30. Key Action
服务多活改造与部署,切流验证
上行LB混合部署(云+IDC)
点播源站存储异构多活改造
上传场景流量切换预案编排
Tips:
流量切不干净,商业DSA
下发endpoint都需要有failover策
略
31. 云存储
哪些上云?
点播源站能力
原片上传
音视频文件读写
源站自建Luffy + BOSS(OSS) +
源站视频上云,定期迁移+GC
定制化协议
CDN回源下载
上云策略,回源策略
自建存储稳定性与成本
32. 目标:网络、存储与算力都可以弹性上云,支持可弹性调度
优势:中和自建资源、弹性资源和成本、系统可用性多方面因素考量的架构方案
挑战:更复杂的调度成本、云上资源拉起任务时延、云资源容量
33. 总结与展望
34. 复杂业务系统更加要求我们去贯彻演进式架构的思想,不要想着一蹴而就来个大重构,而是需要分
析每一个业务模块的瓶颈,找到模块更迭的契机和ROI。
回过头看轻舟已过万重山,
展望
1.多活的单元化改造落地
2.深化弹性混合云架构
3.流式转码的进一步演进,不断提升转码效率
4.微服务生命周期管理,处理好服务的关停并转
35.
36. THANK YOU
大模型正在重新定义软件
Large Language Model Is Redefining
The Software