这个定义听起来有点绕,如何简单定义一下 Service Mesh 呢?美团点评基础架构团队技术专家郭继东认为 Service Mesh 属于受中心化管控的服务间通信基础设施层,将业务与基础设施进一步解耦的新一代云原生微服务架构模式,其最关键的部分是将非业务的功能下沉到通用的基础设施层,是推进云原生体系具备高度移植性、易用性及弹性能力建设的关键一环。 针对 Service Mesh 的理念及产品有很多,不同产品解决的问题及建设目标也会有所差异,但总体而言,郭继东认为 Service Mesh 主要是用来解决以下问题的:
如果企业开始实践 Service Mesh,那么会给企业各部门人员带来哪些变化呢?郭继东表示:“对业务开发人员而言,Service Mesh 会带来更全面、灵活的服务运营支撑能力,协助他们更好的应对服务化或微服务带来的复杂性;对架构师而言,Service Mesh 会为他们的技术决策提供更多的选择和更少的约束,这得益于 Service Mesh 促进基础设施的简化与全方位运营能力的提升;对运维人员而言,Service Mesh 解耦了研发与运维,运维人员可以更加专注底层设施能力的建设和运维效率的提升,如减少对 Nginx、LVS 等各类复杂配置的维护成本等。” 当然,在企业所有人员中,基础研发同学是最需要重点关注 Service Mesh 的,因为基础架构可以基于 Service Mesh 扩大微服务治理的功能及语言覆盖范围,这非常有益于技术标准化;Service Mesh 会为工程效率团队带来新的思路和方向,使得包含构建、测试、发布的流水线更高效和可靠;RPC 及 Http 外的基础设施如存储、MQ 团队也可以积极关注业界动态并积极探索,Service Mesh 是一种架构模式,未来应用场景很可能并不局限于服务间通信,而是覆盖更多类型的网络通信设施。 美团点评的 Service Mesh 建设开始于 2018 年底,在 2019 年 5 月底进行了线上少量业务的试点。据了解,美团点评内部的 Java 语言栈服务治理体系相对完善和统一,承载了上万应用日均万亿级的调用,覆盖了公司 90% 以上的服务,在治理能力方面,路由策略比 Istio 更为精细,也有完善的分布式链路追踪系统、立体化监控系统、全链路压测系统等设施。但美团点评的微服务治理也存在一些局限,那就是除了 Java,其它语言对应的治理体系相对薄弱。 基于这样的微服务治理现状,美团点评的 Service Mesh 实践主要是与 OCTO 系统进行深度打通,通过 Service Mesh 将现有的治理能力开放给基础设施薄弱的语言栈、通过解耦业务与基础设施进一步提升业务迭代效率、支持新合并的异构技术栈公司更便捷融入美团点评现有治理体系,同时也在尝试通过中心化能力实现全局最优治理。 在技术选型方面,美团点评在尽量保持现有体系的架构下,通过自研技术持续演进,数据层是基于 Envoy 进行了二次开发,而控制层则是进行了完全自研。为什么会是这样的技术选型呢?郭继东表示主要是出于三个方面的考虑:“一是因为 Envoy 已经几乎成为数据面的事实标准,其 xDS 模型和 IO 模型可以满足 sidecar 的需求;二是 Istio 的 API 尚不稳定,美团点评的初期目标是对齐现有全部的治理能力,Istio 现有能力及扩展性不能很好的支撑;三是美团点评现有的治理体系较为完善且各个系统都经历了真实业务场景的充分考验,Istio 深度依赖的 Kubernetes 及 Etcd 现支撑的集群规模并不能满足当前的需求。” 郭继东把美团点评的 OCTO-Mesh 建设分为了四个阶段:
据郭继东介绍美团点评的 OCTO-Mesh 仍处于探索阶段,在整个建设过程中的难点集中在与现有体系的兼容性和稳定性这两个方面。 问题一:Envoy 的 xDS 并不能支撑 OCTO 精细复杂的路由策略,众多核心治理能力 Istio 也尚不具备,业务切换成本高。 解决方法:增强 xDS 语义并增加多项自定义 DS,提升灵活性的同时自研对齐现有功能,升级一次组件版本便做到无感知升级。 问题二:绝大部分治理子系统的存储及架构呈现异构特性且并不绑定 Kubernetes 与 Etcd。 解决方法:我们在控制层做了架构统一工作,通过统一接入中心使得各异构系统或平台可以快速接入并在数据面逐渐丰富能力,进而实现服务注册、服务发现、路由、负载均衡、安全控制、全链路压测、分布式链路追踪、限流、断路器、故障演练等能力打通和在 Mesh 体系的落地。 问题三:性能与协议兼容性。 解决方法:为了兼顾性能与协议兼容性,美团点评摒弃了 iptables 方案,而是将 SDK 与 Sidecar 间的通信统一改为 UNIX Domain Socket,并升级了公司通用的协议,提升性能的同时解决 Mesh 模式和非 Mesh 模式应用通信的兼容问题。 问题一:OCTO 承载着万级应用的日均超万亿调用量,这个量级下参考 Istio 模式会对控制面及后端协作的命名服务等系统造成巨大压力,同时较难水平扩展。 解决方法:我们设计了超大规模服务注册发现应对机制及多级缓存机制解决大规模集群场景下对协作系统的压力。 问题二:Istio、Kubernetes 在大规模集群的能力尚有所欠缺。 解决方法:基于独立的第三方服务用于管理控制面节点的服务注册与发现,通过数据面与控制面间连接的“会话粘滞”等手段来解决 Istio 在大规模集群能力上的乏力。 问题三:技术栈大范围升级的同时需要保证业务稳定性。 解决方法:建设了完善的实时 Mesh 与非 Mesh 模式切换能力,优先保证业务稳定性。 “通过 OCTO-Mesh 建设整体提升了美团点评的研发效率,并降低了企业成本,治理能力层面能够更好的支撑多元语言栈的技术选型,促进基础设施标准化。”郭继东表示:“对技术团队而言,OCTO-Mesh 可以带来更灵活运营能力及更高的研发效率,例如过去需要发布才能使用的特性,现在只需 OCTO-Mesh 升级即可使用,过去分散化架构无法实现的功能,现在可以在中心化架构体系实现。除此之外,服务治理的覆盖率也更广泛,异构技术栈、非 Java 应用都可以接入美团点评的技术体系。” Service Mesn 最早是由开发 Linkerd 的 Buoyant 公司提出,并在内部使用。2016 年 9 月 29 日,Service Mesh 第一次被公开使用。2017 年,随着 Linkerd 的传入,Service Mesh 才进入国内技术社区的视野..... 可以说,Service Mesh 在整个技术领域还是一个“新兵”,企业实践也基本处于初级阶段。 什么样的企业应用场景适合使用 Service Mesh 呢?郭继东认为以下三种场景比较合适:
在技术选型方面,目前业界主流的 Service Mesh 框架主要有三个,分别是 Istio、Linkerd 和 Linkerd 2(原为 Conduit),这三种框架各有利弊,可根据具体情况来选择。
当然,Service Mesh 实践并非只有益处,肯定也存在风险。在郭继东看来,虽然不同企业容器化和 Service Mesh 技术选型会有一定的差异,但是这些风险都应该重视起来,并且在大规模落地前,一定要进行充分的容灾切换能力建设及实操演练:
目前国内企业较为完善的治理系统基本都是重度依托于微服务框架的。在这种情况下,应用 Service Mesh 势必需要做出较大改动,至少需要将服务发现、路由等功能迁移到 Sidecar 中。 如果是基础架构不完善的企业,尤其是服务化和容器化不完善,在实践过程中会有很大阻力。郭继东并不建议这类企业贸然应用 Service Mesh:“Istio 虽有成为事实标准的趋势,但国内以蚂蚁金服、华为、腾讯为代表的探索路径差异非常大,说明技术体系仍不成熟。企业想拥抱 Service Mesh,往往需要深度自研或二次改造,这就会带来不可预期的问题,风险把控往往比基础能力完善要难的多,而且切换 Service Mesh 技术栈的挑战不见得比从 0 到 1 引入 Service Mesh 的挑战小。另外,Istio 的 API 尚不算稳定,尤其是对第三方系统的适配能力并不强,并且 Service Mesh 竞品(Linkerd/Linkerd2、Envoy)同时进入 CNCF,这说明了新生事物的不确定性,标准化之路可能还很遥远,大量的投入可能会付诸东流。” 如果是基础架构较为完善的企业,凭借扎实的技术沉淀大可一试,但郭继东表示这类企业仍需把控好技术方向及技术决策,深度调研结合技术栈现状。 另外,如果企业是在原有技术栈的基础上引入 Service Mesh,从实际的应用实践情况来看,往往会存在以下 4 种问题:
国内 Service Mesh 早期实践基本分为先建设数据层后建设控制层和同时建设两类,从后续发展看,随着对服务运营能力的要求的提高,控制层会越来越重要。在实际落地方面,众多企业都在积极探索私有云建设,也有很多通过 Service Mesh 提供治理能力的案例。在现有开源产品方面,郭继东认为未来发展趋势会逐渐平缓,但 Service Mesh 势必会和更多种类的云原生系统深度集成。 采访嘉宾郭继东,美团点评基础架构团队技术专家,先后深度参与了美团点评服务治理系统 OCTO 的演进与 Service Mesh 的探索与落地。目前专注于服务架构、大规模分布式服务治理、Service Mesh、性能优化等方向。致力于为多元业务提供标准化、高可用、高可靠的服务治理解决方案。曾就职于百度凤巢商业平台部,拥有丰富的高可用架构设计经验。 活动推荐 落地AIOps 还是一个相对较新的词,其设计的技术业界也还在积极探索。在智能运维相关的领域,推荐大家关注以下落地实践:
|
|