系统设计 --- 对中台系统进行流量监控和限流
系统设计 --- 对中台系统进行流量监控和限流
- 背景
- 监控
- 网关级别的监控
- 服务级别的监控
背景
- 在日常开发中,会出现随着系统调用量的增加导致服务崩溃的情况,此时一个应对策略就是对Api进行限流
- 但是作为数据中台系统,因为支持着不同业务部门以及下游应用,所以在设置限流时需要非常谨慎,随意的限流或者设置不合适的阈值可能会导致整个业务系统崩溃.
- 策略:
- 第一步: 首先对整个系统进行流量监控
- 第二步: 分析流量监控结果:
- 如果都是业务必须的流量,则拿着流量监控结果向上级汇报,要求增加硬件配置
- 如果有异常流量, 则设计一个阈值,对这些异常流量进行限流
监控
网关级别的监控
在网关可以对请求进行一些监控,具体监控维度包括:
- 每个Api请求数量
- 请求来源:在header中有自定义的x-source-id
- 处理时间
服务级别的监控
对于查询Api,每个api消耗的资源可能不一样,比如两个用户调用同一个查询Api,用户A查询50mb的数据,用户B查询100mb的数据. 所以还需要在服务级别创建一个监控,来统计每次api调用使用的资源数量,具体统计纬度包括
- 用户名 (从token中获取)
- 调用来源:在header中有自定义的x-source-id
- 数据库读写次数
- 数据库读写大小
- 注意这里的数据库是Azure Blob,Azure Blob的收费和读写次数大小相关
如何做监控
- 使用fluent-bit在gateway或者服务节点上采集日志,将日志放入数据库,再通过数据看板展示
- fluent-bit ---- AzureDataExplore — Dashboard