Java Nacos与Gateway的使用

news2024/9/22 16:13:10

Java系列文章目录

IDEA使用指南

Java泛型总结(快速上手详解)

Java Lambda表达式总结(快速上手详解)

Java Optional容器总结(快速上手图解)

Java 自定义注解笔记总结(油管)

Java 抽象知识笔记总结(油管)


文章目录

  • Java系列文章目录
  • 一、前言
  • 二、学习内容:
  • 三、问题描述
  • 四、解决方案:
    • 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配置子项目
  • 删除依赖

在这里插入图片描述

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>

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


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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【大数据】6:MapReduce YARN 初体验

目录 MapReduce & YARN 初体验 集群启停命令 一键启动脚本&#xff1a; 单进程启停 提交MapReduce任务到YARN执行 提交MapReduce程序至YARN运行 提交wordcount示例程序 提交求圆周率示例程序 拓展&#xff1a;蒙特卡罗算法求PI的基础原理 onte Carlo蒙特卡罗算法…

【MySQL 06】表的约束

文章目录 &#x1f308; 一、约束的概念&#x1f308; 二、空属性约束⭐ 1. 空值无法参与运算⭐ 2. 设置非空属性 &#x1f308; 三、默认值约束⭐ 1. 默认值使用案例⭐ 2. 同时设置 not null 和 default &#x1f308; 四、列描述约束&#x1f308; 五、zerofill 补零约束&…

贷齐乐漏洞复现+php特性绕过WAF

目录 一、环境搭建 1.将贷齐乐源码放入phpstudy中的www目录下 2.在phpstudy上创建网站&#xff1a; 3.在本地数据库中创建数据库--ctf&#xff0c;并创建users表&#xff1a; 4.往表中插入数据&#xff1a; 5.查看users表&#xff1a; 6.测试能否访问到数据库 二、源码分析…

力扣热题100_链表_234_回文链表

文章目录 题目链接解题思路解题代码 题目链接 234. 回文链表 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为 回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,2,1] 输出…

搭建MoneyPrinterTurbo,利用AI大模型,一键生成高清短视频实战

搭建MoneyPrinterTurbo&#xff0c;利用AI大模型&#xff0c;一键生成高清短视频 1.MoneyPrinterTurbo简介 只需提供一个视频 主题 或 关键词 &#xff0c;就可以全自动生成视频文案、视频素材、视频字幕、视频背景音乐&#xff0c;然后合成一个高清的短视频。 github地址&a…

【大模型从入门到精通19】开源库框架LangChain LangChain文档加载器1

目录 理解文档加载器非结构化数据加载器结构化数据加载器 使用文档加载器的实际指南设置和配置安装必要的包&#xff08;注意&#xff1a;这些包可能已经在你的环境中安装好了&#xff09;从 .env 文件加载环境变量从环境变量中设置 OpenAI API 密钥 在数据驱动的应用领域&…

企业如何组建安全稳定的跨国通信网络

当企业在海外设有分公司时&#xff0c;如何建立一个安全且稳定的跨国通信网络是一个关键问题。为了确保跨国通信的安全和稳定性&#xff0c;可以考虑以下几种方案。 首先&#xff0c;可以在分公司之间搭建虚拟专用网络。虚拟专用网络通过对传输数据进行加密&#xff0c;保护通信…

Java:jdk8以后开始接口新增的3种方法:default,private,static

文章目录 jdk8以后开始接口新增的方法默认方法&#xff1a;deafult私有方法private如何查看自己的jdk版本静态方法static 问题接口中不止有抽象方法为什么接口中的方法都是public为什么要增加这三种方法 jdk8以后开始接口新增的方法 默认方法&#xff1a;deafult 必须使用defa…

【CentOS 】DHCP 更改为静态 IP 地址并且遇到无法联网

文章目录 引言解决方式标题1. **编辑网络配置文件**&#xff1a;标题2. **确保配置文件包含以下内容**&#xff1a;特别注意 标题3. **重启网络服务**&#xff1a;标题4. **检查配置是否生效**&#xff1a;标题5. **测试网络连接**&#xff1a;标题6. **检查路由表**&#xff1…

思科默认路由配置2

#路由协议实现# #任务二默认路由配置2# #1配置计算机的IP地址、子网掩码和网关 #2配置Router-A的名称及其接口IP地址 Router(config)#hostname Router-A Router-A(config)#int g0/0 Router-A(config-if)#ip add 192.168.1.1 255.255.255.0 Router-A(config-if)#no shutdow…

全网最适合入门的面向对象编程教程:36 Python的内置数据类型-字典

全网最适合入门的面向对象编程教程&#xff1a;36 Python 的内置数据类型-字典 摘要&#xff1a; 字典是非常好用的容器&#xff0c;它可以用来直接将一个对象映射到另一个对象。一个拥有属性的空对象在某种程度上说就是一个字典&#xff0c;属性名映射到属性值。在内部&#…

【图形验证和AI智能及CHATGPT对抗影响的是用户体验】

验证码本质上自带一层答案的语义&#xff0c;这原本是天然的区分人和自动程序的地方&#xff0c;但在今日却未必&#xff0c;由于AI智能及CHATGPT的发展机器要识别也变得容易。 一 &#xff1a;攻防思路 黑产对于验证码图片答案的获取主要有两种手段——图片穷举破解和图片模…

[C++][opencv]基于opencv实现photoshop算法高反差保留

【测试环境】 vs2019 opencv4.8.0 【效果演示】 【核心代码实现】 Filter.hpp #ifndef OPENCV2_PHOTOS_FILTER_HPP_ #define OPENCV2_PHOTOS_FILTER_HPP_#include "opencv2/core.hpp" #include "opencv2/imgproc.hpp"namespace cv {class Filter { pu…

【网络编程】TCP机械臂测试

通过w(红色臂角度增大)s&#xff08;红色臂角度减小&#xff09;d&#xff08;蓝色臂角度增大&#xff09;a&#xff08;蓝色臂角度减小&#xff09;按键控制机械臂 注意&#xff1a;关闭计算机的杀毒软件&#xff0c;电脑管家&#xff0c;防火墙 1&#xff09;基于TCP服务器…

AFSim 仿真系统----《普朗克黑体辐射定律的区间积累》

参考文献 《普朗克黑体辐射函数的积分》&#xff0c;W. K. Widger, Jr. 和 M. P. Woodall&#xff0c;发表在《美国气象学会公报》&#xff0c;第57卷&#xff0c;第10期&#xff0c;1976年10月&#xff0c;页码1217-1219 上述参考文献描述了一种在不依赖于需要大量迭代的数值…

Visual Studio Code 安装与 C/C++ 语言运行总结

​ 大家好&#xff0c;我是程序员小羊&#xff01; 前言&#xff1a; Visual Studio Code&#xff08;简称 VS Code&#xff09;是由微软开发的一款轻量级、强大的代码编辑器&#xff0c;支持多种编程语言和开发框架。由于其丰富的插件生态系统和灵活的配置选项&#xff0c;VS…

gitlab实现CI/CD自动化部署

gitlab实现CI/CD自动化部署 项目根目录中新增gitlab-ci.yml在gitlab上查看gitlab-runner配置方法配置服务器环境推送代码&#xff0c;触发runner&#xff0c;实现自动构建和部署参考 gitlab支持通过配置CI/CD实现自动化部署我们的代码项目&#xff0c;主要核心就是配置gitlab-c…

【MySQL数据库】单机、集群、分布式的区别

单机、集群和分布式是计算机系统中三种不同的架构模型,它们在资源管理、任务执行和性能优化方面有显著区别。 图片来源 1. 单机(Standalone) 单机指的是单一计算机系统,即所有的计算任务和数据都在一台计算机上处理。单机系统的特点包括: 硬件限制:受限于单台机器的计…

ARM处理架构中的PMU(Performance Monitoring Unit)和 AMU(Activity Monitors Unit)简介

在 ARM 架构中,PMU(Performance Monitoring Unit)和 AMU(Activity Monitors Unit)是用于性能分析和监控的硬件单元,但它们的功能和应用场景有所不同。以下是它们的主要区别: 1. PMU (Performance Monitoring Unit) 功能:PMU 是一种用于监控处理器性能的硬件单元。它可…

简述MYSQL聚簇索引、二级索引、索引下推

一丶聚簇索引 InnoDB的索引分为两种&#xff1a; 聚簇索引&#xff1a;一般创建表时的主键就会被mysql作为聚簇索引&#xff0c;如果没有主键则选择非空唯一索引作为聚簇索引&#xff0c;都没有则隐式创建一个索引作为聚簇索引&#xff1b;辅助索引&#xff1a;也就是非聚簇索…