☰
Higress云原生网关原理拆解:流量统一、协议转换与WASM扩展
2026/10/7 6:17:31 网站建设 项目流程

接手过微服务网关的人,大多经历过那种“三个入口、三套规则”的混乱:Nginx Ingress 管南北向的域名转发,Spring Cloud Gateway 做内部路由和鉴权,又单独搞一套 OpenResty 负责限流和封堵。排查一次跨网关的请求问题,要同时翻三份配置、拉三个群,改一个后端服务的流量切分还得等不同系统各自的生效周期。Higress 的出现就是奔着解决这类问题去的——一款基于 Envoy 的云原生 API 网关,从阿里巴巴内部实践演化而来,后来被 CNCF 接纳为 Sandbox 项目。这篇文章我想抛开官网那种功能罗列,从原理层面拆解 Higress 的几个关键设计:控制面和数据面如何分工、Ingress 规则和注册中心如何被翻译成 Envoy 的 xDS 配置、HTTP 到 Dubbo 的协议转换到底在哪一层发生、WASM 插件为什么比传统的 Lua 扩展更稳。读完你能形成一个相对清晰的判断:一个请求从网关入口到后端服务的完整链路里,Higress 在每一步究竟做了什么。适合正在做网关选型、准备二次开发或排查网关疑难问题的工程师参考。

1. 网关演进的十字路口:Higress 到底在解决谁的痛点

先说一个我在实际运维中反复看到的场景。很多业务的流量入口演变不是规划出来的,而是被业务逼出来的。最初 Nginx 加几个 upstream 就能搞定域名转发,后来有了 Kubernetes,Nginx Ingress 成了标准方案。再后来微服务拆细了,Spring Cloud Gateway 成了内部服务间的“小网关”。表面上看每个阶段都有对应工具,但这些工具凑在一起,问题就来了。

1.1 从 Nginx Ingress 到微服务网关:断层在哪

Nginx Ingress 的优势是稳定、简单、几乎每个运维都懂,但它的表达能力撑不住微服务治理的需求。举例来说,你想按请求头里的某个业务字段做分流,或者按百分比把流量切到新版本,虽然 Ingress 注解能实现一部分,但扩展逻辑基本依赖自定义注解和 Lua 脚本。一旦规则复杂起来,annotations 就会变成一堆难以维护的键值对。

Spring Cloud Gateway 走的是另一条路,它把路由规则写在代码和配置中心里,灵活是真的灵活,但它本质是一个 Java 应用,性能和吞吐量受限于 JVM 和自身实现。更关键的是,它在 K8s 生态里是个“外来者”,和 Ingress Controller 各管一摊,没有统一入口的视角。

Higress 的出现,本质上是把三件本应是一件事的东西合并成了一件:南北向流量入口(Ingress)、东西向微服务治理(服务发现、路由、限流、熔断)、安全防护(认证、WAF)。它一次解决的不是某个具体功能,而是“为什么我这里有这么多入口”的架构问题。

1.2 阿里内部实践到 CNCF 项目的演进路径

Higress 不是实验室项目,而是从阿里巴巴内部大规模流量场景里长出来的。它最初脱胎于阿里对 Envoy 的深度使用,团队在长期支撑大促流量时积累了大量网关治理经验,然后把内部沉淀的系统能力以 Higress 的名字对外开源,时间大致在 2022 年。2023 年,Higress 被 CNCF 接纳为 Sandbox 项目,意味着它的治理模型和代码结构已经过了基金会层面的审查,不是个人玩票。

这段历史对技术选型有一个很实际的参考意义:一个从大促场景里打磨出来的网关,它对高并发、限流、灰度、多注册中心的处理方式,往往是经历真实流量考验过的,而不是某篇论文里的理想模型。

1.3 Higress 的核心定位:统一南北向与东西向流量

Higress 的设计目标很直接:一个网关实例,同时承担 K8s Ingress 的标准流量入口职责,也能作为微服务网关直接对接注册中心里的服务。这意味着你在 K8s 集群里创建的标准 Ingress 资源能直接用,Service 发现也不一定非走 K8s 的 Service。

它还支持直接对接 Nacos、ZooKeeper、Eureka 等注册中心,让网关绕过 K8s Service,直接拿到微服务实例列表。这个能力在混合部署场景里尤其重要——比如有一部分服务没进容器,还在虚拟机里运行,Higress 依然可以把它们纳入统一路由。

可以这样理解:Nginx Ingress 教的是“域名请求怎么转发到 Service”,Spring Cloud Gateway 教的是“微服务之间怎么调来调去”,Higress 试图把这两套知识合并成一套体系统一管理,同时把安全、可观测和插件扩展这层横向能力也放进同一个框架里。

2. 控制面与数据面的分工:Higress 如何把 Envoy 变成执行引擎

如果你熟悉 istio 那一套控制面/数据面的概念,理解 Higress 会非常顺。不熟悉也没关系,我用一个比喻:数据面是执行流量的“高速公路收费站”,每辆车(请求)进来都要按车道、按规则收费放行;控制面是收费站背后那个“收费标准管理系统”,负责把各路规章同步到每个收费员手里。

2.1 为什么选 Envoy 而不是重写代理

Higress 的数据面直接使用 Envoy,这是一个很关键的选型决策。Envoy 本身就是为云原生场景设计的代理,由 Lyft 开源,后进入 CNCF,是目前 Istio 等 Service Mesh 默认的数据面。它具备一套成熟的 Listener-Cluster-Filter 抽象,支持热更新配置,线程模型也很适合高并发场景。

如果 Higress 团队从零写一个网关代理,光是处理连接管理、TLS、HTTP/2、负载均衡、熔断这些底层能力,就够做上好几年,而且大概率不如 Envoy 稳。站在 Envoy 的肩膀上,Higress 把精力集中在“如何把高级配置翻译成 Envoy 能懂的配置”这一层,也就是控制面的工作。这就像做手机系统时,与其自己造芯片,不如直接用成熟的处理器,把核心精力放在系统和应用生态上。

2.2 Higress Controller 的配置流转闭环

Higress Controller 是整个网关的“翻译官”,它要干的事看起来很简单,实际很复杂:监听各种配置来源,再把它们变成 Envoy 的 xDS 配置。xDS 是一组协议的统称,包括 LDS(监听器发现)、RDS(路由发现)、CDS(集群发现)、EDS(端点发现),控制面就是靠这些协议把配置推给数据面。

具体流转链路大概是这样的:

  • Controller 启动后,list/watch Kubernetes 里的 Ingress、Gateway、Service、Endpoint、Secret,以及 Higress 自定义的 CRD。
  • 同时它会通过 McpBridge 这类自定义资源去连接外部注册中心,拉取服务实例列表。
  • 所有数据在控制面内部被合并、去重、计算优先级,形成一份统一的内存配置模型。
  • 最终这份模型被翻译成 Envoy 的 Listener/Route/Cluster/Endpoint 配置,通过 xDS 协议下发给数据面。

这套机制最妙的地方在于配置变更的实时性。你在 K8s 里改一条 Ingress 重写规则,Controller 检测到变化后计算新配置并推送,数据面无需重启就能生效,这就是“热更新”。我在生产环境里观察过配置下发延迟,正常情况下都可以达到秒级,对日常业务发布完全够用。

2.3 两种运行形态:独立部署与 Istio 集成

Higress 有两种典型部署方式。

第一种是独立模式,也是最常见的:Higress 自带控制面和数据面,你通过 Helm 一把梭装进集群,它会创建一个独立的 Deployment 来跑 Controller,再用一个 Deployment 或 DaemonSet 跑 Envoy 数据面。这种模式适合集群里只想加一个入口网关、不想额外引入 Istio 的用户。

第二种是集成模式:如果你已经在用 Istio 管理服务网格,Higress 可以复用现有的 Istio 控制面(istiod)来下发配置,自己作为数据面网关工作。这种模式的好处是基础设施被统一,但引入的 Istio 本身有一定复杂度,需要控制面组件稳定运行。

需要注意,Higress 与 Istio 的集成并不是简单的“二选一”。即便在独立模式下,Higress 也内置了和 Istio 兼容的配置处理逻辑,所以部分 Istio 的 VirtualService 配置也能被识别,这对从 Istio 迁过来的团队是很大的友好项。它同时避免了服务网格 sidecar 那种每个 Pod 都要注入的复杂运维模式,集中式网关让排查链路更直观。

3. 配置翻译层:Ingress、CRD 与注册中心如何变成 xDS

前面说了 Controller 会把配置翻译成 xDS。这一节我想更深入一层,聊一聊 Higress 面对多配置源时,是怎么做归一化和优先级处理的。这部分看起来不起眼,但正是网关“好不好用”的胜负手。

3.1 多配置源与优先级合并

在一个标准 K8s 环境里,Higress 要处理的配置源至少有四类:

  • 标准 K8s Ingress 资源,包括各种注解。
  • K8s Gateway API 资源(如果你使用较新版本)。
  • Higress 自定义 CRD,如 McpBridge、Http2Rpc、WasmPlugin 等。
  • 外部注册中心的服务数据,如 Nacos、ZooKeeper。

如果这些配置在语义上有交叉,比如同一个域名既出现在 Ingress 里,又被某个 CRD 定义了更具体的路由规则,Higress 需要按既定优先级决定谁生效。它的处理策略整体遵循一条原则:更具体的配置覆盖更通用的配置。K8s Ingress 的规则偏通用,CRD 里的 Http2Rpc 这种配置则明显更具体,所以后者能对同一路由做更精细的改造。

这个优先级设计其实能反映网关定位:既要兼容标准生态,让用户从 Nginx Ingress 迁过来零负担,又要给高级用户提供超额能力。如果没有这套归一化,用户就得在“用标准换来不够用”和“用自定义换来非标准”之间二选一。

3.2 McpBridge:注册中心服务到 Envoy Cluster 的映射

McpBridge 是 Higress 里很具特色的 CRD,它定义了网关要从外部哪些注册中心拉取服务。比如你要让网关直连 Nacos,在 McpBridge 里声明 Nacos 地址和命名空间,Higress Controller 就会去订阅 Nacos 的服务列表。

当一个服务通过注册中心被发现后,它会被映射成一个 Envoy 里的 Cluster。这个 Cluster 的 Endpoint 列表来自注册中心动态推送的实例 IP,而不是来自 K8s Service。这样做的直接好处是:网关可以做到服务实例级别的感知,而不用等 K8s Service 的 Endpoint 转发。对于依赖 Nacos 做动态上下线的场景,这个能力意味着你发布一个新实例后,网关几乎实时就能感知并纳入负载均衡池。

我在实际项目中遇到过一种迁移困境:服务还在虚拟机里跑着,但 K8s 集群已经建好,想引入 Higress 做统一入口。McpBridge 直连注册中心这个功能让迁移变得很平滑——网关可以先接管入口流量,后端服务继续留在原来的注册中心体系里,容器化改造可以逐步推进,而不需要一个晚上全量切换。

3.3 一个请求的完整路由链路

把这一节的知识串起来,我们模拟一个完整请求:用户在浏览器访问https://order.example.com/api/v1/getOrder?id=123,背后的 Higress 是怎么处理的?

第一步,请求先落在数据面 Envoy 的某个 Listener 上。Listener 上配置了 TLS 证书校验和 HTTP 协议解析,请求头里的 Host 会被提取出来。

第二步,请求进入 Filter Chain,经过一系列过滤器:WASM 插件做认证、限流等前置逻辑,然后进入路由阶段。

第三步,Router 根据 Host 和 Path 匹配到具体路由规则。如果匹配到的是 Http2Rpc 定义的路由,请求就不再是普通的 HTTP 转发,而是进入协议转换逻辑,这部分下一章细讲。

第四步,匹配到 Cluster 后,负载均衡策略会在 Endpoint 列表里选一个实例,建立连接池里的复用连接,完成转发。

第五步,后端响应返回后,经过响应阶段的过滤器,比如响应头改写、WASM 插件做日志记录,最终返回给客户端。

这条链路本身并不神秘,但每个环节的配置在 Higress 里都可以被动态修改,这就有很多想象空间。你可以临时加一个 WASM 插件只观察某个域名的请求,也可以针对单个路由调整超时时间,而不影响其他流量。

4. HTTP 到 Dubbo 的协议转换,发生在哪个环节

Dubbo 是国内很多团队使用的 RPC 框架,尤其在一些老系统里存量巨大。过去把 Dubbo 服务暴露给前端或外部系统,通常要写一个 Spring MVC 的适配层,将 HTTP 请求转为 Dubbo 调用,既重复又难维护。Higress 的 Http2Rpc 直接把这件事内建到了网关里,省掉一个适配服务。

4.1 面对 Dubbo 存量系统,网关为什么必须做协议层适配

要理解这件事的价值,得回到真实场景。一个老业务核心服务是用 Dubbo 暴露的,但新前端的协议是 HTTP/HTTPS。如果要让前端直接调用 Dubbo,理想情况下应该直接请求网关,由网关完成协议转换,这样前端只需要关心 HTTP,后端服务也不用绑定特定网关 SDK。

如果在网关之前再挂一个“协议转换服务”,等于请求多一跳,多一个维护组件,而且那个转换服务本身又成了单点。Higress 把这个逻辑放在网关数据面内部,请求无需跳到额外服务,整个转换在 Envoy 的过滤器链里完成,链路更短,也更容易观测。

4.2 Http2Rpc 的执行链路与参数映射

Http2Rpc CRD 里需要声明几个核心要素:请求的 HTTP 方法与 Path、目标 Dubbo 服务的接口名与版本、具体方法名,以及参数映射关系。

配置大致长这样(具体字段细节视版本有所不同,但思路一致):

apiVersion: higress.io/v1alpha1 kind: Http2Rpc metadata: name: order-dubbo spec: httpRules: - path: /api/v1/getOrder target: service: com.example.OrderService version: 1.0.0 group: order-group method: getOrder params: - key: id target: id type: java.lang.Long source: query

当请求匹配到这条 Http2Rpc 规则后,网关会走泛化调用流程:把 HTTP 请求里的 query、header、body 中的参数,按配置映射成 Dubbo 泛化调用所需的参数类型,再封装成 Dubbo 请求发送给注册中心发现的后端实例。后端返回的结果再被反序列化并映射回 HTTP 响应。

这个过程中最容易出错的是参数类型映射。Dubbo 接口的入参可能是Long类型,但 HTTP query 里的id永远是字符串。泛化调用时如果类型传错,后端会直接报参数异常。我在配置时基本会单独写一段测试用例,专门验证“前端传字符串、网关转 Long、后端正常收到”这条路径。

4.3 Dubbo2 与 Dubbo3 兼容及生产注意事项

Higress 对 Dubbo 协议的支持需要考虑不同版本的问题。传统 Dubbo2 协议和 Dubbo3 在协议头、服务发现模型上都有差异。新版本落实下来,Dubbo3 的应用级服务发现能减少注册中心的数据量,但也要求网关侧能做适配。如果你还在用 Dubbo2,也没关系,Higress 保留了对 Dubbo2 协议的兼容能力。

生产中的实际经验有几点:

  • 超时时间要单独调。Dubbo 默认的 consumer 超时可能是几百毫秒,但网关到后端的网络和业务耗时需要额外考虑,最好在 Http2Rpc 对应的路由里单独设置一个更宽松的超时。
  • 要关注 keep-alive 连接。Http2Rpc 转换后,网关到 Dubbo 后端的连接如果频繁重建,性能会明显下降,所以连接池参数值得花时间压一下。
  • 注册中心推送延迟会直接影响路由可用性。服务实例下线后,如果注册中心推送不及时,网关仍可能把请求打到已下线实例,导致报错。此时要结合注册中心的优雅下线机制来配合。

5. WASM 插件体系:比 Lua 更安全,比 C++ Filter 更敏捷

网关之所以是“墙”,是因为它可以承载各种横切逻辑。传统方案里,Nginx 周边用 Lua(比如 OpenResty 体系)写业务插件;Envoy 原生扩展则需要用 C++ 编译 Filter。但这两条路都有明显痛点:Lua 单线程模型下,一段失控的循环就可能拖垮 CPU;C++ Filter 开发成本高,而且每次改动都要重新编译发布整个数据面。Higress 选择的是 WASM(WebAssembly)路线,这个选型值得展开聊。

5.1 Proxy-Wasm 规范和插件运行沙箱

Envoy 社区定义了一套 Proxy-Wasm 规范,让开发者可以用高级语言写扩展,编译成 WASM 字节码后由 Envoy 内的 Wasm 运行时加载执行。Higress 的插件体系就是基于这套规范实现的。

WASM 插件的本质优势是安全隔离。插件运行在沙箱里,有内存安全边界,不像 Lua 或者 C++ 那样可以直接“捅破”代理进程。一个插件崩溃,最多影响它所在的请求上下文,很难把整个 Envoy 进程带崩。我在 Nginx Lua 时代见过一次因为插件里写了个死循环导致 worker CPU 打满的事故,迁移到 WASM 之后这种问题的风险从架构上就被消灭了。

5.2 WasmPlugin CRD 与插件下发链路

在 Higress 里部署插件,并不会直接去改 Envoy 的 C++ 配置,而是通过 WasmPlugin CRD 声明。CRD 里描述插件代码从哪个 ConfigMap 或远程地址加载、生效的域名范围、执行的优先级顺序等。Controller 会把这份声明翻译成 Envoy 的 Wasm Filter 配置,随 xDS 下发给数据面。

插件生效范围可以控制得很细:可以选择全局生效,也可以只对某个域名、某个路由生效。这个能力在生产里非常实用。比如你想对某个新接入的商家单独做一套限流策略,可以只针对它的域名挂一个限流插件,完全不影响其他流量。

5.3 多语言插件开发与性能取舍

WASM 插件支持的主流语言有 Go(用 TinyGo 编译)、Rust、C++、AssemblyScript。以 Go 为例,开发者可以写:

package main import ( "github.com/alibaba/higress/plugins/wasm-go/extensions" "github.com/alibaba/higress/plugins/wasm-go/pkg/wrapper" ) func main() { wrapper.SetCtx("my-plugin", &MyPlugin{}) }

实际编译得到.wasm文件后,上传到网关可访问的地址,再在 WasmPlugin CRD 里引用即可。

性能上要说实话:WASM 调用是走沙箱边界的,比原生 C++ Filter 有一定开销,尤其在高频请求场景下,插件逻辑越重,额外耗时越明显。但它换来的是开发效率和安全性。大多数网关插件的逻辑都是“读几个头部、做一次鉴权调用、放行或拒绝”,这种轻量逻辑在 WASM 里的开销完全在可接受范围。我自己压测过简单请求头改写类插件,性能衰减可以控制在几个百分点以内,相对于部署和迭代的便利性,这笔账是划算的。

一个值得留意的坑:WASM 插件运行时的内存占用和宿主进程共享度不高,如果同时加载太多插件且都申请了大内存块,网关实例的内存会涨得比较快。给每个插件单独做好资源评估,别把几个重型插件全堆到同一组网关实例上。

6. 生产环境里必须正视的性能边界与常见坑

前面几章重点讲原理,这一章说点更落地的:我在生产里实际遇到过的性能瓶颈和配置坑。网上教程一般会告诉你正确用法,但坑往往藏在参数的默认值和两种模式的选择里。

6.1 数据面关键参数与调优方向

Envoy 本身有很多性能相关参数,Higress 在部署时会提供一组默认值,但默认值未必适合你的流量模型。

首先关注线程模型。Envoy 是单进程多线程架构,通常你会希望 worker 线程数接近机器的物理核数。如果机器是 8 核,默认可能就开 8 个 worker,对应 8 个事件循环线程。线程数太少,高并发下 CPU 无法吃满;线程数太多,线程上下文切换开销又可能反噬性能。

其次是连接池与超时。网关到后端的连接复用直接决定 QPS 上限。Higress 的默认连接池参数对大多数场景是够用的,但如果你的后端响应本身偏慢,需要检查连接是否被长时间占用,适当调大连接池上限,否则高峰期会出现“有连接但全都忙”的现象。

还有一个容易被忽略的地方是 Buffer 限制。如果业务允许上传较大的请求体,而网关侧默认的 buffer 太小,请求会被直接拒绝。反过来,如果把 buffer 调到极大,又会增加内存压力。最好按业务实际的最大请求体加一到两倍的余量来设置,而不是无脑调大。

6.2 注册中心与 K8s Service 两套服务发现并存时的治理混乱

这是我在实际项目里踩过最深的一个坑。当一个后端服务同时被 K8s Service 暴露、又在 Nacos 注册了实例,如果你在路由配置里一会儿走 Service 发现、一会儿走注册中心发现,流量就会被分散到两条完全不同的负载均衡路径上。两边的实例上下线节奏并不一致,很容易出现“一半流量 502,一半正常”。

后来我们定了一条铁律:同一个服务的流量入口只能选一种发现方式。要么全走 K8s Service,让网关注定在后端 Service 层面;要么全走 McpBridge 直连注册中心,利用注册中心做精细的实例级上下线。避免混用,排查问题的复杂度会下降一个数量级。

6.3 可观测性接入:日志、监控、链路追踪

网关是所有流量的必经之路,它天然是观测的黄金点。Higress 基于 Envoy,所以 Prometheus 指标、访问日志、分布式追踪都是原生支持的。我强烈建议在接入 Higress 时把这三件事一次做全:

  • 访问日志格式直接用 JSON,方便接入日志平台做检索和分析。默认的文本格式适合人读,但排查问题时按字段过滤的效率远高于 grep。
  • 监控面板里优先关注 P99 延迟、错误率、连接数、限流命中数。限流命中数这个指标很容易被忽略,但它能帮你判断是不是前端流量突增被误杀。
  • 链路追踪接入时,确认透传的 Header 配置正确,否则 Trace ID 在网关这一环断掉,排查全链路问题又得靠猜。

6.4 新能力:AI 网关方向的演进

Higress 近年的版本里明显加了对 AI 应用的适配能力。这本质上还是网关的看家本领,只是把治理对象从普通 HTTP 请求换成了大模型 API 请求。比如多模型服务的统一接入、消费者维度的认证与配额管理、Token 级别的限流、请求与响应的缓存等。

这块能力的底层仍然跑在 Envoy 的过滤器链上,只是 protocol 层做了更多针对大模型 API 的解析。对于准备把 AI 能力引入业务的团队,可以把它理解成“用现成的网关能力管好 AI 流量”,不需要再单独部署一套 AI 网关。不过因为 AI 生态发展很快,这部分能力还在快速迭代,我的建议是:小流量试跑,别一上来就当成唯一入口。

7. 和其他网关对比一轮后,我的选型建议

最后聊一聊选型。网关方案很多,Kong、APISIX、Nginx Ingress、Envoy Gateway,每个都有拥趸。我不想说谁绝对碾压谁,只从我和团队实际使用后的感受出发,给一个横向参考。

7.1 同类网关的对比矩阵

拿几个最常被提起的方案做对照:

维度HigressAPISIXKongNginx Ingress
底层代理EnvoyOpenResty/NginxOpenResty/NginxNginx
插件语言WASM(Go/Rust等)LuaLuaLua
K8s 原生 Ingress支持支持支持原生
多注册中心直连支持(Nacos等)部分支持部分支持不支持
Dubbo 协议转换内建靠插件靠插件不支持
配置面复杂度中低,兼容 Istio中中高,要维护 PG 等组件低
适合场景K8s + 微服务治理一体喜欢 Lua 生态、动态化要求高企业级多团队共享网关只做简单域名转发

这里每个方案都有自己的“生态圈舒适区”。APISIX 的 Lua 插件生态非常成熟,如果你团队本来就熟悉 OpenResty,APISIX 的学习成本很低。Kong 的企业级管理功能丰富,适合需要多团队自助申请的集中化网关。但如果你已经在深度使用 K8s,同时又有 Dubbo 或 Nacos 这类阿里系微服务组件,Higress 的集成体验会是最顺滑的。

7.2 按场景选型的判断逻辑

我的判断逻辑通常分三步。

第一步看存量资产。你后端服务最大的协议是什么?如果全是 Dubbo,Higress 的 Http2Rpc 直接解决协议转换问题,其他网关做这件事都需要额外开发,这是决定性优势。

第二步看 K8s 化程度。如果你已经全面容器化,且不想维护一套复杂的独立网关系统,Higress 一套 Helm 就能拉起,天然适配 Ingress 场景,比“Nginx Ingress + 微服务网关”两套系统更省心。

第三步看团队技术栈。团队如果全是 Lua 老手,那 APISIX 的维护效率不一定比 Higress 差;如果团队对 Go/Rust 熟悉,WASM 插件开发会很顺手,Higress 就更合适。

7.3 个人体会:迁移时给自己留好退路

最后说一点我自己的实操体会。网关是全局基础设施,换网关最怕的不是装不上,而是迁不完。我的建议是先把 Higress 作为旁路网关跑起来,只接入少量测试域名,和现有 Nginx Ingress 并存一段时间。等验证完灰度、限流、WASM 插件这些关键能力之后,再从低风险域名开始正式切量。同时保留一份旧的网关配置备份,至少保留两个大版本周期。

还有一个小技巧常被忽略:迁移时把 Higress 的访问日志格式和旧网关保持完全一致,这样业务方在切换期间不用改任何日志查询习惯,减少一个变量,排查问题会轻松很多。

网关这种东西,选得对,后面几年的流量治理都会顺畅;选得不对,每个大版本发布都可能牵着网关配置一起重做。理解了 Higress 的原理再做判断,你会比只看官方功能清单的人从容很多。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询