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 系统安装的恐惧,害怕破坏电脑本身的系统,害怕硬盘数据…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...
0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
是不是受够了安装了oracle database之后sqlplus的简陋,无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话,配置.bahs_profile后也能解决上下翻页这些,但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可,…...

Linux 下 DMA 内存映射浅析
序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存,但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程,可以参考这篇文章,我觉得写的非常…...
shell脚本质数判断
shell脚本质数判断 shell输入一个正整数,判断是否为质数(素数)shell求1-100内的质数shell求给定数组输出其中的质数 shell输入一个正整数,判断是否为质数(素数) 思路: 1:1 2:1 2 3:1 2 3 4:1 2 3 4 5:1 2 3 4 5-------> 3:2 4:2 3 5:2 3…...

java 局域网 rtsp 取流 WebSocket 推送到前端显示 低延迟
众所周知 摄像头取流推流显示前端延迟大 传统方法是服务器取摄像头的rtsp流 然后客户端连服务器 中转多了,延迟一定不小。 假设相机没有专网 公网 1相机自带推流 直接推送到云服务器 然后客户端拉去 2相机只有rtsp ,边缘服务器拉流推送到云服务器 …...