梗概
- 一种管理 API 调用之间交互的中间层,它位于客户端和后端服务之间。API 网关主要作为单个入口点,用于处理来自不同客户端(如移动设备、网页应用、其他微服务等)的多个 API 调用,并将它们路由到适当的内部服务。
child::API网关与负载均衡的区别
核心原理
- 本质:请求匹配 → 目标服务转发。
- 匹配条件:路径前缀、HTTP 方法、主机头、查询参数/请求头等。
- 目标地址:固定
http(s)://host:port,或基于服务发现的服务名(Eureka/Consul/Nacos/Kubernetes Service)。
路由与上游(概念示例)
routes:
- name: order-service-route
path: /orders
methods: [GET, POST, PUT, DELETE]
upstream:
nodes:
- host: 192.168.1.100
port: 8080配置方式
- 配置文件:Nginx、Kong、Apache APISIX 等支持声明式(YAML/JSON/Lua)。
- 管理界面/API:现代网关支持控制台或 REST API 动态更改。
- 在 Kubernetes:通过
Ingress或Gateway API描述路由,由 Ingress Controller/Service Mesh Gateway 落地。
关键技术与注意事项
- 服务发现:
- 静态:直接写死 IP/域名,变更需改配置。
- 动态:集成注册中心,自动感知实例变更与健康状态,建议与 服务发现 协同。
- 负载均衡:
- 网络连通性:
- 网关需能访问内网后端地址与端口;常部署于 DMZ,配合防火墙规则仅放通必要端口。
- 协议与端口:
- 外部通常 80/443,内部可为 HTTP/HTTPS/TCP;可在网关处完成 SSL 终止/卸载。
快速步骤
- 部署并暴露网关(域名与证书,如
api.example.com)。 - 定义路由规则(匹配条件如
/orders)。 - 指定目标后端(
http://order-service.internal:8080或服务名)。 - 启用服务发现与负载均衡(可选,推荐)。