我们知道Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件,相比Eureka功能更加丰富,在国内受欢迎程度较高。

Nacos的服务注册

一、Nacos的安装与部署

官方地址:https://github.com/alibaba/nacos

springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_java


springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_负载均衡_02

springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_负载均衡_03

二、Nacos服务分级存储模型

服务-实例(一对多)
加上地域划分:
服务-集群(一对多)、集群-实例(一对多)
优点:容灾,就近原则(访问本地集群,效率高,不用跨越多重局域网)

springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_spring cloud_04


如何配置

cloud:
nacos:
server-addr: localhost:8848 #nacos服务端地址
discovery:
	cluster-name: SH #集群名称,这里SH代表上海

三、根据集群负载均衡

问题:为什么配置到了集群,还是会访问到远点的集群?
  因为Nacos默认采用的是轮询的负载均衡策略,是基于所有实例的负载均衡,所以存在访问到远点集群的情况。

怎么处理?

根据集群配置负载均衡,如下图:

springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_spring cloud_05


springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_负载均衡_06

四、根据权重配置负载均衡

springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_负载均衡_07


如何去配置呢?

springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_配置管理_08

五、Nacos的环境隔离(namespace)

(1)namespace用来做环境隔离

(2)每个namespace都有唯一的id

(3)不同namespace下的服务不可见

springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_spring cloud_09


Nacos命名空间的配置步骤:

springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_java_10


springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_java_11


springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_nacos_12


springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_配置管理_13


注意

  不同命名空间下的服务没法互相访问,反之,想要能互相访问就放到同一个命名空间下。

六、Nacos注册中心细节比对Eureka

springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_配置管理_14


springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_配置管理_15


Nacos的临时实例和非临时实例配置:

默认值为:true(临时实例)

springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_配置管理_16


对比:

springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_负载均衡_17


以上是Nacos作为注册中心使用的介绍;下面是Nacos作为配置中心的介绍。

Naocs的配置管理

一、统一配置管理

1、配置更改热更新

springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_负载均衡_18


热更新:

  在Nacos配置管理服务中更新配置,会向服务发送配置更新的通知,服务会立即读取配置,这样就在不用重启服务的情况下实现配置更新,即“热更新”。2、在Nacos中添加配置信息

springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_java_19


springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_负载均衡_20


3、Nacos配置获取的步骤

springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_负载均衡_21


详解:

  要读取nacos中配置文件首先就需要获取nacos的地址,nacos地址在学习注册中心时是写在本地的application.yml文件中,若通过nacos配置管理就需要将nacos写在bootstrap.yml文件中,这样就能提前获取到nacos的地址再去nacos中获取配置信息。(springboot中bootstrap.yml的加载优先级比application.yml高)4、Nacos配置管理具体步骤

springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_nacos_22


验证是否配置成功:

springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_负载均衡_23


5、总结-将配置交给Nacos管理的步骤

springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_nacos_24

二、配置热更新

1、Nacos配置自动刷新-推荐方式二

springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_nacos_25


springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_配置管理_26


总结

springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_负载均衡_27

三、配置共享

1、什么环境下需要实现微服务间的配置共享?

  例如多个环境间相同的配置若都是在每个配置中都增加相同的配置会出现冗余效果,这时候就可以将这种配置实现共享。

springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_负载均衡_28


2、Nacos多种配置的优先级

springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_spring cloud_29


3、总结

springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_负载均衡_30

四、搭建Nacos集群

1、Nacos集群模型图

springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_nacos_31


2、Nacos搭建集群步骤

springcloud使用nacos 服务权重实现负载均衡 springcloud配置nacos集群_nacos_32