科技达人说@Service Mesh 实践之路,落地三年,两次架构升级,网易

当ServiceMesh从概念期进入到应用期时 , 大家的关注重点都会转向先锋企业的落地实践 。 为了帮助大家在实践中“避坑” , 我们采访了多家互联网企业的应用实践 , 例如美团点评、同程艺龙以及瓜子二手车等 , 本文将和大家分享的是网易的ServiceMesh实践 。 今年6月 , 本文采访嘉宾冯常健将在QCon全球软件开发大会(北京站)2020上分享题为《网易基于Istio的ServiceMesh2.0架构升级实践》的演讲 , 感兴趣的同学可以关注一下 。
2016年 , 网易的部分业务严选、传媒等率先开始探索使用ServiceMesh架构支撑微服务体系建设;2017年 , 网易开始落地ServiceMesh1.0 , 代号cNginx;2019年 , 由于ServiceMesh1.0在管控能力和流量治理等方面的不足 , 网易开始基于定制Istio和扩展Envoy落地云原生Mesh2.0 , 代号轻舟微服务 。 经过1年的升级改造 , 轻舟微服务已经在严选落地 。
传统微服务架构与ServiceMesh
大多数企业的ServiceMesh实践都不是从零开始 , 而是在原有微服务架构的基础上进行改造转型 。 那么 , 传统微服务架构在转型过程中会面临哪些问题?转型之后 , 企业内部不同角色的技术人员需要做出哪些改变?
传统的微服务框架以RPC通信框架为基础 , 提供服务目录、注册发现、服务治理、流量管理、配置中心、全链路追踪等核心能力 , 并且向外延伸到安全审计、监控告警、统计分析、知识库等平台化能力 。
冯常健表示:“服务框架在微服务架构中占据核心位置 , 因此 , 使用ServiceMesh来替换正在使用的微服务框架 , 无异于一次‘换心手术’ 。 ”
以网易为例 , 他们的关注点在于如何在不中断业务的情况下 , 逐步将微服务架构支撑能力下沉到ServiceMesh架构里 。 想要实现平滑过渡 , 除了需要在ServiceMesh数据面和控制面组件中对服务注册发现、RPC协议、配置下发进行扩展之外 , 还要对现有的上层研发工作台、运维效能平台等支撑平台进行兼容设计 , 避免支撑平台等基建重复建设 。
在部署架构方面 , ServiceMesh比传统微服务框架多了一层Sidecar , 且服务治理是基于流量的 , 因此会带来一系列的问题和挑战 。
Sidecar的运维复杂性问题 , 微服务架构支撑能力下沉后 , 也把复杂性下沉到了Sidecar 。 Sidecar面临着频繁更新的问题 , 但Kubernetes和Istio只解决了部分部署的问题 , 因此如何在不影响业务的情况下热更新Sidecar成为了新的挑战;性能问题 , 某些对延时比较敏感的业务会对性能问题有较多顾虑 , 迫切需要对服务与Sidecar、Sidecar与Sidecar之间的链路进行性能优化;整体架构的可观测性和排障效率问题 , 对业务方来说 , 服务注册发现、服务通信等原本客户端可见的过程现在都成了黑盒 , 在问题诊断和故障恢复方面需要更立体化的监控系统支撑 。ServiceMesh实践会如何影响企业内部员工的工作内容呢?
传统模式下 , 开发和运维会有比较清晰的边界 , 开发人员负责服务运行稳定 , 运维人员负责服务运行的基础设施稳定 。 而进入到云原生时代 , 特别是容器化和ServiceMesh落地之后 , 服务框架、服务治理、灰度发布等稳定性密切相关的能力都作为基础设施下沉了 , 开发和运维的边界开始变得模糊 。 所以 , 企业IT人员的职责也应该相应的进行重新划分 。
架构师及基础架构团队 , 新的职责要求他们必须要非常理解业务 , 清楚地知道业务的服务依赖和服务治理规则 , 故障后能从业务视角进行排障和快速恢复 。 同时 , 他们还需要重新审视现有的技术架构和支撑平台建设 , 从业务视角出发进行设计 , 避免做出来的技术平台无法满足业务需求 , 或者不好用 。 开发人员 , 原先开发人员要关注很多方面 , 例如服务框架、服务治理、环境一致性、遥测数据、客户端SDK版本升级等等 , 而现在 , 以上这些几乎统统不用关注 , 只需要专注于业务本身的逻辑开发;运维人员 , 依托于ServiceMesh打通的服务和基础设施边界 , 以及对服务的统一抽象 , 能够更好的从全局视角进行服务质量、依赖管理、容量规划、端到端监控等来保障产品稳定性 。网易的ServiceMesh实践


推荐阅读