news 2026/4/5 9:39:32

后端认识网关Nginx、LVS 、Keepalived、VIP OpenResty、APISIX、 Kong 、 JanusSpringcloud GateWay

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
后端认识网关Nginx、LVS 、Keepalived、VIP OpenResty、APISIX、 Kong 、 JanusSpringcloud GateWay

前沿聊天:有没有发现,近几年随着工作的深入,好像除了nginx 最亲切外,什么LVS VIP(跟会员一样) APISIX Kong 还有微服务的GateWay,各种网关层面的名词喋喋不休的出现在你的脑子里。再加上需要增加云服务的鲁棒性,一层套一层,再优化迁移。o(╥﹏╥)o 要老命了,今天就把我知道的一些名词整理一下。

一丶 Nginx、LVS 、Keepalived、VIP

先来三个不常见的
LVS(Linux Virtual Server):内核级负载均衡器,负责将客户端请求按调度算法(如 RR、WLC 等)转发给后端真实服务器(Real Server)。支持 NAT/DR/TUN 三种模式。

Keepalived:基于 VRRP 协议的高可用守护进程,主要功能:1. 实现主备 LVS 调度器之间的 VIP 漂移;2. 对 LVS 服务或后端 RS 进行 健康检查;3. 自动维护 ipvsadm 规则(无需手动配置 LVS)。

VIP(Virtual IP):虚拟 IP 地址,是客户端访问服务的唯一入口。正常情况下由主 LVS 节点持有;主节点故障时,由 Keepalived 将 VIP “漂”到备节点。

LVS 负责负载均衡,Keepalived 负责 LVS 的高可用(通过 VIP 漂移实现),而 VIP 是客户端访问的统一入口
1.先简单分辨 Nginx 和上面三个的关系
Nginx(读作 engine x)是一款高性能、轻量级的HTTP和反向代理服务器,同时支持IMAP/POP3/SMTP协议。它采用事件驱动的异步非阻塞架构,在高并发场景下能保持低资源消耗和快速响应,单机可支撑5万+并发连接。常被用于静态资源托管、反向代理、负载均衡、动静分离等场景
它们本身没有强制依赖关系,但在实际高可用架构中,经常被组合使用 —— 它们属于不同层级的组件,可以独立工作,也可以协同配合。

✅ 结论:

Nginx 和 LVS 是“干活的”(负载均衡器),一个在 L7(应用层),一个在 L4(传输层)。
Keepalived 是“保活的”(高可用控制器),负责让 VIP 在多个“干活的”节点间漂移。
VIP 是“门牌号”,客户端只认它。
👉 所以:Nginx 和 LVS 是“同类竞争者”(都做负载均衡,但层级不同),而 Keepalived + VIP 是它们的“高可用搭档”。

LVS 是“高速公路入口收费站”,负责快速分流车辆(TCP 连接);Nginx 是“城市内部导航系统”,负责看懂目的地(HTTP 请求)并精准送达。两者分工协作,各司其职。

所以你的架构图中 既有 LVS 又有 Nginx 是完全合理且常见的 —— LVS 保护的是 Nginx 集群的高可用和高吞吐,而 Nginx 提供的是应用层的智能路由能力。
“LVS + Nginx 两层转发,会不会变慢?”
不会明显变慢,反而在高并发场景下性能更高、更稳定。


什么时候不需要 LVS?
如果你的业务满足以下条件,可以只用 Nginx + Keepalived:

QPS < 1万
并发连接 < 1万
团队运维能力有限,不想维护复杂架构
流量增长缓慢,短期内无需横向扩展
💡 对于 90% 的中小项目,Nginx + Keepalived 足够了,没必要上 LVS。

典型协作场景:
场景 1️⃣:Nginx 高可用架构(最常见)

Client → VIP → Keepalived(主备) → Nginx(反向代理) → 后端服务

作用:防止单点故障。一台 Nginx 挂了,另一台自动接管 VIP。
Keepalived 做什么?
主机持有 VIP
定期检查 Nginx 进程是否存活(通过 vrrp_script)
若 Nginx 崩溃,主动降权,触发 VIP 漂移到备机

场景 2️⃣:LVS 高可用架构

Client → VIP → Keepalived(主备 LVS 调度器) → LVS(DR/NAT) → Real Server(如 Nginx/应用)

Keepalived 做什么?
管理 VIP 漂移
自动加载 ipvsadm 规则(通过 virtual_server 配置)
检查后端 Real Server 健康状态(可选)

场景 3️⃣:LVS + Nginx 混合架构(超大流量)

Client ↓ VIP ↓ Keepalived → LVS(四层分发) ↓ 多台 Nginx(七层处理) ← Real ServersinLVS DR mode ↓ 后端微服务
+------------------+|Client|+--------+---------+|访问 VIP(虚拟IP) ↓ +------------------------------+|Keepalived(VRRP高可用)||- 管理 VIP 漂移||- 健康检查|+--------------+---------------+|自动配置并驱动 ↓ +------------------+|LVS||- 负载均衡转发||- NAT/DR/TUN模式|+------------------+ ↓ +----------------------+|Real Servers(RS)|+----------------------+

业务组实际配置:

|+----------------+-----------------+|VIP:|172.25.38.56|----172.25.38.4/172.25.38.8 ----|172.25.38.57 +-------+--------+ +--------+-------+|DS1||DS2||LVS+Keepalived||LVS+Keepalived|+-------+--------+ +--------+-------+||+----------------+-----------------+|+------------+|+------------+|RS1|172.25.38.52|172.25.38.53|RS2||nginx +--------------+---------------+ nginx|+------------+ +------------+||+----------------+-----------------+|+------------+|+------------+|DS1-AI|172.25.244.123|172.25.244.128|DS2-AI||KONG +--------------+---------------+ KONG|+------------+ +------------+

二丶OpenResty与APISIX、 Kong 、 Janus

🧱 一、核心定义
1. OpenResty
是什么?
一个基于 Nginx + LuaJIT 的高性能 Web 平台,由章亦春(agentzh)主导开发。
作用:
让你用 Lua 脚本直接嵌入 Nginx,实现动态逻辑(如认证、限流、路由改写),无需后端服务介入。
本质:开发框架 / 引擎,不是开箱即用的产品。
✅ 类比:OpenResty = “Nginx 发动机 + Lua 编程接口”
2. APISIX
是什么?
一个云原生、高性能的 API 网关,由 Apache 软件基金会孵化并毕业(顶级项目)。
底层:完全基于 OpenResty 构建。
特点:
配置存储:etcd(支持毫秒级动态更新)
插件热加载(无需 reload)
支持多语言插件(Lua、Go、Java、Wasm)
云原生友好(Kubernetes Ingress Controller)
✅ 类比:APISIX = “基于 OpenResty 引擎打造的智能汽车”
3. Kong
是什么?
一个开源的 API 网关和微服务管理平台,由 Mashape(现 Kong Inc.)开发。
底层:同样基于 OpenResty 构建。
特点:
配置存储:PostgreSQL 或 Cassandra
插件生态极其丰富(100+ 官方/社区插件)
提供企业版(Kong Enterprise)含 GUI、分析、Dev Portal
社区活跃,企业采用广泛
✅ 类比:Kong = “基于 OpenResty 引擎打造的豪华 SUV”

4. Janus
是什么?
一个早期的轻量级 API 网关,用 Go 语言编写。
现状:已停止维护(GitHub 最后更新在 2018 年),不推荐用于生产。
与 OpenResty 关系:无任何关系!它不是基于 OpenResty,而是独立实现。
⚠️ 注意:Janus 是“干扰项”,常被误认为与 OpenResty 有关,实际是 Go 生态产物。

┌──────────────────────┐ │ OpenResty │ ←─ 核心引擎(Nginx + LuaJIT) └──────────┬───────────┘ │ ┌────────────────────────┼────────────────────────┐ │ │ │ ┌──────────▼──────────┐ ┌──────────▼──────────┐ ┌──────────▼──────────┐ │ APISIX │ │ Kong │ │ (其他网关) │ │ - Apache 顶级项目 │ │ - 商业公司主导 │ │ 如: Gravitee, Tyk... │ │ - etcd 存储 │ │ - PostgreSQL/Cassandra│ └─────────────────────┘ │ - 毫秒级动态配置 │ │ - 插件生态强大 │ └──────────────────────┘ └──────────────────────┘ │ ❌ ┌──────────▼──────────┐ │ Janus │ ←─ Go 编写,与 OpenResty 无关 │ - 已停止维护 │ └──────────────────────┘


✅ 补充:为什么都基于 OpenResty?
因为 OpenResty 完美解决了 API 网关的核心需求:

高性能:Nginx 事件驱动模型
可编程:Lua 脚本嵌入,灵活控制请求生命周期
低延迟:LuaJIT JIT 编译,接近 C 性能
成熟稳定:被 Cloudflare、阿里、腾讯等大规模验证
所以 APISIX 和 Kong 都选择站在 OpenResty 的肩膀上,而不是重复造轮子。

┌──────────────────────────────────────┐ │ 客户端访问入口 │ │(统一接入点)│ └──────────────────┬───────────────────┘ ▼ ┌───────────────────────────────┐ │ VIP(虚拟IP)│ ←─ 由 Keepalived 管理漂移 └───────────────────────────────┘ │ ┌─────────────────────────────┼─────────────────────────────┐ │ │ │ ┌──────────▼──────────┐ ┌──────────▼──────────┐ ┌───────────▼────────────┐ │ 四层负载均衡层 │ │ 高可用控制层 │ │ 七层网关/代理层 │ │(L4: TCP/UDP)│ │(HA&Failover)│ │(L7: HTTP/gRPC/WebSocket)│ └───────────────────────┘ └───────────────────────┘ └────────────────────────┘ │ │ │ ┌──────────▼──────────┐ ┌──────────▼──────────┐ ┌───────────▼────────────┐ │ LVS │ ◄───►│ Keepalived │ │ OpenResty │ │ - 内核级高性能 │ │ - VRRP 协议实现 │ │ - Nginx + LuaJIT │ │ - DR/NAT/TUN 模式 │ │ - VIP 漂移 │ │ - 可编程反向代理 │ │ - 不解析应用层内容 │ │ - 健康检查 │ │ - 动态路由/限流/认证等 │ └───────────────────────┘ └───────────────────────┘ └───────────┬────────────┘ │ ┌──────────────────┴──────────────────┐ │ 基于 OpenResty 的 API 网关 │ └──────────────────┬──────────────────┘ │ ┌─────────────────────┬─────────────────────┬─────────────────────┐ │ │ │ │ ┌─────────▼─────────┐ ┌─────────▼─────────┐ ┌─────────▼─────────┐ ┌─────────▼─────────┐ │ APISIX │ │ Kong │ │ Janus* │ │ 自研网关(Lua/Go)│ │ - Apache 顶级项目 │ │ - 插件生态丰富 │ │ - 已停止维护 │ │ - 基于 OpenResty 或 │ │ - etcd 存储 │ │ - PostgreSQL/Cassandra│ │ - Go 编写 │ │ 其他框架开发 │ │ - 多语言插件 │ │ - 企业版功能强大 │ │ - 静态配置 │ └─────────────────────┘ │ - 毫秒级动态更新 │ │ - 社区活跃 │ │ │ └───────────────────┘ └───────────────────┘ └───────────────────┘

微服务 GateWay
“微服务 Gateway”(Microservices Gateway),通常简称为 API Gateway,是现代微服务架构中的核心组件之一。它的核心使命是:作为所有客户端访问微服务的统一入口,解耦客户端与后端服务,集中处理横切关注点(cross-cutting concerns)。


三丶Spring Cloud Gateway
Spring Cloud Gateway 是 Spring 官方提供的基于 Spring 5、Spring Boot 2 和 Project Reactor 的 API 网关。它旨在提供一种简单而有效的方式来路由到API,并为它们提供跨域的关切,比如安全性(认证和授权)、监控/指标收集、限流等。

主要特性
基于Java配置的路由定义:可以方便地通过编写代码来定义路由规则。
断言(Predicates):用于匹配HTTP请求中的各个部分,如headers、请求参数、路径等。
过滤器(Filters):允许你在发送下游请求之前或之后修改请求和响应。这些过滤器可以在网关上全局应用,也可以根据特定的路由进行配置。
动态路由:支持从各种来源加载路由定义,如服务发现机制。
易于集成:与Spring生态系统中的其他组件无缝集成,如Spring Cloud Config用于外部化配置管理。
核心概念
Route(路由):网关的基本构建块。一个路由由ID、目标URI、谓词集合、过滤器集合组成。如果聚合谓词返回true,则匹配该路由。
Predicate(谓词):指定在路由转发请求之前必须满足的一组条件。多个谓词可以用逻辑运算符组合。
Filter(过滤器):在请求被发送到下游服务之前或之后对其进行修改。
使用场景
微服务架构中的API网关:作为所有客户端请求的入口点,然后将这些请求路由到后端适当的服务。
统一的安全层:实现身份验证和授权功能,确保只有经过认证的用户才能访问某些资源。
负载均衡:配合服务注册与发现机制,能够实现对下游服务实例的智能路由。
限流和熔断:防止系统过载并提高系统的容错能力。
如何使用
要在项目中使用Spring Cloud Gateway,你需要添加相应的依赖项到你的pom.xml或build.gradle文件中。接着,你可以通过Java配置类或者YAML文件来定义路由规则、谓词和过滤器。

由于Spring Cloud Gateway是基于Netty运行的,并且不支持传统的Servlet容器,所以在创建Spring Boot应用程序时需要注意选择正确的启动器。

┌──────────────┐ │ Client │ ← 浏览器 / App / 外部系统 └──────┬───────┘ │ HTTPS/HTTP 请求(南北向流量)▼ ┌─────────────────────────────────────┐ │ Spring Cloud Gateway │ ← 统一入口网关 │(Reactive, Non-blocking, Netty)│ └───────────────────┬─────────────────┘ │ ┌──────────────────┼──────────────────┐ │ │ │ ▼ ▼ ▼ ┌────────────────┐ ┌────────────────┐ ┌────────────────┐ │ user-service │ │ order-service │ │ payment-service│ │(注册到 Eureka)│ │(注册到 Nacos)│ │(注册到 Consul)│ └────────────────┘ └────────────────┘ └────────────────┘ ▲ ▲ ▲ └──────────────────┴──────────────────┘ 微服务集群(东西向流量)
[Client]│ ▼(VIP + Keepalived 或 LVS)← 四层负载均衡(可选) │ ▼ ┌─────────────┐ ┌─────────────┐ │ Gateway-1 │ │ Gateway-2 │ ← 多实例部署 └──────┬──────┘ └──────┬──────┘ └─────────┬────────┘ ▼[Service Registry: Eureka/Nacos][user-service, order-service,...]


四丶额外补充
网关按功能、协议、场景可分为多种类型:

  1. API Gateway(应用网关)
    用途:微服务架构的统一入口
    代表:Kong、APISIX、Spring Cloud Gateway、Envoy、Tyk
    特点:支持 JWT、OAuth2、限流、插件等
  2. Ingress Gateway(云原生网关)
    用途:Kubernetes 集群外部流量入口
    代表:Istio Ingress Gateway(基于 Envoy)、NGINX Ingress Controller、APISIX Ingress
    特点:与 Service Mesh 深度集成,支持 mTLS、金丝雀发布
  3. Service Mesh Gateway(服务网格网关)
    用途:Mesh 边界流量控制(东西向 + 南北向)
    从外部 → 进入系统:流量从“北”流向“南” → North → South
    从系统 → 返回外部:流量从“南”返回“北” → South → North
    所以统称为 North-South Traffic(南北向流量)

代表:Istio Gateway、Linkerd Ingress
特点:策略统一管理,与 Sidecar 协同
4. IoT Gateway(物联网网关)
用途:连接边缘设备与云平台
协议:MQTT、CoAP、LoRaWAN → 转 HTTP/WebSocket
代表:EMQX、ThingsBoard Gateway、Azure IoT Edge
5. Database Gateway(数据库网关)
用途:统一数据库访问、SQL 防火墙、读写分离
代表:ShardingSphere-Proxy、MySQL Router、ProxySQL
6. Message Gateway(消息网关)
用途:跨消息中间件协议桥接
示例:RabbitMQ ↔ Kafka、MQTT ↔ AMQP
代表:Apache Camel、EMQX Bridge
7. Email / SMS Gateway(通信网关)
用途:统一发送邮件/短信
代表:企业自建 SMTP 网关、Twilio、阿里云短信网关
8. Legacy System Gateway(遗留系统网关)
用途:将老系统(如 SOAP、CORBA)暴露为 REST API
工具:Apache Camel、MuleSoft、WSO2

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/30 23:36:07

开源UI组件库终极指南:如何快速构建跨平台移动应用

在移动互联网时代&#xff0c;开发多平台应用已成为标配需求。开源UI组件库作为开发者的得力助手&#xff0c;能够显著提升开发效率和质量。Wot Design Uni作为一款基于UniApp框架的开源UI组件库&#xff0c;为开发者提供了完整的解决方案&#xff0c;帮助快速构建高质量的移动…

作者头像 李华
网站建设 2026/3/31 2:59:06

CopilotForXcode插件开发全攻略:从零构建智能编程助手

CopilotForXcode插件开发全攻略&#xff1a;从零构建智能编程助手 【免费下载链接】CopilotForXcode The missing GitHub Copilot, Codeium and ChatGPT Xcode Source Editor Extension 项目地址: https://gitcode.com/gh_mirrors/co/CopilotForXcode CopilotForXcode作…

作者头像 李华
网站建设 2026/4/3 4:44:04

TWiLight Menu++ 终极使用指南:从入门到精通的高效配置方案

TWiLight Menu 终极使用指南&#xff1a;从入门到精通的高效配置方案 【免费下载链接】TWiLightMenu DSi Menu replacement for DS/DSi/3DS/2DS 项目地址: https://gitcode.com/gh_mirrors/tw/TWiLightMenu TWiLight Menu 是一个功能强大的 DSi 菜单增强工具和跨平台游戏…

作者头像 李华
网站建设 2026/3/27 23:58:14

PLabel 5步安装指南:快速搭建半自动图像标注系统

PLabel 5步安装指南&#xff1a;快速搭建半自动图像标注系统 【免费下载链接】PLabel 半自动标注系统是基于BS架构&#xff0c;由鹏城实验室自主研发&#xff0c;集成视频抽帧&#xff0c;目标检测、视频跟踪、ReID分类、人脸检测等算法&#xff0c;实现了对图像&#xff0c;视…

作者头像 李华
网站建设 2026/3/31 8:11:51

软件测试环境搭建与测试流程详解

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快1.软件测试环境搭建思考&#xff1a;在什么条件下做软件测试&#xff1f;怎么做软件测试&#xff1f;1.1 搭建测试环境前确定测试目的功能测试&#xff08;验证软件…

作者头像 李华