【Java高级工程师蜕变之路】067 分布式服务治理之服务削峰

服务削峰

为什么要进行服务削峰

为了应对瞬间高并发的流量。

流量削峰的方案

  1. 消息队列解决削峰

    用消息队列缓存瞬时流量,把同步的直接调用转换为异步的间接推送,中间通过队列在一端承接瞬时流量洪峰,在另一端将消息平滑的推送出去。

    image-20220412094841286

消息队列中间件主要解决应用耦合,异步消息,流量削峰等问题。

常见的队列系统有:生产环境比较多的消息队列有ActiveMQ、RabbitMQ、ZeroMQ、Kafka、RocketMQ等。

  1. 流量削峰漏斗:层层削峰

    分层过滤采用漏斗设计来处理请求,这样就可以像漏斗一样,尽量将数据量和请求量一层一层的过滤和减少。

    image-20220412095548435

  • 分层过滤的核心思想
    • 通过不同层次尽量过滤掉无效请求
    • 通过CDN过滤掉大量图片,静态资源的请求
    • 通过类似redis的分布式缓存过滤请求
  • 分层过滤的基本原则
    • 对写数据进行基于时间的合理分片,过滤掉过期的失效请求
    • 对写请求做限流保护,将超出系统承载能力的请求过滤掉
    • 涉及到的读数据不做强一致性校验,减少因为一致性校验产生的瓶劲问题
    • 对写数据进行强一致性校验,只保留最后的有效数据
posted @ 2022-05-04 22:47  灯塔下的守望者  阅读(40)  评论(0编辑  收藏  举报