京东 张晋军《阿基米德微服务及治理平台》

当前,微服务在京东日益深入普及,服务的数量及种类日新月异,开始出现所谓的“微服务大爆炸”,我们在享受微服务带来的好处的同时,又日益开始被迫承受微服务带来的负面效应,这些负面效应大致有如下几方面: 调用端依赖的服务个数及每个服务的实例数越来越多,造成调用端的启动越来越慢; 当前的软负载均衡策略遇到挑战,急需优化、调整; 跨应用、跨系统的调用越来越多,调用关系和依赖关系日益复杂,可观察性越来越差; 各服务的信息比如入参/出参等散落在各个地方,服务调用者无法快速、准确、全面获取这些知识,沟通成本非常高; 跨语言支持日益迫切,基于库方式将开发者绑死在单一技术栈上,与微服务理念相悖; 缺乏灵活、智能的流量控制机制及相应的运维支持手段; 缺乏灵活、适度的安全机制; 特性增加与Bug修复升级非常困难。 基于以上原因,我们决定开发京东新一代的微服务框架及其治理平台,该平台是阿基米德系列产品中的重要一员。幸运地是,我们遇到了服务网格技术,该技术将业务逻辑与通信及服务治理等非业务逻辑进行了彻底解耦,为全面解决上述问题提供了极大的想象空间。当然,如何在京东如此大的体量下运用“服务网格”技术,并且做到与当前的JSF系统兼容及平稳过渡,是一个巨大挑战。 此外,我们将重新定义新一代的微服务治理平台,该平台将引入服务集市的概念,为开发者提供集中、全面、准确的微服务知识体系;通过用户自定义服务属性的机制,进一步把治理平台向业务场景及业务架构拉近,使得业务在系统运维方面更加灵活自由;制定全局的服务身份体系,围绕该体系进行一系列安全控制。
展开查看详情

1.阿基米德微服务及治理平台 京东/基础架构部 张晋军

2.

3.

4.阿基米德不是“人” 智能图片平台 微服务平台 智能运维平台 容器集群平台 阿基米德 存储技术平台 弹性计算平台

5.平台初心 微服务平台 连接跟微服务相关的一切, 更加贴近业务 京东微服务架构的基石 通信管道 + 沟通管道 构建开放的生态系统

6.平台发展历程 调用 服务 SAF JSF 图谱 集市 上线 上线 上线 上线 2014.1 2016.6 2017.11 2018.5 2012.4 2015.1 2016.12 2018.3 分水岭 调用 微服 服务 JSF 图谱 务平 网格 起航 起航 台 上线

7. 平台范围 • 通信量巨大的流式处 • 基于TCP的RPC 理场景 • JSF • RESTful HTTP • 同步调用 • 通信量中等的企业应 • JMQ • gRPC • 异步消息通知 用场景 • JIMDB • 专有协议(MQTT • 混合通信 • 通信量小的特殊场景 • 数据库连接池 等) (IOT物联网) 协议支持 通信形式 应用场景 调用图谱

8.平台规模 3W+ • 海量、丰富的服务知识 • 覆盖3万+个微服务 2K+ • 服务调用图谱 • 覆盖2600+个应用 10+ • 多维度、全方位的知识点 • 多达10余种的知识维度 • 研发人员 • 产品经理 N+ • 项目经理 • 各级负责人 • 商城、物流、金融等各个领域

9. 平台架构 应用分组 API 网关 应用层 服务集市 开放平台 分布式事务 应用 分布式锁 系统 配置中心 系统扩展 微服务调用图谱 微服务流控 微服务监控 机房 在线联调 开发调试 IP与机房映射 底层架构 JSF SDK ContainerMesh JSF Registry JMQ 安全体系 可视化设计 IP 辅助开发工具 基础设施 JDOS J-ONE/CAP 基础数据服务 生态工具链

10. 底层框架层 – JSF JSF • JSF是Jingdong Service Framework (京东服务框架)的缩写,是公司自研的第二代RPC调用平台,全部模块均 自主研发,是当前京东RPC的基石。 - 基于Java技术栈 - 高性能的RPC通信框架 - 丰富的服务治理功能 - 跨广域网多数据中心部署(支持异地多活) - 覆盖商城/物流/金融等业务领域

11.底层框架层 - ContainerMesh JSF 控制面 JPilot Registry 数据面 Jpilot-agt Envoy 基础设施 服务定义 服务装配 服务发布

12.底层框架层 - ContainerMesh • 镜像制作及管理 JDOS • yaml配置文件 • IPtables 元数据 网格服务定义 服务装配 JSF Registry 服务注册/健康心跳 (兼容网格服务) Jpilot 代理服务发现 Pod 初始化Envoy的启动配置 并监事Envoy的死活及重启 Jpilot Docker Jpilot-agt Jpilot-agt 服务发现 路由配置 Envoy 服务注册 流量控制 健康心跳 … Docker Service

13.底层框架层 - ContainerMesh 特点 解决的问题 基于谷歌的Istio项目 跨语言调用的问题 支持HTTP1.1/HTTP2/gRPC 透明进行特性升级及bug修改,与业务无关 支持跨多个k8s集群部署 提供熔断、路由、流控等丰富特性 兼容现存JSF服务

14.底层框架层 - ContainerMesh • 替换IPtables • 支持多种基础设施 持续 • 支持调用图谱 改进 • 支持UMP(监控) ......

15. 系统扩展层 – 调用图谱 调用图谱 • 调用图谱是京东微服务跟踪系统,提供跨网络的调用堆栈分析,通过多种分析手段,给应用全方位画像,彻底解决 “微服务大爆炸”后带来的可观察性差的问题,帮助开发人员快速定位程序故障点。 应用场景: 来源分析 – 分析某服务的直接调用者的情况 入口分析 – 分析某服务的最初调用者(入口)的情况 路径分析 – 分析一条完整调用链的情况 耗时分析 – 分析一条调用链中的各个环节的耗时情况 瓶颈分析 – 分析一条调用链中的瓶颈点的情况 依赖度分析 – 分析一条调用链中的强依赖、若依赖等的情况

16. 应用层 - 服务集市 集市 … 我们是否 我们需要 有价值? 更多的人 为特定需求而形 成的阶段性合作 其他 部门 … 服务查找时可能需要的联系

17. 服务集市-功能列表 知识搜索 沟通中心 协同编辑 服务历史 • 多种搜索条件 • 用户评论及问答 • 多方协同完善内容 • 自动获取出入参数详情 • 多种搜索高级选项 • 浏览统计及点赞 • 历史版本回溯 • 自动获取版本变化 • 多维度搜索结果 • 事件通知参与各方 • 在线任意两版本比对 • 支持标签搜索 • 变更事件通知 • 支持附件及搜索 自定义标签 调用图谱 服务评价 流程中心 • 应用维度 • 应用上下游关系 • 重要性分析 • 离职员工的接口负责人 • 接口维度 • 来源分析 • 健康度分析 修改申请 • 支持协同编辑 • 入口分析 • 架构合理性分析 • 离职员工的报警短信清 • 去向分析 • 服务排名 理申请 • 服务终止申请等等

18.服务集市 - 使用场景 服务知识导航 服务沟通中心 知识协作中心 服务评价中心

19.自我进化的系统 搜索 完善 交流 服务知识 进化 问答 使用 评价 标注 评论 服务质量 排名 组件 指标 新生 梳理 进化 进化 改进 发现

20.服务评价 重要性 架构合理性 调用次数 循环依赖 依赖程度(Callgraph) 服务拆分粒度 业务属性(业务标签) 数据拆分粒度 可用率 服务评价 服务排名 健康度 重要性 可用率 架构合理性 架构合理性 浏览次数 点赞数

21.能力地图 业务标签 调用图谱 能力地图 提高沟通 效率

22.平台未来之路 • 分布式锁 • IP • 分布式事务 • 机房 生态 • API网关 基础数据 • IP与机房映射 工具连 • 开发调试 服务 • 系统 • 在线联调 • 应用 • 可视化设计 • 应用分组

23.谢 谢!

24.

25.

26.

27.