springcloud-alibaba (04)Gateway与Nacos结合使用

Gateway与Nacos结合使用

🎉欢迎来到这里,今天我将为大家介绍如何将Spring Cloud Gateway和Nacos结合使用,实现一个高效稳定的服务网关!在微服务架构中,API网关是必不可少的一部分,它提供了路由请求、负载均衡、安全认证和限流等功能。Spring Cloud Gateway是基于Spring Framework、Spring Boot和Project Reactor等技术的API网关,它提供了一种简单而有效的方式来对微服务进行路由、过滤和流量控制。Nacos是一个用于服务注册和发现的组件,它提供了一种稳定、易于使用、无锁的服务发现方案。那么,让我们看看如何将它们结合起来,实现一个强大的服务网关吧!🚀

🖥️💻👨‍💻🖥️💻

  • Gateway与Nacos结合使用
    • 1. 单独使用Gateway
    • 2. Gateway和Nacos结合
    • 3. 总结🎓

1. 单独使用Gateway

首先,让我们来看看如何单独使用Spring Cloud Gateway。只需要添加依赖和配置Gateway即可。

  1. 添加依赖💡
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
  1. 配置Gateway🛠️

然后,在配置文件(application.yml或application.properties)中声明要转发的路由即可。

server:
  port: 7003
spring:
  application:
    name: gateway-server
  cloud:
    gateway:
      routes:
        - id: user-server               # 当前路由的标识, 要求唯一
          uri: "http://localhost:7001"  # 请求要转发到的地址
          order: 1                      # 路由的优先级,数字越小级别越高
          predicates:                   # 断言(就是路由转发要满足的条件)
            - Path=/user-server/**      # 当请求路径满足Path指定的规则时,才进行路由转发
          filters:                      # 过滤器,请求在传递过程中可以通过过滤器对其进行一定的修改
            - StripPrefix=1             # 转发之前去掉1层路径

以上配置中声明了一个路由,将路径为/user-server/**的请求转发到相应的服务上。

在这里插入图片描述

接下来,让我们来看看如何将Spring Cloud Gateway和Nacos结合使用,以实现更强大的功能。

2. Gateway和Nacos结合

我们可以将Spring Cloud Gateway和Nacos结合使用,为微服务架构提供更加稳定和高效的服务网关解决方案。接下来,我将一步一步的教大家如何结合使用它们。

  1. 添加依赖💡

在pom.xml文件中添加以下依赖。

<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>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

这是一些Spring Cloud相关的依赖,包括了Spring Cloud Gateway、Spring Cloud Alibaba Nacos Discovery和Spring Cloud LoadBalancer。

当Gateway在使用Nacos作为服务发现和注册中心时,使用loadbalancer依赖可以让Gateway自动从Nacos注册中心获取可用的服务实例列表,并根据路由规则将请求转发到不同的实例上,实现负载均衡和高可用性。

因此,加上loadbalancer依赖可以使得Gateway和Nacos的结合更加完善,为微服务架构提供更加稳定和高效的服务网关解决方案。

  1. 添加@EnableDiscoveryClient注解 (可选)🛠️
@SpringBootApplication
@EnableDiscoveryClient
public class GateWayApplication {

    public static void main(String[] args) {
        SpringApplication.run(GateWayApplication.class, args);
        System.out.println("run");
    }
}
  1. 配置nacos注册中心和gateway🛠️

这是一个基于Spring Cloud Gateway的配置文件,其中配置了网关的路由规则。

server:
  port: 7003
spring:
  application:
    name: gateway-server
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.157.129:8848
    gateway:
      routes:
        - id: user-server               # 当前路由的标识, 要求唯一
          uri: lb://user-server         # lb指的是从nacos中按照名称获取微服务,并遵循负
          order: 1                      # 路由的优先级,数字越小级别越高
          predicates:                   # 断言(就是路由转发要满足的条件)
            - Path=/user-server/**      # 当请求路径满足Path指定的规则时,才进行路由转发
          filters:                      # 过滤器,请求在传递过程中可以通过过滤器对其进行一定的修改
            - StripPrefix=1             # 转发之前去掉1层路径
  • server.port:指定网关应用程序的端口号,这里设置为7003。
  • spring.application.name:指定网关应用程序的名称,这里设置为gateway-server。
  • spring.cloud.nacos.discovery.server-addr:指定Nacos服务注册中心的地址,这里设置为192.168.157.129:8848。

在gateway.routes下面,配置了一条路由规则:

当请求路径满足Path指定的规则(/user-server/**)时,将会转发到名为user-server的微服务上。
指定了路由的优先级(order),以及使用了StripPrefix过滤器,将请求路径中的一个路径进行了去除,并将剩余的部分转发给下一级微服务。

简洁版:去掉关于路由的配置🛠️

server:
  port: 7003
spring:
  application:
    name: gateway-server
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.157.129:8848
    gateway:
      discovery:
        locator:
          enabled: true # 让gateway可以发现nacos中的微服务

这是一个基于Spring Cloud Gateway的配置文件,其中增加了发现服务的配置。

在gateway.discovery.locator.enabled属性中设置为true,表示开启了基于服务发现的路由功能。这样,在进行路由时,就会根据微服务的名称从Nacos服务注册中心中获取对应的服务实例,从而实现了自动的服务发现负载均衡的功能。

  1. 运行Spring Boot应用程序注册到nacos服务中心

在nacos服务中心中注册一个名为user-server的微服务,并启动至少两个示例即可。

在这里插入图片描述

这两个示例除了端口号和接口返回的数据以外其他内容都一样

在这里插入图片描述

  1. 测试应用程序🔍

现在可以向Spring Cloud Gateway发送请求并将其转发到相应的服务。只要按照网关地址/微服务/接口的格式去访问,就可以得到成功响应。

  • http://localhost:7003/user-server/user/get1
  • 网关地址/微服务的名称/接口的格式

在这里插入图片描述

根据微服务的名称从Nacos服务注册中心中获取对应的服务实例,从而实现了自动的服务发现负载均衡的功能。

3. 总结🎓

以上是使用Spring Cloud Gateway进行网关配置和使用Nacos进行服务发现和负载均衡的示例。Spring Cloud Gateway和Nacos的结合可以为微服务架构提供更加稳定和高效的服务网关解决方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/23469.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AIGC:【LLM(一)】——LoRA微调加速技术

文章目录 一.微调方法1.1 Instruct微调1.2 LoRA微调 二.LoRA原理三.LoRA使用 一.微调方法 Instruct微调和LoRA微调是两种不同的技术。 1.1 Instruct微调 Instruct微调是指在深度神经网络训练过程中调整模型参数的过程&#xff0c;以优化模型的性能。在微调过程中&#xff0c…

抖音账号运营技巧,让你的短视频更火爆

抖音是目前最火爆的短视频平台之一&#xff0c;拥有着庞大的用户群体和广阔的市场前景。在这个平台上&#xff0c;每天都有大量的用户在发布自己的短视频内容&#xff0c;让自己的账号脱颖而出并吸引更多的粉丝&#xff0c;成为每个用户所追求的目标。下面就来介绍一些抖音账号…

QDir拼接路径解决各种斜杠问题

一般在项目中经常需要组合路径,与其他程序进行相互调用传递消息通信。 经常可能因为多加斜杠、少加斜杠等问题导致很多问题。 为了解决这些问题,我们可以使用QDir来完成路径的拼接,不直接拼接字符串。 QDir的静态方法QDir::cleanPath() 是为了规范化路径名的,在使用QDir组…

Atlassian数据迁移攻略:迁移前必备须知

到2024年2月&#xff0c;Atlassian将终止对Server产品及插件的所有支持。是时候制定您的迁移计划了——Atlassian为您提供两种迁移选择&#xff0c;一是本地部署的数据中心版本&#xff0c;中国用户25人以上即可使用&#xff0c;二是云版。作为Atlassian全球白金合作伙伴&#…

Mybatisplus真实高效批量插入附容错机制

文章目录 概要优化技术细节小结 概要 提示&#xff1a;mybatisplus自带真实批量插入 在mybatisplus已知常用批量插入为继承Iservice里的saveBatch方法和saveOrUpdateBatch方法&#xff0c; 进入源码可知&#xff0c;此两种方法的插入均为单条插入,如图: 其中可看出&#xff0…

JavaScript之DOM基础

1. 初识DOM DOM: 文档对象模型 是W3C组织推荐的处理可扩展标记语言(HTML或者XML)的标准编程接口。 w3c已经定义了一系列的DOM接口&#xff0c;通过这些DOM接口可以改变网页的内容&#xff0c;结构和样式。 DOM树&#xff1a;文档&#xff1a;一个页面就是一个文档, DOM中使用d…

LeetCode_DFS_困难_1377.T 秒后青蛙的位置

目录 1.题目2.思路3.代码实现&#xff08;Java&#xff09; 1.题目 给你一棵由 n 个顶点组成的无向树&#xff0c;顶点编号从 1 到 n。青蛙从 顶点 1 开始起跳。规则如下&#xff1a; 在一秒内&#xff0c;青蛙从它所在的当前顶点跳到另一个未访问过的顶点&#xff08;如果它…

redis【stream】:对redis流数据类型的详细介绍

目录 stream产生原因 stream的概念 stream底层实现 stream的常用指令 常用命令一览&#xff1a; xadd命令 xread命令 xlen命令 xrange命令 xrevrange命令 xtrim命令 xdel命令 xgroup命令 xinfo命令 xpending命令 xreadgroup命令 xack命令 xclaim命令 stream产…

linux周六串讲

esc. //粘贴复制上一条命令的参数 cat /etc/resolv.conf //查看DNS地址 route -n //查看网关 hostname //临时修改主机名 hostnamectl set-hostname 名称 //永久修改主机名 ssh root192.168.10.233 //用windows远程的格式&#xff0c;在CMD窗口输入这个命令 …

zabbix部署

zabbix 是什么&#xff1f; zabbix 是一个基于 Web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 zabbix 能监视各种网络参数&#xff0c;保证服务器系统的安全运营&#xff1b;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。 zabbi…

ZooKeeper快速入门学习+在springboot中的应用+监听机制的业务使用

目录 前言 基础知识 一、什么是ZooKeeper 二、为什么使用ZooKeeper 三、数据结构 四、监听通知机制 五、选举机制 使用 1 下载zookeeper 2 修改 3 排错 在SpringBoot中的使用 安装可视化插件 依赖 配置 安装httpclient方便测试 增删查改 新建控制器 创建节点…

云计算:优势与未来趋势

文章目录 前言一、云计算的优势1. 降低IT成本2. 提高工作效率3. 提高业务的可靠性和稳定性4. 提升安全性 二、未来发展趋势1. AI与云计算的融合2. 边缘计算的发展3. 多云的趋势4. 服务器和存储的创新 三、 行业应用案例1.金融行业2.医疗保健行业3.教育行业4.零售和物流行业 四、…

【章节1】git commit规范 + husky + lint-staged实现commit的时候格式化代码

创建项目我们不多说&#xff0c;可以选择默认的&#xff0c;也可以用你们现有的项目。 前言&#xff1a; git commit 的时候总有人填写一堆花里胡哨乱写的内容&#xff0c;甚至看了commit 的描述都不知道他这次提交到底做了个啥&#xff0c;那我们有没有办法规范大家的commit提…

边沿检测电路

目录 同步信号的边沿检测 异步信号的边沿检测 所谓的边沿检测&#xff08;幼教边沿提取&#xff09;&#xff0c;就是检测输入信号的上升沿和下降沿。在设计数字系统时&#xff0c;边沿检测是一种很重要的思想&#xff0c;实际编程时用的最多的时序电路应该就是边沿检测电路和…

docker网络管理

1、常用的网络模式 Docker 容器的网络默认与宿主机、与其他容器都是相互隔离。 1.1、host 使用主机的网络命名空间&#xff0c;这意味着容器与主机共享同一个IP地址和端口号。使用host网络可以提高容器的网络性能&#xff0c;但是会降低容器的隔离性(容器直接使用宿主机网络栈…

浅谈电解电容在电路设计中的作用

谈起电解电容我们不得下多了解一下它的作用 1、滤波作用 在电源电路中&#xff0c;整流电路将交流变成脉动的直流&#xff0c;而在整流电路之后接入一个较大容量的电解电容&#xff0c;利用其充放电特性(储能作用)&#xff0c;使整流后的脉动直流电压变成相对比较稳定的直流电…

C++是如何从代码到游戏的

有一个Student类。C怎么创建一个学生类的对象&#xff1f; // 嗯我会&#xff01;有两种方式&#xff1a; Student s; Student *s2 new Student("张三");现在这学生的行为有&#xff1a;吃饭&#xff0c;睡觉&#xff0c;上网课。现在你执行个上网课的行为&#xf…

次氯酸消毒剂制备中的全氟醚橡胶密封耐腐蚀电动阀门解决方案

摘要&#xff1a;次氯酸作为是一种新型消毒剂&#xff0c;近年来广泛应用于医疗卫生机构、公共卫生场所和家庭的一般物体表面、医疗器械、医疗废物等。由于次氯酸的酸性和强氧化性&#xff0c;使得次氯酸生产制备过程中会给流量调节阀门带来腐蚀并影响寿命和控制精度&#xff0…

UE5电脑配置要求是什么?2023虚幻5电脑配置推荐

虚幻引擎对于游戏创作者来说已经不再陌生。该软件为程序员构建和设计终极视频游戏&#xff0c;以创建壮观的游戏场景和流畅的动作。此外&#xff0c;它还处理音效、物理碰撞效果和控制。尤其是人工智能对角色的控制。与其他软件一样&#xff0c;Unreal Engine也有最低系统要求才…

数据类型的陷进,从表象看本质!

哪些值转为布尔值为false 1、undefined&#xff08;未定义&#xff0c;找不到值时出现&#xff09; 2、null&#xff08;代表空值&#xff09; 3、false&#xff08;布尔值的false&#xff0c;字符串"false"布尔值为true&#xff09; 4、0&#xff08;数字0&…