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

【SpringCloud-10】SCA-nacos

前言:

前面介绍的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-autodelivercloud: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  # 命名空间idgroup: 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  # 命名空间idgroup: DEFAULT_GROUP  # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置file-extension: yaml   #默认properties# 根据规则拼接出来的dataId效果:lagou-service-resume.yamlext-config[0]:data-id: abc.yamlgroup: DEFAULT_GROUPrefresh: true  #开启扩展dataId的动态刷新ext-config[1]:data-id: def.yamlgroup: DEFAULT_GROUPrefresh: true  #开启扩展dataId的动态刷新

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

http://www.lryc.cn/news/195078.html

相关文章:

  • 卡顿分析与布局优化
  • 【Vivado HLS Bug】Ubuntu环境下Vivado HLS导出IP报错:HLS ERROR: [IMPL 213-28]
  • 2022最新版-李宏毅机器学习深度学习课程-P14 批次(batch)与动量(momentum)
  • 谜题(Puzzle, ACM/ICPC World Finals 1993, UVa227)rust解法
  • acwing算法基础之数据结构--双链表
  • 将中文名格式化输出为英文名
  • 设计模式_迭代器模式
  • 【数据结构】:栈的实现
  • 微前端一:技术选型
  • FPGA project : flash_continue_write
  • 论文阅读:Rethinking Range View Representation for LiDAR Segmentation
  • 本地配置免费的https咋做?
  • 微信小程序框架---详细教程
  • 【LeetCode刷题(数组and排序)】:存在重复元素
  • 半导体产业链解析:晶圆厂、无晶圆厂与代工厂的比较与作用
  • Apipost一键压测已支持导入CSV文件
  • RabbitMQ的5种模式——再探RabbitMQ的模式,简单、工作,发布订阅(广播),路由、主题 页面分析
  • 初识华为云数据库GaussDB for openGauss
  • 深圳寄包裹到德国
  • 系统架构师备考倒计时22天(每日知识点)Redis篇
  • 现有库存(on-hand inventory),库存水平(inventory level),库存位置(inventory position)
  • 智慧空开让用电更安全、管理更智能——电脑APP远程控制开合闸
  • PyTorch 中张量运算广播
  • Blender:使用立方体制作动漫头像
  • 【ppt技巧】ppt里的图片如何提取出来?
  • Python学习基础笔记七十三——调试程序
  • BOSHIDA DC电源模块关于电容器的电解液位置
  • 如何实现 Es 全文检索、高亮文本略缩处理(封装工具接口极致解耦)
  • C++多线程编程(第四章 案例1,C++11和C++17 多核并行计算样例)
  • 获取远程仓库的信息和远程分支的信息