APIGateway的设计文档,包括整体架构和数据库设计。
整体架构
使用draw io画的图,这里是源文件:APIGateway整体架构
APIGateway整体架构.png
-
调用方,手机端、接入方等等一系列调用方
-
LVS负载均衡
-
Nginx反向代理
-
APIGateway
-
流控,控制流量,针对同一个ip在指定的时间段内访问次数做限制
-
验签解密,校验参数、验证签名信息、将加密的信息解密
-
接口验证,验证接口是否存在、接口信息是否是当前调用者的接口
-
接口权限验证,ip黑名单校验、调用的ip是否在白名单内
-
业务参数验证,校验业务接口参数是否正确
-
调用业务接口,可以使用dubbo泛化调用
-
熔断降级,业务方接口不可用的时候或者业务方处理速度变慢,考虑进行熔断降级
-
加密返回,将调用结果封装、加密、返回
-
-
注册中心,dubbo服务注册到注册中心zookeeper
-
业务服务,各个业务提供的dubbo服务,服务注册到注册中心
-
存储
-
本地缓存
-
分布式缓存
-
MySQL
-
数据库设计
-
agw_api,接口信息
-
agw_api_param,接口对应的参数信息
-
agw_sys,接口所属业务系统
-
agw_out,外部调用方
-
agw_out_api,外部调用方拥有的api
-
agw_out_ip,外部调用方的白名单配置
-
agw_black_ip,黑名单ip
使用draw io画的图,这里是源文件:APIGateway数据库设计
APIGateway数据库设计.png
agw_api
| 名称 | 类型 | 是否为空 | 索引 | 默认值 | 备注 |
|---|---|---|---|---|---|
| id | bigint(20) | N | PRIMARY | 主键ID | |
| created_time | datetime | N | 创建时间 | ||
| modified_time | datetime | N | 修改时间 | ||
| version | smallint(6) | N | 版本号 | ||
| code | varchar(255) | N | api唯一标识 | ||
| name | varchar(255) | N | api接口名 | ||
| method | varchar(255) | N | api方法名 | ||
| alias | varchar() | Y | api方法别名 | ||
| sys_id | bigint(20) | N | 所属业务系统id | ||
| timeout | int(6) | N | 1000 | 超时时间,毫秒 |
agw_api_param
| 名称 | 类型 | 是否为空 | 索引 | 默认值 | 备注 |
|---|---|---|---|---|---|
| id | bigint(20) | N | PRIMARY | 主键ID | |
| created_time | datetime | N | 创建时间 | ||
| modified_time | datetime | N | 修改时间 | ||
| version | smallint(6) | N | 版本号 | ||
| api_id | varchar(255) | N | api id | ||
| name | varchar(255) | N | 参数名 | ||
| type | varchar(255) | N | 参数类型 | ||
| sequence | smallint(6) | N | 参数顺序 |
agw_sys
| 名称 | 类型 | 是否为空 | 索引 | 默认值 | 备注 |
|---|---|---|---|---|---|
| id | bigint(20) | N | PRIMARY | 主键ID | |
| created_time | datetime | N | 创建时间 | ||
| modified_time | datetime | N | 修改时间 | ||
| version | smallint(6) | N | 版本号 | ||
| name | varchar(255) | N | 业务系统名 | ||
| desc | varchar(255) | N | 业务系统描述 |
agw_out
| 名称 | 类型 | 是否为空 | 索引 | 默认值 | 备注 |
|---|---|---|---|---|---|
| id | bigint(20) | N | PRIMARY | 主键ID | |
| created_time | datetime | N | 创建时间 | ||
| modified_time | datetime | N | 修改时间 | ||
| version | smallint(6) | N | 版本号 | ||
| name | varchar(255) | N | 外部系统名 | ||
| desc | varchar(255) | N | 外部系统描述 | ||
| code | varchar(255) | N | 外部系统唯一标识 | ||
| ip_control | tinyint(4) | Y | 0 | 是否白名单控制 0-否 1-是 |
agw_out_api
| 名称 | 类型 | 是否为空 | 索引 | 默认值 | 备注 |
|---|---|---|---|---|---|
| id | bigint(20) | N | PRIMARY | 主键ID | |
| created_time | datetime | N | 创建时间 | ||
| modified_time | datetime | N | 修改时间 | ||
| version | smallint(6) | N | 版本号 | ||
| out_id | bigint(20) | N | 外部系统id | ||
| api_id | bigint(20) | N | api id |
agw_out_ip
| 名称 | 类型 | 是否为空 | 索引 | 默认值 | 备注 |
|---|---|---|---|---|---|
| id | bigint(20) | N | PRIMARY | 主键ID | |
| created_time | datetime | N | 创建时间 | ||
| modified_time | datetime | N | 修改时间 | ||
| version | smallint(6) | N | 版本号 | ||
| out_id | bigint(20) | N | 外部系统id | ||
| ip | varchar(255) | N | 外部系统白名单 |
agw_black_ip
| 名称 | 类型 | 是否为空 | 索引 | 默认值 | 备注 |
|---|---|---|---|---|---|
| id | bigint(20) | N | PRIMARY | 主键ID | |
| created_time | datetime | N | 创建时间 | ||
| modified_time | datetime | N | 修改时间 | ||
| version | smallint(6) | N | 版本号 | ||
| out_id | bigint(20) | Y | 外部系统id | ||
| ip | varchar(255) | N | 黑名单ip |
源码:https://github.com/dachengxi/APIGateway
原文链接:https://cxis.me/2020/04/07/APIGateway%E8%AE%BE%E8%AE%A1%E6%96%87%E6%A1%A3/










网友评论