开发者

Java Nacos与Gateway的使用操作笔记

开发者 https://www.devze.com 2024-08-12 10:30 出处:网络 作者: 麻辣香蝈蝈
目录一、前言二、学习内容:三、问题描述四、解决方案:4.1 父子项目的设置4.1.1父工程配置4.1.2 子工程配置4.2 微服务、负载均衡与灰度发布4.2.1 新建微服务五、总结:5.1 学习总结:一、前言
目录
  • 一、前言
  • 二、学习内容:
  • 三、问题描述
  • 四、解决方案:
    • 4.1 父子项目的设置
      • 4.1.1父工程配置
      • 4.1.2 子工程配置
    • 4.2 微服务、负载均衡与灰度发布
      • 4.2.1 新建微服务
  • 五、总结:
    • 5.1 学习总结:

    一、前言

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

    二、学习内容:

    • Gateway实操学习
    • Nacos实操学习
    • Knif4j配置
    • 均衡负载
    • 灰度发布策略
    • 微服务知识学习

    三、问题描述

    • 实操经验不丰富

    四、解决方案:

    4.1 父子项目的设置

    4.1.1父工程配置

    • 加入Package配置
    • 加入Moudle配置子项目
    • 删除依赖

    Java Nacos与Gateway的使用操作笔记

    4.1.2 子工程配置

    删除的都已有父工程管理

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

    Java Nacos与Gateway的使用操作笔记

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

    4.2.1 新建微服务

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

    Java Nacos与Gateway的使用操作笔记

    网关名字记得改

    Java Nacos与Gateway的使用操作笔记

    为了方便观察运行时把SpringBoot加入Services管理

    Java Nacos与Gateway的使用操作笔记

    运行端口为8080的服务

    Java Nacos与Gateway的使用操作笔记

    新建服务

    Java Nacos与Gateway的使用操作笔记

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

    端口要改不然冲突

    Java Nacos与Gateway的使用操作笔记

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

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

    Java Nacos与Gateway的使用操作笔记

    微服务配置注意看Path

    Java Nacos与Gateway的使用操作笔记

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

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

    Java Nacos与Gateway的使用操作笔记

    Java Nacos与Gateway的使用操作笔记

    五、总结:

    5.1 学习总结:

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

    Java Nacos与Gateway的使用操作笔记

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

    动态路由:

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

    过滤器:

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

    负载均衡:

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

    断路器支持:

    • 可以与 Spring Cloud Circuit Breaker 集成,提供服务熔断功能,提高系统的健壮性。

    安全与认证:

    • 支持php集成 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.rpythonoutes[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>
                &lphpt;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</gro编程客栈upId>
                <artifactId>spring-cloud-starter-gateway</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifaMHJzKdctId>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使用内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号