nacos高级

news2025/2/26 7:12:10

一、什么是配置中心
在微服务架构中,当系统从一个单体应用被拆分成分布式系统上的一个个服务节点后,配置文件也必须跟着迁移(分割),这样配置就分散了。不仅配置会分散,分散中还会包含着冗余。
在这里插入图片描述

配置中心将配置从各应用中剥离出来,对配置进行统一管理,应用自身不需要自己去管理配置。
二、Nacos简介

  1. 什么是Nacos
    Nacos是阿里巴巴的一个开源项目,针对微服务架构中的服务发现、配置管理、服务治理的综合型解决方案
    Nacos官网简介:
    Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
    Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

官网地址:https://nacos.io/zh-cn/docs/what-is-nacos.html
2. Nacos的特性
服务发现和服务健康监测
Nacos使服务器更容易注册,并通过DNS或HTTP接口发现其它服务,Nacos还提供服务的实时健康检查,以防止向不健康的主机或服务实例发送请求。

动态配置服务
动态配置服务允许在所有环境中以集中和动态的方式管理所有的服务配置,Nacos消除了在更新配置时重新部署应用程序,使得配置更加高效和灵活。

动态 DNS 服务
Nacos提供基于DNS协议的服务发现能力,旨在支持异构语言的服务发现,支持将注册在Nacos上的服务以域名的方式暴露端口,让三方应用方便的查阅和发现。

服务及其元数据管理
Nacos可以从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略。
三、安装Nacos
安装环境:

Windows10 64位
JDK1.8
Maven3.2以上
在这里插入图片描述

在这里我下载的是1.4.1版本的Nacos,解压后访问文件下的bin目录中的startup.cmd即可运行
四、运行Nacos

  1. 修改启动方式
    在这里插入图片描述

注意:在Nacos在1.3.2之后默认使用的cluster(集群方式启动),如果我们本地是单击模式的话,需要手动改回standalone(单机模式启动)
在这里插入图片描述

修改方法:
将startup.cmd使用编辑工具打开,修改cluster为standalone即可
2. 配置数据源
在这里插入图片描述

可以看到Nacos默认端口为8848,此时提示的网页是无法登录的,因为没有进行配置数据源,因此接下来要在conf文件加下的application.properties文件中进行数据源的配置。去掉前两行的注释,将参数设置为自己的数据库连接信息后再次点击startup.cmd启动Nacos,即可进入到登录页面。
在这里插入图片描述

初始用户名:nacos
初始密码:nacos
输入初始用户名和初始密码后登录即到主界面

总结
以上便是安装Nacos的过程,在安装运行时应该注意到的地方为在1.3.2之后的版本后启动方式默认为集群方式启动,因此要在本地上单点登录的话,需要编辑startup.cmd文件修改启动方式为单机模式。
五、集群部署
接下来配置集群,继续当前目录将cluster.conf.example改名为cluster.conf并打开,如果是部署在不同机器就要填写相应的IP地址加端口。
在这里插入图片描述

进入bin目录,右键编辑startup_cmd以记事本方式打开,这是nacos的启动文件。
在这里插入图片描述
在这里插入图片描述
接下来将nacos目录复制3份,必须停止nacos再复制,否则会报错。
在这里插入图片描述

分别进入conf下的application.properties配置文件,更改端口号,与配置cluster.conf 时相对应。
在这里插入图片描述

六、启动集群:
1.分别执行这三个nacos的/bin/startup.cmd文件
在这里插入图片描述

2.进入任意一个nacos可视化界面,http://nacos地址/nacos
在这里插入图片描述

修改springboot配置文件:写单个或者多个地址效果都一样
在这里插入图片描述

七、Nacos的服务分级存储模型
1、概念
一个服务可以有多个实例,例如我们的user-service,可以有:
127.0.0.1:8081
127.0.0.1:8082
127.0.0.1:8083
假如这些实例分布于全国各地的不同机房,例如:
127.0.0.1:8081,在上海机房
127.0.0.1:8082,在上海机房
127.0.0.1:8083,在杭州机房
Nacos就将同一机房内的实例 划分为一个集群。
也就是说,user-service是服务,一个服务可以包含多个集群,如杭州、上海,每个集群下可以有多个实例,形成分级模型,如图:
在这里插入图片描述

微服务互相访问时,应该尽可能访问同集群实例,因为本地访问速度更快。当本集群内不可用时,才访问其它集群。例如:
在这里插入图片描述

杭州机房内的order-service应该优先访问同机房的user-service。
2、给user-service配置集群
1、配置文件:application.properties
#配置当前服务的集群名称,名称自定义的 HZ代指杭州
spring.cloud.nacos.discovery.cluster-name=HZ
2、启动三个用户实列,看看效果
在这里插入图片描述

可以看见这里有两个集群,总共三个实列,点击详情可以看见:
存在两个集群,分别是HZ和SH。
在这里插入图片描述

小知识,IDEA上面一个服务启动多个实列和配置实列的参数:
在这里插入图片描述

选中实列,点击复制,就可以出现新的实列了,也可以在红框哪里给新的实列配置各种参数。

3、服务之间集群调用的使用
1、给订单服务添加集群配置和负载均衡配置:application.properties
#配置当前服务的集群名称,名称自定义的 HZ代指杭州
spring.cloud.nacos.discovery.cluster-name=HZ
#负载均衡策略为:优先访问本集群的服务,如果本集群有多个实列,那么对本集群实列的访问就是随机
#如果本集群没有实列,那么访问其他集群的实列时,采用的是随机策略。
userservice.ribbon.NFLoadBalancerRuleClassName=com.alibaba.cloud.nacos.ribbon.NacosRule

注意:需要把用户服务的权重设置为1。

注意:如果访问的不是本地集群,那么会出现下列的警告:跨集群访问警告
总结:com.alibaba.cloud.nacos.ribbon.NacosRule 负载均衡策略
优先选择同集群服务实例列表
本地集群找不到提供者,才去其它集群寻找,并且会报警告
确定了可用实例列表后,再采用随机负载均衡挑选实例
八、Nacos的权重配置
实际部署中会出现这样的场景:

服务器设备性能有差异,部分实例所在机器性能较好,另一些较差,我们希望性能好的机器承但更多的用户请求。Nacos提供了权重配置来控制访问频率,权重越大则访问频率越高。
总结:实例的权重控制
Nacos控制台可以设置实例的权重值,0~1之间
同集群内的多个实例,权重越高被访问的频率越高
权重设置为0则完全不会被访问
在这里插入图片描述

九、Nacos的环境隔离
Nacos中服务存储和数据存储的最外层都是一个名为namespace的东西,用来做最外层隔离。
一般开发中,都会存在三个环境,dev-开发环境,uat-测试环境,master-生产环境,这里的环境隔离就是可以根据这个来划分,用来防止 开发环境的服务 访问到了 测试环境的服务。

1、Nacos控制台可以创建namespace,用来隔离不同环境
在这里插入图片描述

2、然后填写一个新的命名空间信息:
在这里插入图片描述

3、保存后会在控制台看到这个命名空间的id:
在这里插入图片描述

4、修改订单服务的配置文件:application.properties

命名空间,填ID dev环境

spring.cloud.nacos.discovery.namespace=492a7d5d-237b-46a1-a99a-fa8e98e4b0f9
5、效果
在这里插入图片描述

6、此时通过订单服务访问用户服务会报错,因为它们不在同一个环境中。
在这里插入图片描述

总结:Nacos环境隔离
每个 namespace 都有唯一id
服务设置 namespace 时要写id而不是名称
不同 namespace下的服务互相不可见,即相互之间不能访问

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux进程、用户、权限命令

进程管理命令 进程和程序的区别 1 程序是静态概念,本身作为一种软件资源长期保存;而进程是程序的执行过程,它是动态概念,有一定的生命期,是动态产生和消亡的。 2 程序和进程无一一对应关系。一个进程在活动中可有顺序…

顺序表和链表的比较

本文主要内容:从存取方式、逻辑/物理结构、查找/插入/删除操作和空间分配的角度比较顺序表和链表,并从存储、运算、环境的角度对比应如何选取存储结构。 目录 一、顺序表和链表的比较1、存取(读写)方式2、逻辑/物理结构3、查找、…

AI人工智能领域精美绘图模板分享

1 人工智能的发展历程 如今人工智能的应用渗透了我们生活的方方面面,我们都知道人工智能的前景十分光明,在未来对于推进人类发展进程也是非常重要的,但其实人工智能的发展道路是极其曲折的,下面就将人工智能的发展历程分为如下六…

arcgis for javascript TileLayer 自定义高德地图图层

效果如图: 一、创建自定义切片层 要创建自定义图块层,您必须调用BaseTileLayer类的createSubclass()方法。命名自定义层为TintLayer 由于这一层需要知道在哪里访问预定义的图块,我们将创建一个属性。应用程序将为图层提供值,图…

全球首发 《NGINX 完全指南》中文版

原文作者:Derek DeJonghe of F5 原文链接:全球首发 | 《NGINX 完全指南》中文版 转载来源:NGINX 开源社区 NGINX唯一中文官方社区 ,尽在nginx.org.cn 在社区小伙伴们的催促下,我们很高兴地与大家分享这个好消息&#…

关于阵列发射端的波束形成(相控阵)研究与仿真实践

说明 相控阵是一个很大的话题,相控阵说得直白一点就是通过控制天线阵列中各个天线的相位来使得波束指向我们想要的方向。现阶段相控阵雷达用得更多的还是军事领域,不过随着技术的进步、成本的下降以及小型化,相控阵雷达也逐渐被用于民用领域了…

Python之Gradio简单使用

目录 安装Gradio示例用法应用界面1. gr.Interface2. gr.Blocks Gradio的输入和输出组件输入组件(Inputs)输出组件(Outputs) 其他 Gradio是一个Python库,用于构建快速的Web界面,以便于使用机器学习模型进行实…

Vue.js 中的 watch 属性详解

Vue.js 中的 watch 属性详解 在 Vue.js 中,watch 属性是一种非常重要的属性,它可以监听 Vue 实例中指定的数据变化,并在数据发生变化时执行相应的操作。本文将对 Vue.js 中的 watch 属性进行详细的介绍,并附上相关的代码示例。 什…

一文看穿 TypeScript 的庐山真面目

导语: 在了解 TypeScript 之前,我们需要了解 什么是强类型语言和什么是弱类型语言,以及什么是静态类型,什么又是动态类型。 强类型不允许任意的隐式类型转换,而 弱类型 允许静态类型:一个变量声明时它的类型…

基于Python的大数据舆情分析,舆论情感分析可视化系统

运行效果图 基于Python的微博大数据舆情分析,舆论情感分析可视化系统 系统介绍 微博舆情分析系统,项目后端分爬虫模块、数据分析模块、数据存储模块、业务逻辑模块组成。 先后进行了数据获取和筛选存储,对存储后的数据库数据进行提取分析处…

sqlmap -os-shell 使用方法

一、burp suite抓包。 如上图所示,红框处很明显是一个传参点,我们就在这个页面抓包。 抓到包之后将内容保存到桌面的1000.txt文件下。 二、sqlmap跑包。 打开sqlmap跑包。 python sqlmap.py -r C:\Users\16434\Desktop\1000.txt -dbmsmysql --os-shell…

Oracle-catalog影响归档量统计

有个12.2 rac环境报警备份异常,登录检查备份,发现报错日志 piece handle/backup/orcl/archbackup/ARCHBAK_ORCL_20230607_738_1 tagARCH_BAK commentNONE channel d1: backup set complete, elapsed time: 00:01:55 released channel: d1 RMAN-00571: …

从Vuex过渡到pinia

Vuex过渡到Pinia 众所周知,Vuex是一个状态管理库,它方便了我们任何组件不用考虑关系就可以共享一个全局的状态。😃但是 Vuex也有它一定的缺陷。主要缺点,我总结如下: mutations里面不能写异步函数,否则就…

Simulink仿真模块 - Waveform Generator

Waveform Generator模块的功能是使用信号符号输出波形。它所在的库为: Simulink / Sources 如图所示: 双击模型弹出如下对话框,如图所示: Waveform Generator 模块根据您在波形定义表中输入的信号符号输出波形。 此模块支持下列用于信号符号的语法: 函数…

STM32单片机OLED语音识别路灯台灯控制系统人检测亮度调节

实践制作DIY- GC0143-OLED语音识别路灯台灯控制系统 基于STM32单片机设计---OLED语音识别路灯台灯控制系统 二、功能介绍: 电路:STM32F103C系列最小系统串口语音识别模块LED灯板1个红外传感器OLED显示器1个手动自动模式键1个开关按键 1.有两个模式1个手…

速卖通,国际站,temu测评,补单策略:安全与效能并重,提高账号存活率

测评能够帮助卖家让亚马逊平台更喜欢自己的产品,给予更好排名的同时也让后续进入店铺的买家更容易认可自己的产品。这些真实评价在亚马逊卖家管理系统中被称为Review Feedback。这是进行真实交易后形成的评价,而不是通过机器软件生成,形成虚拟…

SpringData进阶篇-下

SpringData进阶篇 一:故事背景二:自定义操作2.1 JPQL和SQL2.1.1 接口内定义2.1.2 调用2.2.3 SQL 方式查询 2.2 规定方法名2.2.1 普通查询规则2.2.2 修饰查询 2.3 Query By Example2.3.1 Repository继承QueryByExampleExecutor2.3.2 具体使用2.3.2 Exampl…

Aspose.Words功能演示:使用 C# 从 Word 文档中读取宏

Aspose.Words 是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。此外, Aspose API支持流行文件格式处…

java-不借用三方程序情况下,使用java自动工具将可执行jar转成exe

一、先新建一个javafx项目 二、配置Artifacts 点击Artifacts,会看到新建的项目会自动创建好了 如果没有的话,可以手动创建如下操作 三、配置 按下图逐一配置即可 四、builde 5、使用java的打包命令打包 PS C:\Users\xx\Downloads\cc\exeex\out\artifacts\JavaFXApp>…

web前端 --- js事件

js事件(event) (js诞生就是基于事件驱动型编程) (1)事件 用户通过各种行为(按键、鼠标点击、鼠标hover......)行为动作,引起相关 js 代码的执行。 事件的三元素&#x…