梗概

  • 一种管理 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:通过 IngressGateway API 描述路由,由 Ingress Controller/Service Mesh Gateway 落地。

关键技术与注意事项

  1. 服务发现:
    • 静态:直接写死 IP/域名,变更需改配置。
    • 动态:集成注册中心,自动感知实例变更与健康状态,建议与 服务发现 协同。
  2. 负载均衡:
    • 常见算法:轮询、加权轮询、最少连接、IP Hash(会话保持)。
    • 深入可见:七层负载均衡GSLB
  3. 网络连通性:
    • 网关需能访问内网后端地址与端口;常部署于 DMZ,配合防火墙规则仅放通必要端口。
  4. 协议与端口:
    • 外部通常 80/443,内部可为 HTTP/HTTPS/TCP;可在网关处完成 SSL 终止/卸载。

快速步骤

  1. 部署并暴露网关(域名与证书,如 api.example.com)。
  2. 定义路由规则(匹配条件如 /orders)。
  3. 指定目标后端(http://order-service.internal:8080 或服务名)。
  4. 启用服务发现与负载均衡(可选,推荐)。