微服务SpringCloud Alibaba组件nacos教程(一)【详解naocs基础使用、服务中心配置、集群配置,附有案例+示例代码】
一.Nacos教程
文章目录
- 一.Nacos教程
- 1.1 Nacos简介
- 1.2 nacos基本使用
- 直接下载打包服务
- 源码方式启动
- 1.3 创建nacos客服端
- 1.4 nacos集群配置
- 1.5 nacos配置中心
1.1 Nacos简介
nacos是spring cloud alibaba生态中非常重要的一个组件,它有两个作用:
- 1:注册与发现中心;
- 2:配置中心
nacos有注册中心的作用,我们常见的配置中心还有zk和eureka
官网:https://nacos.io/zh-cn/index.html
微服务CAP原则:
- C(consistency):一致性,同一时刻的同一请求的实列返回结果相同,属于强一致性,也就是说,在集群环境中,对外提供的服务的信息是完全一致的,但是在下效率上可能会有一定的损耗。
- A(availability): 可用性,所有实列的读写请求在一定时间内可以得到正确的响应,它是弱一致性,可能在极短的时间内,不同实列获取到的信息是不一致的。但是服务可用并且最终数据是一致的;
- P(Partition tolerance): 分区容错性,在网络异常的情况下,仍能够提供正常的响应,这是微服务系统中必要保证的。

nacos在启动时,默认是AP模式,可以通过指令将nacos变为CP模式,在我们经常使用的微服务中,我们是选择使用AP模式的,此时的所有实例都属于临时实例。临时实例和持久实例最显著的区别就是在健康检查发现服务有问题时,持久实例被标注为不健康,而临时实例会直接剔除。
1.2 nacos基本使用
nacos大体分为两部分:nacos服务端和nacos客户端,首先是nacos服务端 ,这一部分是不需要做任何改动,直接启动服务即可。有两种方式,一种是直接下载打包好的服务,直接通过命令运行即可;一种是下载nacos源码,然后进行启动(nacos是普通的spring boot项目)。
直接下载打包服务
第一步,去nacos官网下载对应环境的服务端项目,下载地址是:Releases · alibaba/nacos ·GitHub,但是需要注意一点,目前在nacos官网(Nacos 快速开始)中,推荐使用的nacos版本是2.0.3

下载完毕以后进行解压(不要有中文路径),进入到bin目录

命令启动:
.\startup.cmd -m standalone 后缀standalone指的是以单例的方式进行启动
也可以新建记事本如start.txt,将上述命令复制在记事本中,保存,然后将txt后缀改成.bat后缀。下次启动时直接双击start.bat文件即可。


浏览器访问该地址:

注意:登录账号密码为 nacos/nacos
源码方式启动
略 (繁琐)
1.3 创建nacos客服端
idea创建springboot项目。最外层cloud-alibaba-test02为普通的maven项目,bill-consumer-7790,bill-provider-7780为普通的spring boot项目。(分布式)

【引入依赖】

<spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
【启动类添加注解】
@EnableDiscoveryClient // 开启nacos服务发现功能
【application.yml进行配置】
server:port: 7780spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/smbms?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNullusername: xxxxpassword: xxxxapplication:name: bill-provider #注册中心注册服务名称cloud:nacos:discovery:server-addr: 127.0.0.1:8848
server:port: 7790spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/smbms?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNullusername: xxxxpassword: xxxxapplication:name: bill-consumer #注册中心注册服务名称cloud:nacos:discovery:server-addr: 127.0.0.1:8848
分别启动bill-consumer-7790,bill-provider-7780


alibaba与boot对应版本

1.4 nacos集群配置
Nacos集群默认最小要有三个节点,而且三个节点的配置中心的数据都需要存储在MySQL数据库中。
在MySql数据库中,创建数据库nacos_conf,并在nacos的conf目录下找到nacos-mysql.sql文件导入数据库


修改application.properties文件,打开数据库连接并修改连接信息


在conf目录下,修改文件名cluster.conf.example为cluster.conf

编辑cluster.conf文件信息如下: IP(可使用ipconfig查看自己的IP地址)+端口号

复制nacos文件夹复制两份(nacos最小3个节点)

修改nacos2.0.3_2端口为8858,修改nacos2.0.3_3端口为8868
依次启动nacos2.0.3_1,nacos2.0.3_2,nacos2.0.3_3
进入bin目录下,双击启动startup.cmd (默认以集群模式启动)

访问:http://192.168.137.1:8868/nacos/index.html

启动bill-7780-provider


可以看到在8868端口号下,bill-peoviderd服务能注册成功,此时bill-7780-provider对应的端口号的是8848。

1.5 nacos配置中心
nacos同spring-cloud-config一样,可以作为一个配置中心,统一的来管理配置,可以配置多套环境,各个微服务可以按需到nacos配置中心拉取相关配置,且支持动态刷新@RefreshScope
1.进入nacos控制台创建命名空间
注意:命名空间以后在开发中可以区分为 开发、测试、生产 等环境。



2.在cs命名空间下 创建yaml文件


然后点击发布,返回。


以bill-provider-7781项目演示:(单节点演示)
引入依赖
<!-- nacos配置中心-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency><!--开启Spring Cloud 应用程序启动时加载bootstrap配置文件--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId><version>3.1.4</version></dependency>
【创建bootstrap.yml】
#读取nacos配置中心文件
server:port: 7781spring:application:name: bill-provider #注册中心注册服务名称profiles:active: devcloud:nacos:discovery:server-addr: 127.0.0.1:8848username: nacospassword: nacosconfig: #配置中心 配置文件server-addr: 127.0.0.1:8848file-extension: ymlgroup: DEFAULT_GROUPnamespace: e301628f-59ab-4c01-b484-f72ca5f567f9
注意: 使用nacos作为配置中心时,需要创建一个bootstrap.yaml和
application.yaml两个配置文件,bootstrap.yaml的优先级高于
application.yaml,加载时实现加载bootstrap.yaml中的相关配置


测试一:

运行成功说明服务中心的配置文件读取成功,否则会报数据库连接失败。
测试二:


@RestController
@RefreshScope //动态刷新
public class NacosConfigController {@Value("${mysqlname}")private String mysqlname;@RequestMapping("/show")public String show() {return mysqlname;}
}
此时如果将nacos关闭,再启动,命名空间cs会丢失。所以持久化(同集群方式一样)。

相关文章:
微服务SpringCloud Alibaba组件nacos教程(一)【详解naocs基础使用、服务中心配置、集群配置,附有案例+示例代码】
一.Nacos教程 文章目录 一.Nacos教程1.1 Nacos简介1.2 nacos基本使用直接下载打包服务源码方式启动 1.3 创建nacos客服端1.4 nacos集群配置1.5 nacos配置中心 1.1 Nacos简介 nacos是spring cloud alibaba生态中非常重要的一个组件,它有两个作用: 1:注册…...
2017年上半年软件设计师上午真题知识点整理(附试卷及答案)
以下是2017年上半年软件设计师上午真题的知识点分类整理,涉及定义的详细解释,供背诵记忆。 1. 计算机组成原理 CPU与存储器的访问。 Cache的作用: 提高CPU访问主存数据的速度,减少访问延迟。存储器的层次结构: 包括寄存器、Cache、主存和辅存…...
【MySQL】基础篇
1. MySQL中的NULL值是怎么存放的? MySQL的compact行格式中会用【NULL值列表】来标记值为NULL的列,NULL值不会存储在行格式中的真实数据部分。 NULL值列表会占用1字节空间,当表中所有字段都被定义成NOT NULL,行格式中就不会有NULL值…...
Kotlin 扩展函数与内联函数
Kotlin扩展函数 Kotlin 的扩展函数是 Kotlin 中非常强大且实用的功能。它允许你为现有的类添加新的方法,而不需要修改其源代码。这意味着你可以在已有的类上“扩展”新的功能,使用起来就像是原本就存在这些方法一样。 扩展函数的基本语法 fun 类名.方…...
uniapp中对于文件和文件夹的处理,内存的查询
目录 移动文件到指定文件夹 新增本地文件夹 设定本地文件过期时间,清除超时文件,释放内存 操作本地文件之----删除 uniapp获取设备剩余存储空间的方法 读取本地文件夹下的文件 移动文件到指定文件夹 function moveTempFile(tempFilePath, targetFo…...
【Android开发】安卓手机APP使用机器学习进行QR二维码识别(完整工程资料源码)
前言:本项目是一个 Android 平台的二维码扫描应用,具备二维码扫描和信息展示功能。借助 AndroidX CameraX 库实现相机的预览、图像捕获与分析,使用 Google ML Kit 进行二维码识别。为方便大家了解项目全貌,以下将介绍项目核心代码文件 MainActivity.java 和 AndroidManifes…...
企业文件防泄密软件哪个好?
在企业文件防泄密软件领域,天锐绿盾和中科数安都是备受认可的品牌,它们各自具有独特的特点和优势。 以下是对这两款软件的详细比较: 天锐绿盾 功能特点 集成性强:集成了文件加密、数据泄露防护DLP、终端安全管理、行为审计等数据安…...
mysql 参数max_connect_errors研究
1.在server端设置max_connect_errors3,超过3次连接错误就block mysql> set global max_connect_errors3; Query OK, 0 rows affected (0.00 sec) mysql> show variables like max_connect_errors; --------------------------- | Variable_name | Value…...
linux 下连接mysql(下)
case 表达式 表t1中的数据如下。 select * from t1; ---------------------------- | id | student_no | name | age | ---------------------------- | 3 | 202501 | ll | 10 | | 4 | 202502 | tt | 15 | ----------------------------如果学号是202501,…...
【Qt 常用控件】多元素控件(QListWidget、QTableWidgt、QTreeWidget)
**View和**Widget的区别? **View的实现更底层,**Widget是基于**View封装实现的更易用的类型。 **View使用MVC结构 MVC是软件开发中 经典的 软件结构 组织形式,软件设计模式。 M(model)模型。管理应用程序的核心数据和…...
Linux 远程文件复制传输-----scp/rsync/sftp
scp(Secure Copy Protocol)是基于 SSH 的安全文件传输工具,可用于在本地和远程计算机之间复制文件或目录。 1. scp(基于 SSH 复制文件) a. 复制文件到远程 从本地复制到远程 scp localfile.txt userremote_host:/remo…...
VS2022中.Net Api + Vue 从创建到发布到IIS
VS2022中.Net Api Vue 从创建到发布到IIS 前言一、先决条件二、创建项目三、运行项目四、增加API五、发布到IIS六、设置Vue的发布 前言 最近从VS2019 升级到了VS2022,终于可以使用官方的.Net Vue 组合了,但是使用过程中还是有很多问题,这里记录一下. 一、先决条件 Visual …...
Windows 11 搭建私有知识库(docker、dify、deepseek、ollama)
一、操作系统信息 版本 Windows 11 家庭中文版 版本号 23H2 安装日期 2023/8/21 操作系统版本 22631.4460二、搭建思路 ollama拉取deepseek、bge-m3模型docker拉取dify的镜像dify链接ollama使用模型,并上传文件搭建知识库,创建应用 三、搭建步骤…...
安装OpenJDK21(linux、macos)
文章目录 安装OpenJDK21java21linux下安装配置mac下安装 安装OpenJDK21 java21 封神!Java 21正式发布了,迎来了史诗级新特性,堪称版本最强!!! 视频链接:https://www.bilibili.com/video/BV1E8…...
变分边界详解
起因 当时看VAE论文时有这么一段,但是看完直接一头雾水,这都那跟哪,第一个公式咋做的变换就变出那么一堆。网上搜了很多博客都语焉不详,只好自己来写一篇,希望能解答后来人的疑惑。 公式1 参考文章:证据…...
Softhsm储存安全数据性能整理
目标:存储百万条数据对象 测试方案一:总大小2GB,每个数据对象大小约512KB,总条数4096条; 测试方案一:总大小2GB,每个数据对象大小约256B,总条数8388608条; 测试环境&am…...
KaiOS 4.0 APN List 界面加载debug
问题背景 在列表选中APN进入编辑后,退出返回列表界面时无法焦点选中编辑的APN。 代码分析 路径:gaia/apps/settings/js/panels/apn_list/panel.js 分析SettingsPanel界面加载的步骤逻辑 onBeforeShow -> onShow -> onBeforeHide -> onHide return SettingsPanel(…...
Next.js 15【实用教程】2025最新版
官网 https://nextjs.org/docs/app/getting-started Next.js 简介 Next.js 由 Vercel 开发和维护,旨在解决单页应用(SPA)和多页应用(MPA)在性能和 SEO 上的不足。 核心特性 服务端渲染(SSR)--…...
2025-02-13 学习记录--C/C++-PTA 7-17 爬动的蠕虫
一、题目描述 ⭐️ 二、代码(C语言)⭐️ #include <stdio.h>int main() {int N, U, D; // N: 井的总高度,U: 每分钟向上爬的高度,D: 每分钟滑下的高度int height 0; // 蠕虫当前的高度int minute 0; // 蠕虫爬行的时间sc…...
Elasticsearch+Logstash+Kibana可视化集群部署
文章目录 1.组件介绍简述2.集群规划3.Es组件部署4.Logstash组件部署5.Kibana组件部署6.Kibana的基础使用 1.组件介绍简述 Elasticsearch:开源实时分布式搜索和分析引擎,支持大规模数据存储和高吞吐量,提供丰富的搜索功能和可扩展性。 Logsta…...
React VS Vue
React 和 Vue 是目前最流行的两个前端框架,它们在设计理念、生态系统和开发体验上各有特点。以下是对 React 和 Vue 的全方位对比: 1. 核心设计理念 React 库而非框架:React 是一个用于构建 UI 的库,专注于视图层,其…...
DeepSeek+Excel 效率翻倍
2025年初,DeepSeek以惊人的效率突破技术壁垒,用极低的成本实现了与行业顶尖AI相媲美的性能,瞬间成为全球科技领域的热门话题。 那么AI工具的普及将如何改变我们的工作方式?Excel会被取代吗? 今天,珠珠带你…...
将Sqlite3数据库挂在内存上处理
创作灵感:最近把小学生的口算题从2位数改到3位数,100以内四则运算练习(千纬数学)再次更新,选取难题-CSDN博客要不断刷题目,以前100以内的加减乘除也是这样刷出来的,代码如下: impor…...
Vue3.5 企业级管理系统实战(六):Vue3中defineProps用法
上一节封装图标组件 SvgIcon 时,用到了 defineProps,因为它在开发中的重要性,这里简单看一下它的用法,已熟知用法的此节可跳过。 在 Vue3 的组件化开发体系里,组件间通信是构建高效、可维护应用程序的核心环节。defin…...
HTTP/2 由来及特性
HTTP/2 的由来 HTTP/1.x 的局限性 性能瓶颈 队头阻塞问题:在HTTP/1.x中,一个TCP连接在同一时间只能处理一个请求,后续请求必须等待前面的请求处理完成并收到响应后才能被处理。例如,当一个页面有多个资源(如图片、脚…...
electron.vite 项目创建以及better-sqlite3数据库使用
1.安装electron.vite npm create quick-start/electronlatest中文官网:https://cn.electron-vite.org/ 2. 安装项目依赖 npm i3.修改 electron-builder 配置文件 appId: com.electron.app productName: text33 directories:buildResources: build files:- !**/.v…...
蓝桥杯 Java B 组之枚举算法(暴力破解)
Day 3:枚举算法(暴力破解) 枚举算法(Brute Force)是一种 暴力搜索 方法,它通过 遍历所有可能的情况 来找到正确答案。虽然它的 时间复杂度较高,但在 数据范围较小 时,它是一种简单且…...
AI 控制web浏览器基础知识准备,名词解释Xvfb,x11vnc,novnc,playwright,gradio
在探索如何让AI控制Web浏览器实现自动化任务时,了解底层技术栈是关键。本文将解析五个核心组件:Xvfb、x11vnc、novnc、playwright和gradio,这些工具共同构成了AI驱动浏览器的基础架构。 1. Xvfb(X Virtual Framebuffer࿰…...
C++,STL容器适配器,stack:栈深入解析
文章目录 一、容器概览与核心特性核心特性速览二、底层实现原理1. 容器适配器设计2. 默认容器对比三、核心操作详解1. 容器初始化2. 元素操作接口3. 自定义栈实现四、实战应用场景1. 括号匹配校验2. 浏览器历史记录管理五、性能优化策略1. 底层容器选择基准2. 内存预分配技巧六…...
Vue笔记(十)
一、AI的基本认知 二、ChatGPT的基本使用 三、AI插件--Copilot入门 1.Copilot是由OpenAI和GitHub合作开发的AI编程辅助插件,基于大量代码训练,能根据上下文自动生成代码建议。 2.安装与配置:在常用代码编辑器(如Visual Studio Cod…...
