【SpringCloud-10】SCA-nacos

news2024/11/20 15:34:19

前言:

前面介绍的springcloud,可以看做第一代,称为:SCN(spring cloud Netflix); 接下来介绍的是第二代:SCA(spring cloud alibaba); SCA主要有以下组件:

Nacos:服务注册中心 + 配置中心 (第一代中的 eureka和config)

Sentinel:服务熔断、限流(第一代中的hystrix)

Dubbo RPC/LB: 服务调用(第一代中的feign)

另外,还有一个分布式事务的解决方案:Seata (放到后面的数据库中介绍)

这一章,主要介绍nacos的使用。 

Nacos:

Nacos = Eureka + Config + Bus,在官网下载启动即可,不需要像eureka要自己搭建。

功能特性:

  • 服务发现与健康检查
  • 动态配置管理
  • 动态DNS服务
  • 服务和元数据管理(管理平台的⻆度,nacos也有⼀个ui⻚⾯,可以看到注册的服务及其实例信息(元数据信息)等),动态的服务权重调整、动态服务优雅下线

 下载地址:https://github.com/alibaba/Nacos

启动:linux/mac:sh startup.sh -m standalone

访问:ip:8848/nacos/#/login  (默认账号密码都是nacos)

一:服务注册中心 :

基本使用:

在项目中引入依赖:

pom中:


             <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.1.0.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

微服务中使其成为nacos的客户端:

<!--nacos service discovery client依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>


yml配置nacos格式:

spring:
  application:
    name: lagou-service-autodeliver
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

启动之后,就可以在后台看见注册的服务了:

 

保护阈值:可以设置为 0-1 之间的浮点数,它其实是⼀个⽐例值(当前服务健康实例数/ 当前服务总实例数)。 当阈值被触发时(状态为true),会把所有实例(包括不健康的)都提供出去,防止雪崩。

负载均衡:

Nacos客户端引⼊的时候,会关联引⼊Ribbon的依赖包。 就像使⽤OpenFiegn的时

候也会引⼊ Ribbon 的依赖, Ribbon 包括 Hystrix 都按原来⽅式进⾏配置即可。

领域模型:

Namespace命名空间、Group分组、集群这些都是为了进⾏归类管理,进行隔离。

  • Namespace:命名空间,对不同的环境进⾏隔离,⽐如隔离开发环境、测试环境和⽣产环境
  • Group:分组,将若⼲个服务归为⼀组,比如一个项目下的所有服务。
  • Service:某⼀个服务,⽐如用户中心。
  • DataId:服务中的具体配置文件。

数据持久化:

默认使⽤嵌⼊式数据库进⾏数据存储,⽀持改为外部Mysql存储。

  • 新建数据库 nacos_confifig,数据库初始化脚本⽂件 ${nacoshome}/conf/nacos-mysql.sql
  • 修改${nacoshome}/conf/application.properties,增加Mysql数据源配置
 
spring.datasource.platform = mysql
### Count of DB:
db.num = 1
### Connect URL of DB:
db.url.0 = jdbc : mysql : //127.0.0.1 : 3306/nacos_config?
characterEncoding = utf8&connectTimeout = 1000&socketTimeout = 3000&au
toReconnect = true
db.user = root
db.password = 123456

二:服务配置中心:

之前使用config + bus,现在只需在nacos server端配置即可。

1、在server端新建配置:

2、微服务添加依赖,使其成为Nacos Config Client,能够从Nacos Server中获取到配置信息

<!--nacos config client 依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

3、如何锁定 Nacos Server 中的配置⽂件(dataId):

通过 Namespace + Group + dataId 来锁定配置⽂件, Namespace 不指定就默认public, Group 不指定就默认 DEFAULT_GROUP。

dataId 的完整格式: ${prefix} - ${spring.profile.active} . ${file-extension},:
prefix:默认为spring.application.name的值,也就是项目名。 也可以通过cloud的prefix属性配置。
spring.profile.active:如dev,test
file-extension:yml或properties
cloud:
    nacos:
      discovery:
        # 集群中各节点信息都配置在这里(域名-VIP-绑定映射到各个实例的地址信息)
        server-addr: 127.0.0.1:8848,127.0.0.1:8849,127.0.0.1:8850

      # nacos config 配置
      config:
        server-addr: 127.0.0.1:8848,127.0.0.1:8849,127.0.0.1:8850
        # 锁定server端的配置文件(读取它的配置项)
        namespace: 07137f0a-bf66-424b-b910-20ece612395a  # 命名空间id
        group: DEFAULT_GROUP  # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置
        file-extension: yaml   #默认properties

4、开启注解:@RefreshScope

5、扩展多个dataId:

假如nacos中不只一个yml配置文件,那就需要进行扩展配置了。使用ext-config属性:

  cloud:
    nacos:
      discovery:
        # 集群中各节点信息都配置在这里(域名-VIP-绑定映射到各个实例的地址信息)
        server-addr: 127.0.0.1:8848,127.0.0.1:8849,127.0.0.1:8850

      # nacos config 配置
      config:
        server-addr: 127.0.0.1:8848,127.0.0.1:8849,127.0.0.1:8850
        # 锁定server端的配置文件(读取它的配置项)
        namespace: 07137f0a-bf66-424b-b910-20ece612395a  # 命名空间id
        group: DEFAULT_GROUP  # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置
        file-extension: yaml   #默认properties
        # 根据规则拼接出来的dataId效果:lagou-service-resume.yaml
        ext-config[0]:
          data-id: abc.yaml
          group: DEFAULT_GROUP
          refresh: true  #开启扩展dataId的动态刷新
        ext-config[1]:
          data-id: def.yaml
          group: DEFAULT_GROUP
          refresh: true  #开启扩展dataId的动态刷新

如果多个yml中有相同的配置,dataId的优先级为:默认>扩展的(扩展:ext-config[n], n越大优先级越高)

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

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

相关文章

【Java 进阶篇】创建 JavaScript 轮播图:让网页焕发生机

欢迎大家来到本篇博客&#xff0c;今天我们将一起探讨如何使用 JavaScript 创建一个精美的轮播图。轮播图是现代网站设计的关键元素之一&#xff0c;它能够使网页更加吸引人&#xff0c;提高用户体验。无需担心&#xff0c;本文将面向基础小白&#xff0c;从头开始解释每一步。…

“最强7B模型”论文发布,揭秘如何超越13B版Llama 2

来自“欧洲OpenAI”的“最强7B开源模型”Mistral最近可谓是圈粉无数。 它各方面的测试指标全面超越了13B的Llama2&#xff0c;甚至让一众网友觉得羊驼不香了。 最新消息是&#xff0c;Mistral AI团队已经发布了相关论文&#xff0c;透露背后的技术细节。 Mistral不仅全面战胜…

多个子div在父中垂直居中

在一个div下&#xff0c;有多个子div&#xff0c;且子div都是水平垂直居中 <template><div><div class"far"><!-- 注意需要多包裹一层 --><div><div class"son1">1</div><div class"son2">222…

30天工作量,推荐4个ai写作生成器工具,一键搞定!

全新升级&#xff01;畅销热门AI写作工具盘点40强&#xff0c;助你一键呈现顶尖文案&#xff01; AI写作工具&#xff0c;引领时代潮流&#xff0c;让办公生活更高效&#xff01;小编特意整理了市面上最好用的AI写作工具&#xff0c;共计40款&#xff01;你使用过哪些&#xff…

Centos中如何删除带有特殊符号的乱码文件_rz命令产生的乱码文件如何删除_使用文件号删除乱码文件---Linux运维工作笔记058

在使用rz命令进行文件上传的时候,偶尔会产生一堆的乱码文件,比如: 可以看到有一堆的乱码文件. 普通的乱码文件,直接rm -rf 文件名就可以删除了,但是有一些不行,包含特殊符号的,比如: 这个文件报错了,可以看到用rm -rf 根本删除不掉. 这个文件后面包含了一个.对吧 那该怎么解决…

C++前缀和算法应用:矩形区域不超过 K 的最大数值和

基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 题目 给你一个 m x n 的矩阵 matrix 和一个整数 k &#xff0c;找出并返回矩阵内部矩形区域的不超过 k 的最大数值和。 题目数据保证总会存在一个数值和不超过 k 的矩形区域。 示例 1&#x…

消息队列(中间件)

通信协议&#xff1a; 为了实现客户端和服务器之间的通信来完成的逻辑&#xff0c;基于TCP实现的自定义应用层协议。通过这个协议,完成客户端–服务器远程方法调用。 序列化/反序列化&#xff1a; 通过网络传输对象把对象存储到硬盘上。 序列化&#xff1a;把对象转化为二进制的…

windwos文件句柄数限制

1、修改注册表&#xff0c;位置如下&#xff1a; HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Windows​ 2、设置 1、GDIProcessHandleQuota 此项设置GDI句柄数量&#xff0c;默认值为2710(16进制)/10000(10进制)&#xff0c;该值的允许范围为 256 ~ 16…

pip快速安装torch、opencv、scipy库

目录 一、pip安装torch 1.1 torch介绍 1.2 torch.nn相关库的导入 1.3win10上torch的安装命令 二、pip安装Opencv 三、pip安装scipy库 一、pip安装torch 1.1 torch介绍 torch的基本功能&#xff1a; ①torch&#xff1a;张量的相关运算&#xff0c;例如&#xff1a;创…

微信小程序------框架

目录 视图层 WXML 数据绑定 列表渲染 条件渲染 模板 wsx事件 逻辑层 生命周期 跳转 视图层 WXML WXML&#xff08;WeiXin Markup Language&#xff09;是框架设计的一套标签语言&#xff0c;结合基础组件、事件系统&#xff0c;可以构建出页面的结构。 先在我们的项目中…

GitLab(1)——GitLab安装

目录 一、使用设备 二、使用rpm包安装 Gitlab国内清华源下载地址&#xff1a; ①下载命令如下&#xff1a; ②安装命令如下&#xff1a; ③删除rpm包 ④配置 ⑤重载 ⑥重启 ⑦配置自启动 ⑧打开8989端口并重启防火墙 三、GitLab登录 ①访问GitLab的URL ②输入用户…

scratch身高统计 2023年9月中国电子学会图形化编程 少儿编程 scratch编程等级考试三级真题和答案解析

目录 scratch身高统计 一、题目要求 1、准备工作 2、功能实现 二、案例分析

二维码智慧门牌管理系统:构建未来社区管理新典范

文章目录 前言一、系统概述二、系统优势三、多领域应用四、未来展望 前言 在科技的迅猛发展下&#xff0c;我们的生活正朝着智能化迈进。最近&#xff0c;备受瞩目的“二维码智慧门牌管理系统”为社区管理带来了一场革命&#xff0c;通过建立标准要素之间的关系&#xff0c;重…

关于python pytorch 与CUDA版本相关问题

首先在终端中输入python进入python交互式环境 import torch print(torch.__version__) #注意是双下划线官网&#xff1a;https://pytorch.org/get-started/previous-versions/ CUDA Toolkit版本及可用PyTorch对应关系总结&#xff08;参考官网&#xff09; cuda版本确定后&a…

UI自动化的适用场景,怎么做?

经常有人会问&#xff0c;什么样的项目才适合进行UI自动化测试呢&#xff1f;UI自动化测试相当于模拟手工测试&#xff0c;通过程序去操作页面上的控件。而在实际测试过程中&#xff0c;经常会遇到无法找到控件&#xff0c;或者因控件定义变更而带来的维护成本等问题。 哪些场…

iOS代码混淆-从入门到放弃

​ 目录 1. 什么是iOS代码混淆&#xff1f; 2. iOS自动代码混淆的方法是什么&#xff1f; 3. iOS代码混淆的作用是什么&#xff1f; 4. 怎么样才能做到更好的iOS代码混淆&#xff1f; 总结 参考资料 1. 什么是iOS代码混淆&#xff1f; 代码混淆是指将程序中的方法名、属…

Numpy 从零快速入门教程

NumPy 介绍 什么是 NumPy? NumPy是Python中科学计算的基础包。它是一个Python库&#xff0c;提供多维数组对象&#xff0c;各种派生对象&#xff08;如掩码数组和矩阵&#xff09;&#xff0c;以及用于数组快速操作的各种API&#xff0c;有包括数学、逻辑、形状操作、排序、…

leetcode-49.字母异位词分组

1. 题目 2. 解答 #include <stdio.h> #include <stdlib.h> #include <string.h>#define MAX_STRLEN (10000 1) #define MAX_CHARLEN (100 1)char map[128] {0}; char map_start[128] {0};void solve(char input[MAX_STRLEN][MAX_CHARLEN], int num) {in…

自学\跳槽\转行做网络安全行业的一些建议

前言 前段时间&#xff0c;知名机构麦可思研究院发布了《2022年中国本科生就业报告》 &#xff0c;其中详细列出近五年的本科绿牌专业&#xff0c;其中&#xff0c;信息安全位列第一。 网络安全前景 对于网络安全的发展与就业前景&#xff0c;想必无需我多言&#xff0c;作为当…

最好的开放式蓝牙耳机有哪些?排名前五的开放式耳机五强

越来越多的人开始选择蓝牙耳机作为他们的音频解决方案。蓝牙耳机市场提供了各式各样的选择&#xff0c;不仅有常见的头戴式、耳塞式和半入耳式&#xff0c;还有一种备受欢迎的"开放式耳机"。今天&#xff0c;我将向大家介绍一些优秀的开放式蓝牙耳机款式&#xff0c;…