网关

基础概念

一个物理或逻辑区域的入口或出口

网关分类

  1. 网络层网关: 重点是网络数据包转发和访问控制
  2. API 网关: 属于业务网关, 主要附带身份认证、流控、安全等业务功能
  3. 数据网关; 缓存, 数据库, 存储, 数据仓库
  4. 安全网关: 隔离,鉴权
  5. 管理网关
  6. 边界网关: 逻辑概念, 区分不同区域

API 网关

将统一业务入口, 流控, 负载均衡, 鉴权, 安全等功能进行前置 黑白名单, 协议适配(tcp/udp/http), 容错可用能力

主要用途

  1. 隔离: 作为企业系统边界, 隔离外网系统与内网系统, 隐藏内部细节
  2. 解耦: 使得各业务系统之间 或 微服务系统 之间能够独立, 自由, 高效, 灵活地调整;

常用方式

  1. nginx+lua
  2. traefix
  3. Spring Cloud Gateway
  4. 业务自建

通用api网关设计要点

  1. 高性能
  2. 安全性: 身份认证、权限认证
  3. 高可用: 无状态设计原则
  4. 可扩展: 支持插件, 脚本 等扩展功能
  5. 运维友好
  6. 隔离性:某个类型的后端服务异常时不影响其它类型服务
  7. 动态变更: 负载规则变更时,不影响其它服务

API 网关设计要点

  1. API标准化: 无标准不平台

  2. 支持 API接口测试: 即可以方便地对接口进行测试, 或者方便区分或隔离测试流量和生产流量

  3. 全生命周期管理 覆盖 API 的定义、测试、发布的整个生命周期管理, 便捷的日常管理、版本管理,支持热升级和快速回滚

  4. 协议主流化 http, https, xml, json, grpc 提供 java php python 等SDK

业务 API 网关设计

接口命名

  1. 风格统一 (都为英文小写)
  2. 模式固定 (xx.xx.xx.xx)
  3. 简洁明了
  4. 有扩展性
  5. 分类与分层

举例:suning.custom.order.get

格式:suning. 业务分类. 模块简称. 操作符

文档规范化

API文档组成 简介、接口描述、公共参数、请求参数、响应参数、请求示例 业务异常码、公共异常码、响应示例、FAQ、异常示例、API工具

异常码标准化

统一风格,分类,唯一性,有利于监控、告警、问题排查 有条件的情况,除返回异常码外,还要有中文描述

API管理

可以开关、流量控制和限流 安全管理、 接口分流: 不同的分类对应不同的后端服务 服务降级: 进行快速错误

API监控

日志 接口统计 告警 存储监控数据


最后更新于