nacos做服务配置和服务器发现
一、创建项目
-
1、创建一个
spring-boot
的项目 -
2、创建三个模块
file
、system
、gateway
模块 -
3、
file
和system
分别配置启动信息,并且创建一个简单的控制器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、进入桌面端再来修改账号和密码
相关文章:

nacos做服务配置和服务器发现
一、创建项目 1、创建一个spring-boot的项目 2、创建三个模块file、system、gateway模块 3、file和system分别配置启动信息,并且创建一个简单的控制器 server.port9000 spring.application.namefile server.servlet.context-path/file4、在根目录下引入依赖 <properties&g…...

KCC@广州与 TiDB 社区联手—广州开源盛宴
10月21日,KCC广州与 TiDB 社区联手,在海珠区保利中悦广场 29 楼召开了一次难忘的开源盛宴。这不仅仅是 KCC广州的又一次线下见面,更代表着与 TiDB 社区及广州技术社区的首次深度合作。 活动的策划与组织由 KCC广州负责人 - 惠世冀、PingCAP 的…...

CSS3 分页、框大小、弹性盒子
一、CSS3分页: 网站有很多个页面,需要使用分页来为每个页面做导航。示例: <style> ul.pagination { display: inline-block; padding: 0; margin: 0; } ul.pagination li {display: inline;} ul.pagination li a { color: black; f…...
GEE问题——GEE中循环的使用map()函数,以提取指定范围内的逐日的二氧化氮平均浓度为例
问题: 我有一个简单的代码,可以帮助计算德克萨斯州每个县的对流层二氧化氮平均浓度。目前,我可以将其导出为我指定的任何日期范围的 csv 表,但我想 1) 提取每天平均值,例如 3 个月(2020 年 3 月至 2020 年 5 月,约 90 天)--手动多次运行肯定不是办法,而且我的编码技…...

短信验证码实现(阿里云)
如果实现短信验证,上教程,这里用的阿里云短信服务 短信服务 (aliyun.com) 进入短信服务后开通就行,可以体验100条免费,刚好测试用 这里由自定义和专用,测试的话就选择专用吧,自定义要审核, Se…...
如何对element弹窗进行二次封装
方式一使用$refs 个人比较喜欢用这种的 通过$refs打开的同时 还能给弹窗组件传参 一些框架使用的也是这种方式 父组件 <template><div><el-button type"text" click"handleDialogOpen">打开嵌套表单的 Dialog</el-button><Dia…...

【微服务专题】手写模拟SpringBoot
目录 前言阅读对象阅读导航前置知识笔记正文一、工程项目准备1.1 新建项目1.1 pom.xml1.2 业务模拟 二、模拟SpringBoot启动:好戏开场2.1 启动配置类2.1.1 shen-base-springboot新增2.1.2 shen-example客户端新增启动类 三、run方法的实现3.1 步骤一:启动…...

七个优秀微服务跟踪工具
随着微服务架构复杂性的增加,在问题出现时确定问题的根本原因变得更具挑战性。日志和指标为我们提供了有用的信息,但并不能提供系统的完整概况。这就是跟踪的用武之地。通过跟踪,开发人员可以监控微服务之间的请求进度,从而使他们…...
redis 问题解决 1
1.1 常见考点 1、Redis 为何这么快? Redis 是一款基于内存的数据结构存储系统,它之所以能够提供非常快的读写性能,主要是因为以下几个方面的原因: 基于内存存储:Redis 所有的数据都存储在内存中,而内存的访问速度比磁盘要快得多。因此,Redis 可以提供非常快的读写性能…...
odoo16前端框架源码阅读——启动、菜单、动作
odoo16前端框架源码阅读——启动、菜单、动作 目录:addons/web/static/src 1、main.js odoo实际上是一个单页应用,从名字看,这是前端的入口文件,文件内容也很简单。 /** odoo-module **/import { startWebClient } from "…...

C/C++(a/b)*c的值 2021年6月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析
目录 C/C(a/b)*c的值 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C(a/b)*c的值 2021年6月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 给定整数a、b、c,计算(a / b)*c的值&…...

CIFAR-100数据集的加载和预处理教程
一、CIFAR-100数据集介绍 CIFAR-100(Canadian Institute for Advanced Research - 100 classes)是一个经典的图像分类数据集,用于计算机视觉领域的研究和算法测试。它是CIFAR-10数据集的扩展版本,包含了更多的类别,用…...

C#,数值计算——函数计算,Eulsum的计算方法与源程序
1 文本格式 using System; namespace Legalsoft.Truffer { public class Eulsum { private double[] wksp { get; set; } private int n { get; set; } private int ncv { get; set; } public bool cnvgd { get; set; } pri…...

ChatGLM3 langchain_demo 代码解析
ChatGLM3 langchain_demo 代码解析 0. 背景1. 项目代码结构2. 代码解析2-1. utils.py2-2. ChatGLM3.py2-3. Tool/Calculator.py2-4. Tool/Weather.py2-5. main.py 0. 背景 学习 ChatGLM3 的项目内容,过程中使用 AI 代码工具,对代码进行解释,…...

asp.net学院网上报销系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio
一、源码特点 asp.net学院网上报销系统是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使用c#语言 开发 asp.net学院网上报销系统 应用技术…...

ElasticSearch知识点
什么是ElasticSearch ElasticSearch: 智能搜索,分布式的搜索引擎,是ELK的一个非常完善的产品,ELK代表的是: E就是ElasticSearch,L就是Logstach,K就是kibana Elasticsearch是一个建立在全文搜索引擎 Apache Lucene基础…...

STM32 GPIO
STM32 GPIO GPIO简介 GPIO(General Purpose Input Output)通用输入输出口,也就是我们俗称的IO口 根据使用场景,可配置为8种输入输出模式 引脚电平:0V~3.3V,部分引脚可容忍5V 数据0就是低电平,…...
Electron 开发页面应用
简介 Electron集成了包括chromium(理解为具备chrom浏览器的工具),nodejs,native apis chromium:支持最新特性的浏览器。 nodejs:js运行时,可实现文件读写等。 native apis :提供…...
CSDN写博文的128天
起因 为什么要写博文? 写博文是因为当我还是编程小白时,我那会啥也不懂,不懂函数调用,不懂指针,更不懂结构体,别更说Linux,平时不会也没有可以问的人,也幸好有CSDN,遇到…...

Linux学习教程(第二章 Linux系统安装)1
第二章 Linux系统安装 学习 Linux,首先要学会搭建 Linux 系统环境,也就是学会在你的电脑上安装 Linux 系统。 很多初学者对 Linux 望而生畏,多数是因为对 Linux 系统安装的恐惧,害怕破坏电脑本身的系统,害怕硬盘数据…...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...