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

SpringCloudAlibaba技术栈-Nacos

1、什么是Nacos?

Nacos是个服务中心,就是你项目每个功能模块都会有个名字,比如支付模块,我们先给这个模块起个名字就叫paymentService,然后将这个名字和这个模块的配置放到Nacos中,其他模块也是这样的。好处是这样能更好地管理项目每个模块(简直是废话),具体地来说可以更方面地管理每个模块的配置信息,能随时修改模块的配置信息。

2、部署Nacos

(1)Linux环境下下载安装JDK17

使用阿里云下载:

wget https://mirrors.aliyun.com/jdk/jdk-17_linux-x64_bin.tar.gz

 

(2)文件解压

 tar -zxvf jdk-17_linux-x64_bin.tar.gz -C /usr/local

(3)修改/etc/profile配置文件。

 sudo vim /etc/profile

 在配置文件最下面添加下面的配置,因为nacos是Java写的。

 export JAVA_HOME=/usr/local/jdk-17.0.5export PATH=$PATH:${JAVA_PATH}/bin

(4)配置文件生效一下

 source /etc/profile

 (5)下载nacos

​wget http://mirrors.aliyun.com/nacos/nacos-server-2.2.3.tar.gz

  或者下载完使用xftp上传到linux:Releases · alibaba/nacos

(6)解压文件

 tar -zxvf nacos-server-2.2.3.tar.gz -C /usr/local

(7)启动nacos

   进入nacos下面的bin文件,执行命令如下:

 ./startup.sh -m standalone 

(8)关闭防火墙

            懒得写。不关访问不了。

(9)浏览器访问nacos

              http://192.168.47.100:8848/nacos

 

3、nacos数据持久化(将nacos数据放到MySQL数据库中)

(1)MySQL数据库的下载安装,navicat连接MySQL,连接完创建个mynacos数据库

nacos自带的数据库不用管,直接在linux下面安装个MySQL数据库。

见:生产环境部署与协同开发 Linux_生产环境发布流程详解 csdn-CSDN博客

(2)在数据库创建nacos相关的表

找到/usr/local/nacos/conf下面的mysql-schema.sql文件,使用

cat mysql-schema.sql

获取表的信息,然后复制,在navicat中的mynacos库运行SQL语句出来获得N张表。 

(3)修改nacos的配置文件

同样是在该文件下

vim application.properties

添加如下配置

#使用MySQL数据库spring.sql.init.platform=mysql### Count of DB:db.num=1### Connect URL of DB:db.url.0=jdbc:mysql://127.0.0.1:3306/mynacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTCdb.user.0=rootdb.password.0=123456### Connection pool configuration: hikariCP
db.pool.config.connectionTimeout=30000
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2

 注意修改数据库为mynacos

4、创建项目将项目模块注册到Nacos

(1)创建父项目

 (2)最好是改下maven仓库要不然都下载到C盘了

        具体的老生常谈不说了。需要注意的是在创建新项目的时候最好也一起改一下。

(3)再把下面的依赖添加进去

    <!--版本统一--><properties><dubbo.version>3.2.4</dubbo.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>17</java.version><spring-boot.version>3.0.2</spring-boot.version><spring-cloud.version>2022.0.0</spring-cloud.version><spring-cloud-alibaba.version>2022.0.0.0</spring-cloud-alibaba.version><lombok.version>1.8.28</lombok.version></properties><!-- 依赖声明 --><dependencyManagement><dependencies><!-- SpringCloud 微服务 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><!-- SpringCloud Alibaba 微服务 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency><!-- SpringBoot 依赖配置 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><!-- lombok 依赖配置 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}}</version></dependency><!-- Dubbo --><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-bom</artifactId><version>${dubbo.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><!-- bootstrap 启动器 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>${java.version}</source><target>${java.version}</target><encoding>${project.build.sourceEncoding}</encoding></configuration></plugin></plugins></build><!--依赖包阿里镜像仓库--><repositories><repository><id>public</id><name>aliyun nexus</name><url>https://maven.aliyun.com/repository/public</url><releases><enabled>true</enabled></releases></repository></repositories><!--插件的镜像仓库--><pluginRepositories><pluginRepository><id>public</id><name>aliyun nexus</name><url>https://maven.aliyun.com/repository/public</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></pluginRepository></pluginRepositories>
</project>

 修改项目为父项目

<!--    设置当前的项目为父亲项目--><packaging>pom</packaging>

 (4)修改字符编码

File->Settings->Editor->File Encodings

(5)项目工程开启DashBoard

在项目文件目录找到.idea目录并在workspace. xml中添加下面的配置。

<component name="RunDashboard"><option name="ruleStates"><list><RuleState><option name="name" 
value="ConfigurationTypeDashboardGroupingRule" 
/></RuleState><RuleState><option name="name" 
value="StatusDashboardGroupingRule" /></RuleState></list></option><!-- 新增的配置 --><option name="configurationTypes"><set><option 
value="SpringBootApplicationConfigurationType" 
/></set></option></component>

(6)创建支付模块

就拿这个举了例子。在testCloud2上面右键创建moudle,叫paymentservice.

(7)在支付模块下引入依赖

    <dependencies><!--springboot依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--nacos配置中心--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!--nacos依赖包,discovery实现服务的注册和发现--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency></dependencies>

配置中心就是把这个模块的配置文件交给nacos管理,这样方面以后更换生产环境直接换就行。

服务发现模块就是能找到其他模块或者让其他模块找到支付模块,实现调用。

(8)配置启动类

@SpringBootApplication
@EnableDiscoveryClient   //服务发现
public class paymentApplication
{public static void main( String[] args ){SpringApplication.run(paymentApplication.class, args);}
}

(9)Nacos创建NameSpace

现如今,在微服务体系中,一个系统往往被拆分为多个服务,每个 服务都有自己的配置文件,然后每个系统往往还会准备开发环境、 测试环境、正式环境。假设某系统有10个微服务,那么至少有10个 配置文件吧,三个环境(dev/test/prod),那就有30个配置文 件需要进行管理。命名空间可用于进行不同环境的配置隔离。一般一个环境划分 到一个命名空间。

(10)DataID配置

一个系统或者应用可以 包含多个配置集,每个配置集都可以被一个有意义的名称标识。说人话就是每个功能模块的配置文件的名字,相当于就是把之前springboot的文件放到了nacos上面,每个配置文件都有一个DataID。

dataId的拼接格式:

 在配置中心创建paymentservice的配置文件:

spring:application:name: paymentservicecloud:nacos:discovery:
#        配置nacos的地址,将服务注册到nacosserver-addr: 192.168.66.100:8848
server:port: 8001
hello:message: hello nacos

创建完成发布即可。

 

(11)Group分组方案

暂略。

(12)在支付模块下创建bootstrap.yml配置文件

spring:#  哪个环境下的配置文件?开发环境下的profiles:active: devapplication:#   该开发环境下的哪个服务?name: paymentservicecloud:nacos:config:#       nacos配置中心地址,nacos位置server-addr: 192.168.66.100:8848#        指定使用的配置文件的命名空间namespace: 4593f0a3-c67b-4eae-b867-f6b21bf98d15#        配置文件的后缀file-extension: yaml#        应用的名字prefix: ${spring.application.name}#        指定配置文件在哪个群组group: DEFAULT_GROUP

5、测试启动项目

package com.zj.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 Hello {@Value("${hello.message}")private String message;   //获取配置文件信息@GetMapping("/hello")public String getMessage() {return message;}

 切换到public

正确读取配置文件的信息,所以配置文件生效。 

 6、 Nacos集群

暂略

相关文章:

SpringCloudAlibaba技术栈-Nacos

1、什么是Nacos&#xff1f; Nacos是个服务中心&#xff0c;就是你项目每个功能模块都会有个名字&#xff0c;比如支付模块,我们先给这个模块起个名字就叫paymentService,然后将这个名字和这个模块的配置放到Nacos中&#xff0c;其他模块也是这样的。好处是这样能更好地管理项…...

Redis篇--常见问题篇4--大Key(Big Key,什么是大Key,影响及使用建议)

1、概述 大Key&#xff1a;通常是指值&#xff08;Value&#xff09;的长度非常大&#xff0c;实际上键&#xff08;Key&#xff09;长度很大也算。通常来说&#xff0c;键本身不会很长&#xff0c;占用的内存较少&#xff0c;因此判断一个键是否为bigKey主要看它对应的值的大…...

谷歌浏览器 Chrome 提示:此扩展程序可能很快将不再受支持

问题现象 在Chrome 高版本上的扩展管理页面&#xff08;地址栏输入chrome://extensions/或者从界面进入&#xff09;&#xff1a; &#xff0c; 可以查看到扩展的情况。 问题现象大致如图: 问题原因 出现此问题的根本原因在于&#xff1a;谷歌浏览器本身的扩展机制发生了…...

WebRTC服务质量(10)- Pacer机制(02) RoundRobinPacketQueue

WebRTC服务质量&#xff08;01&#xff09;- Qos概述 WebRTC服务质量&#xff08;02&#xff09;- RTP协议 WebRTC服务质量&#xff08;03&#xff09;- RTCP协议 WebRTC服务质量&#xff08;04&#xff09;- 重传机制&#xff08;01) RTX NACK概述 WebRTC服务质量&#xff08;…...

数据库的数据被清除了,该如何恢复?

当数据库的数据被清除时&#xff0c;恢复数据的难度和可能性取决于多种因素&#xff0c;包括数据清除的方式、数据库的类型、是否有备份等。以下是一些常见的数据库数据恢复方法&#xff1a; 一、基于备份的恢复 使用备份文件&#xff1a; 如果数据库有定期的备份&#xff0c…...

【西安电子科技大学考研】25官方复试专业课参考书目汇总

初试已经顺利考完啦、成绩已经公布&#xff0c;现在已经有很多同学来问学长学姐&#xff0c;复试参考书有哪些&#xff0c;复试应该做好哪些准备。故此学长学姐给大家整理好了西安电子科技大学各个学院的复试参考书目录&#xff0c;有需要的同学可以参考一下哈。大家可以结合本…...

【理解机器学习中的过拟合与欠拟合】

在机器学习中&#xff0c;模型的表现很大程度上取决于我们如何平衡“过拟合”和“欠拟合”。本文通过理论介绍和代码演示&#xff0c;详细解析过拟合与欠拟合现象&#xff0c;并提出应对策略。主要内容如下&#xff1a; 什么是过拟合和欠拟合&#xff1f; 如何防止过拟合和欠拟…...

fastjson诡异报错

1、环境以及报错描述 1.1 环境 操作系统为中标麒麟、cpu 为国产鲲鹏服务器。 jdk为openjdk version 1.8.0._242 1.2 错误 com.alibaba.fastjson2.JSONException: syntax error : f at com.alibaba.fastjson2.JSONReaderUTF16.readBoolValue(JSONReaderUTF16.java:6424) at c…...

面经zhenyq

如何去实现分层的动画效果&#xff1f; 在Unity中实现分层的动画效果&#xff0c;可以通过Animator的 Layer 功能实现。以下是详细步骤&#xff1a; 1. 什么是分层动画&#xff1f; 分层动画允许在同一个角色的不同部分同时播放独立的动画。例如&#xff1a; 上半身可以播放…...

GoFrame框架介绍

GoFrame是一款功能强大、设计精良且易用的Go语言开发框架&#xff0c;以下为你详细介绍它的相关特点和内容&#xff1a; ### 框架概述 GoFrame是为了提升Go语言开发者的编码效率以及项目的整体可维护性、可扩展性等而打造的开发框架&#xff0c;它涵盖了从基础的网络通信、数据…...

MapReduce工作流程+Shuffle机制

一、Mapreduce工作流程 &#xff08;1&#xff09;数据切片Split。数据切片数决定maptask并行度&#xff0c;默认情况下&#xff0c;一个切片大小块大小。切片不是针对整体数据集&#xff0c;而是针对每一个文件单独切片&#xff0c;所以会有小文件问题&#xff08;CombineTex…...

JAVA8 Stream API 使用详解

Java 8 引入了 Stream API&#xff0c;它提供了对集合对象进行一系列操作的新方式&#xff0c;包括筛选、转换、聚合等。Stream API 的设计目标是提供一种高效且易于使用的处理集合数据的方式&#xff0c;同时支持并行处理。 以下是 Java 8 Stream API 的一些核心概念和使用详解…...

Redis 集群架构:高可用与扩展性

一、引言 在当今数字化时代&#xff0c;数据量呈爆炸式增长&#xff0c;对数据存储和处理的要求也越来越高。Redis作为一款高性能的键值对存储数据库&#xff0c;其集群架构在应对高并发、大数据量场景时展现出了独特的优势&#xff0c;成为众多企业构建高效、稳定系统的关键技…...

Redis数据对象

基本结构图 key和value指向的是redisObject对象 type&#xff1a;标识该对象用的是什么类型&#xff08;String、List Redis数据结构 SDS SDS有4个属性&#xff1a; len&#xff1a;记录了字符串长度&#xff0c;因此获取字符串长度的时候时间复杂度O&#xff08;1&#xff…...

Docker部署GitLab服务器

一、GitLab介绍 1.1 GitLab简介 GitLab 是一款基于 Git 的开源代码托管平台&#xff0c;集成了版本控制、代码审查、问题跟踪、持续集成与持续交付&#xff08;CI/CD&#xff09;等多种功能&#xff0c;旨在为团队提供一站式的项目管理解决方案。借助 GitLab&#xff0c;开发…...

python版本的Selenium的下载及chrome环境搭建和简单使用

针对Python版本的Selenium下载及Chrome环境搭建和使用&#xff0c;以下将详细阐述具体步骤&#xff1a; 一、Python版本的Selenium下载 安装Python环境&#xff1a; 确保系统上已经安装了Python 3.8及以上版本。可以从[Python官方网站]下载并安装最新版本的Python&#xff0c;…...

重温设计模式--4、组合模式

文章目录 1 、组合模式&#xff08;Composite Pattern&#xff09;概述2. 组合模式的结构3. C 代码示例4. C示例代码25 .应用场景 1 、组合模式&#xff08;Composite Pattern&#xff09;概述 定义&#xff1a;组合模式是一种结构型设计模式&#xff0c;它允许你将对象组合成…...

5、mysql的读写分离

主从复制 主从复制的含义 主从复制&#xff1a;在一个mysql的集群当中&#xff0c;至少3台&#xff0c;即主1台&#xff0c;从2台。 当有数据写入时&#xff0c;主负责写入本库&#xff0c;然后把数据同步到从服务器。 一定是在主服务器写入数据&#xff0c;从服务器的写入…...

uniapp Native.js原生arr插件服务发送广播到uniapp页面中

前言 最近搞了个设备&#xff0c;需求是读取m1卡&#xff0c;厂家给了个安卓原生demo&#xff0c;接入arr插件如下&#xff0c;接入后发现还是少了一部分代码&#xff0c;设备服务调起后触发刷卡无法发送到uniapp里。 中间是一些踩坑记录&#xff0c;最后面是解决办法&#xf…...

如何在 Ubuntu 22.04 上安装 Elasticsearch

简介 在本教程中&#xff0c;你将学习如何在 Ubuntu 22.04 服务器上安装 Elasticsearch。此外&#xff0c;你还将学习如何使用 Elasticsearch REST API 索引和操作数据。 Elasticsearch 是一个基于 Apache Lucene Library 的免费分布式搜索和分析引擎。它是一个快速且可扩展的…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...