全球架构师峰会 Arch Summit 2018

曹福祥 快手服务治理平台+KESS+的设计理念和实战

1. 快⼿手服务治理理平台 KESS 的设计理理念和实战 曹福祥 快⼿手科技基础平台架构师
3. 曹福祥 基础平台架构师 • 快⼿手服务治理理平台技术负责⼈人 • 快⼿手技术培训资深讲师 • 擅⻓长分布式系统、⼤大数据、微服务框架等技术领域。
4. • 快⼿手服务架构和服务化背景 • 服务治理理⽅方案选型 • 痛点分析和设计理理念 • 应⽤用现状和未来的计划
5. 快⼿手,记录世界 记录你 80亿条海海量量视频 1.5亿⽇日活 独特⽤用户体验
6. 快⼿手背后的技术挑战 解决⼗十亿级“⻓长尾”视频的⾼高效分发 多样性内容的分发 v.s. 有趣的⽤用户体验 • 极简的前端⼊入⼝口 • 复杂的后台逻辑 • AI 技术 数亿⽤用户 “爆款”视频 “⻓长尾”视频
7. 快⼿手服务架构简化示意 视频播放 Video CDN Upload API ⻚页⾯面请求、视频上传等 直播上⾏行行 Kuaishou Service LVS MCU API Upstream API 直播下⾏行行 私信 Streaming CDN Message FE Transcoder Reco Ad Media Service Message Srv Blob Store MMU Audit Passport
8. 服务化⾯面临的挑战 不不断增⻓长的服务规模 整体服务质量量保证 跨地区的业务开发 快速扩张的⼯工程师队伍 服务发现和配置管理理 容错容灾和监控 ⽀支持多地多数据中⼼心 保证开发效率和质量量 服务 治理理
9. • 快⼿手服务架构和服务化背景 • 服务治理理⽅方案选型 • 痛点分析和设计理理念 • 应⽤用现状和未来的计划
10. 服务治理理基本需求 相对完善的基础平台和组件: 1 • 配置中⼼心 • 服务发现和路路由管理理 • 服务质量量监控 • 服务开发框架 2 ⽀支持多语⾔言:Java, C++, Node.js, Python 3 ⾼高可⽤用,⾼高可伸缩性 4 ⽀支持混合云,尽量量兼容原有基础设施
11. 核⼼心痛点 1 服务治理理平台⾃自身的可⽤用性 2 跨数据中⼼心的路路由管理理 3 有状态服务管理理 4 复杂服务调⽤用⽹网络的监控
12. ⽅方案选型 基于开源⽅方案⼆二次开发 优点 ⼤大量量的业内实践经验可供参考 缺点 与实际需求存在差距,改造成本可 能很⾼高 ⾃自研⽅方案 优点 可以充分基于实际需求设计⽅方案, 可控性强 缺点 可供参考的信息少,容易易⾛走弯路路
13. 常⻅见服务治理理⽅方案 简单基于分布式协调系统 服务发现和配置管理理中⼼心 集成服务治理理的单语⾔言 RPC 框架 集成服务治理理的多语⾔言 RPC 框架 容器器化平台 Zookeeper, Etcd Consul, Nacos Spring Cloud, Dubbo Tars Kubernetes, Istio 服务治理理需求复杂多样,⽅方案也不不好简单归类,这⾥里里仅为⽅方便便介绍,不不宜作为严谨参考
14. • 开源⽅方案不不能很好地满⾜足基本需求 • 在⼀一些核⼼心痛点上,开源⽅方案的改造成本过⾼高 • 需要能够快速迭代,跟上业务增⻓长的步伐 ⾃自研
15. • 快⼿手服务架构和服务化背景 • 服务治理理⽅方案选型 • 痛点分析和设计理理念 • 应⽤用现状和未来的计划
16. 痛点⼀一:服务治理理平台⾃自身的可⽤用性 服务治理理平台决定了了业务 可⽤用性的天花板 预防各种天灾和⼈人祸 多数据中⼼心架构 数据同步和缓存 Zookeeper 的局限性
17. 多地多数据中⼼心拓拓扑 IDC1 (Secondary) KESS Division (Central) IDC2 (Primary) KESS IDC3 (Secondary) KESS Bridge Division (KR) Division (IN) Distribute Write Report KESS Storage Mandator Agent SDK
18. 配置分发⾼高可⽤用设计 Primary IDC ZK Write Mandator Agent FS/SHM Application Secondary IDC ZK Mandator Agent FS/SHM Application ZK 的使⽤用 • ⾼高可⽤用⼩小数据量量 KV 存储 • 由上层处理理多 IDC 数据同步 • 既推⼜又拉:不不依赖于通知机制 配置数据同步协议 • 最⼩小同步单元: ConfigDir • 修改原⼦子可⻅见 • 满⾜足 BASE 核⼼心模块去单点 • 主从热备
19. 服务发现⾼高可⽤用设计 Remote ZK Merge raw data Local ZK Dump raw data Mandator write route tables Configurator Report alive Application Sync route tables
20. 痛点⼆二:跨数据中⼼心的路路由管理理 默认就近访问 但是也有例例外: • 机器器资源不不均衡 • 流量量预估不不⾜足 • 突发下游故障 主调服务 IDC A 主调服务 IDC A 就近访问 100% 0% 流量量调度 50% 50% 被调服务 IDC A IDC B 被调服务 IDC A IDC B
21. 痛点三:有状态服务管理理 特定领域的有状态服务开发需求 消息服务、推荐、多媒体数据分析等 业务服务⽆无状态离不不开底层的分布式存储 随着业务规模扩⼤大,有定制化需求
22. 典型案例例:有状态服务 Crux:多地多活⻓长连接会话缓存服务 • 持久化,异步写⼊入,⼊入库延迟 < 10ms,1000万+ QPS(读/写) • ⽀支撑主APP消息服务:1亿+ ⽤用户,同时在线 1000万+ Connection Manager S1 S2 S3 S4 Session Manager L1 L2 L3 Crux S1 S2 S3 S4 有状态:TCP连接 ⽆无状态:业务逻辑 有状态:⽤用户会话
23. 状态管理理和路路由 数据分⽚片 主从多副本 平滑扩缩容 失效备援 多数据中⼼心 预分⽚片 ⾃自动平衡 状态迁移
24. 状态迁移:扩缩容及失效备援 • 每个分⽚片的每个副本都有 4 种状态 • KESS 向业务进程发送状态迁移指令,业务响应事件即可 Offline Sync Slave Master
25. 痛点四:复杂服务⽹网络的监控 服务依赖复杂,谁调了了我,我⼜又调了了谁? 单机指标可参考性差,我的服务质量量究竟怎么样? 出了了故障,怎么快速定位? 上游⼤大量量超时,谁在拖后腿? 下游服务容量量告急,是因为没有及时扩容吗? RPC Monitor
26. RPC Monitor 核⼼心功能 实时可⽤用性 多维分析 调⽤用链分析
27. 快速故障定位 核⼼心指标 • QPS、延迟、成功率 核⼼心维度 • ⽅方法、返回值、实例例、机房 Micro Services A2 A3 A1 B2 API1 B1 B3 LB API2 C1 C3 API3 C2 C4 D1 D2 D3
28. • 快⼿手服务架构和服务化背景 • 服务治理理⽅方案选型 • 痛点分析和设计理理念 • 应⽤用现状和未来的计划
29. KESS 平台整体架构回顾 Application Framework GRPC HTTP Redis … KConf Version Policy Service Mesh Envoy Discovery Scheduler Route management Degrade Configurator Replicator Cache API RPC Monitor Metric Aggregation Alert Intelligence Call Chain Analysis Perf log Grafana Falcon
30. 应⽤用现状 1000+ 微服务 10000+ 服务器器(物理理机/虚拟机) 4 国家/地区 分布在 10+ 数据中⼼心/云机房 平台可⽤用性 99.997% 跨机房调度次数 100+ / ⽉月 RM 报警数 100+ / ⽇日 50%+ 故障通过RM发现并定位
31. 未来的计划 1 ⽀支持更更多编程语⾔言 2 探索与 Service Mesh 的更更好的结合 3 进⼀一步屏蔽业务对多数据中⼼心的感知
35. 曹福祥—快⼿手服务治理理平台KESS的设计理理念和 实战

相关幻灯片