Nacos
Nacos是阿里巴巴开源的一个服务发现,配置管理和服务管理平台。只要用于分布式系统中的微服务注册,发现和配置管理,nacos是一个注册中心的组件
官方仓库:https://nacos.io/
Nacos的下载
在官网中下载压缩包到本地
windows下载
把压缩包解压到本地,将startup.cmd文件中的配置改为单机模式
将MOOE设置为standalone
打开startup.cmd,界面为这样时,启动成功
访问 http://127.0.0.1:8848/nacos
Linux下载
直接将你在官网上下载好的压缩包拖入到Xshell中,加载完毕后进行解压
通过这个命令进行解压
unzip nacos-server-2.2.3.zip
解压后输入这个命令开启Nacos单机模式
bash startup.sh -m standalone
进入nacos文件的bin路径中,执行命令,开启Nacos,出现这个界面,代表Nacos的单机模式启动成功
访问自己的IP+端口号/nacos 进行访问
Nacos的使用
Nacos和Eureka的区别就是,Eureka需要自己搭建一个服务,Nacos不用自己搭建服务,组件已经准备好了,只需要启动就行了
将Nacos引入自己的项目,首先引入Nacos的依赖
<properties>
<spring-cloud-alibaba.version>2022.0.0.0-RC2</spring-cloud-alibaba.version>
</properties>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
注意:再父工程的pom文件中的<dependencyManagement>中引入Spring Cloud Alibaba的依赖
再分别再子项目中引入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
再引入Loadbalancer依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>
修改自己的配置文件
将两个子系统同时启动
观察Nacos,发现两个服务都已经注册再Nacos上
启动多个服务,测试负载均衡
我们可以多次的访问order-service中的接口,观察负载均衡
可以发现这三个实例访问分配的几乎差不多
当我们发现其中有一个节点上的性能很差的时候,我们可以对该节点进行下线
下线之后,再次请求节点,发现没有服务进行请求了
配置权重
将请求均匀分配到多个服务器上,从而避免单个服务器过载
注:由于SpringCloudLoadBalancer具有自带的负载均衡 ,所以不支持Nacos的负载均衡策略,所以需要我们自己开启Nacos的负载均衡策略
同集群优先访问
给实例配置集群名称
Nacos健康检查
Nacos服务实例类型
临时实例:如果实例宕机超过一定的时间,就会自动的将实例删除
非临时实例:就算是实例宕机,也不会从服务列表中删除
Nacos环境隔离
创建好namespace,就可以对文件配置
Nacos配置中⼼
由于多人开发时候,配置文件可能需要经常修改,使用同一个配置文件容易冲突,配置中⼼就是对这些配置项进⾏统⼀管理.通过配置中⼼,可以集中查看,修改和删除配置,⽆需再逐个 修改配置⽂件.提⾼效率的同时,也降低了出错的⻛险
需要引入Nacos Config依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- SpringCloud 2020.*之后版本需要引⼊bootstrap-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
进行配置
访问这个接口
@RequestMapping("/config")
@RefreshScope
@RestController
public class NacosController {
@Value("${nacos.test.num}")
private Integer num;
@RequestMapping("/get")
public Integer get(){
return num;
}
}
Data Id
Data Id的完整格式
${prefix}-${spring.profiles.active}.${file-extension}
文件的优先级:product-service-dev.properties> product-service.properties>product service
Nacos与Eureka的区别‘
Nacos除了服务发现和注册之外,还提供了配置中⼼,流量管理和DNS服务等功能
Eureka遵循AP原则
Nacos根据配置识别CP或者AP模式.如果注册Nacos的Client的节点是临时节点,那么Nacos对这个 Client节点的效果就是AP,反之是CP.AP和CP可以同时混合存在。
Eureka:基于拉模式.EurekaClient会定期从Server拉取服务信息,有缓存,默认每30秒拉取⼀次. Nacos:基于推送模式.服务列表有变化时实时推送给订阅者,服务端和客⼾端保持⼼跳连接
希望能对大家有所帮助!!!!