转自:https://www.cnblogs.com/brxHqs/p/9767942.html
1.突发流量
高并发情况下带来的突发流量:
常见的优化方案有两种:
- 1)上游队列缓冲(push阻塞),限速发送;
- 2)下游队列缓冲(定时或者批量拉取pull,可以起到削平流量),限速执行。
如果上游发送流量过大,MQ提供拉模式确实可以起到下游自我保护的作用,会不会导致消息在MQ中堆积?
答:下游MQ-client拉取消息,消息接收方能够批量获取消息,需要下游消息接收方进行优化(提供批处理,比如批量写),否则整体吞吐量低,也会造成mq堆积。
2.高并发系统保护策略
2.1 缓存
累积一些数据,批量写入,先写redis再写数据库;内存里面的缓存队列,mq像是一种缓存队列。
2.2 服务降级
非核心链路,不提供相关的功能。
2.3 限流
一般来说系统的吞吐量是可以被测算的,一旦达到阈值,就需要限制流量。比如:延迟处理,拒绝处理,部分拒绝处理等等。
-
Nginx前端限流:按照一定的规则如IP、账号、调用逻辑等在Nginx层面做限流;
-
业务应用系统限流:客户端限流(验证码;获取动态请求路径pathvariable,到达接口地址隐藏的效果);服务端限流(redis限速器,延迟队列);
-
数据库限流:数据库链接池化,Mysql(如max_connections)、Redis(如tcp-backlog)都会有类似的限制连接数的配置。
限流算法:计数器、漏桶、令牌桶等,没仔细看。
标签:缓存,策略,批量,队列,流量,了解,限流,MQ From: https://www.cnblogs.com/BlueBlueSea/p/16820170.html