当前位置: 代码网 > it编程>编程语言>Java > Java Nacos与Gateway的使用操作笔记

Java Nacos与Gateway的使用操作笔记

2024年08月12日 Java 我要评论
一、前言近期学习gateway与nacos的实操笔记总结通过nacos观察gateway的作用二、学习内容:gateway实操学习nacos实操学习knif4j配置均衡负载灰度发布策略微服务知识学习三

一、前言

  • 近期学习gateway与nacos的实操笔记总结
  • 通过nacos观察gateway的作用

二、学习内容:

  • gateway实操学习
  • nacos实操学习
  • knif4j配置
  • 均衡负载
  • 灰度发布策略
  • 微服务知识学习

三、问题描述

  • 实操经验不丰富

四、解决方案:

4.1 父子项目的设置

4.1.1父工程配置

  • 加入package配置
  • 加入moudle配置子项目
  • 删除依赖

4.1.2 子工程配置

删除的都已有父工程管理

  • 删除配置
  • 删除依赖管理
  • 指定父工程

4.2 微服务、负载均衡与灰度发布

4.2.1 新建微服务

  • 网关服务注意一定要加上gateway与负载均衡依赖

网关名字记得改

为了方便观察运行时把springboot加入services管理

运行端口为8080的服务

新建服务

之后修改要改的端口与内容再次运行即可

端口要改不然冲突

我们发现nacos的nacos-demo服务实例已变为两个

看上张图片,因为我们又运行了一个服务

微服务配置注意看path

测试通过网关访问服务实例

注意测试负载均衡访问的是微服务所以端口号是9091同时路径别忘写

五、总结:

5.1 学习总结:

不管谁访问经由网关即可访问实例

请添加图片描述

spring cloud gateway 是一个用于构建 api 网关的框架,提供了多种服务路由、过滤和负载均衡的功能

动态路由:

  • 支持通过配置文件或编程方式设置路由。
  • 可以根据请求的路径、请求方法、查询参数等进行路由匹配。

过滤器:

  • 提供了预定义的过滤器(如请求头、请求参数、限流等)。
  • 用户可以自定义过滤器来处理请求和响应的各种需求。

负载均衡:

  • 支持与 spring cloud loadbalancer 集成,实现对后端服务的负载均衡。
  • 可以配置不同的策略,如轮询、随机等。

断路器支持:

  • 可以与 spring cloud circuit breaker 集成,提供服务熔断功能,提高系统的健壮性。

安全与认证:

  • 支持集成 spring security,为 api 提供安全认证机制。 可以对访问进行监控和限制,保证系统安全。

响应式编程:

  • 基于 spring webflux 构建,实现非阻塞的 api 调用,提高系统吞吐量。

监控和追踪:

  • 通过集成 spring boot actuator 进行运行时监控。
  • 支持分布式追踪(如 sleuth 和 zipkin),帮助追踪请求流动。

应用场景

  • 微服务架构: 在微服务架构中,作为服务的入口,聚合多个服务的 api。
  • api 管理: 提供统一的 api 接入点,简化客户端的访问方式。
  • 安全层: 集中管理微服务的安全措施,对外提供单一的认证和授权方式。

配置文件参考:

spring.application.name=nacos-demo
server.port=8080
spring.cloud.nacos.config.username=nacos
spring.cloud.nacos.config.password=nacos
spring.cloud.nacos.config.contextpath=/nacos
# 设置配置中心服务端地址
spring.cloud.nacos.config.server-addr=localhost:8848
# nacos 配置中心的namespace。需要注意,如果使用 public 的 namcespace ,请不要填写这个值,直接留空即可
spring.cloud.nacos.config.namespace=nacos-demo
spring.config.import=nacos:datatest.properties?refresh=true
# nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html
# nacos认证信息
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos
# nacos 服务发现与注册配置,其中子属性 server-addr 指定 nacos 服务器主机和端口
spring.cloud.nacos.discovery.server-addr=localhost:8848
# 注册到 nacos 的指定 namespace,默认为 public
spring.cloud.nacos.discovery.namespace=nacos-demo
spring.application.name=gateway
server.port=9091
knife4j.gateway.discovery.enabled=true
knife4j.gateway.enabled=true
knife4j.gateway.tags-sorter=order
knife4j.gateway.operations-sorter=order
knife4j.gateway.strategy=discover
spring.cloud.nacos.config.username=nacos
spring.cloud.nacos.config.password=nacos
spring.cloud.nacos.config.contextpath=/nacos
spring.cloud.nacos.config.server-addr=localhost:8848
spring.config.import=nacos:datatest.properties?refresh=true
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos
spring.cloud.nacos.discovery.server-addr=localhost:8848
spring.cloud.nacos.discovery.namespace=nacos-demo
spring.cloud.gateway.globalcors.cors-configurations.[/**].allowed-origin-patterns=*
spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedheaders=*
spring.cloud.gateway.globalcors.cors-configurations.[/**].allowcredentials=true
spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedmethods[0]=get
spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedmethods[1]=post
spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedmethods[2]=put
spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedmethods[3]=options
spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedmethods[4]=delete
spring.cloud.gateway.discovery.locator.enabled=true
spring.cloud.gateway.routes[0].id=nacos-demo
spring.cloud.gateway.routes[0].uri=lb://nacos-demo
spring.cloud.gateway.routes[0].predicates[0]=path=/nacos_demo/**
spring.cloud.gateway.routes[0].filters[0]=stripprefix=1

依赖参考:

 <dependencies>
        <dependency>
            <groupid>com.alibaba.cloud</groupid>
            <artifactid>spring-cloud-starter-alibaba-nacos-config</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-gateway</artifactid>
        </dependency>
        <dependency>
            <groupid>org.springframework.cloud</groupid>
            <artifactid>spring-cloud-starter-loadbalancer</artifactid>
        </dependency>
        <dependency>
            <groupid>org.springframework.boot</groupid>
            <artifactid>spring-boot-starter-test</artifactid>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupid>com.github.xiaoymin</groupid>
            <artifactid>knife4j-gateway-spring-boot-starter</artifactid>
            <version>4.4.0</version>
        </dependency>
    </dependencies>
 <dependencies>
        <dependency>
            <groupid>com.alibaba.cloud</groupid>
            <artifactid>spring-cloud-starter-alibaba-nacos-config</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-gateway</artifactid>
        </dependency>
        <dependency>
            <groupid>org.springframework.cloud</groupid>
            <artifactid>spring-cloud-starter-loadbalancer</artifactid>
        </dependency>
        <dependency>
            <groupid>org.springframework.boot</groupid>
            <artifactid>spring-boot-starter-test</artifactid>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupid>com.github.xiaoymin</groupid>
            <artifactid>knife4j-gateway-spring-boot-starter</artifactid>
            <version>4.4.0</version>
        </dependency>
        <dependency>
            <groupid>org.projectlombok</groupid>
            <artifactid>lombok</artifactid>
            <scope>annotationprocessor</scope>
        </dependency>
    </dependencies>

(后续有遇到问题再添加)

声明:如本内容中存在错误或不准确之处,欢迎指正。转载时请注明原作者信息(麻辣香蝈蝈)。

到此这篇关于java nacos与gateway的使用的文章就介绍到这了,更多相关java nacos与gateway使用内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com