金融级系统海量流量下的高可用架构实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. 金融级系统海量流量下的高可用架构实践
2.
3. 开
篇
4. 分享的视⻆
⻩金链路金融系统
电商⻩金链路 、全链路 、全场景、海量流量
业务
系统
关注度
影响范围
5. 分享的原因
02
01 成⻓
变化
04 why or how
03
银弹
6. 定
义
篇
7. 不可用
服务器 , 可控机房故障
01
光纤挖断,不可控外部事件
04
不可用
02
03
上线故障 , 内部人为事故
9.11 黑天鹅事件
8. 金融业务不可用表现
信息泄露
• 信息盗取:木⻢病毒、假冒网
站、数据安全事故
• 信息泄露:身份信息、账号密
码泄露
信贷欺诈
交易欺诈
账号盗用
• 身份冒用/非本人申请 • 盗刷 • 账号接管:登录、修改及管
• 身份美化 • 套现 理身份、绑卡、窃取信息数
• 恶意逾期/恶意失联 • 盗帐号交易
• 线上业务交易欺诈
据、动账转账
9. 不可用是什么
已知
未知
⻛险
不可用
⻛险
不可用是指潜在⻛险在一定条件触发下的结果呈现
条件
时间
人
10. 业内定义
MTTR
SLA
服务水平协议
04
03
SLI
平均故障时间
01
02
衡量服务质量的指标
MTBF
平均故障间隔时间
11. 业务视⻆不可用
不可用 =
L1.E1.D1.T1 + ….. + Ln.En.Dn.Tn
• 业务资质
• 资损
• 舆情
• 客诉
• 用户体验
• 业务收入、预期
• P
• P
• P2
系统
级别L
类型E
• 核心业务
• 全部接口
• 100% 、80% 、……
不可用
程度D
• 小时
• 分钟
• 秒
时间T
12. 不可用的特性
PRAT PRAT PRAT
01 02 03
趋势性 隐秘性 爆发性
不可用的等级有随时间及其
他外部因素逐步提升的趋势
⻛险的触发条件比较隐晦
• 交换机宕机
• 主机上其他应用有定时任务
13. 不可用原因 – 时代 – 业务
VUCA乌卡(易变性、不确定性、复杂性、模糊性)时
代
业务的现状是我们现在已经从单一的做业务 ,到 业务生态 ,我们处在一个快速裂变的时代 VUCA
开放式架构
企业级架构
微服务架构
单体架构
工具化时代
工具化时代
信息化时代
数字化时代
14. 不可用原因 – 时代 – 基础设施
2009
《 Above the Clouds : A Berkeley View of Cloud
Computing 》
2019
《Cloud Programming Simplified: A Berkeley View on Serverless Computing》
15. 不可用原因 – 内因
◆ 流量
◆ 变化 ( 时间 … )
◆ 不可靠
◆ 耦合
◆ 系统架构
◆ 上线
16. 不可用原因 – 成本
可用性
成本 VS ⻛险
成本
17. 不可用原因 – 认知
所有降级措施是有效的
低优先级系统不需要备战
上游已经替我做了保护
下游是稳定的
所有应急预案是可执行的
流量洪峰后系统能快速恢复
历史的经验是可靠的
系统重试能解决问题
18. 不可用原因
◆
高可用 涉及 所有 业务场景 、 系统各层级 、 软件开发的全生命周期 、 组织架构 、团队分工 ,
贯穿整个 软件开发体系
◆
高可用的难点在于对软件的全景认知 ,对于(新)变化 的感知 ,对于 (历史) ⻛险点 的识别 ,
在于事前预估与预案 ,事中有效处理 ,事后复盘总结 , 形成闭环
即使付出了99%的努力 ,也会因为 1%的疏忽 ,带来意想不到的结果 ,所以高可用应该是一套需要
持续完善和迭代的体系和方法论 、 需要持续的关注和投入
◆
19. 结
构
篇
20. 结构
单一结构
复合结构
复杂结构串联
21. 体
系
篇
22. 高可用指导思想
•
•
•
01 02 03 04
系统 -> 业务 ⻛险 -> 事故 架构升级 数据驱动
追求业务连续性
以不可用等级为评判标
准
追求业务收益与线上⻛
险之间的平衡
•
•
•
减少⻛险点
控制⻛险转化为事故
有⻛险必有监控 ,有
监控必有预案,有预
案必经验证
•
通过架构升级,沉淀标
准的业务模型 、技术
解决方案 ,降低人为
错误几率 ,提升系统
的可用性
•
•
通过业务数据形成业务
系统⻛险数据模型
借助数据模型+AiOps
强化⻛险预警与提前部
署预案能力
23. 高可用考虑因素
成本
● 研发成本
● 管理成本
● 资源成本
系统
●
●
●
●
软件生命周期
现有解决方案
容错性
体系完善度( 监控覆盖度 、上线SOP 、预
案 )
不可用等级
人
● 认知 、能力要求
● 组织架构
24. 高可用面临的挑战
识别 预防 感知 定位
如何尽早识别未知⻛险 如何全面预防事故发生 如何尽快感知事故 如何精准定位问题
解决
如何快速、有效解决问
题
25. 高可用体系
◆ 识别
指标体系
◆ 混沌工程
◆ 报警体系
复盘
◆ 自动化
◆ 平台化
解决
◆ 日常/大促预案
◆ 硬件异常预案
◆ 业务异常预案
◆ 大促预案
◆ 异常执行规范
01
06
05
预防
◆ 研发规范
02
体系
打造
◆ 安全漏洞修复
◆ 容量保障
◆ 代码质量提升
◆ 报警收敛
◆ 容灾
03
感知
◆ 监控大屏
04
◆ 上下游沟通机制
定位
◆ 值班机制
◆ 硬件监控平台
◆ 链路监控平台
◆ 业务监控平台
26. 识别 – 指标体系
场景层
应用程序层
用户访问次数及时⻓统计
场景流量
交互 QPS
TPS
内部 消息积压
质量
基础设施层
错误码统计
报警数量
CPU
Memory
负载
线程数
I/O Statistics
Network
27. 识别 – 混沌工程
MYSQL故障
REDIS故障
RPC故障
06
01
02
CPU负载故障
05
混沌
工程
03
磁盘故障
04
网络延迟故障
28. 预防 – 研发生命周期
需求确认
测试
● 业务本质确认
● 结构影响评估
● 承载系统确认
● 单侧覆盖
● 流量回放
上线
设计
● 架构设计
● 组件设计
● 技术方案设计
开发
● 代码质量提升
● 报警收敛
研发生命周期
● 上线SO
● 灰度上线
● 白天上线
● Serverless
运营
●
●
●
●
指标体系
监控大屏
预案
备战
29. 预防 – 弱依赖
基于 MySQL自身高可用 , 以及一定的 容灾设计(如热备、读写分离、冷热分离、内存DB、延时异步入库等),
最终达到数据库整体架构的高可用
强依赖数据库架构
弱依赖数据库架构
Mysql 数据库集群-异地多机房架构
机房
(异地
备)
机房
(同城
从)
半同步
机房
(主)
其他存储
异常切换
Redis集群
业务系统
clickhouse
db2
db1
db3
…
db84
缓存集群
ES+HBASE
消息队列1
大数据
…
表1
表2
表3
表150
对象存储
db
消息队列2
30. 定位 – 全域可观测
核心场景链路可视化
流量漏斗可视化
■ 多层级监控体系
业务指标可视化
■ AIOPS
应用监控 、链路追踪
中间件监控 应用日志
主机监控 容器监控
31. 解决 – 降级体系
体验功能降级
01
02
业务功能降级
会话级核心功能降级
03
04
多级降级、全链路降
级
05
兜底
32. 成败藏在细节里
◆ https的证书大小是多少
◆ 已经设置了有效期的缓存如何设置为不过期
◆ 影响TPS的因素到底有哪些 ,影响的程度分别是什么
33. 架
构
篇
34. 研发的本质
软件的本质是基于对业务本质理解进行的 业务建模 并打造描述业务模型的 复杂概念结构 ,
结合业务发展持续演进 ,使用
机器 语言
语言 表达这些概念结构
,在空间和时间限制下将他们映射成
35. 方法论之争
业务 VS 技术
是什么 VS 怎么做
语言 VS 机器
lambda calculus VS
图灵机
36. 语言的演进
计算机以 二进制系统 为基础 , 并使用 比特 去描述和映射世界 , 而 万物皆比特 ,语言的终点是 DSL
37. PaaS化架构
金融场景
场景层
零售场景
智慧城市
线下场景
物流场景
标准 API
………
H5 / PC
开放平台输出体系
规则策略
实名路由
服务层
信贷类
人脸
账号
核身 合同
四要素
合同签约
账号转化
科技类
财富类
人脸
证件 合同
企业认证 数科账号
适配业务线 叠加服务编排
编排层
……
平台管控
物流类
核身
合同
四要素
企业认证 合同
……
安全管理
……
……
产品注册
登录安全
核
身
实名等级
组件配置
领域层
技术层
刷脸实名
分布式锁
OCR
分库分表
无损文档转换
流量回放
标准合同签约
规则引擎
电子营业执照
编排引擎
打款认证
表达式引擎
营销规则
鉴权规则
监控管理
流程编排
代码质量
资源管理
能力层
公安网
区块链
人工智能
对象存储
实时智能计算平台
流量回放平台
用户管理
38. PaaS化架构特点
场景隔离
标准化实现
系统缩减
API 收敛
用户洞察
PaaS化
架构
39. 架构未来演进
03
PaaS化架构
是什么 | 怎么做
微服务架构
02
架构升级
是什么 + 怎么做
单体架构
01
04
数字化架构
现在是什么-应该是什么 | 怎么做
40. 总结
◆ 高可用是一个零和游戏 , 只有0和100分 , 成败藏在每一个细节里
◆ 高可用需要一套持续迭代的
◆ 体系是通过企业级
体系 来保障
架构 的升级来实现 ,提升可用性的同时,降低系统复杂度和研发成本
◆ 高可用的背后是业务与技术之间的博弈和平衡 ,在数字化和云原生的时代 ,演进的方向是从矛盾的
对立走向统一 ,实现业务与技术的双轮驱动