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

news2024/11/26 1:59:03

一、创建项目

  • 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=/system
    
    test.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;
    
        @Autowired
        Environment 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=true
    
    nacos.core.auth.server.identity.key=nacos
    nacos.core.auth.server.identity.value=nacos
    
    nacos.core.auth.plugin.nacos.token.secret.key=OGQ2ZTNmMDQ4MjVjNGQ0OTg4YzZjMGE1NDE4MDgwMTE=
    
  • 3、进入桌面端再来修改账号和密码

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

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

相关文章

Maven-依赖管理机制

一、背景和起源 依赖管理是Maven的一个核心功能。管理单个模块项目的依赖相对比较容易&#xff0c;但是如果是多模块项目或者有几百个模块的项目就是一个巨大的挑战。 如果手动构建项目&#xff0c;那么就先需要梳理各个模块pom中定义的依赖和版本&#xff0c;然后进行下载到本…

C++模拟实现set和map

1.看源码&#xff0c;简单了解原码的set和map类的结构 1.看类的私有成员和类模板的参数&#xff1a; 看下面我画的一些框&#xff0c;再结合上面的看一下&#xff0c;会有什么疑惑呢&#xff1f; 一般我们知道编译器底层的代码会很简洁&#xff0c;不会多创建无意义的内容&am…

【使用教程】在Ubuntu下PMM60系列一体化伺服电机通过PDO跑循环同步位置模式详解

本教程将指导您在Ubuntu操作系统下使用PDO来配置和控制PMM60系列一体化伺服电机以实现循环同步位置模式。我们将介绍必要的步骤和命令&#xff0c;以确保您能够成功地配置和控制PMM系列一体化伺服电机。 一、准备工作 在正式介绍之前还需要一些准备工作&#xff1a;1.装有lin…

环保壁炉:酒精壁炉的生态优势

环保已经成为一个备受重视的话题。我们都希望采用更环保的能源&#xff0c;以减少对地球的影响。而酒精壁炉作为一种新型的取暖方式&#xff0c;正受到越来越多人的喜爱&#xff0c;因为它们代表了一种清洁能源的选择。 酒精壁炉的独特之处在于它们使用酒精作为燃料。这种酒精…

NFT数字藏品(交易平台)系统开发

随着数字技术和区块链技术的发展&#xff0c;NFT数字藏品交易平台系统开发逐渐成为了一个热门话题。NFT&#xff0c;即非同质化代币&#xff0c;可以用来代表独一无二的数字资产&#xff0c;如图片、音频、视频等&#xff0c;在数字世界中具有极高的价值。本文将介绍NFT数字藏品…

11.10论文写作与格式

格式 文章题目&#xff1a;&#xff08;三号、黑体、加粗&#xff0c;居中&#xff09; 摘要&#xff1a;这两个大字要&#xff08;黑体、小四、加粗&#xff0c;左对齐&#xff09;&#xff1b;内容为(宋体、小四) 关键词&#xff1a;三个字为(黑体、小四、加粗&#xff0c…

动作捕捉系统通过SDK与LabVIEW通信

运动分析、VR、机器人等应用中常使用LabVIEW对动作捕捉数据进行实时解算。NOKOV度量动作捕捉系统支持通过SDK与LabVIEW进行通信&#xff0c;将动作数据传入LabVIEW。 一、软件设置 1、形影软件设置 1、将模式切换到后处理模式 2、加载一个刚体数据 3、打开软件设置 4、选择网…

NFT Insider112:Gucci Cosmos LAND亮相 The Sandbox,和YGG一起探索Web3增长新方式

引言&#xff1a;NFT Insider由NFT收藏组织WHALE Members(https://twitter.com/WHALEMembers)、BeepCrypto&#xff08;https://twitter.com/beep_crypto&#xff09;联合出品&#xff0c;浓缩每周NFT新闻&#xff0c;为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周…

实现智慧工地的高效建筑管理,数据分析起着关键作用!

智慧工地是利用物联网、云计算、大数据等技术&#xff0c;实现对建筑工地实时监测、管理和控制的一种新型建筑管理方式。 智慧工地架构&#xff1a; 1、终端层&#xff1a;充分利用物联网技术、移动应用、智能硬件设备提高现场管控能力。通过RFID、传感器、摄像头、手机等终端…

KiB、MiB与KB、MB的区别

KiB、MiB与KB、MB的区别

vue3 + antd 图片上传 (精简篇)cv即可

使用antd组件库里的 a-upload 上传图片 template代码&#xff1a; <a-upload name"idCardzm" list-type"picture-card" class"avatar-uploader" :show-upload-list"false":before-upload"beforeUpload" :customRequest…

喜报!华为云金融PaaS3.0荣获“2023年应用现代化典型案例”称号

中国软件行业协会近期启动了2023“应用现代化产业实践”优秀案例征集活动&#xff0c;旨在加快推动应用现代化发展与推广应用&#xff0c;形成行业应用带动和示范作用&#xff0c;打造应用现代化软件名企、名品&#xff0c;凝聚行业资源&#xff0c;助力我国行业应用现代化高质…

mac使用VMware Fusion安装Centos 7系统

mac主机芯片&#xff1a;Apple M2 Pro VMware-Fusion&#xff1a;13.5 centos&#xff1a;7 第一次操作&#xff1a; 按步骤选择操作系统 在选择虚拟启动虚拟机没有安装centos的界面 而是下图 改动&#xff1a;把UEFI换成BIOS ——>无果 第二次操作&#xff1a; 直接…

国际阿里云:无法ping通ECS实例公网IP的排查方法!!!

无法ping通ECS实例的原因较多&#xff0c;您可以参考本文进行排查。 问题现象 本地客户端无法ping通目标ECS实例公网IP&#xff0c;例如&#xff1a; 本地客户端为Linux系统&#xff0c;ping目标ECS实例公网IP时无响应&#xff0c;如下所示&#xff1a; 本地客户端为Windo…

实时疫情地图及全国监测动态大屏可视化【可视化项目案例-02】

🎉🎊🎉 你的技术旅程将在这里启航! 🚀🚀 本文选自专栏:可视化技术专栏100例 可视化技术专栏100例,包括但不限于大屏可视化、图表可视化等等。订阅专栏用户在文章底部可下载对应案例源码以供大家深入的学习研究。 🎓 每一个案例都会提供完整代码和详细的讲解,不…

【poi导出excel模板——通过建造者模式+策略模式+函数式接口实现】

poi导出excel模板——通过建造者模式策略模式函数式接口实现 poi导出excel示例优化思路代码实现补充建造者模式策略模式 poi导出excel示例 首先我们现看一下poi如何导出excel&#xff0c;这里举个例子&#xff1a;目前想要导出一个Map<sex,List>信息&#xff0c;sex作为…

竞赛选题 深度学习疲劳驾驶检测 opencv python

文章目录 0 前言1 课题背景2 实现目标3 当前市面上疲劳驾驶检测的方法4 相关数据集5 基于头部姿态的驾驶疲劳检测5.1 如何确定疲劳状态5.2 算法步骤5.3 打瞌睡判断 6 基于CNN与SVM的疲劳检测方法6.1 网络结构6.2 疲劳图像分类训练6.3 训练结果 7 最后 0 前言 &#x1f525; 优…

RFID智慧物流设计解决方案

物流行业需求 物流是将物质资料从供应者运送到需求者的物理运动过程&#xff0c;涉及运输、保管、包装、装卸、流通加工、配送以及信息等多个基本活动的统一整合&#xff0c;在经济全球化和电子商务的推动下&#xff0c;快递物流和医药物流成为现代物流的两大重要产业。随着智…

Python编程——模块、包和__init__.py

1. 模块 Python中的一个文件即为一个模块(Module)&#xff0c;一个模块引用另外一个模块的变量、函数或类时&#xff0c;使用import来导入。模块名即文件名。 如fibo.py 文件下有如下代码&#xff1a; def fib(n): # write Fibonacci series up to na, b 0, 1while a <…

(五)Spring源码解析:ApplicationContext解析

一、概述 1.1> 整体概览 在前面的内容中&#xff0c;我们针对BeanFactory进行了深度的分析。那么&#xff0c;下面我们将针对BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与BeanFactory的功能相似&#xff0c;都是用于向IOC中加载Bean的。…