[Nginx] 常见的负载均衡算法及限流算法
常见的负载均衡算法
1. 轮询算法
按照时间顺序逐一轮换访问每台服务器。
2. 权重
给服务器不同的权重,使得访问服务器的分布呈所给定的权重。
3. ip绑定法
让来自同一ip地址的用户访问相同的服务器,可以有效解决动态网络存在的session共享问题。
Session和Cookies的区别
Session—存储在服务器端
Session在服务器上的临时目录中创建一个文件,该文件用于存储已注册的Session变量。在访问期间,Session变量数据将可用于网站上的页面。当用户关闭浏览器或离开网站后,Session将立即终止,如果用户没有关闭浏览器或离开网站,那么服务器将也会在预定的时间段(通常为30分钟)后终止Session。
Cookie—存储在客户端
Cookie是存储在客户端计算机上的文本文件,通常包含一些用户信息,例如名称,年龄或其他标识符号等。服务器将Cookie发送到浏览器,浏览器再将此信息存储在本地计算机上,以备将来使用。当下一次浏览器向Web服务器发送任何请求时,它会将这些Cookie信息发送到服务器,并且服务器使用该信息来识别用户,相当于可以跳过登录。
可以简单地将其看作key-value
的关系,用户通过客户端上的Cookies访问到服务器端的Session
集群环境下的session共享问题
某种服务部署在多台服务器上,假设用户第一次登陆,请求落在了1号服务器,那么1号服务器session中存了用户信息,那么下一次请求进来,落在了2号服务器,但是2号服务器并没有这个session,因此又会要求用户登陆一次,再存一次session信息。
4. 第三方插件fair
通过第三方插件fair,可以实现按服务器的性能来动态地进行负载均衡,服务器响应短的会优先分配。
常见的限流算法
限流是什么
Nginx能够限制用户的访问请求速度,防止服务器资源消耗地过大
三种策略:
- 正常限制访问频率(正常限流):限制用户的请求,即Nginx多久能接受到一个请求
- 突发限制访问频率(突发流量): Nginx提供burst参数结合nodelay参数可以解决流量突发的问题,可以设置能处理的超过设置的请求数外能额外处理的请求数。先处理该请求的前几个请求,多的如果没有别人请求就执行,否则漏掉
- 限制并发连接数:如单个IP同时并发连接数最多只能10个连接,整个虚拟服务器同时最大并发数最多只能100个链接。只有当请求的被服务器处理后,虚拟服务器的连接数才会计数。
漏桶算法
令牌桶算法