需求:
我们通过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?

今天跟同学聊到一个问题:NginxSpring-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功能...

送福利!关注下方的公众号:优派编程回复资料,即可获得软件app下载资源和python、java等编程学习资料!

   
点击卡片关注「优派编程」
定期分享 it编程干货

 ⬇️ 点击链接阅读原文直达 方包博客

 

发表评论

您的电子邮箱地址不会被公开。

21 − = 17