①一级是服务(一个服务可以有多个实例)
②二级是集群(这些实例可以部署到不同的机房地区),例如北京或上海
③三级是实例,例如北京机房的某台部署了某服务的服务器
微服务互相访问时,应该尽可能访问同集群实例,因为本地访问速度更快。当本集群内不可用时,才访问其它集群。例如:
spring:
cloud:
nacos:
server-addr: localhost:8848
discovery:
cluster-name: HZ # 集群名称
重启两个category-service实例后,我们可以在nacos控制台看到下面结果:
我们再次复制一个category-service启动配置,添加属性:-Dserver.port=8083 -Dspring.cloud.nacos.discovery.cluster-name=SH
启动CategoryApplication3后再次查看nacos控制台:
默认的ZoneAvoidanceRule并不能实现根据同集群优先来实现负载均衡。
因此Nacos中提供了一个`NacosRule`的实现,可以优先从同集群中挑选实例。
1)给book-service配置集群信息
修改book-service的application.yml文件,添加集群配置
spring:
cloud:
nacos:
server-addr: localhost:8848
discovery:
cluster-name: HZ # 集群名称
2) 修改负载均衡规则
修改book-service的application.yml文件,修改负载均衡规则:
spring:
cloud:
nacos:
server-addr: localhost:8848
discovery:
cluster-name: CD
namespace: fb473de2-f365-4348-a15e-652466531159
loadbalancer:
nacos:
enabled: true # 采用Nacos负载均衡规则