快手微服务架构体系实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. 快手微服务架构体系实践
魏诗白
微服务架构师
2.
3. 发展历程简述
1. 流量治理 1. 自研RPC
2. 故障演练 2. 自研配置中心
3. 流量录制 3. 精细化治理
ZK时代 KESS诞生 体系初成
2017前 2017 2019
成熟架构
2021
4. 快手微服务现状
数万服务
数百万服务实例
数十亿QPS
5. KESS STACK : 组织角度下的微服务架构
微服务平台
KESS-NAMING
KESS-META
稳定性保障
微服务框架
KESS-CONF
KESS-RPC
容错框架
KsBoot
中间件SDK
可观测性
Ktrace
KAlert
RPC-Monitor
服务网格
KLog
Gaea运维面
Envoy数据面
xDS适配层
链路加固 流量治理
全链路压测 流量录制回放
混沌工程 流量调度
6. 微服务治理体系建设思路
组织架构
体系架构
7. 微服务治理体系建设思路
领域抽象 建设思路 重点突破
阶段一 阶段二 阶段三
8. 第一阶段:核心逻辑领域抽象
命名体
系
可观测
性
配置管
理
服务治
理
流量治
理
高可用
服务安
全
9. 第一阶段:逻辑域的核心能力
命名规范 服务配置 容错机制 认证机制 就绪检查 指标采集
服务注册 中间件配置 路由调度 授权机制 健康检查 日志采集
服务发现 平台配置 负载均衡 传输加密 平滑上下线 Tracing
灰度机制 参数校验 服务降级 报警治理
机房容灾 性能诊断
元信息管理
流量标记
弹性伸缩
命名域
配置域
流量域
安全域
高可用域
监控域
10. 第一阶段:软件生命周期的能力交付
11. 第一阶段:服务治理体系
• 能力层:6个垂直领域
• 载体层:实现单元
• 基础设施层:双向作用
12. 第二阶段:分层建设与重点发展
重点问题
1.
2.
3.
问
题
域
1.
2.
1.
2.
逻辑域
流量治理功能成熟度不足
精细化治理缺失
路由调度能力不足,缺少如全链
路灰度等高阶能力 流量域
中间件/服务命名混沌,多平台打
通困难
注册中心不统一 命名域
缺少自动化机房级流量容灾能力
K8S/服务治理健康检查机制不统一
高可用域
13. 第二阶段:分层建设与重点发展
上层领域
安全域
元信息查询
下层领域
命名域
流量域
统一命名
命名域
高可用域
配置管理
配置域
运行时指标
监控域
14. 第二阶段:分层建设与重点发展
高阶能力 全链路灰度 单元化建设 链路加固
中坚能力 流量治理 高可用建设 安全建设
基石能力 命名体系 配置管理 元信息治理
…
可观测性建设
15. 第三阶段:重点领域建设
流量域
高可用域
16. 第三阶段:流量域建设
–
体系总览
17. 第三阶段:流量域建设
–
重点方向
服务容错体系
熔断限流 服务降级
超时治理 依赖治理
流量调度体系
过载保护
区域感知能力 分组隔离能力
负载均衡 CPU动态调权
标签路由能力
18. 第三阶段:流量域建设 – 服务容错
核心问题
主要困难
方法论
• 历史包袱重 • 能力收敛/统一难 • 分阶段建设
• 多语言问题 • 治理成本高 • 工具化建设
• 业务工况多 • SOP化建设
19. 第三阶段:流量域建设 – 服务容错
全景图
容错框架诞生 流量治理平台 能力下沉 引入报警体系 开启网格建设 链路加固产品
诞生
2019.7 2019.12 2020.04 2020.08 2020.10 2021.02
能力统一/下沉阶段
产品化阶段
引入监控指标
2021.04
SOP化建设 常态化建设
2021.10 2022.04
体系化阶段
20. 第三阶段:流量域建设 – 服务容错
链
路
加
固
系
统
21. 第三阶段:流量域建设 – 服务容错
建设成果
业务价值
• 覆盖公司80%业务场景 • 降低业务在稳定性投入成本90%
• 成为稳定性加固标准方案 • 年化故障规避次数100+
22. 第三阶段:流量域建设 – 流量调度
核心问题
主要困难
方法论
• 早期功能单一 • 替换成本高 • 抽象路由模型
• 环境层级混乱 • 特殊/错误使用较多 • 统一环境标准
• 单机流量不均衡 • 分层调度治理
23. 第三阶段:流量域建设 – 流量调度
全景图
路由模型抽象 路由调度平台 统一流量标记
透传机制
2021.04 2021.08 2021.09
基础架构阶段
静态分组路由 自适应区域感
知路由 动态调权机制
2021.10 2021.11 2021.12
能力沉淀阶段
全链路灰度
2022.02
全链路分组路
由
2022.04
成熟化演进阶段
单元化调度
2023.x
24. 第三阶段:流量域建设 – 流量调度
自适应区域感知路由
过去
AZ - 1
X%
现在
AZ - 2
100-X%
入口应用A
AZ - 1
•
计算同Region不
AZ - 2
X%
同AZ的实例数比
入口应用A
•
主被调同AZ健康
入口应用A
实例比
区域计算
应用B 应用B
应用C 应用C
应用B 应用B
应用C 应用C
25. 第三阶段:流量域建设 – 流量调度
CPU动态调权
指标处理系统
调权系统
指标采集
业务进程
CPU上报
Redis
数据存储
数据过滤器
Kafka消费者
权重调整
权重计算器
注册中心
权重调整器
26. 第三阶段:流量域建设 – 流量调度
成本收
益
多租户
隔离
业务
价值
机房容
灾
减少变
更故障
27. 第三阶段:高可用域建设 – 领域总览
单实例故障自愈 服务高可用建设 机房容灾建设
K8S健康检查 无损上下线 中间件切流管控
RPC健康检查 弹性伸缩 跨机房调度
离群实例摘除 混沌工程 服务降级
全链路压测
28. 第三阶段:高可用域建设
全景图
弹性伸缩 RPC健康检查 机房容灾调度 无损上下线
2020.01 2021.04 2021.12 2022.04
基础架构阶段
K8S统一健康
检查机制 离群实例摘除 单元化建设
2022.05 2022.06 2023.X
能力沉淀阶段
机房级演练
2023.X
成熟化演进阶段
29. 第三阶段:高可用域建设
单实例故障自愈解决方案
30. 第三阶段:高可用域建设
RPC健康检查机制
客户端
服务端
被动检查
接口A
接口B
用户请求
接口C
Metric统计
业务接口
恐慌判断
恐慌机制
实例状态
更新状态
线程池状态 Load状态
CPU状态 IO状态
获取状态
HC请求
主动检查
HC接口
31. 第三阶段:高可用域建设
离群实例摘除
32. 未来1-2年领域规划
大规
模化
精细
化
成熟
化
•历史包袱清理
•核心能力升级
•多语言对齐
•多粒度流量治
理
•场景化覆盖
•单元化调度
•产品力提升
33.
34. 第三阶段:流量域建设 - 路由调度
统一流量标识透传机制
注入上下文
流量类型
入口服务
K-V标识传递
透传
透传
标准SDK
多语言支持
透传
读取上下文
K-V获取
流量识别
监控埋点
规则定义
透传
35. 第三阶段:流量域建设 - 路由调度
路由模型抽象
•
•
基本规则
• 优先级机制
• 回滚机制
• 多级回落机制
路由表
路由规则1
匹配
内置规则
• 分组路由
• Locality-Aware路由
•
直连路由
路由规则2
匹配
路由规则3
路
由
规
则
链
36. 第三阶段:流量域建设 - 路由调度
核心流量调度能力
动态
调权
AZ级
调度
分组调度
37. 微服务平台
基础系统
服务发现
服务注册
元信息管理
配置中心
服务查询
服务管理
服务创建
权限管理
服务登记
资源查询
映射关系
统一命名
接口管理
GIT CICD
服务注册发现领域 监控告警领域
流量治理领域
38. 微服务框架
服务发现 配置中心 元信息中心 服务注册 服务预热 优雅停机
路由调度 负载均衡 服务治理 访问控制 配额管理 过载保护
可观测性 健康检查 元信息接口
可观测性
服务端功能
客户端功能
熔断器 限流器 重试器
隔板 集中式限流 自适应限流
Metric工具
KSF框架
在线调试
协议转发
元信息查询
事件推送
LB-Server
KESS-RPC ADMIN
39. 可观测性
Tracing
Metric
Perf/Clickhouse
RPC-Monitor
TSDB
Promtheus
Logging
Klog
Access-log
Sentry
Trace-Log
KTrace
40. 稳定性保障
41. 服务网格
数据面
控制面
运维面
Gaea-Agent
xDS-Server
Gaea-Portal
托管
Envoy
订阅配置
UDS
KESS-CONF
SDK
POD
订阅路由
KESS-Registry
配置下发 CICD
可观测性 运行大盘
热部署
42.
43. 快手微服务现状
研发效能
稳定性保障
运维成本
• 微服务框架 • 链路加固 • 可观测性
• 微服务平台 • 全链路压测 • 报警推送
• 统一命名 • 自动化测试 • 流量容灾
• 多语言统一 • 故障演练