微服务架构体系的深度治理 李鑫

QCon大会

2019/05/14 发布于 技术 分类

QCon  QCon2019 

文字内容
1. 微服务架构体系的深度治理 李鑫 天弘基金(余额宝)
2. 自我介绍
3. 自我介绍 • 天弘基金(余额宝)移动平台技术总监&首席架构师 目前负责移动平台技术团队管理及总体技术架构设计 • 华为六级技术专家 主导了华为软件多款云计算产品和服务的设计规划和构建落地 • 当当网高级架构师 负责电商运作产品平台整体技术架构和研发团队管理 个人技术涉及并行计算、大规模分布式服务及治理、中间件云化及服务化 (PaaS)、APM 监控、基础开发平台、数据集成等领域,有多年大规模 复杂系统架构实践经验,乐于技术分享。
4. 目录 • 服务治理发展简史  单体应用  企业级SOA  互联网服务化  微服务 • 微服务度量 • 微服务线上体系治理 • 微服务线下体系治理
5. 治 问题梳理 改进优化 复杂度 理
6. 服务治理发展简史 单体应用 没有服务的概念,所以谈不上“服务治理”,复杂度 来自于自身内部组件,由于组件化的管理需要,衍生 出“组件治理”的需求。
7. 企业级SOA  主要解决已有系统的整合(互联互通)问题  技术实现及流程繁琐复杂、治理成本高  覆盖面广、涵盖企业IT各方面,和IT治理重叠度高  传统IT大厂(IBM、Oracle)把持标准  手工治理比重大、自动化程度不足 服务治理 SOA 服务治理发展简史
8. 服务治理发展简史 互联网服务化  伴随业务拆分应运而生  主要解决业务的快速响应及系统复杂性扩散问题  实现形式五花八门,有标杆、但没有统一标准  聚焦线上服务的生命周期治理  强调自动化 Load Balancer website server server DB website server NFS/DFS website server Cache
9. 服务治理发展简史 微服务 “任何组织在设计一套系统时,所交付的设计方案在结 构上都与该组织的沟通结构保持一致。” ——康威定律  大平台、微服务  和容器技术紧密结合  量变导致质变,不仅仅是服务化架构的延伸 组织架构、管理策略、研发模式、测试、运维等领域 都要做出相应的调整,以为微服务架构的落地创造合 适的“土壤”。  线上线下一体、全生命周期的立体化治理  强调自动化、智能化
10. 服务治理发展简史 微服务治理整体架构:三位一体 线上 线下 管理 度量 管控
11. • 服务治理发展简史 目录 • 微服务度量  全生命周期度量指标获取  度量及分析体系 • 微服务线上体系治理 • 微服务线下体系治理
12. 如果你不能度量它,你就无法改进它 —— 彼得.德鲁克
13. 微服务度量 线下 • 需求管理系统 全生命周期度量指标获取 • 项目管理系统 • 测试用例管理系统 协同管理过程 •过程事件 • 缺陷管理系统 持续交付 • CI/CD流水线 DevOps • 运维流程管理平台 • 软件版本仓库 敏捷 • 源码仓库 持续集成 •… … 线上 • 服务注册中心 产品 开发 测试 运维 • 主机日志 • UserStory • • • • • 测试用例 • • • • • • 应用/服务日志 • 需求 人员 团队 任务 产出物 • Bug/缺陷 调用量 调用延时 系统异常 业务异常 运维事件 • APM监控 •… …
14. 是不是少了点什么?
15. 微服务度量 用代码来“理解”代码 一切源于源代码… 入口 关系 继承 实现 代码关系 业务 产品 架构 需求 设计 设计 软件研发是一项协作性的智力行为,所有的思 考、意图、策略最终都体现在了代码上。因此, 一个系统的代码就是一本“书”,读懂它,我 们就能知道系统的“前世今生”。 问题是,我们如何“读懂”这本“书”? 链路关系
16. 微服务度量 微服务治理度量及分析体系
17. 目录 • 服务治理发展简史 • 微服务度量 • 微服务线上体系治理  服务限流  集群容错  服务降级、熔断  故障定界定位  容量规划  资源治理  线上生命周期管理 • 微服务线下体系治理
18. 微服务线上体系治理 接口调用 服务限流 路由寻址 限流算法选择策略: 单机限流  漏桶算法 协议编码 远程通信  令牌桶算法 限流难点:  标准化  体系化 限流原则:  限流前置 集群限流 流控模式1 流控模式2 流控模式3 序列化 服务调用 实例定位 协议解码 远程通信
19. 微服务线上体系治理 集群容错
20. 微服务线上体系治理 服务降级、熔断 成功  标准化  体系化 失败[达到开关阈值] 关闭  预案化 打开 失败[低于开关阈值] 熔断器时间窗 结束 失败 成功 半开 Metrics 创建 Command 熔断器 开启? 否 线程池 拒绝? 否 执行 执行失 败? 是 是 是 否 否,返回结果 执行超 时? 是 执行 Fallback Fallback 成功? 获取 结果 否,抛出异常 是,返回fallback
21. 微服务线上体系治理 故障定界定位 1:异常排查 异常排序大盘 异常明细列表 3:性能排查 2:异常排查 性能大盘 访问散点图 请求调用链 异常明细大盘 故障点
22. 微服务线上体系治理 容量规划  容量预估  基于“依赖”关系逐层推进的 性能压测  性能压测数据的准备及区隔
23. 微服务线上体系治理 资源治理  从服务的视角看资源  基于应用视角的数据库(DB)性能及容量优化(慢查询、高频调用、…)  基于应用视角的缓存(Cache)性能优化(读写比例、命中率)  基于应用视角的消息队列(MQ)性能优化(生产、消费、堆积)  基于应用视角的其它资源性能(或容量)优化(XX指标、YY指标、…) A 服务 调用次数:1000 总耗时:109600ms 成功:998 失败:2 B 服务 调用次数:998 耗时:32000ms 成功:998 调用次数:998 耗时:44000ms 成功:998 C 服务 调用次数:998 总耗时:10ms 动作:update,insert, select 成功:998 失败:2 DB D 服务 调用次数:2103 总耗时:11000ms 动作:send 成功:2103 MQ 调用次数:4421 总耗时:5432ms 动作:send,put 成功:4421 Cache 资源调用情况
24. 微服务线上体系治理 线上生命周期管理  “云化”助力微服务架构落地  服务上线、下线  服务扩容、缩容  弹性计算资源是基础  资源编排  资源调度
25. 目录 • 服务治理发展简史 • 微服务度量 • 微服务线上体系治理 • 微服务线下体系治理  架构治理  开发治理  测试治理  构建调测能力  协同管理治理
26. 微服务线下体系治理 架构治理  DAG的闭环检测  最长调用深度检测  核心服务检测  冗余服务检测
27. 微服务线下体系治理 架构治理  “迪米特法则”遵循度检测  通过动、静调用链路的结合清除冗余设计  多余的业务逻辑链路  异常处理链路  旧版本兼容 无触发逻辑
28. 微服务线下体系治理 开发治理  代码质量  跨方法级别的代码质量检测  注释密度及完备性检测  个人开发质量  个人线上质量度量:异常→服务→开发人员  个人代码质量度量  团队开发质量  团队线上质量度量  团队代码质量度量
29. 微服务线下体系治理 测试治理  测试覆盖度  需求覆盖度  代码覆盖度  页面覆盖度  测试用例维护成本度量  新增用例判定  新增用例内容占比  存量用例变更度计算
30. 微服务线下体系治理 调测能力构建  微服务架构下“最大”的研发痛点  基于微服务框架的Filter机制构建Mock能力  在线抓取Mock数据  综合调测能力最佳实践
31. 微服务线下体系治理 两周一迭代 协同管理治理 我们赶不上班车又等不了下趟,那就自己发车,按需发布; 火车发布模式,实行班车制,准点发车;统一发布日期,减轻部门沟通成本及开发压力; 需求评审的时候,必须提供UI物料 要预留debug和需求变更的buffer
32. 微服务线下体系治理 协同管理治理  数据驱动的精益看板  过程指标度量  持续交付效率优化
33. 总结 服务治理发展简史 • 单体应用 • 企业级SOA • 互联网服务化 • 微服务 微服务线上体系治理 • 服务限流 • 容错、降级、熔断 • 故障定界定位 • 容量规划 • 资源治理 • 线上生命周期管理 微服务度量 • 全生命周期度量指标获取 • 度量及分析体系 微服务体 系架构深 度治理 微服务线下体系治理 • • • • • 架构治理 开发治理 测试治理 构建调测能力 协同管理治理