写点什么

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

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

    阅读完需:约 17 分钟

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

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

在分布式体系下,微服务技术在经历多年发展之后渐趋成熟。进入云原生时代,微服务技术在云原生理念的驱动下被赋予了新的使命。在 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 网关等多个项目在网易集团落地及商业化产品输出。

公众号推荐:

AIGC 技术正以惊人的速度重塑着创新的边界,InfoQ 首期《大模型领航者AIGC实践案例集锦》电子书,深度对话 30 位国内顶尖大模型专家,洞悉大模型技术前沿与未来趋势,精选 10 余个行业一线实践案例,全面展示大模型在多个垂直行业的应用成果,同时,揭秘全球热门大模型效果,为创业者、开发者提供决策支持和选型参考。关注「AI前线」,回复「领航者」免费获取电子书。

2021-07-22 18:034716

评论

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

Asop 之 消息处理机制

Qunar技术沙龙

android Linux 消息队列 安卓 epoll

绝了!阿里甩出“源码阅读指南”,原来源码才是最经典的学习范例

Java 编程 架构 面试 程序人生

TCP 三次握手

W🌥

计算机网络 TCP/IP 8月日更

「独立思考」的背后是一个残酷的世界

非著名程序员

提升认知 个人提升 独立思考 8月日更

CSS 文档中定位指南:static、relative、absolute、fixed、sticky

devpoint

CSS 8月日更

从新手村出来,我在 Apache APISIX 社区发出了第一个 PR

API7.ai 技术团队

开源 后端 API网关 APISIX

RESTful API

escray

学习 极客时间 如何落地业务建模 8月日更

企业数字化转型第一步,云服务器的部署以及搭建

九河云安全

波场DAPP钱包开发|波场DAPP特点

Geek_23f0c3

钱包系统开发 DAPP智能合约交易系统开发 波场DAPP 波场钱包

Karmada: 云原生多云容器编排平台

华为云原生团队

开源 容器 k8s多集群管理 多云管理平台 多云

趁着课余时间学点Python(十)面向对象的理解(前奏)

ベ布小禅

8月日更

对象存储手把手教四 | Bucket 生命周期管理

QingStor分布式存储

对象存储 分布式存储 生命周期 数据管理

Redis扩展数据类型详解

码农参上

redis 8月日更

程序员投入时间和精力实现财富增长之道,这可能会伴随你程序员整个生涯(请不要连续点赞)

孙叫兽

程序员 赚钱 教程 引航计划 签约计划第二季

fil矿机怎么购买?fil矿机在哪买?

fil矿机怎么购买 fil矿机在哪买

区块链难懂?人民日报评论员讲给你听

CECBC

基于时间和窗口的算子(六)

数据与智能

flink 窗口函数 算子

DeFi去中心化平台源码开发|智能合约系统搭建

量化系统19942438797

🏆「作者推荐」【JVM 性能调优】JVM分析与调优技巧分析(原理篇)

洛神灬殇

JVM JVm虚拟机 8月日更

云服务器市场改变了行业市场的发展规模

九河云安全

连续霸榜丨EasyDL到底有多强?

百度大脑

人工智能 EasyDL

图谱可视化|手把手教你采集明星人物关系并进行图谱展示

Python研究者

知识图谱 8月日更

聊聊 PC 端自动化最佳方案 - WinAppDriver

星安果

Python 自动化 WinAppDriver

手把手 Golang 实现静态图像与视频流人脸识别

声网

音视频 人脸识别

企业不可忽视的三大关键时刻

石云升

管理经验 关键时刻 体验设计 8月日更

新药开发瓶颈问题或将被打破,北鲲云超算平台开启药物研发“加速度”

北鲲云

7金5银,中国跳水梦之队背后的"黑科技"是什么?

百度大脑

人工智能 黑科技 跳水队

一文带你了解大厂亿级并发下高性能服务器是如何实现的!

Linux服务器开发

事件驱动 多进程 Linux服务器开发 IO多路复用 高性能服务器

舍弃Kong和Nginx,Apache APISIX 在趣链科技 BaaS 平台的落地实践

API7.ai 技术团队

nginx 开源 网关 kong APISIX

使用FL studio中文版进行音乐合并和剪切

懒得勤快

ipfs矿机挖币哪家最好?ipfs矿机公司实力排行如何?

ipfs矿机挖币哪家最好 ipfs矿机公司实力排行如何

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