在nacos中,有集群的概念,集群下才是各种微服务。默认情况为DEFAULT,我们可以在配置文件中对他进行修改:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
username: nacos
password: nacos
clusterName: SH #集群名称
比如我们添加一个名为SH的集群,它是作用是,在对相同服务的访问中。nacos会优先调用相同集群的服务器。
在同一集群环境下,他们调用是遵循不同的负载均衡规则,由于eureka和nacos都实现了springcloud的规则,他们的配置方法一致:
#自定userservice服务的负载均衡规则
userservice: #需要实现规则的服务名
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule
启动服务测试:
使用postman调用6次请求,观察发现一个服务相应4次,一个2次,他们遵循一种随机的负载均衡规则。也可以通过nacos注册中心修改服务权重0~1之间,越大权重越高。被调用的几率越高,为0时不调用。
nacos还可以通过namespace做环境隔离,在相同环境空间下的服务才可以互相访问
具体配置如下:
discovery:
server-addr: 127.0.0.1:8848
username: nacos
password: nacos
clusterName: SH #集群名称
namespace: dev #namespace id
在nacos注册中心添加一个新的namespace
就可以使用了。
当前使用的微服务全是临时实例,服务健康状态是client主动像nacos服务进行汇报的,当服务当调之后nacos会在30s后对不健康服务进行删除,可以通过将服务修改为持久化解决这样的问题,持久化服务是由nacos主动检测,检测到服务当掉也不会直接删除。
discovery:
server-addr: 127.0.0.1:8848
username: nacos
password: nacos
clusterName: SH #集群名称
ephemeral: false
直接将原本的临时服务改为持久话的服务,nacos会检测到,并不允许修改,这里可以通过以下办法解决:
1:关闭nacos服务和client服务器。
2.删除data下的指定文件然后重启服务: