当前位置: 首页 > news >正文

Spring-Cloud-Gateway集成Nacos如何做负载均衡?

spring-cloud-alibaba的低版本

如果所用的SpringCloud和Nacos的版本信息如下:

<spring-cloud.version>Hoxton.SR10</spring-cloud.version>
<spring-cloud-alibaba.version>2.2.6.RELEASE</spring-cloud-alibaba.version>

网关的依赖如下:

<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>
</dependencies>

看下它是如何做路由转发的。
org.springframework.cloud.gateway.handler.FilteringWebHandler.GatewayFilterAdapter#filter()上打断点:
在这里插入图片描述

继续往下执行:在这里插入图片描述
这里就把请求匹配到了路由表中的某条路由记录,然后把请求的url做了重写。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
以上可以看出来,底层还是用ribbon做的负载均衡。

从nacos的依赖中也能看出来:
在这里插入图片描述

spring-cloud-alibaba的高版本

Springcloud2020开始弃用了Ribbon,因此Alibaba在2021版本nacos中删除了Ribbon的jar包,改用SpringCloudLoadbalancer 来实现负载均衡,因此如果SpringCloud的版本和SpringCloudAlibaba的版本是如下

<spring-cloud.version>2021.0.5</spring-cloud.version>
<spring-cloud-alibaba.version>2021.0.4.0</spring-cloud-alibaba.version>

gateway是需要单独引入负载均衡组件的:

<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>
</dependencies>

gateway的配置:

spring:cloud:nacos:discovery:server-addr: localhost:8848loadbalancer:enabled: true # 默认就是truenacos:enabled: true # 默认没有开启gateway:discovery:locator:# true 默认路由机制# 开启服务注册和发现功能,服务网关自动根据服务发现为每一个服务创建一个路由,这个路由将以(大写服务名)开头的请求路径转发到对应的服务中# 访问地址:127.0.0.1:8800/大写服务名/服务上下文/Controller/Method## false 关闭默认路由机制,需要手动配置routes,默认通过路由名进行跳转的方式将失效,将请求路径上的服务名配置为小写# 访问地址:127.0.0.1:8800/小写写服务名/服务上下文/Controller/Methodenabled: false # 默认就是falselower-case-service-id: trueroutes:- id: userserviceuri: lb://userservicepredicates:- Path=/user/**

同样打断点跟一下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
测试代码下载:https://github.com/xjs1919/enumdemo/tree/master/gateway-demo

http://www.lryc.cn/news/31708.html

相关文章:

  • 【数据挖掘与商务智能决策】第四章 逻辑回归模型
  • 滚动升级回滚
  • 2023/3/6 VUE - 组件传值【通信】方式
  • MedCalc v20.217 医学ROC曲线统计分析参考软件
  • 欢乐消除开心假日协议解密
  • Android Service知识
  • axios的get请求传入数组参数后端无法接收的问题
  • 奖金发放-课后程序(Python程序开发案例教程-黑马程序员编著-第3章-课后作业)
  • 第十四届蓝桥杯第三期模拟赛 【python】
  • Python——函数(重点内容)
  • 2023年如何在Google做外贸
  • Linux操作系统学习(线程池)
  • JVM运行时数据区—Java虚拟机栈
  • gitlab中文社区
  • 深度学习-第T2周——彩色图片分类
  • GNU C编译器扩展关键字:__attribute__
  • C++基础 | 从C到C++快速过渡
  • 【C++】仿函数 -- priority_queue
  • 盘一盘C++的类型描述符(一)
  • Peppol的发展史和基本框架
  • Linux-GCC介绍+入门级Makefile使用
  • iOS(一):Swift纯代码模式iOS开发入门教程
  • IDEA+Python+Selenium+360浏览器自动化测试
  • 运输层概述及web请求
  • python与pycharm从零安装
  • 叠氮试剂943858-70-6,Azidobutyric acid NHS ester,叠氮-C3-活性酯
  • pycharm激活虚拟环境时报错:无法加载文件activate.ps1,因为在此系统上禁止运行脚本,Windows10系统
  • 刷题小抄4-数组
  • Hbase安装
  • 面向对象设计模式:结构型模式之代理模式