当前位置: 首页 > news >正文

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、进入桌面端再来修改账号和密码

相关文章:

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

CSS3 分页、框大小、弹性盒子

一、CSS3分页&#xff1a; 网站有很多个页面&#xff0c;需要使用分页来为每个页面做导航。示例&#xff1a; <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 天)--手动多次运行肯定不是办法,而且我的编码技…...

短信验证码实现(阿里云)

如果实现短信验证&#xff0c;上教程&#xff0c;这里用的阿里云短信服务 短信服务 (aliyun.com) 进入短信服务后开通就行&#xff0c;可以体验100条免费&#xff0c;刚好测试用 这里由自定义和专用&#xff0c;测试的话就选择专用吧&#xff0c;自定义要审核&#xff0c; 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启动&#xff1a;好戏开场2.1 启动配置类2.1.1 shen-base-springboot新增2.1.2 shen-example客户端新增启动类 三、run方法的实现3.1 步骤一&#xff1a;启动…...

七个优秀微服务跟踪工具

随着微服务架构复杂性的增加&#xff0c;在问题出现时确定问题的根本原因变得更具挑战性。日志和指标为我们提供了有用的信息&#xff0c;但并不能提供系统的完整概况。这就是跟踪的用武之地。通过跟踪&#xff0c;开发人员可以监控微服务之间的请求进度&#xff0c;从而使他们…...

redis 问题解决 1

1.1 常见考点 1、Redis 为何这么快? Redis 是一款基于内存的数据结构存储系统,它之所以能够提供非常快的读写性能,主要是因为以下几个方面的原因: 基于内存存储:Redis 所有的数据都存储在内存中,而内存的访问速度比磁盘要快得多。因此,Redis 可以提供非常快的读写性能…...

odoo16前端框架源码阅读——启动、菜单、动作

odoo16前端框架源码阅读——启动、菜单、动作 目录&#xff1a;addons/web/static/src 1、main.js odoo实际上是一个单页应用&#xff0c;从名字看&#xff0c;这是前端的入口文件&#xff0c;文件内容也很简单。 /** 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&#xff0c;计算(a / b)*c的值&…...

CIFAR-100数据集的加载和预处理教程

一、CIFAR-100数据集介绍 CIFAR-100&#xff08;Canadian Institute for Advanced Research - 100 classes&#xff09;是一个经典的图像分类数据集&#xff0c;用于计算机视觉领域的研究和算法测试。它是CIFAR-10数据集的扩展版本&#xff0c;包含了更多的类别&#xff0c;用…...

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 的项目内容&#xff0c;过程中使用 AI 代码工具&#xff0c;对代码进行解释&#xff0c;…...

asp.net学院网上报销系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

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

ElasticSearch知识点

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

STM32 GPIO

STM32 GPIO GPIO简介 GPIO&#xff08;General Purpose Input Output&#xff09;通用输入输出口&#xff0c;也就是我们俗称的IO口 根据使用场景&#xff0c;可配置为8种输入输出模式 引脚电平&#xff1a;0V~3.3V&#xff0c;部分引脚可容忍5V 数据0就是低电平&#xff0c…...

Electron 开发页面应用

简介 Electron集成了包括chromium&#xff08;理解为具备chrom浏览器的工具&#xff09;&#xff0c;nodejs&#xff0c;native apis chromium&#xff1a;支持最新特性的浏览器。 nodejs&#xff1a;js运行时&#xff0c;可实现文件读写等。 native apis &#xff1a;提供…...

CSDN写博文的128天

起因 为什么要写博文&#xff1f; 写博文是因为当我还是编程小白时&#xff0c;我那会啥也不懂&#xff0c;不懂函数调用&#xff0c;不懂指针&#xff0c;更不懂结构体&#xff0c;别更说Linux&#xff0c;平时不会也没有可以问的人&#xff0c;也幸好有CSDN&#xff0c;遇到…...

Linux学习教程(第二章 Linux系统安装)1

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

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...