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

一、创建项目

  • 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.mzph.cn/news/136805.shtml

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

相关文章

docker部署es+kibana

es 暴露的端口特别多 &#xff0c;十分耗内存&#xff0c;数据一般要放置到安全目录&#xff0c;挂载 官网推荐的命令&#xff1a;docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" elasticsearch…

高能数造电池3D打印智能制造小试线,开启全固态电池数字化新时代

在科技创新的浪潮中&#xff0c;电池制造领域又迎来了一次突破性的进展。近日&#xff0c;高能数造(西安)技术有限公司重磅推出了其最新电池数字制造装备——全固态电池3D打印智能制造小试线 &#xff0c;这一创新性的技术开启了全固态电池的数字化智造新时代&#xff0c;为全固…

如何在时间循环里最优决策——时间旅行者的最优决策

文章目录 每日一句正能量前言时间旅行和平行宇宙强化学习策略梯度算法代码案例推荐阅读赠书活动 每日一句正能量 做一个决定&#xff0c;并不难&#xff0c;难的是付诸行动&#xff0c;并且坚持到底。 前言 时间循环是一类热门的影视题材&#xff0c;其设定常常如下&#xff1…

Pycharm加载项目时异常,看不到自己的项目文件

最近看到一个朋友问&#xff0c;他把项目导入pycharm为什么项目里的包不在项目里显示&#xff0c;只在projects file里显示&#xff1f;问题截图如下&#xff1a; Project里看不到自己的项目文件 只能在Project Files里看到自己的项目文件 问题解答 我也是偶然发现的这个方案…

jQuery中显示与隐藏

在我们jQuery当中&#xff0c;有多个显示隐藏的方法&#xff0c;本篇介绍一下hide()、show()、toggle() 在我们JS当中&#xff0c;或是CSS当中&#xff0c;我们常用到display:none或block; 在我们jQuery当中&#xff0c;我们该如何实现显示隐藏 在我们jQuery当中&#xff0c;我…

Linux CentOS 8(HTTPS的配置与管理)

Linux CentOS 8&#xff08;HTTPS的配置与管理&#xff09; 目录 一、HTTPS 介绍二、SSL 证书的介绍三、实验配置 一、HTTPS 介绍 HTTPS 在 HTTP 的基础下加入 SSL&#xff0c;SSL 是“Secure Sockets Layer”的缩写&#xff0c;中文为“安全套接层”。因此 HTTPS 是以安全为目…

【Unity ShaderGraph】| 物体靠近时局部溶解,根据坐标控制溶解的位置【文末送书】

前言 【Unity ShaderGraph】| 物体靠近时局部溶解&#xff0c;根据坐标控制溶解的位置一、效果展示二、根据坐标控制溶解的位置&#xff0c;物体靠近局部溶解三、应用实例&#x1f451;评论区抽奖送书 前言 本文将使用ShaderGraph制作一个根据坐标控制溶解的位置&#xff0c;物…

如何用Java实现一个基于机器学习的情感分析系统,用于分析文本中的情感倾向

背景&#xff1a;练习两年半&#xff08;其实是两周半&#xff09;&#xff0c;利用工作闲余时间入门一下机器学习&#xff0c;本文没有完整的可实施的案例&#xff0c;由于知识体系不全面&#xff0c;目前代码只能运行&#xff0c;不能准确的预测 卡点&#xff1a; 1 由于过…

技术分享 | app自动化测试(Android)--触屏操作自动化

导入TouchAction Python 版本 from appium.webdriver.common.touch_action import TouchActionJava 版本 import io.appium.java_client.TouchAction;常用的手势操作 press 按下 TouchAction 提供的常用的手势操作有如下操作&#xff1a; press 按下 release 释放 move_…

CentOS Linux 系统镜像

CentOS Linux具有以下特点&#xff1a; 稳定性&#xff1a;CentOS Linux旨在提供一个稳定、可靠的服务器环境&#xff0c;适合用于关键业务应用和生产环境。高效性&#xff1a;CentOS Linux经过优化和调整&#xff0c;可以充分发挥硬件的性能&#xff0c;提高系统的整体效率。…

Rust和isahc库编写代码示例

Rust和isahc库编写的图像爬虫程序的代码&#xff1a; rust use isahc::{Client, Response}; fn main() { let client Client::new() .with_proxy("") .finish(); let url ""; let response client.get(url) .send() …

无线测温系统在电厂的必要性,保障电力系统稳定运行

安科瑞电气股份有限公司 上海嘉定 201801 摘要&#xff1a;采集关键电力设备接电的实时温度&#xff0c;克服有线温度监测系统存在的诸如线路多&#xff0c;布线复杂&#xff0c;维护困难等不足&#xff0c;将无线无源传感器与Zigbee无线通信技术相结合&#xff0c;将物联网技…

关于VUE启动内存溢出

安装node v10.14.2 后 启动公司的VUE项目 使用命令npm run dev 命令 报错&#xff1a; <--- Last few GCs --->[20940:00000244699848E0] 215872 ms: Scavenge 1690.2 (1836.4) -> 1679.6 (1836.4) MB, 5.4 / 0.7 ms (average mu 0.266, current mu 0.253) a…

jQuery中淡入与淡出

在我们jQuery中为我们封装了很多好玩的方法&#xff0c;我为大家介绍一下淡入与淡出&#xff01; 我们需要配合事件来玩淡入淡出 淡出语法&#xff1a;fadeOut([speed,[easing],[fn]) (1)参数都可以省略 (2)speed:三种预定速度之一的字符串(“slow”“normal”or “fast”)或…

阿里云 :推出通义大模型编码助手产品【通义灵码】

本心、输入输出、结果 文章目录 阿里云 &#xff1a;推出通义大模型编码助手产品【通义灵码】前言通义灵码简介主要功能主要功能点 支持的语言和 IDEjetbrains IDEA 安装计费相关弘扬爱国精神 阿里云 &#xff1a;推出通义大模型编码助手产品【通义灵码】 编辑&#xff1a;简简…

ARMday2(环境创建+工程配置+创建文件+单步调试)

目录 一、汇编环境的创建 二、为工程配置链接脚本&#xff08;map.lds&#xff09; 三、为工程创建汇编文件 start.s 编程调试 接下来我们需要建立一个 start.s 汇编文件添加到我们的工程中去 四、对汇编代码进行单步调试&#xff08;仿真&#xff09; 五、汇编工程的编译 …

Node.js中的文件系统(file system)模块

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

记录:Unity脚本的编写5.0

目录 前言创建动画Unity Animation、Animator常用类关于两者的区别Animator 编写脚本 大型连续剧之在untiy中&#xff08;或者别的什么活动&#xff09; 前言 之前在场景中添加了背景音乐&#xff0c;而在我们的日常的体验中&#xff0c;可以发现游戏或者场景中有很多有趣的动…

java通过FTP跨服务器动态监听读取指定目录下文件数据

背景&#xff1a; 1、文件数据在A服务器&#xff08;windows&#xff09;&#xff08;不定期在指定目录下生成&#xff09;&#xff0c;项目应用部署在B服务器&#xff08;Linux&#xff09;&#xff1b; 2、项目应用在B服务器&#xff0c;监听A服务器指定目录&#xff0c;有新…

网络安全之CSRF漏洞原理和实战,以及CSRF漏洞防护方法

一、引言 总体来说CSRF属于一种欺骗行为&#xff0c;是一种针对网站的恶意利用&#xff0c;尽管听起来像跨站脚本&#xff08;XSS&#xff09;&#xff0c;但是与XSS非常不同&#xff0c;并且攻击方式几乎向佐。XSS利用站点内的信任用户&#xff0c;而CSRF则通过伪装来自受信任…