nacos做服务配置和服务器发现

news/2024/12/23 5:46:32/

一、创建项目

  • 1、创建一个spring-boot的项目

  • 2、创建三个模块filesystemgateway模块

  • 3、filesystem分别配置启动信息,并且创建一个简单的控制器

    server.port=9000
    spring.application.name=file
    server.servlet.context-path=/file
    
  • 4、在根目录下引入依赖

    <properties><java.version>1.8</java.version><spring-cloud.version>2021.0.8</spring-cloud.version>
    </properties>...
    <dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
    </dependencyManagement>
    
  • 5、在网关模块引入依赖包

    <dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency>
    </dependencies>
    
  • 6、网关模块的application.properties配置

    server.port=8000
    spring.application.name=gateway
    server.servlet.context-path=/gateway
    spring.main.web-application-type=reactive # 注册一个服务
    spring.cloud.gateway.routes[0].id=system
    spring.cloud.gateway.routes[0].uri.=http://localhost:9001
    spring.cloud.gateway.routes[0].predicates[0].name=Path
    spring.cloud.gateway.routes[0].predicates[0].args[0]=/system/**
    # 注册一个服务
    spring.cloud.gateway.routes[1].id=file
    spring.cloud.gateway.routes[1].uri.=http://localhost:9000
    spring.cloud.gateway.routes[1].predicates[0].name=Path
    spring.cloud.gateway.routes[1].predicates[0].args[0]=/file/**
    
  • 7、分别启动三个项目,测试单独接口请求、使用网关的路由请求是否通的

    • http://localhost:9000/file/hello
    • http://localhost:9001/system/hello1
    • http://localhost:8000/file/hello
    • http://localhost:9000/system/hello1

二、nacos的安装

  • 1、官网地址下载,根据不同电脑系统下载不同包,解压进入到bin目录下,前提电脑上要安装jdk

    # 我这边是window电脑
    startup.cmd -m standalone
    
  • 2、使用docker安装

    docker search nacos
    docker pull nacos/nacos-server
    
    mkdir -p /home/docker/nacos/conf
    mkdir -p /home/docker/nacos/data
    mkdir -p /home/docker/nacos/logs
    chmod a+w /home/docker/nacos
    
    docker run -it --name nacos \
    -p 8848:8848 \
    -e MODE=standalone \
    -v /home/docker/nacos/conf/data:/home/nacos/conf/data \
    -v /home/docker/nacos/conf/logs:/home/nacos/conf/logs \
    -d nacos/nacos-server

    如果需要认证的话,请添加application.properties文件

    docker run -it --name nacos \
    -p 8848:8848 \
    -e MODE=standalone \
    -v /home/docker/nacos/conf/application.properties:/home/nacos/conf/application.properties \
    -v /home/docker/nacos/conf/data:/home/nacos/conf/data \
    -v /home/docker/nacos/conf/logs:/home/nacos/conf/logs \
    -d nacos/nacos-server
    

三、使用nacos做配置中心

  • 1、在需要获取nacos的项目中添加依赖包

     <!--    nacos配置    -->
    <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>2.2.3.RELEASE</version>
    </dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId>
    </dependency>
    
  • 2、在这里以system模块介绍,在resources目录下创建一个bootstrap.properties文件

    # 注册中心的名字
    spring.application.name=system
    # 启动环境,nacos会根据环境来读取不同的配置dataId:system-dev.properties
    spring.profiles.active=dev
    # nacos的地址
    spring.cloud.nacos.config.server-addr=localhost:8848
    # 配置中心文件后缀名
    spring.cloud.nacos.config.file-extension=properties
    
  • 3、在nacos控制面板上创建一个配置文件

    在这里插入图片描述

    test.nacos=hello1234566
    
  • 4、在项目的application.properties中添加test.nacos的配置,值随意

    server.port=9001
    #spring.application.name=system
    server.servlet.context-path=/systemtest.nacos=hello
    
  • 5、在system的控制器中获取配置文件

    package com.example.controller;import org.springframework.beans.factory.annotation.Value;
    import org.springframework.cloud.context.config.annotation.RefreshScope;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;@RestController
    @RefreshScope
    public class HelloController {@Value("${test.nacos}")private String nacosName;@GetMapping("hello1")public String hello() {System.out.println(nacosName+"=====");return "System Hello";}
    }
    
  • 6、在nacos上修改配置文件查看是否获取到最新的配置数据

四、多环境配置

  • 1、手动添加启动变量

    在这里插入图片描述

    在这里插入图片描述

  • 2、配置生产启动

    -Dspring.profiles.active=prod
    

    在这里插入图片描述

  • 3、在nacos中拷贝一份生产的配置文件

    在这里插入图片描述

  • 4、修改点system-prod.properties的数据,启动system项目

在这里插入图片描述

  • 5、请求接口看看配置文件读取的是否为生产的配置文件

五、命名空间

  • 1、也许你一个公司就一个项目,那么在nacos直接使用public这个默认的命名空间也可以,如果一个公司有多个项目,每个项目都有不同配置文件,这时候就要使用命名空间,简单理解就一个项目就是一个命名空间

  • 2、比如我创建一个test1的命名空间,里面创建2个配置文件

    在这里插入图片描述

  • 3、在spring-boot项目中使用命名空间来读取配置文件

    # 注册中心的名字
    spring.application.name=system
    # 启动环境,nacos会根据环境来读取不同的配置dataId:system-dev.properties
    spring.profiles.active=dev
    # nacos的地址
    spring.cloud.nacos.config.server-addr=localhost:8848
    # 配置中心文件后缀名
    spring.cloud.nacos.config.file-extension=properties
    # 读取命名空间的配置
    spring.cloud.nacos.config.namespace=test1
    

六、使用nacos实现注册中心

  • 1、因为所有的模块都要在nacos中注册,因此直接在跟模块下引入依赖包,上面的配置中心的依赖也可以全部到跟模块中引入

    <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2.2.3.RELEASE</version>
    </dependency>
    <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId>
    </dependency>
    
  • 2、在bootstrap.properties文件中添加以下2行代码就可以

    # 服务注册
    spring.cloud.nacos.discovery.server-addr=localhost:8848
    spring.cloud.nacos.discovery.namespace=test1
    
  • 3、如果当前是网关模块就要多添加一个负载均衡的依赖

    <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>
    </dependencies>
    
  • 4、启动服务,查看nacos控制面板

    在这里插入图片描述

  • 5、多启动一台system的项目,只要在启动的时候修改启动端口号就可以

在这里插入图片描述

  • 6、这时候就可以修改网关地址,由之前的localhost改为lb的方式

    server.port=8000
    spring.application.name=gateway
    server.servlet.context-path=/gateway
    spring.main.web-application-type=reactive # 注册一个服务
    spring.cloud.gateway.routes[0].id=system
    #spring.cloud.gateway.routes[0].uri.=http://localhost:9001
    spring.cloud.gateway.routes[0].uri=lb://system
    spring.cloud.gateway.routes[0].predicates[0].name=Path
    spring.cloud.gateway.routes[0].predicates[0].args[0]=/system/**
    # 注册一个服务
    spring.cloud.gateway.routes[1].id=file
    #spring.cloud.gateway.routes[1].uri.=http://localhost:9000
    spring.cloud.gateway.routes[1].uri=lb://file
    spring.cloud.gateway.routes[1].predicates[0].name=Path
    spring.cloud.gateway.routes[1].predicates[0].args[0]=/file/**
    
  • 7、测试使用网关请求是否可以

七、完善openfeig

  • 1、使用使用openfeig请求别的服务的方法

  • 2、由之前的写法改为下面的写法

    @FeignClient(name = "system", url = "http://localhost:9001/system")
    public interface FeignSystemHello {/*** 别的地方调用hell1方法的时候就会调用http://localhost:9001/system/hello路由* @return*/@GetMapping("hello1")String hello1();
    }
    @FeignClient("system")
    public interface FeignSystemHello {@GetMapping("system/hello1")String hello1();
    }
  • 3、测试请求地址http://localhost:8000/file/systemHello

  • 4、上面可能会报错,需要再根目录的pom.xml中排除一个东西

    <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2.2.3.RELEASE</version><exclusions><exclusion><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-ribbon</artifactId></exclusion></exclusions>
    </dependency>
    
  • 5、在system的测试控制器中使用环境变量获取当前端口

    @RestController
    @RefreshScope
    public class HelloController {@Value("${test.nacos}")private String nacosName;@AutowiredEnvironment environment;@GetMapping("hello1")public String hello() {String port = environment.getProperty("local.server.port");System.out.println(nacosName+"=====");return "System Hello" + port;}
    }
    

八、修改nacos使用账号密码登录

  • 1、修改/nacos/conf/application.properties

在这里插入图片描述

  • 2、但是开启登录功能就要配置下面的值,在线工具

    nacos.core.auth.caching.enabled=truenacos.core.auth.server.identity.key=nacos
    nacos.core.auth.server.identity.value=nacosnacos.core.auth.plugin.nacos.token.secret.key=OGQ2ZTNmMDQ4MjVjNGQ0OTg4YzZjMGE1NDE4MDgwMTE=
    
  • 3、进入桌面端再来修改账号和密码


http://www.ppmy.cn/news/1209167.html

相关文章

已解决:KeyError: ‘The truth value of a Series is ambiguous‘ 问题

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页: &#x1f405;&#x1f43e;猫头虎的博客&#x1f390;《面试题大全专栏》 &#x1f995; 文章图文并茂&#x1f996…

C# .NET6 Log4net输出日志

在 C# .NET6 开发中&#xff0c;log4net 是一个常用的日志记录框架&#xff0c;它可以帮助我们方便地输出日志信息。本教程将向你展示如何在 C# .NET6 中实现 log4net 的日志输出功能。 整体流程 下面是实现“C# .NET6 log4net 输出日志”的整体流程&#xff0c;我们将通过以下…

两台Linux服务器之间传送文件

两台Linux服务器之间传送文件 将U盘上的数据传送到服务器上 本地U盘 远程服务器地址&#xff1a; 192.168.30.125 传送到data文件夹的下面 scp -r coco2017 s192.168.30.125:/data传送 两台Linux服务器之间传送文件的4种方法

HelloGitHub 社区动态,开启新的篇章!

今天这篇文章是 HelloGitHub 社区动态的第一篇文章&#xff0c;所以我想多说两句&#xff0c;聊聊为啥开启这个系列。 我是 2016 年创建的 HelloGitHub&#xff0c;它从最初的一份分享开源项目的月刊&#xff0c;现如今已经成长为 7w Star 的开源项目、1w 用户的开源社区、全网…

红海云签约和兆服饰,科技引领服饰行业人力资源数字化转型

和兆服饰从事多品牌多品类经营管理&#xff0c;旗下拥有POLOSPORT、POLOKIDS、CARTELO等国际品牌。作为一个主打POLO文化的服饰品牌&#xff0c;诞生于美国的POLOSPORT拥有现代感的产品设计、系列化的产品搭配、全方位的服务&#xff0c;是最具美国马球精神的休闲时尚服饰品牌之…

vue3的hooks用法

vue2使用习惯了以后&#xff0c;mixins这种复用性极高的功能肯定是避免不了常用的&#xff0c;当使用vue3的时候&#xff0c;也想要类似于mixins这种功能&#xff0c;应该咋弄呢。 1.vue2的mixins中有data&#xff0c;watch&#xff0c;methods, mounted等&#xff0c;对应vue3…

Android---App 崩溃

崩溃问题是衡量 App 质量的决定性考核标准。Android 系统会输出各种相应的 log 日志&#xff0c;很大程度上降低了工程师 debug 崩溃问题的难度。如果要给 crash 日志进行分类&#xff0c;可以分为2大类&#xff1a;JVM 异常&#xff08;Exception&#xff09;堆栈信息和 nativ…

leetcode_2233. K 次增加后的最大乘积

题目链接&#xff1a;2233. K 次增加后的最大乘积 - 力扣&#xff08;LeetCode&#xff09; // 小根堆#define INVALUE ((int)pow(10, 6) 1) #define MOD ((int)pow(10, 9) 7)static int cmp(const void *a, const void *b) {return (*(int*)a - *(int*)b); }int maximu…