NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

从服务框架到服务网格,网易轻舟双引擎多模式服务治理演进实践

  • 2021-07-22
  • 本文字数:5083 字

    阅读完需:约 17 分钟

从服务框架到服务网格,网易轻舟双引擎多模式服务治理演进实践

在分布式体系下,微服务技术在经历多年发展之后渐趋成熟。进入云原生时代,微服务技术在云原生理念的驱动下被赋予了新的使命。在 InfoQ 2020 年微服务技术年终盘点文章中,我们对传统的服务框架和云原生的服务网格分别进行了分析,指出了服务框架的进化与困局,服务网格的进步、分化、落地,并给出了企业微服务架构的演进方向。


本文将延续微服务架构演进这个话题,结合网易数帆旗下轻舟微服务团队在诸多企业业务落地的微服务治理实践,阐述企业应用在不同阶段采用不同的微服务治理策略,以及从服务框架到服务网格实现架构平滑演进的思路与方法。

服务框架:无侵入 Agent 服务治理


服务框架是传统微服务技术的核心所在。早期微服务技术中的服务注册、发现、调用、治理、观测都离不开服务框架。这也带来了一些问题,比如业务研发者需要明显感知服务框架并掌握其中各项非业务相关技术,框架版本升级困难,框架越来越重难于维护等等。网易的互联网业务比较多元,早期各业务没有统一的微服务技术规范和框架,大部分业务选型了 SpringCloud、Dubbo、gRPC 等开源框架,也有少数业务选择自研 RPC 框架。服务框架在微服务架构下的问题随着业务、团队规模的扩大日益凸显,这也催生了 网易新一代微服务平台 —— 轻舟 的建设落地。


2018 年,我们以 业务无侵入 为核心理念构建了轻舟微服务平台,核心数据面 基于字节码增强技术实现无侵入 Agent 服务治理能力业务无需修改代码 即可 一键接入微服务治理全家桶 能力,大幅提高了用户业务微服务化改造效率,降低了业务进行服务治理相关能力的研发成本。轻舟微服务平台目前已在网易集团内外诸多企业业务落地。



相较于传统服务框架,无侵入 Agent 服务治理有如下 核心优势


  • 代码无侵入、业务无感知引入。 业务无需对程序代码任何修改,只需在应用启动项添加 Agent 参数即可。

  • 一键接入微服务治理全家桶(Spring Cloud/Sentinel/Apollo/Skywalking)。 业务无需感知框架、版本等实现细节,快捷获得微服务治理 All-In-One 能力。

  • 接管主流注册中心(Eureka/Nacos/Consul/Zookeeper/Kubernetes)。 业务无需更换注册中心,服务注册与发现全托管。

  • 兼容全系 Java 应用。 基础框架无限制,支持任意 Java 应用快捷接入。

  • 模块化设计,可按需热插拔、升级。 业务可按需加载、卸载功能模块,组件灵活演进、升级。



无侵入 Agent 服务治理方式一定程度上对传统服务框架的组织与接入方式进行了重新定义,为单体应用、初步微服务化的应用提供了便捷的微服务治理套件落地方案。最近我们注意到一些大型互联网企业也开始使用无侵入 Agent 方式进行微服务治理落地,让我们更加坚定了这种设计的有效性与长期性。


总结:


无侵入 Agent 服务治理技术可以帮助企业业务高效完成微服务化改造,也为后续微服务架构的持续演进提供了技术基础。

服务网格:低门槛高性能推动企业级落地


服务网格(Service Mesh) 是将无侵入服务治理定义的更为彻底的微服务架构方案。通过将微服务治理能力以独立组件(Sidecar)整合并下沉到基础设施,服务网格可以实现应用业务逻辑与服务治理逻辑完全分离,这也使支持多语言、热升级等高阶特性变得顺理成章。网易服务网格建设 是随着严选、新闻等互联网业务容器化上云开始的。轻舟微服务平台与业务部门采用合作共建的方式,制定以 业务无感知、平滑稳定 为服务网格落地的最高宗旨。我们选择由 Google、IBM 背书的 Istio 作为服务网格基座进行扩展、增强,为实现业务无感知、平滑稳定接入进行了深入设计与反复论证,已经帮助多个企业核心业务大规模生产环境落地服务网格。



服务网格建设思路方面,我们主要从“低门槛”与“高性能”两个维度进行设计。

低门槛:业务平滑落地的支撑能力


真正意义上支撑不同业务的平滑接入是我们在服务网格平台建设初期的主要挑战,具体体现在:


  • 不同业务有着不同的微服务架构现状:不同的框架、协议、注册中心

  • 不同业务有着相同的要求:不希望业务有任何修改或感知

  • 原生 Istio 易用性偏弱


为此,我们在支撑业务平滑落地方面做了大量工作,主要可以归纳为以下几个方面:


  • 业务平滑接入:业务 无需修改代码、框架或注册中心,由基础层与平台层适配业务架构、框架

  • 多协议支持:HTTP 、gRPC 、Dubbo、Thrift 等协议的完整流量管理与精细化治理能力,并沉淀了更多协议扩展能力

  • 流量动态拦截:按需对流量协议、端口动态拦截配置,降低企业 mesh 化门槛

  • 核心组件热升级:Sidecar 升级无需业务重启,助力服务框架升级效率提升 4 倍以上

  • 治理能力增强:面向业务场景的熔断降级(动态、缓存降级),限流(全局、单机、自适应),接口级鉴权

  • 流量染色 & 穿梭:零配置实现请求流量染色、穿梭,快速实现多套测试环境部署与回收

  • 复杂场景统一管控:支持容器 & 非容器、多集群、多种组件部署模式(Sidecar、SDK)、 多协议等复杂场景统一管控,支持业务迁移过程平滑、可观测

  • Envoy API 网关 :基于 Envoy 与 Istio Gateway CRD 扩展实现具备全生态治理能力与高性能的 API 网关,平滑接管业务原有南北向流量,实现了 微服务 API 网关全面向云原生化升级,达成了 微服务集群南北向与东西向核心基础设施统一与共同演进

高性能:大规模微服务集群的支撑能力


业务平滑迁移是服务网格落地的基本条件,而支撑大规模微服务集群则是生产环境下对服务网格平台的"必考项"。早期 Istio 的设计更多着眼于模型的通用型、灵活性,对大规模生产及微服务集群的支撑能力比较弱,主要体现在:


  • 请求多两跳带来的延时退化

  • 全量配置分发带来的流量"洪峰"

  • 控制平面无自我保护能力

  • 无兜底降级能能力


为此我们在支持大规模微服务集群支撑能力方面做了大量工作,主要归纳为以下几个方面:


  • 数据面性能、稳定性提升

  • 基于 用户态协议栈 以及 SRIOV 容器网络 的性能优化,时延性能较原生提升 2 倍以上

  • 配置懒加载,实现配置的增量、按需分发

  • 连接退避,避免对控制面带来集中"打击"

  • 延时与启动速度优化

  • 控制面支撑大规模集群

  • 应对大规模集群变更

  • 限流 & 熔断

  • 主动断连

  • 自我观测与监控报警

  • 多级容灾:多级兜底降级,保障线上不掉流量


总结:


适应不同的业务架构、框架,提供相同的低门槛、高性能平台能力,是服务网格企业级落地的必备条件

双引擎多模式:从服务框架到服务网格的最后一公里


我们在顺利完成基于无侵入 Agent 服务治理、低门槛高性能服务网格平台在企业业务落地后,业务对我们提出了更高的要求:


  • 无侵入 Agent 技术已经帮助业务快速落地微服务架构与治理,接下来如何平滑演进到服务网格?

  • 服务网格架构虽然完美,但似乎部分应用进程内治理能力无法覆盖,如何解决?


我们自身在建设无侵入 Agent 服务治理、低门槛高性能服务网格过程中,也沉淀了一些可以支撑业务架构演进的技术方案:


  • 无侵入 Agent 应用进程内服务治理能力,可以成为服务网格架构下缺失能力的补充。在彻底的服务网格架构下,无法实现进程内服务治理,如方法级的熔断、限流、容错、应用内监控等,可以通过 Agent 的 All-In-One 套件快速补齐。

  • 无侵入 Agent 的字节码增强机制,可以为业务演进到服务网格提供工具支持。存量业务为引入一些特性而不得不修改代码时,如传递调用链上下文、寻址拦截、调用兜底等等,可以通过 Agent 在应用中”织入“逻辑进行增强。

  • 无侵入 Agent 具备的模块化、可插拔设计,可以实现服务框架自身到服务网格的“蜕变”。业务在微服务化改造时接入 Agent 的主要治理特性,在演进到服务网格的过程中可以对一些与服务网格能力重叠的功能逐步”卸载“,逐步完成框架与架构的演进。


带着业务的需求,以及已经独立闭环的无侵入 Agent、服务网格技术能力,轻舟微服务平台在 2020 年开启了新一轮 从服务框架到服务网格"最后一公里"能力 的探索,即"双引擎多模式"服务治理能力。



定义


  • 双引擎 —— 狭义是指 Agent、Sidecar 两种服务治理引擎(组件);广义是以 Agent、Sidecar 为核心的整体微服务平台能力。围绕 双引擎 分别 垂直构建的微服务治理能力,旨在使平台基于 每种引擎都具备独立支撑业务服务治理场景能力。长期演进上来讲,后续可能有更多引擎引入(比如多运行时 Dapr,传统 SDK 等),这在垂直构建引擎能力设计上长期支持。

  • 多模式 —— 狭义是指服务 + 不同引擎的多种治理模式,包括基于 Agent 的服务治理模式、基于 Sidecar 的服务治理模式、整合 Agent+Sidecar 的服务治理模式等;广义上可结合业务情况将服务以不同模式接入平台,服务可以包含多种接入模式的实例,支持不同接入模式的服务实例互相发现、统一治理与平滑演进。围绕“多模式”水平构建 以 业务应用服务为核心、以 引擎驱动业务架构平滑演进 的平台能力与解决方案。长期演进上来讲,可以支撑更多治理模式下应用服务的统一纳管、治理、演进,如 Agent 模式、Sidecar 模式、Agent+Sidecar 模式、多运行时模式、SDK 模式等等。



核心能力


为了完整支撑微服务的治理纳管与演进迁移,我们对双引擎多模式的核心能力进行梳理与分级(从基础 L0 到高阶 L3),用以指导平台建设能力完整性与落地优先级。整体如下:

平台支持 Agent、Sidecar 分别独立闭环的服务治理能力 L0


微服务平台的基础能力,平台具备每种引擎(Agent、Sidecar)相关的整体能力。业务可以选择一种长期使用。对平台来说,即具备:


  • 无侵入 Agent 服务治理体系与平台

  • 服务网格治理体系与平台

多种治理模式下服务管理统一视图 L0


采用不同治理模式的服务可以在平台上统一展现,包括服务、实例列表,调用拓扑,全平台服务概览等功能。


平台具备业务的服务、实例在 演进迁移过程可视化能力,如观测迁移过程中的调用情况(包含跨集群、环境信息)、服务列表、实例列表、监控数据等。

多种治理模式下服务互相发现、调用 L1


采用不同治理模式的服务可以实现互相调用和发现,具备演进 迁移过程服务的可达性


具体来说,具备几方面能力:


  • 服务在 Agent、Sidecar、Agent+Sidecar 多种模式下互相发现、调用

  • 多注册中心打通,实现服务在注册中心随架构迁移时可发现

多种治理模式服务平滑迁移 L2


迁移过程的平滑,具体来说主要包括:


  • 治理模式切换。Agent、Sidecar 支持平滑迁入、迁出。

  • 注册中心切换。多注册中心打通,支持迁移过程平滑切换注册中心。

  • 跨环境、集群、网络的服务发现。支持业务跨环境、集群、网络迁移过程的调用可达。

  • 存量治理策略迁移。业务已有治理策略的迁移。

多种治理模式的服务治理统一、互补 L2


服务处在 Agent、Sidecar、Agent+Sidecar 等不同治理模式下,治理能力需要形成统一、互补。


  • 统一 是指相同治理功能在不同治理模式下行为一致,各项治理能力不因模式不同对业务产生差异,进而保障迁移过程的 平滑性

  • 互补 是指 Agent、Sidecar 分别具备的治理能力,在 代码、方法级 与 服务、进程级 形成互补,加强服务治理的 完整性

多种治理模式的服务治理用户无感知技术选型 L3


应用微服务托管 / 治理平台在治理方面的高阶设计目标,是用户无需感知底层使用 SDK、Agent、Sidecar,仅在平台层按功能需求配置、管控。


目前,经过一年多努力,轻舟微服务平台已经主体实现上述 L0-L2 的能力,并在 L3 持续探索,提升平台易用性。



场景覆盖



在打通已有 Agent 和服务网格能力、形成多模式治理后,微服务平台可以覆盖比较完整的业务场景:无论 业务现有技术栈是基础框架,或是增强过的 SDK,都可以选择自己的演进路线,通过 Agent、Sidecar 完成 长期的微服务架构平滑演进、升级


总结:双引擎多模式服务治理能力可以充分利用已有的微服务平台能力,比较好地填补从服务框架到服务网格平滑演进过程的技术空白,提供更整体、更平台化的微服务架构演进支撑能力。

未来展望


轻舟微服务平台未来会沿着双引擎多模式架构路线持续建设,主要包括:


  • 垂直平台引擎之深耕:无侵入 Agent 服务治理、低门槛高性能服务网格等垂直方向持续深耕,继续夯实无侵入 Agent、Sidecar 的能力

  • 水平业务模式之演进:多种治理模式平滑迁移覆盖更完整的业务场景,能力高度平台化,继续降低企业微服务架构演进的成本,保证平滑与稳定

  • 与未来同行,历久弥新:深度整合多运行时、Spring Native 等技术,保持架构先进性,持续为业务带来价值

参考资料


网易轻舟从微服务框架到服务网格架构平滑演进最佳实践(详见内文第 4 部分)


解读微服务的 2020:框架在左网格在右,云原生时代的微服务路在何方


落地三年,两次架构升级,网易 Service Mesh 实践之路


云原生时代的流量入口:Envoy Gateway


作者简介


裴斐,网易数帆云计算技术专家、资深架构师。10 余年企业级平台架构和开发经验,目前主要负责网易轻舟微服务治理团队,专注于企业微服务架构及云原生技术的研究与落地工作。带领团队完成网易轻舟 Service Mesh、微服务框架 NSF、API 网关等多个项目在网易集团落地及商业化产品输出。

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2021-07-22 18:034588

评论

发布
暂无评论
发现更多内容

深入剖析数据库事务的隔离级别

小舰

数据库 事务隔离级别 数据库事务

打卡学习 VBA 和 PYTHON week01-02

小怪兽

3月日更 【IT蜗壳教学】 【自我错误点总结】

GO训练营第12、13周—— runtime

Glowry

朱嘉明:全面认知区块链的科学特征

CECBC

区块链

利用区块链技术,打造绿色发展的中药材生态链

CECBC

中药材

【前端面试题】关于一些js的一些面试题(金融行业),我和面试官扯了三个小时

孙叫兽

JavaScript 大前端 金融 笔试题

2021 年要了解的 34 种 JavaScript 简写优化技术

LeanCloud

JavaScript 面试 大前端

GO训练营第11周——DNS&CDN&多活架构

Glowry

电子门锁没电的解决办法

孙叫兽

生活 程序人生 电子锁

拍乐云推出“实时标注”,助力少儿编程、在线金融等行业场景实现高效互动

拍乐云Pano

音视频 在线教育 互动白板 实时标注 在线金融

高质量、高并发的实时通信架构设计与探索

融云 RongCloud

标准引领 浪潮工业互联网助力澳门质量品牌国际认证联盟成立

浪潮云

工业互联网

白话讲解,拜占庭将军问题

架构精进之路

分布式 算法 3月日更

看了上百份面经,发现每次面试的问题都逃不过这几方面

yes

面试

堪称完美!中国Java之父纯手打,阿里首发:多线程与高并发

Java架构之路

Java 程序员 架构 面试 编程语言

xshell不能输入命令字符了?

Geek_6370d5

xshell 错误集锦

2021金三银四春招来袭,掌握这份成长宝典,offer岂不是随便拿?

Java架构之路

Java 程序员 架构 面试 编程语言

产品调研报告

Ashley.

【得物技术】TDengine在得物的落地应用

得物技术

数据库 tdengine 数据 sentinel 得物技术

实时数据流计算引擎Flink和Spark流计算对比

小舰

大数据 flink spark 流计算

打击虚拟货币洗钱:中国破获比特币跨境洗钱案

CECBC

虚拟货币

冰河公开了其总结的一项重要的编程技能!

冰河

Java 正则表达式 程序员

寻找被遗忘的勇气(十九)

Changing Lin

3月日更

全票通过!微众开源项目EventMesh进入Apache孵化器

康月牙

Apache 开源 Event 事件网格 eventmesh

我看 JAVA 之 引用类型(Reference)

awen

Java ThreadLocal Reference

安全高可用通信背后的 MySQL 优化实践

融云 RongCloud

FFmpeg入门篇

Changing Lin

ffmpeg media

微信小程序开发:如何快速实现添加一条分割线的项目需求

三掌柜

微信小程序 3月日更

初识Golang之安装运行篇

Kylin

3月日更 21天挑战 Go 语言

炸了,炸了!阿里P9纯手打Java面试小抄(21版)在GitHub上已获80万star

Java架构之路

Java 程序员 架构 面试 编程语言

如何在 Spring 生态中玩转 RocketMQ?

阿里巴巴云原生

Java Serverless 微服务 云原生 中间件

从服务框架到服务网格,网易轻舟双引擎多模式服务治理演进实践_云原生_裴斐_InfoQ精选文章