阿里Nacos注册中心相关简单使用

strongmore / 2023-08-27 / 原文

使用

服务端

服务端安装及配置运行和配置中心一样,Nacos配置中心

客户端

添加依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>2.2.1.RELEASE</version>
</dependency>

配置 Nacos 地址

spring:
  application:
    name: demo-eureka-client
  cloud:
    nacos:
      discovery:
        server-addr: http://localhost:8848
        namespace: 2a055716-5400-4fd5-b580-afc1eacfec91 #命名空间ID
        enabled: true
        cluster-name: DEFAULT
        username: nacos
        password: nacos

image

修改端口号可以在本地启动多个实例

服务调用方

配置 RestTemplate 及 负载均衡规则

@Configuration
public class RestTemplateConfig {

    /**
     * LoadBalancerAutoConfiguration会对包含@LoadBalanced注解的RestTemplate添加LoadBalancerInterceptor拦截器
     *
     * @return
     */
    @Bean
    @LoadBalanced //必须加此注解,不然找不到服务名对应的地址
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    /**
     * 负载均衡策略
     *
     * @return
     */
    @Bean
    public IRule iRule() {
        return new NacosRule();
    }

}
http://localhost:8848/nacos/v1/ns/instance/list

nacos的AP和CP模式

Nacos支持CP+AP模式,即Nacos可以根据配置识别为CP模式或AP模式,默认是AP模式。

如果注册Nacos的client节点注册时ephemeral=true,那么Nacos集群对这个client节点的效果就是AP,采用distro协议实现;而注册Nacos的client节点注册时ephemeral=false,那么Nacos集群对这个节点的效果就是CP的,采用raft协议实现。

根据client注册时的属性,AP,CP同时混合存在,只是对不同的client节点效果不同。Nacos可以很好的解决不同场景的业务需求。

com.alibaba.cloud.nacos.NacosDiscoveryProperties#ephemeral来配置,默认为true,表示默认AP。

原理

Raft算法的原理

参考

微服务注册中心Nacos入门
nacos的AP和CP模式