InfoQ Gateway,云原生时代的流量入口:Envoy( 三 )
逻辑架构逻辑架构设计如下图所示:
文章图片
整体架构主要包括数据面、控制面两部分 , 实现方面则是扩展了Istioingressgateway:
数据面
以Envoy作为数据面组件 , 负责南北向数据流量的代理、路由、治理、遥测等;通过filterchain进行扩展 , 目前支持基于Lua、C++语言编写插件 , WASM落地后支持多语言方式扩展;通过xDS与控制面组件进行配置下发等动态控制 。
控制面
以IstioPilot作为基本控制面组件 , 同时提供API层、控制台供用户或第三方平台接入 。
IstioPilot在这里主要包括如下作用:
1、作为xDSServer 。 与Envoy的xDSClient建立GRPC通信连接 , 是与Envoy交互的基础控制面 。 可支持控制不同场景下Envoy(ServiceMeshSidecar&API网关Gateway&Ingress&入口七层代理) 。
2、对接注册中心(Discovery) 。 支持对接KubernetesAPIServer(K8S注册中心能力) , 具备扩展Consul、Eureka等其他注册中心能力 。 支持同时对接多种注册中心 , 并将注册信息经过配置转换 , 下发至Envoy 。
3、配置处理(Config) 。 对于要下发至Envoy的所有配置 , 均通过Pilot进行配置处理 , 再下发至Envoy 。
4、模型抽象与接口封装(MeshConfigurationProtocol&ServiceMeshInterface , 简称MCP&SMI) 。 Pilot对Envoy的基础模型进行了抽象 , 并进行基础接口的封装 , 使得其他平台对Envoy的控制可以更加清晰与优雅 。 对外暴露的接口包括GRPC与KubernetesCRD两种形式 。
APIPlane作为API平面 , 主要?于对K8SCRD、MCP或SMI接口做面向业务功能的API组合、转换处理 。
管理控制台是控制面最上层组件 , 也是研发、运维人员直接操作的平台组件 。
场景地图在EnvoyGateway技术栈基础上 , 可以适应入口七层代理、API网关、Ingress、单元化机房路由、FaaS函数路由等多种场景落地应用 。
文章图片
1、入口七层代理
文章图片
在流量入口场景下 , 可以承担HAProxy、Nginx等传统代理职责 。
2、API网关
文章图片
在微服务场景下 , 承担分解流量、路由、治理、审计等丰富职责 。
3、Ingress
文章图片
在容器化场景下 , 可以作为能力更丰富的Ingress实现 。
4、通用网关
文章图片
在完整使用EnvoyGateway方案下 , 可以省去原有入口七层代理->API网关/Ingress的链路 , 由一层通用网关(EnvoyGateway)完成 。
落地路线目前Envoy以两类角色在业界落地:一是作为ServiceMesh数据面组件选型 , 目前在Istio等多种服务网格框架落地;二是作为流量入口代理 , 目前较多的是以API网关形式实现 , 如Gloo、Ambassador等 。 网易内部多个业务团队已经实现了数据面技术栈从Java异步化代理、Kong到Envoy的升级 , 基于网易轻舟EnvoyGateway作为流量入口标准组件 。
由于EnvoyGateway与ServiceMesh使用了相同的Envoy+Istio技术栈 , 使得不论Envoy作为Gateway , 或ServiceMesh中的Sidecar , 都可以被统?控制面管控 , 在提升了该技术栈整体可维护性基础上 , 还可以帮助业务逐步演进到ServiceMesh架构:如果业务对ServiceMesh架构尚存疑虑 , 可以先落地EnvoyGateway , 后续待时机成熟再引入ServiceMesh架构 , 完成整体微服务技术架构的演进与统一 。
推荐阅读
- 「原生家庭」你之所以缺乏自信,是因为“原生家庭”阶段没有形成独立的人格
- InfoQ Vue、React和Angular:该选择哪个框架?
- InfoQ 22款好用的CLI工具
- 腾讯云原生产品布局曝光,似乎只有腾讯云对
- InfoQVue、React和Angular:该选择哪个框架?
- InfoQ去Oracle实录:如何在线更换金融核心场景中的数据库?
- 互联网云原生大规模落地 腾讯云全系产品构建极致流畅体验
- 明星婚姻|昆凌自曝原生家庭缺憾!21岁嫁周杰伦圆童年愿望,弥补遗失的快乐
- 旧故|吴亦凡录节目被抓拍,当被原生相机直接怼脸拍,这颜值简直不敢信
- 雷锋网云原生产品数据首度披露,腾讯云又跨进一个“双百”