什么装修网站做的好的,网站设计站,手机登录微信网页版,前端开发和后端开发哪个好些一、为什么要限流 1. 并发的确大#xff08;突发流量#xff09;。 2. 防止用户恶意刷接口。
二、限流的实现方式
1. Tomcat限流 可以设置最大连接数#xff0c;但是每一个微服务都有一个tomcat#xff0c;实现起来非常麻烦。 2. Nginx限流
#xff08;1#xff09;控…一、为什么要限流 1. 并发的确大突发流量。 2. 防止用户恶意刷接口。
二、限流的实现方式
1. Tomcat限流 可以设置最大连接数但是每一个微服务都有一个tomcat实现起来非常麻烦。 2. Nginx限流
1控制速率突发流量。 漏桶算法 nginx配置如下 key定义限流对象binary_remote_addr就是一种key基于客户端ip限流。
Zone定义共享存储区来存储访问信息10m可以存储16wip地址访问信息。
Rate最大访问速率rate10r/s 表示每秒最多请求10个请求。
burst20相当于桶的大小。
Nodelay快速处理。
2控制并发连接数 nginx配置如下 limit_conn perip 20对应的key是 $binary_remote_addr表示限制单个IP同时最多能持有20个连接。 limit_conn perserver 100对应的key是 $server_name表示虚拟主机(server) 同时能处理并发连接的总数。
3. 网关限流 令牌桶算法 yml配置文件中微服务路由设置添加局部过滤器RequestRateLimiter。 key-resolver 定义限流对象 ip 、路径、参数需代码实现使用spel表达式获取。
replenishRate 令牌桶每秒填充平均速率。
urstCapacity 令牌桶总容量。
三、面试题
面试官你们项目中有没有做过限流 ? 怎么做的 ?
候选人
我当时做的xx项目采用就是微服务的架构因为xx因为应该会有突发流量最大QPS可以达到2000但是服务支撑不住我们项目都通过压测最多可以支撑1200QPS。因为我们平时的QPS也就不到100为了解决这些突发流量所以采用了限流。
【版本1】
我们当时采用的nginx限流操作nginx使用的漏桶算法来实现过滤让请求以固定的速率处理请求可以应对突发流量我们控制的速率是按照ip进行限流限制的流量是每秒20。
【版本2】
我们当时采用的是spring cloud gateway中支持局部过滤器RequestRateLimiter来做限流使用的是令牌桶算法可以根据ip或路径进行限流可以设置每秒填充平均速率和令牌桶总容量。
面试官限流常见的算法有哪些呢
候选人
比较常见的限流算法有漏桶算法和令牌桶算法。
漏桶算法是把请求存入到桶中以固定速率从桶中流出可以让我们的服务做到绝对的平均起到很好的限流效果。
令牌桶算法在桶中存储的是令牌按照一定的速率生成令牌每个请求都要先申请令牌申请到令牌以后才能正常请求也可以起到很好的限流作用。
它们的区别是漏桶和令牌桶都可以处理突发流量其中漏桶可以做到绝对的平滑令牌桶有可能会产生突发大量请求的情况一般nginx限流采用的漏桶spring cloud gateway中可以支持令牌桶算法。