浅谈Spring Cloud:Nacos的配置

news2024/11/15 17:18:10

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.coloradmin.cn/o/2157169.html

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

相关文章

深度学习01-概述

深度学习是机器学习的一个子集。机器学习是实现人工智能的一种途径&#xff0c;而深度学习则是通过多层神经网络模拟人类大脑的方式进行学习和知识提取。 深度学习的关键特点&#xff1a; 1. 自动提取特征&#xff1a;与传统的机器学习方法不同&#xff0c;深度学习不需要手动…

手机在网状态查询接口如何用Java进行调用?

一、什么是手机在网状态查询接口&#xff1f; 手机在网状态查询接口&#xff0c;又叫运营商在网状态查询&#xff0c;手机号在网状态查询&#xff0c;传入手机号码&#xff0c;查询该手机号的在网状态&#xff0c;返回内容有正常使用、停机、在网但不可用、不在网&#xff08;…

【网络】高级IO——epoll版本TCP服务器初阶

目录 前言 一&#xff0c;epoll的三个系统调用接口 1.1.epoll_create函数 1.1.1.epoll_create函数干了什么 1.2. epoll_ctl函数 1.2.1.epoll_ctl函数函数干了什么 1.3.epoll_wait函数 1.3.1.epoll_wait到底干了什么 1.4.epoll的工作过程中内核在干什么 二&#xff0c;…

【Elasticsearch系列廿】Logstash 学习

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

PostgreSQL 的log_hostname 参数测试

PostgreSQL 的log_hostname 参数测试 log_hostname 是 PostgreSQL 配置文件 (postgresql.conf) 中的一个参数&#xff0c;用于控制是否在日志条目中记录客户端主机名。默认情况下&#xff0c;PostgreSQL 只记录客户端的IP地址&#xff0c;而 log_hostname 参数允许数据库管理员…

【最基础最直观的排序 —— 冒泡排序算法】

最基础最直观的排序 —— 冒泡排序算法 冒泡排序&#xff08;Bubble Sort&#xff09;是一种计算机科学领域的较简单的排序算法&#xff0c;属于交换排序。其基本思想是在待排序的一组数中&#xff0c;将相邻的两个数进行比较&#xff0c;若前面的数比后面的数大就交换两数&am…

农产品商城系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;产品分类管理&#xff0c;热销农产品管理&#xff0c;订单管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;热销弄产品&#xff0c;网站公告&#…

基于c++实现的简易shell

代码逻辑 核心思想 解析命令行&#xff0c;拆解命令及其选项创建子进程&#xff0c;在子进程中执行命令如果是前台执行命令&#xff0c;则父进程就阻塞等待子进程中命令执行结束后回收子进程的资源如果是后台执行命令&#xff0c;则父进程不进行阻塞等待&#xff0c;可继续向下…

STM32 软件触发ADC采集

0.91寸OLED屏幕大小的音频频谱&#xff0c;炫酷&#xff01; STM32另一个很少人知道的的功能——时钟监测 晶振与软件的关系&#xff08;深度理解&#xff09; STM32单片机一种另类的IO初始化方法 ADC是一个十分重要的功能&#xff0c;几乎任何一款单片机都会包含这个功能&a…

记一次MySQL索引不当引发死锁问题

一、前言 在并发量很低的情况下&#xff0c;mysql 的响应时延一切正常&#xff0c;一旦并发量上去了&#xff0c;mysql就会出现死锁的情况&#xff0c;你有没有遇到过&#xff1f;到底是是什么原因导致的呢&#xff0c;让我们一起看看真实的案例。 二、遇到的问题 先介绍一下…

LabVIEW提高开发效率技巧----利用第三方库和工具

LabVIEW开发不仅依赖于自身强大的图形化编程能力&#xff0c;还得益于其庞大的用户社区和丰富的第三方库。这些工具和库能够帮助开发者快速解决问题&#xff0c;提升开发效率&#xff0c;避免从头开始编写代码。 1. LabVIEW工具网络&#xff08;NI Tools Network&#xff09; …

MateBook 16s 2023在Deepin下开启性能模式,调节风扇转速到最大,全网首发!

方法 在Deepin下按住Fnp快捷键&#xff0c;开启性能模式。 验证 首先去debian下载acpi-call-dkms https://packages.debian.org/sid/all/acpi-call-dkms/download 然后使用root用户执行&#xff1a; apt install --simulate ./acpi-call-dkms_1.2.2-2.1_all.deb apt inst…

LeetCode 面试经典150题 191.位1的个数

Java中的算术右移和逻辑右移的区别 题目&#xff1a;编写一个函数&#xff0c;获取一个正整数的二进制形式并返回其二进制表达式中设置位的个数&#xff08;也被称为汉明重量&#xff09;。 设置位的个数即二进制中1的个数。 思路&#xff1a;方法一&#xff1a;因为正数的原…

基于阿里云免费部署Qwen1-8B-chat模型并进行lora参数微调从0到1上手操作

文章目录 一、申请资源二、创建实例三、克隆微调数据四、部署Qwen1-8B-chat模型1、环境配置2、模型下载3、本地模型部署 五、模型微调1、拉取Qwen仓库源码2、微调配置3、合并微调参数4、本地部署微调模型 一、申请资源 阿里云账号申请PAI资源详细教程我已于部署ChatGLM3时写过…

Golang | Leetcode Golang题解之第430题扁平化多级双向链表

题目&#xff1a; 题解&#xff1a; func dfs(node *Node) (last *Node) {cur : nodefor cur ! nil {next : cur.Next// 如果有子节点&#xff0c;那么首先处理子节点if cur.Child ! nil {childLast : dfs(cur.Child)next cur.Next// 将 node 与 child 相连cur.Next cur.Chi…

遗传算法与深度学习实战(14)——进化策略详解与实现

遗传算法与深度学习实战&#xff08;14&#xff09;——进化策略详解与实现 0. 前言1. 进化策略1.1 进化策略原理1.2 将进化策略应用于函数逼近 2. 实现进化策略小结系列链接 0. 前言 进化策略 (Evolutionary Strategies, ES) 是进化计算和遗传方法的扩展&#xff0c;增加了控…

【Python学习手册(第四版)】学习笔记24-高级模块话题

个人总结难免疏漏&#xff0c;请多包涵。更多内容请查看原文。本文以及学习笔记系列仅用于个人学习、研究交流。 本来计划中秋发布几篇文章&#xff0c;结果阳了&#xff0c;发烧、头疼、咽疼&#xff0c;修养了近一周&#xff0c;还没好完。希望大家都能有个好身体&#xff0…

proteus仿真软件简体中文版网盘资源下载(附教程)

对于电子通信专业的小伙伴来说&#xff0c;今天文章的标题应该不会陌生。Proteus是一款具有广泛应用的仿真软件&#xff0c;它的功能非常强大&#xff0c;适用于所有单片机的仿真工作&#xff0c;能够从原理图、调试、到与电路的协同仿真一条龙全部搞定&#xff0c;受到所有用户…

自己开发了一个电脑上滚动背单词的软件

在这个快节奏的时代&#xff0c;我们每天都在忙碌中度过&#xff0c;手机虽然方便&#xff0c;但往往难以找到一整块时间来专心背单词。然而&#xff0c;你是否意识到&#xff0c;每天坐在电脑前的时间远比使用手机的时间要长&#xff1f;现在我们来介绍一个新型的学习软件灵思…

Fyne ( go跨平台GUI )中文文档-容器和布局 (四)

本文档注意参考官网(developer.fyne.io/) 编写, 只保留基本用法 go代码展示为Go 1.16 及更高版本, ide为goland2021.2 这是一个系列文章&#xff1a; Fyne ( go跨平台GUI )中文文档-入门(一)-CSDN博客 Fyne ( go跨平台GUI )中文文档-Fyne总览(二)-CSDN博客 Fyne ( go跨平台GUI…