浅谈Spring Cloud:Nacos的配置

Nacos,一个更易于构建云原生应用的动态服务发现,配置管理和服务管理平台。所以Nacos是⼀个注册中心组件,但它又不仅仅是注册中心组件。

目录

安装

注册 

负载均衡

环境隔离

配置管理

搭建集群


安装

在官网下载好安装包解压后,在cmd中通过  startup.cmd -m standalone 可以启动Nacos,并且作为单机模式启动(此处如果直接双击cmd文件会导致启动方式为集群)。Nacos的默认端口为8848。

并且可以访问到Nacos的网站。

注册 

Nacos注册大部分和Eureka差不多,只需要改几个配置文件就行了。在父文件的xm中,只配置了springboot的依赖,没有配置springcloud的依赖,所以还需要重新配cloud:

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

并且在每个子文件的xml中,需要把Nacos的依赖引入。

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

再在yml中修改端口号:

在网页中,服务列表就能看到配置了。

负载均衡

实际环境中,Nacos可能会分布在多个集群中,Nacos支持多种负载均衡策略。

微服务在进行访问时,应优先考虑访问同一机房的实例。如果同一机房内的实例不可用,那么再考虑访问其他机房的实例。例如,如果`order-service`部署在上海机房,而`product-service`在北京和上海机房都有部署,我们希望能够优先访问上海机房的实例。如果上海机房没有可用的实例,或者实例不可用,那么再访问北京机房的实例。通常情况下,因为同一个机房的机器属于同一个局域网,局域网内的访问速度会更快一些。

配置集群

在IDEA中,先修改配置文件。修改成shanghai集群之后,启动UserApplication1和UserApplication2;再修改集群成北京,启动UserApplication3。

此时就可以配置好集群为北京和上海集群。在默认的情况下,我们请求是会随机来请求的

要想做到北京的请求主要访问北京集群、上海的请求主要访问上海集群,我们还需要配置一些东西。

开启负载均衡策略

什么都不做的情况下,我们请求是不会来优先选择本地集群的。

在配置文件中开启loadbalancer,我们多次请求接口的时候,此时就优先访问本集群的机器。如果本集群的机器下线或者访问失败,则再会访问别的集群。

并且可以在Nacos的网页中设置权重,如果一个节点的权重为0.1,另一个为1,那么这两个节点被访问到的概率比就是1:10。(权重为0就说明完全不会访问到)

环境隔离

企业开发中,一个服务会分为开发环境、测试环境和生产环境。

  1. 开发环境:开发人员用于开发的服务器,是最基础的环境。一般日志级别设置较低,可能会开启一些调试信息。
  2. 测试环境:测试人员用来进行测试的服务器,是开发环境到生产环境的过渡环境。
  3. 生产环境:正式提供对外服务的环境,通常关掉调试信息。

通常情况下,这几个环境是不能互相通信的。Nacos提供了namespace(命名空间)来实现环境的隔离,不同的namaspace的服务不可见。

在服务列表中可以看到只有一个public空间。

在命名空间可以新建,新建后会出现uid。

拿着这个uid放到order的配置文件中,order-service就会被分配到这个空间中。

配置管理

除了注册中心和负载均衡之外,Nacos 还是一个配置中心,具备配置管理的功能。

Namespace 的常用场景之一是不同环境的配置区分隔离。例如,开发测试环境和生产环境的配置隔离。

当前项目的配置都在代码中,会存在以下问题:

  1. 配置文件修改时,服务需要重新部署。微服务架构中,一个服务可能有成百个实例,挨个部署比较麻烦,且容易出错。
  2. 多人开发时,配置文件可能需要经常修改,使用同一个配置文件容易冲突。

配置中心就是对这些配置项进行统一管理。通过配置中心,可以集中查看、修改和删除配置,无需再逐个修改配置文件。提高效率的同时,也降低了出错的风险。

配置获取的步骤:

本来只需要读取本地配置文件,但是现在需要读取nacos中的配置文件。之前nacos的信息都在本地配置文件中,现在还没访问到本地,就需要访问nacos的配置文件,去哪里访问?

spring提供了一个bootstrap.yml,这个优先级比较高,在项目启动的时候就可以读取到。

在pom和bootstrap文件中配置好,这样就完成了配置。

在Controller中,我们添加@Value注解,可以在Controller中添加,在网页中可以看到效果。

至此,我们就完成了配置的统一管理。

再添加@RefreshScope,可以完成服务的热部署,Nacos中更新的配置会自动在服务器更新。

另一种自动更新的方式:通过ConfigurationProperties注入,自动刷新,无需@RefreshScope

多服务共享配置

在Nacos中,以userservice为例子,服务名-profile.yaml > 服务名称.yaml > 本地配置

搭建集群

搭建数据库

配置好数据库后,进行下一步操作

配置nacos

此处我们把nacos文件夹复制三份,分别命名为nacos1,nacos2,nacos3

把里面的配置文件配置好,端口号设置为8845 8846 8847

启动nacos集群

nginx反向代理

集群搭建步骤:

  • 搭建MySQL集群并初始化数据库表
  • 下载解压nacos
  • 修改集群配置(节点信息)、数据库配置
  • 分别启动多个nacos节点
  • nginx反向代理

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

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

相关文章

计算机专业毕业设计推荐-基于python的汽车汽修保养服务平台

&#x1f496;&#x1f525;作者主页&#xff1a;毕设木哥 精彩专栏推荐订阅&#xff1a;在 下方专栏&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; 实战项目 文章目录 实战项目 一、基于python的汽车汽修保养服…

数据中台建设(十二)—— 数据中台解决方案参考

数据中台解决方案参考 各行各业的数据中台解决方案类似&#xff0c;只是涉及到的业务不同&#xff0c;建设框架类似。下面以零售行业构建数据中台和网易构架数据中台为例&#xff0c;说明构建数据中台的解决方案。 零售行业数据中台功能体系 网易数据中台功能体系 菜鸟数据中…

PDF里怎么直接编辑文字?简单操作指南

PDF作为一种广泛使用的文档格式&#xff0c;因其稳定性和跨平台兼容性而受到欢迎。然而&#xff0c;PDF原生的编辑功能相对有限&#xff0c;尤其是直接编辑其中的文字。但幸运的是&#xff0c;随着技术的发展&#xff0c;我们现在有几种方法可以在PDF中直接编辑文字。在本文中&…

SPI 简介

一、SPI 简介 SPI 全称 Serial Peripheral interface &#xff0c;即串行外围设备接口。 SPI 接口是一种高速的全双工同步的通信总线。 二、SPI 工作原理 SPI 的结构框图如下图所示&#xff0c;围绕框图&#xff0c;我们展开介绍一下 SPI 的引脚信息、工作原理以及传输方式…

Mac微信如何备份聊天记录到外接硬盘以释放系统空间?

需求背景 我是256g硬盘的mac的用户,微信聊天记录竟然达到惊人的 12G mac电脑稍微下载个视频或者安装一个大一点的软件磁盘就给塞满了 微信聊天记录占用的这 12G空间我是很想要的 怎么办?怎么办?怎么办?怎么办? 解决方案 步骤其实很简单,针对两种细分场景,有不同的…

MATLAB语言编写的EKF程序,带大量的中文注释

三维非线性状态量的EKF&#xff08;扩展卡尔曼滤波&#xff09;&#xff0c;几乎每一行都有中文注释&#xff0c;方便初学者上手。 下载链接&#xff1a;https://gf.bilibili.com/item/detail/1106112012

只会Python编程,做量化交易策略用QMT怎么样?听说QMT是支持Python的!

QMT是专门为机构、活跃投资者、高净值客户等专业投资者研发的智能量化交易终端&#xff0c;拥有高速行情、极速交易、策略交易、多维度风控等专业功能&#xff0c;满足专业投资者的特殊交易需求。覆盖业务范围广:沪深A股、港股通、两融、期权、期货。 适合用QMT的投资者&#x…

开源RK3588 AI Module7,并与Jetson Nano生态兼容的低功耗AI模块

RK3588 AI Module7 搭载瑞芯微 RK3588&#xff0c;提供强大的 64 位八核处理器&#xff0c;最高时钟速度为 2.4 GHz&#xff0c;6 TOPS NPU&#xff0c;并支持高达 32 GB 的内存。它与 Nvidia 的 Jetson Nano 接口兼容&#xff0c;具有升级和改进的 PCIe 连接。由于该模块的多功…

电子书号和纸质书号的ISBN 号有什么不同?

电子书号和纸质书号的 ISBN 号存在以下不同&#xff1a; 一、外观表现 电子书号的 ISBN 号与纸质书号在外观上基本一致&#xff0c;都是由一连串数字组成&#xff0c;但电子书号一般会明确标注其为电子出版物的书号类型&#xff0c;通常与音像出版社或电子出版社相关联。 而纸…

Python 复制Excel 中的行、列、单元格

在Excel中&#xff0c;复制行、列和单元格是日常工作中经常需要进行的操作&#xff0c;它可以帮助你快速调整数据布局、复制数据模板或进行数据的批量处理。 本文将详细介绍如何使用Python将Excel中的行、列、或单元格范围复制到指定位置。 所需Python库 要使用Python操作Exc…

MySQL基础篇 - MySQL概述

01 为什么要学数据库 答&#xff1a;数据库就是用来存储和管理数据的厂库。在我们日常生活中会用到各种各样的软件产品&#xff0c;这些软件产品的核心都是数据&#xff0c;所以如何高效的存储和管理数据是整个软件系统最核心的部分。我们将要学习的MySQL数据库就是专门用来存…

Windows10安装cuda11.3.0+cudnn8.5.0,以及创建conda虚拟环境(pytorch)

1、检查电脑驱动版本为561.09&#xff0c;选择cuda版本&#xff0c;下图可知cuda版本<12.6。 nvidia-smi #查看驱动版本&#xff0c;以及最大可以安装的cuda版本 2、Anaconda3-2024.06-1-Windows-x86_64.exe下载&#xff1a; 官网&#xff1a;https://www.baidu.com/link?…

记学时查询小程序开发制作方案

学员是记学时查询小程序系统的主要使用者&#xff0c;需要一个方便快捷的方式来查询自己的学时信息。 一、目标用户 学生&#xff1a;需要查看自己的学时记录&#xff0c;了解课程进度。 教师&#xff1a;需要管理学生的出勤情况&#xff0c;记录学时&#xff0c;跟踪学生的学…

透明屏幕有普通屏幕有哪些优点

针对透明玻璃屏幕的安装方案&#xff0c;我们需要综合考虑多个因素&#xff0c;包括安装环境、屏幕尺寸、重量、安全要求以及视觉效果等。以下是一个概括性的安装方案框架&#xff0c;供您参考&#xff1a; 一、前期准备 1.1 需求分析 明确透明玻璃屏幕的使用场景&#xff08…

探索未来智能:Moonshot AI 引领AI新纪元——M1超级模型

在人工智能的快速演进中&#xff0c;Moonshot AI再次站在了技术创新的前沿。我们自豪地宣布推出M1超级模型&#xff0c;这是一款旨在突破现有AI能力极限的革命性产品。 M1超级模型的诞生背景 随着数据量的爆炸性增长和计算能力的提升&#xff0c;AI模型正变得越来越复杂和强…

3款免费的GPT类工具

前言 随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;的崛起与发展已经成为我们生活中不可或缺的一部分。它的出现彻底改变了我们与世界互动的方式&#xff0c;并为各行各业带来了前所未有的便利。 一、Kimi 网址&#xff1a;点我前往 国产AI模型Kimi是一…

图神经网络在推荐系统中的应用综述

1 研究计划 了解推荐系统的研究背景和发展历程了解为什么推荐系统需要GNN了解基于GNN的推荐的关键挑战了解基于GNN的推荐的现有方法 2 完成情况 2.1推荐系统的研究背景和发展历程 随着各种服务和平台(如电子商务、短视频等)上信息的快速爆炸&#xff0c;推荐系统在缓解信息…

Java从入门到精通学习框架(一)

在这一阶段&#xff0c;目标是建立扎实的 Java 编程基础&#xff0c;掌握常见的语法规则和编程思路&#xff0c;了解面向对象编程的基本概念&#xff0c;能够编写简单的控制台程序。 Java 安装与开发环境&#xff1a; 安装 JDK&#xff08;Java Development Kit&#xff09; Ja…

毕业设计选题:基于ssm+vue+uniapp的面向企事业单位的项目申报小程序

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…