【Java高级工程师蜕变之路】067 分布式服务治理之服务削峰
服务削峰
为什么要进行服务削峰
为了应对瞬间高并发的流量。
流量削峰的方案
-
消息队列解决削峰
用消息队列缓存瞬时流量,把同步的直接调用转换为异步的间接推送,中间通过队列在一端承接瞬时流量洪峰,在另一端将消息平滑的推送出去。
消息队列中间件主要解决应用耦合,异步消息,流量削峰等问题。
常见的队列系统有:生产环境比较多的消息队列有ActiveMQ、RabbitMQ、ZeroMQ、Kafka、RocketMQ等。
-
流量削峰漏斗:层层削峰
分层过滤采用漏斗设计来处理请求,这样就可以像漏斗一样,尽量将数据量和请求量一层一层的过滤和减少。
- 分层过滤的核心思想
- 通过不同层次尽量过滤掉无效请求
- 通过CDN过滤掉大量图片,静态资源的请求
- 通过类似redis的分布式缓存过滤请求
- 分层过滤的基本原则
- 对写数据进行基于时间的合理分片,过滤掉过期的失效请求
- 对写请求做限流保护,将超出系统承载能力的请求过滤掉
- 涉及到的读数据不做强一致性校验,减少因为一致性校验产生的瓶劲问题
- 对写数据进行强一致性校验,只保留最后的有效数据