一、简介

类似api市场

sc-api-gateway api核心路由服务
sc-api-admin   api管理平台
sc-api-monitor api监控服务

二、整体架构图

alpha架构优缺点 api架构_java

三、api核心路由服务 【sc-api-gateway】

3.1 涉及功能:

  • 超时熔断
  • 流量控制
  • 用户鉴权
  • 智能路由
  • 数据加密
  • 负载均衡
  • 数据缓存
  • 协议转换
  • 服务编排

3.2 涉及技术:

  • hystrix - 熔断
  • 超时控制
  • 熔断
  • oauth2 - 认证鉴权
  • 认证
  • Baisc认证 参考
  • 基于Token认证
  • 根据IP/域名认证
  • 微信小程序Token认证
  • 鉴权
  • 基于接入应用进行授权
  • zuul - 路由管理
  • 动态刷新路由配置
  • 过滤器加载组件
  • 流量管理 - 每秒、每分、每小时、每天等的请求次数限制
  • 基于IP
  • 基于API
  • redis - 数据缓存
  • 缓存经常访问的API
  • 数据安全
  • 公私钥加密传输
  • 授权应用访问
  • 单应用访问量限制
  • 访问白名单、黑名单
  • 防止访问攻击
  • 协议转换
  • webservice 转 rest
  • 服务编排
  • 自定义服务
  • 负载均衡
  • 基于consul的zuul本身的负载

3.3 可参考博客

《Spring cloud 多版本控制及灰度发布》

《Spring Cloud限流详解》

《使用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