API网关常见架构

时间:2024-03-16 08:33:06

一、简介

类似api市场

 
  1. sc-api-gateway api核心路由服务

  2. sc-api-admin api管理平台

  3. sc-api-monitor api监控服务

二、整体架构图

API网关常见架构

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

3.1 涉及功能:

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

3.2 涉及技术:

  • hystrix - 熔断

    • 超时控制
    • 熔断
  • oauth2 - 认证鉴权

  • 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

 
  1. 10ms以内的系统 使用 信号量隔离

  2. 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

转载于:https://my.oschina.net/gmarshal/blog/1798097