springcloud微服务篇--5.Nacos注册中心

目录

一、认识Nacos

二、集成nacos

1.1添加依赖

 1.2 注释掉order-service和user-service中原有的eureka依赖。(避免冲突)

1.3 注释eureka之后,添加nacos的客户端依赖:

三、服务注册到nacos

1、修改配置文件

2、启动并测试

 四、总结

 五、拓展。

1.Nacos服务分级存储模型。

2.服务跨集群调用问题 

​编辑 3.服务集群属性。

4.总结 

5.根据权重负载均衡 

6.环境隔离 - namespace 

7、nacos注册中心细节分析 

1、临时实例和非临时实例 

8、nacos与eureka对比

 9、nacos配置--交给nacos来配置。

1.在Nacos中添加配置信息:

​编辑 2.引入Nacos的配置管理客户端依赖​编辑​编辑

3、将配置交给Nacos管理的步骤 总结。

10.nacos配置热更新:自动刷新 

11、多环境配置共享 

12、Nacos集群搭建


一、认识Nacos

Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高。

安装Nacos 

非常简单就不在啰嗦了,可以自行安装,也可私信我给与安装教程。

二、集成nacos

1.1添加依赖

1.1 在cloud-demo父工程中添加spring-cloud-alilbaba的管理依赖: 

 <!--nacos的管理依赖-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.5.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

 1.2 注释掉order-service和user-service中原有的eureka依赖。(避免冲突)

 

1.3 注释eureka之后,添加nacos的客户端依赖:

<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

三、服务注册到nacos

1、修改配置文件

修改user-service&order-service中的application.yml文件,注释eureka地址,添加nacos地址:

2、启动并测试

 

http://192.168.130.141:8848/nacos/index.html 访问 默认用户密码:nacos  nacos

 四、总结

Nacos服务搭建

1.下载安装包

2.解压

3.在bin目录下运行指令:startup.cmd -m standalone

Nacos服务注册或发现

1.引入nacos.discovery依赖

2.配置nacos地址spring.cloud.nacos.server-addr

 五、拓展。

1.Nacos服务分级存储模型。

2.服务跨集群调用问题 

1.服务调用尽可能选择本地集群的服务,跨集群调用延迟较高
2.本地集群不可访问时,再去访问其它集群

 3.服务集群属性。

1.修改application.yml,添加如下内容:

 2.在Nacos控制台可以看到集群变化

 

 

 NacosRule负载均衡策略

优先选择同集群服务实例列表

本地集群找不到提供者,才去其它集群寻找,并且会报警告 确定了可用实例列表后,再采用随机负载均衡挑选实例

 测试:可以发现,优先调用HZ的微服务。

4.总结 

1.Nacos服务分级存储模型

一级是服务,例如userservice

二级是集群,例如杭州或上海

三级是实例,例如杭州机房的某台部署了userservice的服务器

2.如何设置实例的集群属性

修改application.yml文件,添加spring.cloud.nacos.discovery.cluster-name属性即可

5.根据权重负载均衡 

1.实际部署中会出现这样的场景:

服务器设备性能有差异,部分实例所在机器性能较好,另一些较差,我们希望性能好的机器承担更多的用户请求

Nacos提供了权重配置来控制访问频率,权重越大则访问频率越高。

1.实例的权重控制

Nacos控制台可以设置实例的权重值,0~1之间 同集群内的多个实例,权重越高被访问的频率越高

权重设置为0则完全不会被访问 

6.环境隔离 - namespace 

Nacos中服务存储和数据存储的最外层都是一个名为namespace的东西,用来做最外层隔离

 

1.在Nacos控制台可以创建namespace,用来隔离不同环境

 2.然后填写一个新的命名空间信息:

3.保存后会在控制台看到这个命名空间的id: 

 4.修改order-service的application.yml,添加namespace:配置dev的id:表示这个微服务就在dev分支中。

 5.重启查看。

每个namespace都有唯一id

服务设置namespace时要写id而不是名称

不同namespace下的服务互相不可见 

7、nacos注册中心细节分析 

1、临时实例和非临时实例 

 服务注册到Nacos时,可以选择注册为临时或非临时实例,通过下面的配置来设置:

 临时实例宕机时,会从nacos的服务列表中剔除,而非临时实例则不会。

8、nacos与eureka对比

1、Nacos与eureka的共同点

都支持服务注册和服务拉取

都支持服务提供者心跳方式做健康检测

2、Nacos与Eureka的区别

Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式

临时实例心跳不正常会被剔除,非临时实例则不会被剔除

Nacos支持服务列表变更的消息推送模式,服务列表更新更及时

Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;

Eureka采用AP方式

 9、nacos配置--交给nacos来配置。

1.在Nacos中添加配置信息:

 2.引入Nacos的配置管理客户端依赖
3、将配置交给Nacos管理的步骤 总结。

1、Nacos中添加配置文件

2、在微服务中引入nacos的config依赖

3、在微服务中添加bootstrap.yml,配置nacos地址、当前环境、服务名称、文件后缀名。这些决定了程序启动时去nacos读取哪个文件。

10.nacos配置热更新:自动刷新 

Nacos中的配置文件变更后,微服务无需重启就可以感知。不过需要通过下面两种配置实现:

方式一:在@Value注入的变量所在类上添加注解@RefreshScope

方式二:使用@ConfigurationProperties注解 

 总结:

Nacos配置更改后,微服务可以实现热更新,方式:

通过@Value注解注入,结合@RefreshScope来刷新

通过@ConfigurationProperties注入,自动刷新 注意事项: 不是所有的配置都适合放到配置中心,维护起来比较麻烦 建议将一些关键参数,需要运行时调整的参数放到nacos配置中心,一般都是自定义配置。

11、多环境配置共享 

 

 总结:

微服务默认读取的配置文件:

1、[服务名]-[spring.profile.active].yaml,默认配置

2、[服务名].yaml,多环境共享

不同微服务共享的配置文件:

1、通过shared-configs指定

2、通过extension-configs指定

优先级: 环境配置 >服务名.yaml > extension-config > extension-configs > shared-configs > 本地配置

12、Nacos集群搭建

Nacos生产环境下一定要部署为集群状态。

集群搭建步骤:

1、搭建MySQL集群并初始化数据库表

2、下载解压nacos

3、修改集群配置(节点信息)、数据库配置

4、分别启动多个nacos节点

5、nginx反向代理 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【网络安全】网络防护之旅 - Java安全机制探秘与数字证书引爆网络防线

&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《网络安全之道 | 数字征程》⏰墨香寄清辞&#xff1a;千里传信如电光&#xff0c;密码奥妙似仙方。 挑战黑暗剑拔弩张&#xff0c;网络战场誓守长。 目录 &#x1f608;1. 初识网络安…

RTOS中任务的创建与删除

我们在stm32f103c8t6单片机上验证RTOS中任务的创建与删除&#xff0c;利用stm32cube进行RTOS的配置。在选择TIM2当做RTOS的时钟&#xff0c;裸机的时钟源默认是 SysTick&#xff0c;但是开启 FreeRTOS 后&#xff0c;FreeRTOS会占用 SysTick &#xff08;用来生成1ms 定时&…

camera曝光时间

曝光和传感器读数 相机上的图像采集过程由两个不同的部分组成。第一部分是曝光。曝光完成后&#xff0c;第二步就是从传感器的寄存器中读取数据并传输&#xff08;readout&#xff09;。 曝光&#xff1a;曝光是图像传感器进行感光的一个过程&#xff0c;相机曝光时间&#xf…

JWT令牌的作用和生成

JWT令牌&#xff08;JSON Web Token&#xff09;是一种用于身份验证和授权的安全令牌。它由三部分组成&#xff1a;头部、载荷和签名。 JWT令牌的作用如下&#xff1a; 身份验证&#xff1a;JWT令牌可以验证用户身份。当用户登录后&#xff0c;服务器会生成一个JWT令牌并返回…

Python实验项目9 :网络爬虫与自动化

实验 1&#xff1a;爬取网页中的数据。 要求&#xff1a;使用 urllib 库和 requests 库分别爬取 http://www.sohu.com 首页的前 360 个字节的数据。 # 要求&#xff1a;使用 urllib 库和 requests 库分别爬取 http://www.sohu.com 首页的前 360 个字节的数据。 import urllib.r…

当心字符串连接的性能

在Java中&#xff0c;字符串连接的性能问题同样需要注意&#xff0c;尤其是在循环中进行大量连接操作时。Java中的字符串是不可变的&#xff0c;因此每次连接字符串都会产生一个新的字符串对象&#xff0c;可能导致性能下降。以下是一些示例&#xff0c;演示了不同方法的字符串…

YOLOv5改进 | SPPF篇 | FocalModulation替换SPPF(精度更高的空间金字塔池化)

一、本文介绍 本文给大家带来的改进是用FocalModulation技术来替换了原有的SPPF&#xff08;快速空间金字塔池化&#xff09;模块。FocalModulation是今年新提出的特征增强方法&#xff0c;它利用注意力机制来聚焦于图像中的关键区域&#xff0c;从而提高模型对这些区域的识别…

什么是缓存击穿、缓存穿透、缓存雪崩?

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

在计算机专业中,应该把学习的重点放在哪里?

在计算机专业中&#xff0c;应该把学习的重点放在哪里&#xff1f;这是许多计算机专业学生常常面临的关键问题。随着计算机科技的快速发展&#xff0c;学生们往往陷入了各种各样的选择和困惑中。是将时间投入到深奥的数学领域&#xff0c;还是专注于编程技能的磨练&#xff1f;…

0x17 二叉堆

0x17 二叉堆 二叉堆是一种支持插入、删除、查询最值的数据结构。它其实是一种满足“堆性质”的完全二叉树&#xff0c;树上的每一个节点带有一个权值。若树中的任意一个节点的权值都小于等于其父节点的权值&#xff0c;则称该二叉树满足“大根堆性质”&#xff0c;称其为“大根…

微信小程序:布局样式

效果 wxml <view class"layout"><view class"left"><view>1</view><view>1</view><view>1</view><view>1</view><view>1</view></view><view class"right"&…

2023 亚马逊云科技 re:Invent 大会探秘:Aurora 无限数据库的突破性应用

文章目录 一、前言二、Amazon Aurora 无限数据库2.1 亚马逊云科技数据库产品发展历程2.2 什么是 Amazon Aurora Limitless Database&#xff08;无限数据库&#xff09;2.3 Amazon Aurora Limitless Database 设计架构2.4 Amazon Aurora Limitless Database 分片功能2.5 使用 A…

c语言:判断是否为整数|练习题

一、题目 输入一个数字&#xff0c;判断该数字是否为整数 如图&#xff1a; 二、思路分析 1、没有小数部分的数字&#xff0c;即为整数。所以&#xff0c;只要知道该数字是否有小数部分&#xff0c;即可。 2、例子&#xff1a;1.5减去10.5&#xff0c;由于有小数部分&#xff0…

跟着官网学 Vue - 插槽

Vue 插槽是一种强大的组件通信方式。 插槽内容与出口 在 Vue 中&#xff0c;插槽是一种让父组件向子组件传递内容的方式。子组件使用 <slot> 元素作为插槽出口&#xff0c;父组件可以通过插槽内容填充这些空白区域。 示例&#xff1a; <!-- MyButton.vue --> &…

解决“bat中文路径乱码“问题

今天&#xff0c;在使用.bat脚本&#xff0c;将hello.png从"D:\mypic\备份"目录&#xff0c;拷贝到"D:\mypic\备份"时&#xff1b;发现中文乱码,弹出如下对话框: 图(1) bat中文路径乱码 原来的命令是&#xff1a; copy D:\mypic\one\hello.png D:\mypic\备…

PIG框架学习1——密码模式登录认证获取Token流程

文章目录 O、前言一、总流程概括&#xff1a;二、具体流程分析PIG提供的具体流程图&#xff1a;鉴权请求报文示例0、网关前置处理1、客户端认证处理2、正式接受登录请求3、组装认证对象4、认证管理器进行认证&#xff08;授权认证调用&#xff09;5、认证成功处理器 O、前言 对…

读取小数部分

1.题目描述 2.题目分析 //假设字符串为 char arr[] "123.4500"; 1. 找到小数点位置和末尾位置 代码如下&#xff1a; char* start strchr(arr, .);//找到小数点位置char* end start strlen(start) - 1;//找到末尾位置 如果有不知道strchr()用法的同学&#xf…

Yapi详细安装过程(亲测可用)

1. 前置条件 1、Git 2、NodeJs&#xff08;7.6&#xff09; 3、Mongodb&#xff08;2.6&#xff09; 2. NodeJs的安装 1、获取资源 curl -sL https://rpm.nodesource.com/setup_8.x | bash - 2、安装NodeJS yum install -y nodejs 3、查看NodeJs和Npm node -v npm -v…

[AI工具推荐]AiRestful智能API代码生成

智能API代码示例生成工具AiRestful 一、产品介绍二、如何使用1、第一步(必须):2、第二步(可选):3、第三步(智能生成): 三、如何集成到您的网站(应用)1、开始接入2、接入案例 四、注意点 一、产品介绍 AiRestful是一款基于智能AI的,帮助小白快速生成任意编程语言的API接口调用示…

centos7安装node-v18版本

背景# 背景就是上一篇文章提到的&#xff0c;部署gitbook这个文档中心的话&#xff0c;是需要先安装node&#xff0c;然后&#xff0c;如果你的node版本过高的话&#xff0c;一般会报错&#xff0c;此时&#xff0c;网上很多文章就是降node版本解决&#xff0c;但其实用高版本…