系统设计 --- 对中台系统进行流量监控和限流

系统设计 --- 对中台系统进行流量监控和限流

  • 背景
  • 监控
    • 网关级别的监控
    • 服务级别的监控

背景

  • 在日常开发中,会出现随着系统调用量的增加导致服务崩溃的情况,此时一个应对策略就是对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

你可能感兴趣的:(#,日常case记录,微服务,flask,架构)