Springcloud+Gateway+Nginx实现通过网关访问,nginx实现负载均衡。
目录
Springcloud+Gateway+Nginx实现通过网关访问,nginx实现负载均衡。
需求:
我们通过Gateway的路由功能,访问Nginx服务器,Nginx通过反向代理和负载均衡,在访问我们后台的多个服务。
思维导图:
关键步骤:
Gateway配置:
配置 网关接收请求后,路由到:http://shopservice.com
spring:
application:
name: cloud-gateway-service
cloud:
gateway:
discovery:
locator:
enabled: true #开启从注册中心动态创建路由的功能,利用微服务名称经行路由
routes: #路由
– id: nginx-routh
uri: http://shopservice.com
predicates:
– Path=/**
hosts文件中添加如下内容:C:\Windows\System32\drivers\etc
配置域名
127.0.0.1 shopservice.com
1
Nginx配置 nginx.conf文件:
配置接收网关路由过来的请求,访问服务提供者路径
反向代理和负载均衡
#负载均衡
upstream myshopservices{
server 127.0.0.1:8001 weight=1;
server 127.0.0.1:8002 weight=1;
server 127.0.0.1:8003 weight=1;
}
server {
listen 80; #监听端口
server_name shopservice.com; #访问服务名
#根路径 /
location / {
#反向代理
proxy_pass http://myshopservices;
}
}
之后就可以访问网关:
http://localhost:9527/shop/1?token=123456
为什么有了Spring-Gateway还要Nginx?
今天跟同学聊到一个问题:Nginx跟Spring-Gateway都可以做负载均衡,他们有什么区别吗?为什么有了Spring-Gateway还要Nginx?
据说,这个是一道面试题。
回答该问题前,建议先思考另外一个面试题,在浏览器敲入一个完整的域名,大致经过了哪些组件?(粗糙点如下:)
- 找IP
1、在浏览器中是否缓存
2、操作系统是否缓存
3、最近的路由器是否缓存
4、DNS域名解析得到IP - 访问接入层,比如部署在阿里云上,接入层是SLB。内部是一个LVS+Nginx实现的四层+七层负载均衡
- 应用网关,比如SpringGateway/Zuul,做统一鉴权
- 应用层服务
1、Controller
2、Service
3、DAO - MySQL
Nginx在其中扮演的角色是什么?
- 反向代理
- 负载均衡
SpringGateway在其中扮演的角色是什么?
- 统一鉴权
为什么有了Spring-Gateway还要Nginx?回到负载均衡上去看,最开始的负载均衡在哪里做?
- 在DNS服务器上做,添加几个IP做轮询就可以了
- 服务器抗不住,衍生出了基于F5/LVS实现的四层负载均衡
- 基于成本性能等诸多方面的权衡,衍生除了Nginx/Apache这样的负载均衡软件
- 当SOA/微服务大行其道时,网关服务也随着而来
它们是有了谁,为什么还会有谁这样的关系吗?亦或者,我们在讨论类似这样的话题的时候,往往是在混淆概念,不谈业务的架构都是耍流氓。没有谁是必须的,没有Nginx时服务也可以很好的跑着,没有SpringGateway时服务也可以很好的跑着,只是各自在架构 体系内干着各自合适的工作罢了。
本期内容就到这里啦~以上内容均可在 方包博客「http://fang1688.cn」 网站直接搜索名称访问哦。欢迎感兴趣的小伙伴试试,如果本文对您有帮助,也请帮忙点个 赞 + 在看 啦!❤️
欢迎大家加入方包的「优派编程」学习圈子,和多名小伙伴们一起交流学习,向方包 1 对 1 提问、跟着方包做项目、领取大量编程资源等。Q群「763256989」欢迎想一起学习进步的小伙伴~
另外方包最近开发了一款工具类的小程序「方包工具箱」,功能包括:抖音、小红书、快手去水印,天气预报,小说在线免费阅读(内含上万部热门小说),历史今天,生成图片二维码,图片识别文字,ai伪原创文章,数字摇号抽奖,文字转语音MP3功能...
定期分享 it编程干货