SpringCloud - Nacos

news2024/11/14 13:56:09

目录

服务注册到Nacos

服务分级存储模型

NacosRule负载均衡

服务实例的权重设置

环境隔离

Nacos与Eureka的对比

添加Nacos配置

微服务配置拉取

配置热更新

多环境配置共享


  • 服务注册到Nacos

  • 1.在父工程引入SpringCloudAlibaba的依赖

  • 2.注释掉order-service和user-service中原有的eureka依赖

  • 3.添加nacos的客户端依赖

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

  • 5.启动并测试

  • Nacos客户端引入的时候,会关联引入Ribbon的依赖包,负载均衡同前文
  • 服务分级存储模型

  • 一个服务可以有多个实例
  • 为了方便管理,需将实例划分为多个集群,即一个服务可以包含多个集群,每个集群下可以有多个实例
  • 微服务互相访问时,应该尽可能访问同集群实例,因为本地访问速度更快
  • 当本集群内不可用时,才访问其它集群
  • 修改application.yml,配置集群
  • NacosRule负载均衡

  • 添加集群之后,仍旧是轮询调用
  • 默认的ZoneAvoidanceRule并不能实现根据同集群优先来实现负载均衡
  • 需要修改order-service的application.yml文件,修改负载均衡规则,优先从同集群中挑选实例

  • 服务实例的权重设置

  • 优先从同集群中挑选实例的默认情况下是从同集群内随机挑选,现实可能会存在服务器设备性能有差异
  • 部分实例所在机器性能较好,另一些较差,希望性能好的机器承担更多的用户请求
  • 通过权重配置来控制访问频率,权重越大则访问频率越高
  • 在nacos控制台,找到user-service的实例列表,点击编辑,即可修改权重

  • 环境隔离

  • Nacos提供了namespace来实现环境隔离功能,不同namespace之间相互隔离,例如不同namespace的服务互相不可见
  • Namespace:命名空间,对不同的环境进行隔离,比如隔离开发环境、测试环境和生产环境
  • Group:分组,将若干个服务或者若干个配置集归为一组,通常习惯一个系统归为一个组
  • Service:某一个服务,比如商品微服务
  • DataId:配置集或者可以认为是一个配置文件
  • 默认情况下,所有service、data、group都在同一个namespace,名为public
  • 1.在Nacos控制台可以创建namespace,用来隔离不同环境

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

  • 3.修改order-service的application.yml,添加namespace:

  • Nacos与Eureka的对比

  • Nacos与Eureka的共同点
    • 都支持服务注册和服务拉取
    • 都支持服务提供者心跳方式做健康检测
  • Nacos与Eureka的区别
    • Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式
    • 临时实例心跳不正常会被剔除,非临时实例则不会被剔除
    • Nacos支持服务列表变更的消息推送模式,服务列表更新更及时
    • Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式
  • Nacos的服务实例分为两种类型:
    • 临时实例:如果实例宕机超过一定时间,会从服务列表剔除,默认的类型
    • 非临时实例:如果实例宕机,不会从服务列表剔除,除非在控制台手动删除,也可以叫永久实例
  • 添加Nacos配置

  • 当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错
  • 需要统一配置管理方案,可以集中管理所有实例的配置
  • Nacos一方面可以将配置集中管理,另一方可以在配置变更时,及时通知微服务,实现配置的热更新
  • 在nacos中添加配置文件:

  • 注意:
    • 项目的核心配置,需要热更新的配置才有放到nacos管理的必要
    • 基本不会变更的一些配置还是保存在微服务本地比较好
  • 微服务配置拉取

  • 微服务要拉取nacos中管理的配置,并且与本地的application.yml配置合并,才能完成项目启动
  • spring引入了一种新的配置文件:bootstrap.yaml文件,会在application.yml之前被读取,提前得到nacos地址,流程如下:

  • 1.在user-service服务中,引入Nacos的配置管理客户端依赖:

  • 2.在userservice中的resource目录添加一个bootstrap.yml文件,这个文件是引导文件,优先级高于application.yml

  • 会根据spring.cloud.nacos.server-addr获取nacos地址,再根据spring.application.name-{spring.profiles.active}.${spring.cloud.nacos.config.file-extension}作为文件id
  • 即userservice-dev.yaml来读取配置

  • 3.在user-service中的UserController中添加业务逻辑,读取到配置信息

  • 配置热更新

  • Nacos中的配置文件变更后,微服务无需重启就可以感知
  • 不过需要通过下面两种配置实现:
  • 方式一:在@Value注入的变量所在类上添加注解@RefreshScope

  • 方式二:添加一个类,读取配置文件,使用@ConfigurationProperties注解

  • 多环境配置共享

  • 实例解说:
  • userservice-dev文件配置详情

  • userservice文件配置详情

  • 修改对应信息

  • 访问代码

  • 运行两个UserApplication,使用不同的profile

  • UserApplication(8081)使用的profile是dev
  • UserApplication2(8082)使用的profile是test
  • 启动UserApplication和UserApplication2
  • 访问http://localhost:8081/user/prop

  • 访问http://localhost:8082/user/prop

  • 配置共享的优先级
  • nacos中的当前环境配置>nacos中的共享配置>本地配置

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

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

相关文章

@KafkaListener 详解及消息消费启停控制

参考:Kafka参数一、KafkaListener注解KafkaListener(id "11111", groupId "demo-group",topics Constants.TOPIC)public void listen(String msgData) {LOGGER.info("收到消息" msgData); } KafkaListener(id "22222"…

React系列之Redux

1 Redux概述 Redux 是 JavaScript 状态容器,提供可预测化的状态管理。Redux中文文档 Redux 和react没有必然关系,redux可以应用于各种框架,包括jquery,甚至js都可以使用redux,只不过redux和react更加搭配。redux也推…

javaee之git

一张图说明git 分支之间的操作 这个 框里面的linux命令都可以用 操作开始: 在master分支里面创建了一个hello.txt,并且放入了一些数据进去 这个去查一下日志 问题:当你放入了暂存区,你去查看日志会报错 一个分支这个指针head永…

Django框架之Django使用自带模板

Django使用自带模板 1 配置 在工程中创建模板目录templates。 在settings.py配置文件中修改TEMPLATES配置项的DIRS值: TEMPLATES [{BACKEND: django.template.backends.django.DjangoTemplates,DIRS: [os.path.join(BASE_DIR, templates)], # 此处修改APP_DIR…

vue-router 的基本用法

vue-router 的基本用法 1.什么是 vue-router vue-router 是 vue.js 官方给出的路由解决方案。它只能结合 vue 项目进行使用,能够轻松的管理 SPA 项目中组件的切换。 vue-router 的官方文档地址:https://router.vuejs.org/zh/ 2.vue-router 安装和配置的…

GIT分支管理策略

git基本操作git操作的前提条件:本地windows安装git学习idea中的插件使用idea的git基本操作:远程仓库remote更新fetch:git fetch拉取pull: git pull上传push: git push合并merge: git merge 合并分支本地提交commit:git commit分支branch: git branch 查看分支或者 切换分支上述…

SpringBoot整合Junit

创建项目 idea创建空项目Empty Project。项目中创建模块,选择SpringBoot Initialize快速构建SpringBoot项目。 依赖这里什么也不用选择。 pom文件中默认有两个依赖: spring-boot-starter springboot如果不导入任何依赖,默认的一个基础依赖。spring-…

5.3 线程安全问题解决方案

文章目录1.概述2.同步和异步3.synchronized同步关键字3.1 写法3.2 前提3.3 特点4.练习-改造售票案例-继承Thread4.1 代码实现4.2 注意事项5.练习-改造售票案例-实现Runnable接口5.1 代码实现5.2 注意事项6.练习-改造售票案例-使用线程池6.1 代码实现6.2 代码分析7.线程锁7.1 悲…

七、确保web安全的HTTPS

HTTPS 1、HTTP 的缺点 HTTP的主要缺点: 通信使用明文(不加密),内容可能会被窃听 HTTP 本身不具备加密的功能,因此无法做到对通信整体(使用 HTTP 协议通信的请求和响应的内容)进行加密。所以按…

actipro-winforms-controls-23.1.0 Crack

actipro-winforms一组用于构建漂亮的 Windows 窗体桌面应用程序的 UI 控件,用于构建 IDE 的高级停靠窗口、MDI、属性网格、树控件和文件夹/文件浏览器,用于常见数据类型、自动完成、屏蔽编辑和代码编辑的强大编辑器,功能区、图表、微型图表、…

Centos7 安装 MySQL 8.0.31详细教程(亲测无障碍必成功)

操作之前,首先检查防火墙是否关闭(直接设置永久关闭) 查看防火墙状态:firewall-cmd --state 禁止firewall开机启动 永久生效:systemctl disable firewalld.service 重启电脑:reboot 1. 在FinallShell上传或…

Julia 教程

Julia 是一个开源的编程语言,采用 MIT 许可证,每个人都可以免费使用。 Julia 是一个面向科学计算的高性能动态高级程序设计语言。 Julia 最初是为了满足高性能数值分析和计算科学的需要而设计的,不需要解释器,速度快。 Julia 于…

筛选效率直接起飞,复杂场景秒变简单丨三叠云

表单 路径 表单设计 >> 高级筛选 功能简介 筛选条件优化升级,支持多种混合条件筛选。 功能描述: 本次更新支持2个层级的条件,系统处理数据时,将会先根据第二个层级的条件关系找出数据、继而再根据第一层级即分组之间的…

解决CondaUpgradeError网上的方法都不奏效(回退版本、upgrade/update都不行)的问题和CondaValueError

问题描述 Executing transaction: failed ERROR conda.core.link:_execute(502): An error occurred while installing package ‘conda-forge::certifi-2022.9.24-pyhd8ed1ab_0’. CondaUpgradeError: This environment has previously been operated on by a conda version…

Java 基础——File 类与 I/O 流

目录1.java.io.File 类的使用1.1.概述1.2.构造器1.3.常用方法1.3.1.获取文件和目录基本信息1.3.2.列出目录的下一级1.3.3.File类的重命名功能1.3.4.判断功能的方法1.3.5.创建、删除功能2.I/O 流原理及流的分类2.1.I/O 原理2.2.流的分类2.3.流的 API3.节点流之一:Fil…

项目经理PMO分别是什么?

1. PMO是什么?(1)定义PMO项目经理(Project Management Office Manager),也称为项目管理办公室经理、项目管理中心或者项目管理部。一般来说,PMO就是负责公司项目管理政策、标准的制定&#xff0…

C/C++每日一练(20230220)

目录 1. 利用字母组成图形 2. 子集 II 3. 路径总和 II 附录 深度优先搜索算法 广度优先搜索算法 1. 利用字母组成图形 利用字母可以组成一些美丽的图形,下面给出了一个例子: ABCDEFG BABCDEF CBABCDE DCBABCD EDCBABC 这是一个5行7列的图形&…

ROS2入门-话题-服务-接口

ROS2入门-话题-服务-接口 本文学习的是《动手学ROS2》 报错放在另一个文章中。 文章目录ROS2入门-话题-服务-接口Linux常用命令sudochomd 修改文件权限安装软件apt安装软件dpkg安装deb包打开终端VS code关机/重启静态链接库/动态链接库Cmake设置treeROS节点功能包创建功能包列…

数据分析,如何看待我国1400万人忍受极端通勤,单程通勤超60分钟!

女生极限通勤每天来回 6.5 小时,上海某位女士公司离家单程约100公里左右,单程通勤需要3小15分,来回通勤时间为6.5小时。如此长的通勤时间却不是个例,全国有超1400万人正在忍受单程超过60分钟的极端通勤,如何看待我国 1…

将默认安装的 WSL2 迁移至指定目录

将默认安装的 WSL2 迁移至指定目录WSL2 默认安装在 C 盘下,系统盘空间有限,推荐更改安装目录。 1. 默认安装的 WSL2 目录 C:\Users\cheng\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\ext4.vhdx 2. …