当前位置: 首页 > news >正文

浅谈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.mrgr.cn/news/29664.html

相关文章:

  • I.MX6U 裸机开发9.BEEP蜂鸣器实验
  • 如何在vscode 中打开新文件不覆盖上一个窗口
  • [CKS] K8S NetworkPolicy Set Up
  • 三天精通一种算法之螺旋矩阵(设计思路),长度最小子数组(滑动窗口)
  • 网络物理隔离技术
  • 对node工程进行压力测试与性能分析
  • do { ... } while (0) 的意义
  • etsts
  • 英飞凌—TC377芯片详解(2)
  • 「全球大模型竞技场」更新:DeepSeek-V2.5全面领跑国内模型
  • Uinty Collider 有几种?
  • nonlocal本质讲解(前篇)——从滤波到Nonlocal均值滤波
  • B端:分享一波简洁、高颜值的pad端管理界面。
  • WSL中使用AMBER GPU串行版
  • AI修手有救了?在comfyui中使用Flux模型实现局部重绘案例
  • 【MQTT协议使用总结】基于-FreeRTOS平台-移植MQTT协议栈
  • C++编程:多线程环境下std::vector内存越界导致的coredump问题分析
  • [Golang] Context
  • 双指针算法
  • 基于虚拟阻抗的逆变器下垂控制环流抑制策略MATLAB仿真
  • FreeRTOS学习——接口宏portmacro.h
  • 完结马哥教育SRE课程--服务篇
  • GAMES101(2~3作业)
  • 理解树形结构数据的操作(上)
  • PI控制器的带宽到底怎么算的?
  • JAVA_15