
文章插图
最简单的轮询策略轮番派发请求,这种配置是最简单的:
http { upstream App { # 节点1 server 192.168.1.9:8080; # 节点2 server 192.168.1.10:8081; # 节点3 server 192.168.1.11:8082; } server { listen 80; server_namefelord.cn; # ^~ 表示uri以某个常规字符串开头,如果匹配到,则不继续往下匹配 。不是正则匹配 location ^~/api/v1 { proxy_set_header Host $host; # 负载均衡 proxy_pass http://app/; } }}加权轮询策略指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况:upstream app { # 节点1 server 192.168.1.9:8080 weight = 6; # 节点2 server 192.168.1.10:8081 weight = 3; # 节点3 server 192.168.1.11:8082 weight = 1;}最终请求处理数将为6:3:1 进行分配 。其实简单轮询可以看作所有的权重均分为1 。轮询宕机可自动剔除 。IP HASH根据访问IP进行Hash,这样每个客户端将固定访问服务器,如果服务器宕机,需要手动剔除 。
upstream app { ip_hash; # 节点1 server 192.168.1.9:8080 weight = 6; # 节点2 server 192.168.1.10:8081 weight = 3; # 节点3 server 192.168.1.11:8082 weight = 1;}最少连接请求将转发到连接数较少的服务器上,充分利用服务器资源:upstream app { least_conn; # 节点1 server 192.168.1.9:8080 weight = 6; # 节点2 server 192.168.1.10:8081 weight = 3; # 节点3 server 192.168.1.11:8082 weight = 1;}其它方式我们可以借助一些插件来实现其它模式的负载均衡,例如借助于nginx-upsync-module实现动态负载均衡 。我们是不是借助于此可以开发一个灰度发布功能呢?2.5 限流通过对Nginx的配置,我们可以实现漏桶算法和令牌桶算法,通过限制单位时间的请求数、同一时间的连接数来限制访问速度 。这一块我并没有深入研究过这里就提一提,你可以查询相关的资料研究 。
3. 总结Nginx非常强大,推荐使用它来代理我们的后端应用,我们可以通过配置实现很多有用的功能,而不必进行一些非业务逻辑的编码来实现,如果你在Spring Boot中实现限流、配置SSL的话,麻烦不说,还影响本地开发,使用Nginx可以让我们专心到业务中去 。可以说Nginx在这里充当了一个小网关的作用,其实很多知名网关底层都是Nginx,比如Kong、Orange、Apache APISIX等,如果你有兴趣可以玩一玩Nginx的高级形态Openresty 。另外我这里也有一份非常不错的Nginx入门资料送给你,可以关注:码农小胖哥 回复 nginx 获取 。
推荐阅读
- RTMP/HLS/HTTP-FLV流媒体服务器分析
- 自建Git服务器 - 创建属于你自己的代码仓库,开启你的Git私服之旅
- 无服务器调研,部署REST API是最普遍用例
- 听说你还不会在服务器上部署项目?看这一篇文章就够了
- 冰箱冷冻老是结冰什么原因?冰箱急冻箱上都结冰是什么原因?
- 超简单本地备份服务器搭建攻略
- 花了17年!微软修复Windows DNS服务器漏洞
- 在.NET和.NET Core应用程序中优雅的实现后台任务——Hangfire
- linux下多线程与并发服务器设计方案及常见问题
- 服务器|中科院回应停用知网:近千万续订费太贵 将用万方和维普替代
