Spring Cloud: Nacos

发布于:2025-05-11 ⋅ 阅读:(14) ⋅ 点赞:(0)

Nacos

        Nacos是阿里巴巴开源的一个服务发现,配置管理和服务管理平台。只要用于分布式系统中的微服务注册,发现和配置管理,nacos是一个注册中心的组件

官方仓库:https://nacos.io/

Nacos的下载

Releases · alibaba/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:基于推送模式.服务列表有变化时实时推送给订阅者,服务端和客⼾端保持⼼跳连接

希望能对大家有所帮助!!!!


网站公告

今日签到

点亮在社区的每一天
去签到