一、简介
类似api市场
sc-api-gateway api核心路由服务
sc-api-admin api管理平台
sc-api-monitor api监控服务
二、整体架构图
三、api核心路由服务 【sc-api-gateway】
3.1 涉及功能:
- 超时熔断
- 流量控制
- 用户鉴权
- 智能路由
- 数据加密
- 负载均衡
- 数据缓存
- 协议转换
- 服务编排
3.2 涉及技术:
-
hystrix - 熔断
- 超时控制
- 熔断
-
oauth2 - 认证鉴权
-
认证
- Baisc认证 参考 https://blog.csdn.net/u013177446/article/details/54135520
- 基于Token认证
- 根据IP/域名认证
- 微信小程序Token认证
-
鉴权
- 基于接入应用进行授权
-
-
zuul - 路由管理
- 动态刷新路由配置
- 过滤器加载组件
-
流量管理 - 每秒、每分、每小时、每天等的请求次数限制
- 基于IP
- 基于API
-
redis - 数据缓存
- 缓存经常访问的API
-
数据安全
- 公私钥加密传输
- 授权应用访问
- 单应用访问量限制
- 访问白名单、黑名单
- 防止访问攻击
-
协议转换
- webservice 转 rest
-
服务编排
- 自定义服务
-
负载均衡
- 基于consul的zuul本身的负载
3.3 可参考博客
《Spring cloud 多版本控制及灰度发布》 https://blog.csdn.net/longdan3105/article/details/79187198
《Spring Cloud限流详解》 https://blog.csdn.net/tracy38/article/details/78685707
《使用zuul及oauth2构建api网关实践之路》 https://www.jianshu.com/p/b1fc3f7260d3?winzoom=1
《spring-cloud中zuul的两种隔离机制实验》 http://mp.weixin.qq.com/s/CF0VPbKROuDpuUy1yuujvg
10ms以内的系统 使用 信号量隔离
10ms以上的系统 使用 线程池隔离
四、api管理平台 【sc-api-admin】
4.1 系统管理
- 角色管理
- 用户管理
- 权限管理
- 黑名单设置
4.2 API管理
- api分组管理 - 设置全局变量
- api管理
- api基本信息设置
- 在线文档
- 支持mock自动化测试
- api监控信息
- 历史版本
- 授权应用
- 组件配置
4.3 应用管理
- 应用管理
- 应用ID - UUID自动生成
- 应用密码 - 手动设置
- 应用来源ip - 多个
4.4 运维模块
- 网关节点
- 注册中心节点
- redis节点
- rabbitmq节点
- 监控服务节点
4.5 平台组件
- 组件管理
五、api监控中心 【sc-api-monitor】
5.1 api监控台
- 今日API调用次数走势 - 所有API
- 今日API调用次数走势 - 分组
- 今日API访问排行 - 访问前十API
- 今日API访问排行 - 访问前十分组
5.2 api日志
- api调用明细
- api错误汇总
- 系统异常记录
- api名称
- 来源ip
- 请求路径
- 请求方法
- 创建时间
- 错误内容
- 状态码
- 响应时间
5.3 api告警规则
- 颗粒度到api级(可以绑定多个api)
- 告警级别
- 规则类型 - 一定时间内满足一下条件的数量
- 平均响应时间
- 错误次数
- 总请求次数
- 告警间隔时长
- 连续几次超过阈值报警
- 生效时间区间
- 通知对象与通知方式
- 手机
- 邮箱
- 手机 + 邮箱
- 通知标题
5.4 第三方监控
- spring boot admin(包含turbine页面)
- sleuth