Nacos与euraka功能对比

configurationproperties结合nacos自动刷新 nacos自动刷新原理_spring

功能上可以看出nacos比euraka主要增加了配置中心,并且配置中心可以设置自动刷新。这样可以减少一些服务的启动。

在注册中心,nacos支持 ap与cp两种模式,并且可以设置权重。

如何使用自动刷新配置文件呢

1.引入依赖

<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

2.配置文件增加配置

spring.cloud.nacos.config.enabled=true
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.group=DEFAULT_GROUP
spring.cloud.nacos.config.file-extension=properties
spring.cloud.nacos.config.shared-dataids=common.properties
spring.cloud.nacos.config.refreshable-dataids=common.properties

3.在想使用的类加入注解

configurationproperties结合nacos自动刷新 nacos自动刷新原理_Server_02

通过以上三步,就可以达到动态刷新了。是不是相当easy。

注册中心使用

1.加依赖

<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibabnacos-discovery</artifactId>
</dependency>

2.加入配置

spring.cloud.nacos.discovery.enabled=true
spring.cloud.nacos.discovery.server-addr=${spring.cloud.nacos.config.server-addr}
spring.cloud.nacos.discovery.group=${spring.cloud.nacos.config.group}

3.启动类加注释。不过加不加都是可以的哦。
@EnableDiscoveryClient(autoRegister = true)

通过以上三步就可以注册一个服务到注册中心啦。下面看一看注册后的效果图吧

1.这个是配置中心效果

configurationproperties结合nacos自动刷新 nacos自动刷新原理_java_03

2.这个是注册中心效果

configurationproperties结合nacos自动刷新 nacos自动刷新原理_java_04

大家有没有发现在上面多出了dev与uat呢。这个是什么呢?

其实这个就是命名空间,起到一个环境隔离的作用。每个命名空间有个namespase,从下图可以看到。

configurationproperties结合nacos自动刷新 nacos自动刷新原理_spring_05

当有多个命名空间的时候,我们可以指定注册到具体的空间下,如果不写,那么就是默认的public。

当然如果想隔离也是可以通过group去实现的,默认是default_group.

讲了这么多大家看一看,nacos的内存模型

configurationproperties结合nacos自动刷新 nacos自动刷新原理_Server_06

不难发现,其实nacos的注册表就是一个多层map嵌套的,通过namaspase和group作为key,从而达到环境隔离的效果

Nacos核心功能点

1.服务注册:Nacos Client会通过发送REST请求的方式向Nacos Server注册自己的服务,提供自身的元数据,比如ip地址、端口等信息。 Nacos Server接收到注册请求后,就会把这些元数据信息存储在一个双层的内存Map中。 
  2.服务心跳:在服务注册后,Nacos Client会维护一个定时心跳来持续通知Nacos Server,说明服务一直处于可用状态,防止被剔除。默认 5s发送一次心跳。 
  3.服务同步:Nacos Server集群之间会互相同步服务实例,用来保证服务信息的一致性。       
  4.服务发现:服务消费者(Nacos Client)在调用服务提供者的服务时,会发送一个REST请求给Nacos Server,获取上面注册的服务清 单,并且缓存在Nacos Client本地,同时会在Nacos Client本地开启一个定时任务定时拉取服务端最新的注册表信息更新到本地缓存
  5.服务健康检查:Nacos Server会开启一个定时任务用来检查注册服务实例的健康情况,对于超过15s没有收到客户端心跳的实例会将它的 healthy属性置为false(客户端服务发现时不会发现),如果某个实例超过30秒没有收到心跳,直接剔除该实例(被剔除的实例如果恢复发送 心跳则会重新注册)

nacos的基本使用介绍就介绍到这里,下一节我们在通过核心功能点,逐步的去看一看源码吧!!!!