⾦融级系统海量流量下的⾼可⽤架构实践 开篇 业务系统 ⻩⾦链路⾦融系统 电商⻩⾦链路、全链路、全场景、海量流量 关注度影响范围 02变化 04whyorhow 01成⻓03银弹 定义篇 服务器,可控机房故障 01 光纤挖断,不可控外部事件04 不可⽤ 029.11⿊天鹅事件 03 上线故障,内部⼈为事故 信息泄露 •信息盗取:⽊⻢病毒、假冒⽹ 站、数据安全事故 •信息泄露:身份信息、账号密 码泄露 信贷欺诈 •身份冒⽤/⾮本⼈申请 •身份美化 •恶意逾期/恶意失联 交易欺诈 •盗刷 •套现 •盗帐号交易 •线上业务交易欺诈 账号盗⽤ •账号接管:登录、修改及管 理身份、绑卡、窃取信息数据、动账转账 ⻛险 条件 不可⽤ 已知时间 未知⼈ 不可⽤是指潜在⻛险在⼀定条件触发下的结果呈现 SLA服务⽔平协议 03 MTTR平均故障时间 04 02 01 SLI衡量服务质量的指标 MTBF平均故障间隔时间 不可⽤= L1.E1.D1.T1+…..+Ln.En.Dn.Tn •业务资质 •资损 •舆情 •客诉 •⽤户体验 •业务收⼊、预期 •P0 •P1 •P2 类型E 系统级别L 不可⽤ •核⼼业务 •全部接⼝ 程度D •100%、80%、……•⼩时 •分钟 •秒 时间T PRAT 01 PRAT 02 PRAT 03 趋势性 不可⽤的等级有随时间及其他外部因素逐步提升的趋势 隐秘性 ⻛险的触发条件⽐较隐晦 爆发性 •交换机宕机 •主机上其他应⽤有定时任务 代 业务的现状是我们现在已经从单⼀的做业务,到业务⽣态,我们处在⼀个快速裂变的时代VUCA 开放式架构 企业级架构 微服务架构 单体架构 ⼯具化时代 ⼯具化时代 信息化时代 数字化时代 2009 《AbovetheClouds:ABerkeleyViewofCloudComputing》 2019 《CloudProgrammingSimplified:ABerkeleyViewonServerlessComputing》 ◆流量 ◆变化(时间…) ◆不可靠 ◆耦合 ◆系统架构 ◆上线 可⽤性 成本VS⻛险 成本 所有降级措施是有效的 低优先级系统不需要备战 下游是稳定的 上游已经替我做了保护 所有应急预案是可执⾏的流量洪峰后系统能快速恢复 系统重试能解决问题 历史的经验是可靠的 ◆⾼可⽤涉及所有业务场景、系统各层级、软件开发的全⽣命周期、组织架构、团队分⼯,贯穿整个软件开发体系 ◆⾼可⽤的难点在于对软件的全景认知,对于(新)变化的感知,对于(历史)⻛险点的识别,在于事前预估与预案,事中有效处理,事后复盘总结,形成闭环 ◆即使付出了99%的努⼒,也会因为1%的疏忽,带来意想不到的结果,所以⾼可⽤应该是⼀套需要持续完善和迭代的体系和⽅法论、需要持续的关注和投⼊ 结构篇 单⼀结构复合结构复杂结构串联 体系篇 01 系统->业务 •追求业务连续性 •以不可⽤等级为评判标准 •追求业务收益与线上⻛险之间的平衡 02 ⻛险->事故 •减少⻛险点 •控制⻛险转化为事故 •有⻛险必有监控,有监控必有预案,有预案必经验证 03 04 数据驱动 •通过业务数据形成业务系统⻛险数据模型 •借助数据模型+AiOps强化⻛险预警与提前部 署预案能⼒ 架构升级 •通过架构升级,沉淀标准的业务模型、技术解决⽅案,降低⼈为错误⼏率,提升系统的可⽤性 成本 ●研发成本 ●管理成本 ●资源成本 不可⽤等级 系统⼈ ●软件⽣命周期 ●现有解决⽅案 ●容错性 ●体系完善度(监控覆盖度、上线SOP、预案) ●认知、能⼒要求 ●组织架构 识别预防 如何尽早识别未知⻛险如何全⾯预防事故发⽣ 感知 如何尽快感知事故 定位解决 如何精准定位问题如何快速、有效解决问 题 识别 ◆指标体系 ◆混沌⼯程 ◆报警体系 复盘06 ◆⾃动化 ◆平台化 解决05 ◆⽇常/⼤促预案 ◆硬件异常预案 ◆业务异常预案 ◆⼤促预案 ◆异常执⾏规范 01预防 ◆研发规范 02◆安全漏洞修复 体系 ◆容量保障 ◆代码质量提升 打造 ◆报警收敛 03 ◆容灾 感知 ◆监控⼤屏 04◆上下游沟通机制 ◆值班机制 定位 ◆硬件监控平台 ◆链路监控平台 ◆业务监控平台 内部 质量 错误码统计 报警数量 CPU 消息积压 场景层 ⽤户访问次数及时⻓统计场景流量 应⽤程序层 交互 QPSTPS 基础设施层 Memory 负载线程数 I/OStatisticsNetwork MYSQL故障 REDIS故障 06CPU负载故障 0105 混沌 RPC故障 02⼯程04 03 磁盘故障 ⽹络延迟故障 需求确认 ●业务本质确认 ●结构影响评估 ●承载系统确认 测试 ●单侧覆盖 ●流量回放 设计 ●架构设计 ●组件设计 ●技术⽅案设计 研发⽣命周期 上线 ●上线SOP ●灰度上线 ●⽩天上线 ●Serverless 开发 ●代码质量提升 ●报警收敛 运营 ●指标体系 ●监控⼤屏 ●预案 ●备战 基于MySQL⾃身⾼可⽤,以及⼀定的容灾设计(如热备、读写分离、冷热分离、内存DB、延时异步⼊库等),最终达到数据库整体架构的⾼可⽤ 强依赖数据库架构弱依赖数据库架构 Mysql数据库集群-异地多机房架构 半同步 异常切换 机房2 (同城 从) 机房3 (异地 备) db1 db2 db3 … db84 … 表1 表2 表3 表150 机房1 (主) 其他存储 对象存储 ⼤数据 ES+HBASE clickhouse Redis集群 缓存集群 db 业务系统 消息队列2 消息队列1 核⼼场景链路可视化 业务指标可视化 流量漏⽃可视化 ■多层级监控体系 应⽤监控、链路追踪 ■AIOPS 中间件监控 应⽤⽇志 主机监控 容器监控 01体验功能降级 业务功能降级02 03会话级核⼼功能降级 多级降级、全链路降04 级 05兜底 ◆https的证书⼤⼩是多少 ◆已经设置了有效期的缓存如何设置为不过期 ◆影响TPS的因素到底有哪些,影响的程度分别是什么 架构篇 软件的本质是基于对业务本质理解进⾏的业务建模并打造描述业务模型的复杂概念结构, 结合业务发展持续演进,使⽤语⾔表达这些概念结构,在空间和时间限制下将他们映射成 机器语⾔ 业务 VS 技术 是什么 VS 怎么做 语⾔ VS 机器 lambdacalculusVS图灵机 计算机以⼆进制系统为基础,并使⽤⽐特去描述和映射世界,⽽万物皆⽐特,语⾔的终点是DSL 编排层 适配业务线叠加服务编排 …… …… …… PaaS化架构 场景层⾦融场景 零售场景 物流场景 线下场景 智慧城市 ……… 标准APIH5/PC 开放平台输出体系 平台管控 ⽤户管理 资源管理 代码质量 流程编排 组件配置 产品注册 安全管理 监控管理 规则策略 鉴权规则 营销规则 实名等级 核身 登录安全 账号转化 合同签约 实名路由 信贷类 ⼈脸 账号 核身 合同 财富类 四要素 ⼈脸 证件 合同 科技类 企业认证 数科账号 核身 合同 物流类 四要素 企业认证 合同 …… 服务层 打款认证 电⼦营业执照 标准合同签约 ⽆损⽂档转换 OCR 刷脸实名 领域层 技术层 表达式引擎 编排引擎 规则引擎 流量回放 分库分表 分布式锁 流量回放平台 实时智能计算平台 对象存储 ⼈⼯智能 区块链 公安⽹ 能⼒层 PaaS化架构特点 场景隔离 系统缩减 API收敛 标准化实现 ⽤户洞察 微服务架构02 是什么+怎么做 03PaaS化架构 是什么|怎么做 架构升级 单体架构01 04数字化架构 现在是什么-应该是什么|怎么做 ◆⾼可⽤是⼀个零和游戏,只有0和100分,成败藏在每⼀个细节⾥ ◆⾼可⽤需要⼀套持续迭代的体系来保障 ◆体系是通过企业级架构的升级来实现,提升可⽤性的同时,降低系统复杂度和研发成本 ◆⾼可⽤的背后是业务与技术之间的博弈和平衡,在数字化和云原⽣的时代,演进的⽅向是从⽭盾的对⽴⾛向统⼀,实现业务与技术的双轮驱动