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

主要分享:
服务治理发展史
微服务度量
微服务线上体系治理
微服务线下体系治理

展开查看详情

1. 自我介绍 • 天弘基金(余额宝)移动平台技术总监&首席架构师 目前负责移动平台技术团队管理及总体技术架构设计 • 华为六级技术专家 主导了华为软件多款云计算产品和服务的设计规划和构建落地 • 当当网高级架构师 负责电商运作产品平台整体技术架构和研发团队管理 个人技术涉及并行计算、大规模分布式服务及治理、中间件云化及服务化 (PaaS)、APM 监控、基础开发平台、数据集成等领域,有多年大规模 复杂系统架构实践经验,乐于技术分享。

2. • 服务治理发展简史 目录 单体应用 企业级SOA 互联网服务化 微服务 • 微服务度量 • 微服务线上体系治理 • 微服务线下体系治理

3. 治 问题梳理 改进优化 复杂度 理

4.服务治理发展简史 单体应用 没有服务的概念,所以谈不上“服务治理”,复杂度 来自于自身内部组件,由于组件化的管理需要,衍生 出“组件治理”的需求。

5. SOA 服务治理发展简史 企业级SOA 服 主要解决已有系统的整合(互联互通)问题 务 技术实现及流程繁琐复杂、治理成本高 治 覆盖面广、涵盖企业IT各方面,和IT治理重叠度高 理 传统IT大厂(IBM、Oracle)把持标准 手工治理比重大、自动化程度不足

6.服务治理发展简史 互联网服务化 伴随业务拆分应运而生 主要解决业务的快速响应及系统复杂性扩散问题 实现形式五花八门,有标杆、但没有统一标准 聚焦线上服务的生命周期治理 强调自动化 Load Balancer website website website server server server server DB NFS/DFS Cache

7.服务治理发展简史 微服务 “任何组织在设计一套系统时,所交付的设计方案在结 构上都与该组织的沟通结构保持一致。” ——康威定律 大平台、微服务 和容器技术紧密结合 量变导致质变,不仅仅是服务化架构的延伸 组织架构、管理策略、研发模式、测试、运维等领域 都要做出相应的调整,以为微服务架构的落地创造合 适的“土壤”。 线上线下一体、全生命周期的立体化治理 强调自动化、智能化

8.服务治理发展简史 微服务治理整体架构:三位一体 线下 线上 管理 度量 管控

9. • 服务治理发展简史 目录 • 微服务度量 全生命周期度量指标获取 度量及分析体系 • 微服务线上体系治理 • 微服务线下体系治理

10.如果你不能度量它,你就无法改进它 —— 彼得.德鲁克

11.微服务度量 线下 • 需求管理系统 全生命周期度量指标获取 • 项目管理系统 协同管理过程 • 测试用例管理系统 •过程事件 • 缺陷管理系统 持续交付 • CI/CD流水线 DevOps • 运维流程管理平台 • 软件版本仓库 敏捷 • 源码仓库 持续集成 •… … 线上 • 服务注册中心 产品 开发 测试 运维 • 主机日志 • 人员 • 测试用例 • 调用量 • 应用/服务日志 • UserStory • 调用延时 • 团队 • 需求 • 任务 • Bug/缺陷 • 系统异常 • APM监控 • 产出物 • 业务异常 • 运维事件 •… …

12.是不是少了点什么?

13.微服务度量 用代码来“理解”代码 一切源于源代码… 入口 关系 继承 实现 代码关系 链路关系 业务 产品 架构 需求 设计 设计 软件研发是一项协作性的智力行为,所有的思 考、意图、策略最终都体现在了代码上。因此, 一个系统的代码就是一本“书”,读懂它,我 们就能知道系统的“前世今生”。 问题是,我们如何“读懂”这本“书”?

14.微服务度量 微服务治理度量及分析体系

15. • 服务治理发展简史 目录 • 微服务度量 • 微服务线上体系治理 服务限流 集群容错 服务降级、熔断 故障定界定位 容量规划 资源治理 线上生命周期管理 • 微服务线下体系治理

16. 接口调用 服务调用 微服务线上体系治理 流控模式1 路由寻址 实例定位 服务限流 流控模式2 协议编码 协议解码 限流算法选择策略: 单机限流 流控模式3 漏桶算法 远程通信 序列化 远程通信 令牌桶算法 限流难点: 标准化 体系化 限流原则: 限流前置 集群限流

17.微服务线上体系治理 集群容错

18.微服务线上体系治理 服务降级、熔断 成功 标准化 体系化 失败[达到开关阈值] 关闭 打开 预案化 失败[低于开关阈值] 熔断器时间窗 失败 结束 半开 成功 Metrics 创建 熔断器 否 线程池 否 执行失 否 执行超 否,返回结果 获取 执行 Command 开启? 拒绝? 败? 时? 结果 是 是 执行 Fallback 否,抛出异常 是 是 Fallback 成功? 是,返回fallback

19.微服务线上体系治理 故障定界定位 1:异常排查 异常排序大盘 异常明细列表 3:性能排查 2:异常排查 性能大盘 访问散点图 异常明细大盘 故障点 请求调用链

20.微服务线上体系治理 容量规划 容量预估 基于“依赖”关系逐层推进的 性能压测 性能压测数据的准备及区隔

21.微服务线上体系治理 资源治理 从服务的视角看资源 基于应用视角的数据库(DB)性能及容量优化(慢查询、高频调用、…) 基于应用视角的缓存(Cache)性能优化(读写比例、命中率) 基于应用视角的消息队列(MQ)性能优化(生产、消费、堆积) 基于应用视角的其它资源性能(或容量)优化(XX指标、YY指标、…) 调用次数:1000 总耗时:109600ms A 成功:998 失败:2 B 服务 服务 调用次数:998 调用次数:998 耗时:44000ms 耗时:32000ms 成功:998 成功:998 C D 服务 服务 调用次数:4421 调用次数:998 调用次数:2103 总耗时:5432ms 总耗时:10ms 动作:update,insert, 总耗时:11000ms 动作:send,put select 动作:send 成功:4421 成功:998 失败:2 成功:2103 DB MQ Cache 资源调用情况

22.微服务线上体系治理 线上生命周期管理 “云化”助力微服务架构落地 服务上线、下线 服务扩容、缩容 弹性计算资源是基础 资源编排 资源调度

23. • 服务治理发展简史 目录 • 微服务度量 • 微服务线上体系治理 • 微服务线下体系治理 架构治理 开发治理 测试治理 构建调测能力 协同管理治理

24.微服务线下体系治理 架构治理 DAG的闭环检测 最长调用深度检测 核心服务检测 冗余服务检测

25.微服务线下体系治理 架构治理 “迪米特法则”遵循度检测 通过动、静调用链路的结合清除冗余设计 多余的业务逻辑链路 异常处理链路 旧版本兼容 无触发逻辑

26.微服务线下体系治理 开发治理 代码质量 跨方法级别的代码质量检测 注释密度及完备性检测 个人开发质量 个人线上质量度量:异常→服务→开发人员 个人代码质量度量 团队开发质量 团队线上质量度量 团队代码质量度量

27.微服务线下体系治理 测试治理 测试覆盖度 需求覆盖度 代码覆盖度 页面覆盖度 测试用例维护成本度量 新增用例判定 新增用例内容占比 存量用例变更度计算

28.微服务线下体系治理 调测能力构建 微服务架构下“最大”的研发痛点 基于微服务框架的Filter机制构建Mock能力 在线抓取Mock数据 综合调测能力最佳实践

29.微服务线下体系治理 两周一迭代 火车发布模式,实行班车制,准点发车;统一发布日期,减轻部门沟通成本及开发压力; 协同管理治理 我们赶不上班车又等不了下趟,那就自己发车,按需发布; 需求评审的时候,必须提供UI物料 要预留debug和需求变更的buffer