springcloud学习笔记(3)-服务管理组件Nacos
Nacos简介
在2中学习了服务治理中心eureka,而本节的nacos来自springcloud alibaba。
Nacos也是一个服务注册和管理的组件。
Nacos 支持几乎所有主流类型的“服务”的发现、配置和管理
官方文档
快速开始 | Spring Cloud Alibaba (aliyun.com)
概述 | Spring Cloud Alibaba (aliyun.com)
Nacos Spring Cloud 快速开始
安装启动
Nacos 快速开始

访问:http://127.0.0.1:8848/nacos/
示例
可以使用官方示例
spring-cloud-alibaba/spring-cloud-alibaba-examples/nacos-example/nacos-config-example at 2022.x · alibaba/spring-cloud-alibaba · GitHub
参考官方教程:快速开始 | Spring Cloud Alibaba (aliyun.com)
Nacos 来实现分布式环境下的配置管理和服务注册发现。
配置管理
(这节讲的是如何通过应用实现对nacos的配置进行管理)
- 通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更,这里的配置,是指nacos本身的配置,可以对nacos添加配置,更新配置。
- Nacos Spring Cloud 快速开始
如果要在您的项目中使用 Nacos 来实现配置管理,需要进行以下操作(确保 Nacos Server 已启动):
-
需要在 pom.xml 文件中引入 group ID 为 com.alibaba.cloud 和 artifact ID 为 spring-cloud-starter-alibaba-nacos-config 的 starter:
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> -
在应用的 /src/main/resources/application.yaml 配置文件中配置 Nacos Config 地址并引入服务配置:
spring:cloud:nacos:serverAddr: 127.0.0.1:8848config:import:- nacos:nacos-config-example.properties?refresh=true -
完成上述两步后,应用会从 Nacos Server 中获取相应的配置,并添加在 Spring Environment 的 PropertySources 中。假设我们通过 Nacos 作为配置中心保存应用服务的部分配置,有以下几种方式实现:
- BeanAutoRefreshConfigExample:通过将配置信息配置为bean,支持配置变自动刷新;
- ConfigListenerExample:监听配置信息;
- DockingInterfaceExample:对接 Nacos 接口,通过接口完成对配置信息增删改查
- ValueAnnotationExample:通过 @Value 注解进行配置信息获取。示例代码给出了这几种方式

调用 Nacos Open API 向 Nacos Server 发布配置
-
命令行方式:
$ curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos-config-example.properties&group=DEFAULT_GROUP&content=spring.cloud.nacos.config.serverAddr=127.0.0.1:8848%0Aspring.cloud.nacos.config.prefix=PREFIX%0Aspring.cloud.nacos.config.group=GROUP%0Aspring.cloud.nacos.config.namespace=NAMESPACE" -
控制台方式(推荐使用):
dataId为:nacos-config-example.properties group为:DEFAULT_GROUP配置内容如下:
spring.cloud.nacos.config.serveraddr=127.0.0.1:8848 spring.cloud.nacos.config.prefix=PREFIX spring.cloud.nacos.config.group=GROUP spring.cloud.nacos.config.namespace=NAMESPACE

添加后的配置

报错不支持java 17,需要在project structure将SDK设置为JDK17,运行解决。

请求 http://127.0.0.1:18084/nacos/bean 地址,可以看到成功从 Nacos 配置中心中获取了数据。
$ curl http://127.0.0.1:18084/nacos/bean
响应结果:
{"serverAddr": "127.0.0.1:8848","prefix": "PREFIX","namespace": "NAMESPACE","group":"GROUP"
}

这里返回的是BeanAutoRefreshConfigExample读取到的nacos的配置。
在命令行终端执行以下命令刷新 Nacos 的配置信息:
$ curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos-config-example.properties&group=DEFAULT_GROUP&content=spring.cloud.nacos.config.serveraddr=127.0.0.1:8848%0Aspring.cloud.nacos.config.prefix=PREFIX%0Aspring.cloud.nacos.config.group=DEFAULT_GROUP%0Aspring.cloud.nacos.config.namespace=NAMESPACE"
(修改nacos的配置)
再次请求 http://127.0.0.1:18084/nacos/bean 地址,可以看到应用已经从 Nacos 中获取到了最新的数据。
$ curl http://127.0.0.1:18084/nacos/bean
响应结果:
{"serverAddr": "127.0.0.1:8848","prefix": "PREFIX","namespace": "NAMESPACE","group": "DEFAULT_GROUP"
}

服务注册与发现

服务注册,是指服务被注册到nacos中,nacos可以对服务进行管理。
服务发现,是指当一个服务consumer,请求另一个服务provider时,由nacos发现 provider,consumer才去获取provider提供的服务。如果没有nacos,consumer找不到provider。
服务注册
将服务注册到Nacos中
微服务的节点都需要注册到服务注册中心

1)加依赖
需要在 pom.xml 文件中引入 group ID 为 com.alibaba.cloud 和 artifact ID 为 spring-cloud-starter-alibaba-nacos-discovery 的 starter:
<dependency> <groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2)加配置
添加应用配置:在应用的 /src/main/resources/application.properties 配置文件中配置 Nacos Server 地址:
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.application.name=service-provider #这里的name配置了服务的名称。
server.port=18082
3)加注解
-
使用 @EnableDiscoveryClient 注解开启服务注册与发现功能:
@SpringBootApplication @EnableDiscoveryClient public class ProviderApplication {public static void main(String[] args) {SpringApplication.run(ProviderApplication.class, args);}@RestControllerclass EchoController {@GetMapping(value = "/echo/{string}")public String echo(@PathVariable String string) {return string;}} }
启动应用并验证
-
启动provider应用,
IDE直接启动:找到 nacos-discovery-provider-example 项目的主类 ProviderApplication,执行 main 方法启动应用。 - 报错 提示找不到或无法加载主类 com.alibaba.cloud.examples.ProviderApplication

rebuild,清除IDEA缓存都没解决
单独打开这个服务运行就可以了
发现服务已被注册到Nacos

服务发现
这一节涉及到了另外的组件feign,需要前置知识。
启动nacos-discovery-consumer-example

访问127.0.0.1:18083/echo-rest/1234 返回的是provider的/echo/string方法的结果,说明消费者请求到了提供者提供的服务。

请求 http://127.0.0.1:18083/echo-feign/12345 地址,可以看到响应显示了 nacos-discovery-provider-example 返回的消息 "hello Nacos Discovery 12345",证明服务发现生效。

相关文章:
springcloud学习笔记(3)-服务管理组件Nacos
Nacos简介 在2中学习了服务治理中心eureka,而本节的nacos来自springcloud alibaba。 Nacos也是一个服务注册和管理的组件。 Nacos 支持几乎所有主流类型的“服务”的发现、配置和管理 官方文档 快速开始 | Spring Cloud Alibaba (aliyun.com) 概述 | Spring C…...
Insight h2database 更新、读写锁以及事务原理
文章基于 RegularTable 来分析和拆解更新操作。 锁模型比较简单,方便了解更新的整个流程。并发读写的实现在 MVStore 存储引擎中分析。 主要关注数据更新的实现、事务的提交和回滚。 相关概念 讨论更新操作,就需要涉及到事务隔离级别以及事务的概念。 也…...
skywalking动态配置[集成nacos/apollo/consul]
说明:以下配置仅关于的阈值规则的动态配置,其他参数也可以进行配置。 1,skywalking动态配置集成nacos 编辑application.yml nacos配置参数如下: nacos:# Nacos Server HostserverAddr: 10.10.5.145# Nacos Server Portport: 8848# Nacos Configuration Groupgroup: skywal…...
UniApp创建项目HelloWorld
浏览器预览效果镇楼 普通项目创建 点击创建完成后,就如下所示 确实和微信小程序开发差不多。只是稍微换了一个名字的概念了,这个就是开发嘛,不要过于纠结概念性东西。开发开发,开了就知道怎么发了? 或许是 反正write就…...
Qt/C++原创推流工具/支持多种流媒体服务/ZLMediaKit/srs/mediamtx等
一、前言 1.1 功能特点 支持各种本地视频文件和网络视频文件。支持各种网络视频流,网络摄像头,协议包括rtsp、rtmp、http。支持将本地摄像头设备推流,可指定分辨率和帧率等。支持将本地桌面推流,可指定屏幕区域和帧率等。自动启…...
学习黑马程序员JavaScript总结
今天注意学习了数据类型、运算符、常量、数组,这些内容接受的还是比较快的,因为前面学过C语言还有Python,比较不同的地方就是未定义类型undefined,这个类型是在只声明了变量但未赋值,而unll空类型它是赋了值但该值是空…...
浅谈高速公路服务区分布式光伏并网发电
前言 今年的国家经济工作会议提出:将“做好碳达峰、碳中和工作”作为 2021年的主要任务之一,而我国高速公路里程 15.5万公里,对能源的需求与日俱增,碳排放量增速明显。 为了实现采用减少碳排放量,采用清洁能源替代的…...
MATLAB算法实战应用案例精讲-【图像处理】机器视觉(番外篇)
目录 前言 算法原理 机器视觉检测系统工作原理 机器视觉光源分类...
塑胶材料检测对激光焊机的作用
塑胶材料的激光焊接已经普遍用于各种零配件,而塑料的透光率是焊接工艺质量的一个重要指标。针对这类塑胶材料推出这款专门检测塑胶材料近红外透光率特性的透光率检测仪,对注塑件的透光率进行全画面扫描。 全球工业致力于贯彻绿色环保、节能减排发展理念&…...
将Eureka服务注册到Eureka中心
1、在微服务的pom.xml引入依赖文件中 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>2、在微服务的application.yml配置文件中加上…...
将网站域名访问从http升级到https(腾讯云/阿里云)
文章目录 1.前提说明2.服务器安装 docker 与 nginx2.1 安装 docker🍀 基于 centos 的安装🍀 基于ubuntu 2.2 配置阿里云国内加速器🍀 找到相应页面🍀 创建 docker 目录🍀 创建 daemon.json 文件🍀 重新加载…...
QT通过TCP协议发送结构体数据
QT通过TCP协议发送结构体数据 Chapter1 QT通过TCP协议发送结构体数据前言1. memcpy方式1.1 发送整个结构体1.2 发送部分数据 2. QDataStream2.1 符号<<2.2 wrieteRawData 总结 Chapter2 qt中操作json,读取json,写入json,转换json一、说…...
C++标准库之numeric
文章目录 一. numeric库介绍二.详解accumulate1. 计算数组中所有元素的和2. 计算数组中所有元素的乘积3. 计算数组中每个元素乘以3之后的和4.计算数组中每个元素减去3之后的和5.计算班级内学生的平均分6.拼接字符串 adjacent_differenceinner_productpartial_sumiota 三. 参考 …...
第六章:最新版零基础学习 PYTHON 教程—Python 正则表达式(第二节 - Python 中的正则表达式与示例套装)
正则表达式 (RegEx)是一种特殊的字符序列,它使用搜索模式来查找字符串或字符串集。它可以通过将文本与特定模式进行匹配来检测文本是否存在,并且还可以将模式拆分为一个或多个子模式。Python 提供了一个re模块,支持在 Python 中使用正则表达式。它的主要功能是提供搜索,其中…...
【Python】WebUI自动化—Selenium的下载和安装、基本用法、项目实战(16)
文章目录 一.介绍二.下载安装selenium三.安装浏览器驱动四.QuickStart—自动访问百度五.Selenium基本用法1.定位节点1.1.单个元素定位1.2.多个元素定位 2.控制浏览器2.1.设置浏览器窗口大小、位置2.2.浏览器前进、刷新、后退、关闭3.3.等待3.4.Frame3.5.多窗口3.6.元素定位不到…...
c++视觉处理---图像重映射
图像重映射:cv::remap cv::remap 是OpenCV中的一个函数,用于执行图像重映射,允许您通过重新映射像素的位置来变换图像。这个函数非常有用,可以用于各种图像处理任务,如校正畸变、透视变换、几何变换等。 下面是 cv::…...
基于YOLO算法的单目相机2D测量(工件尺寸和物体尺寸)
1.简介 1.1 2D测量技术 基于单目相机的2D测量技术在许多领域中具有重要的背景和意义。 工业制造:在工业制造过程中,精确测量是确保产品质量和一致性的关键。基于单目相机的2D测量技术可以用于检测和测量零件尺寸、位置、形状等参数,进而实…...
Insight h2database 执行计划评估以及 Selectivity
生成执行计划是任何一个数据库不可缺少的过程。通过本文看执行计划生成原理。 最优的执行计划就是寻找最小计算成本的过程。 本文侧重 BTree 索引的成本计算的实现 以及 基础概念选择度的分析。 寻找最优执行计划 找到最佳的索引,实现最少的遍历,得到想要…...
[天翼杯 2021]esay_eval - RCE(disabled_function绕过||AS_Redis绕过)+反序列化(大小写wakeup绕过)
[天翼杯 2021]esay_eval 1 解题流程1.1 分析1.2 解题1.2.1 一阶段1.2.2 二阶段二、思考总结题目代码: <?php class A{public $code = "";...
基于SSM+Vue的在线作业管理系统的设计与实现
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用Vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
Modbus RTU与Modbus TCP详解指南
目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...
沙箱虚拟化技术虚拟机容器之间的关系详解
问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西,但是如果把三者放在一起,它们之间到底什么关系?又有什么联系呢?我不是很明白!!! 就比如说: 沙箱&#…...
Python实现简单音频数据压缩与解压算法
Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中,压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言,提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...
