网关
基础概念
一个物理或逻辑区域的入口或出口
网关分类
- 网络层网关: 重点是网络数据包转发和访问控制
- API 网关: 属于业务网关, 主要附带身份认证、流控、安全等业务功能
- 数据网关; 缓存, 数据库, 存储, 数据仓库
- 安全网关: 隔离,鉴权
- 管理网关
- 边界网关: 逻辑概念, 区分不同区域
API 网关
将统一业务入口, 流控, 负载均衡, 鉴权, 安全等功能进行前置 黑白名单, 协议适配(tcp/udp/http), 容错可用能力
主要用途
- 隔离: 作为企业系统边界, 隔离外网系统与内网系统, 隐藏内部细节
- 解耦: 使得各业务系统之间 或 微服务系统 之间能够独立, 自由, 高效, 灵活地调整;
常用方式
- nginx+lua
- traefix
- Spring Cloud Gateway
- 业务自建
通用api网关设计要点
- 高性能
- 安全性: 身份认证、权限认证
- 高可用: 无状态设计原则
- 可扩展: 支持插件, 脚本 等扩展功能
- 运维友好
- 隔离性:某个类型的后端服务异常时不影响其它类型服务
- 动态变更: 负载规则变更时,不影响其它服务
API 网关设计要点
-
API标准化: 无标准不平台
-
支持 API接口测试: 即可以方便地对接口进行测试, 或者方便区分或隔离测试流量和生产流量
-
全生命周期管理 覆盖 API 的定义、测试、发布的整个生命周期管理, 便捷的日常管理、版本管理,支持热升级和快速回滚
-
协议主流化 http, https, xml, json, grpc 提供 java php python 等SDK
业务 API 网关设计
接口命名
- 风格统一 (都为英文小写)
- 模式固定 (xx.xx.xx.xx)
- 简洁明了
- 有扩展性
- 分类与分层
举例:suning.custom.order.get
格式:suning. 业务分类. 模块简称. 操作符
文档规范化
API文档组成 简介、接口描述、公共参数、请求参数、响应参数、请求示例 业务异常码、公共异常码、响应示例、FAQ、异常示例、API工具
异常码标准化
统一风格,分类,唯一性,有利于监控、告警、问题排查 有条件的情况,除返回异常码外,还要有中文描述
API管理
可以开关、流量控制和限流 安全管理、 接口分流: 不同的分类对应不同的后端服务 服务降级: 进行快速错误
API监控
日志 接口统计 告警 存储监控数据
最后更新于