springcloud微服务(五)——Nacos注册中心(二)
上篇介绍了Nacos注册中心快速入门,本篇继续讲解Nacos其他功能。
1.服务多级存储模型
所谓多级存储模型就是把一个服务的多个实例放在不同的集群。条件有限,下面介绍用IDEA模拟多个实例,放在不同集群。
- 在userservice的配置文件中配置集群
spring:
cloud:
nacos:
server-addr: localhost:8848 # nacos服务地址
discovery:
cluster-name: HZ # 集群名称,自定义。HZ代指杭州
- 模拟多个实例
可以改变集群名称后再生产一个实例(注意不要重启之前的实例)。
- 效果。
点击详情。
2.NacosRule负载均衡。
上面将实例放到了不同的集群中,要想优先访问本地集群还要在orderservice中进行配置。
spring:
cloud:
nacos:
server-addr: localhost:8848 # nacos服务地址
discovery:
cluster-name: HZ # 集群名称,自定义。HZ代指杭州
userserver:
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule #负载均衡策略
- 访问orderservice六次进行测试。
可以看到只会访问HZ集群的实例,并且其中一个实例访问了两次,另一个访问了四次。如果我们把HZ集群的实例停掉会怎么样,如下图。
可以看到仍然能访问成功,访问的是SH的集群。总结:1.NacosRule负载均衡会优先访问同集群的实例。2.本地集群找不到提供者,才会去其他集群找。3.确定集群后,再采用随机负载均衡选择实例。
3.服务实例权重设置
点击编辑,设置权重
一般权重在0~1之间,权重值越大,被访问概率越大,权重为0则不会被访问。
4.环境隔离
Nacos环境隔离可以用作区分开发环境,测试环境,生产环境等。
点击确定之后,空间创建成功。
然后在orderservice中的application.yml中配置namespace。
spring:
cloud:
nacos:
server-addr: localhost:8848 # nacos服务地址
discovery:
cluster-name: HZ # 集群名称,自定义。HZ代指杭州
namespace: bb41b21a-099a-450a-bc4d-6cf81483e7a7 #命名空间ID
重启服务后,无法访问。
因为userservice和orderservice已经在不同的命名空间了,无法进行访问。
5.Nacos和eureka对比。
- 共同点:
- 都支持服务注册和拉取
- 都支持服务提供者心跳方式做健康检测
- 区别:
- Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式
- 临时实例心跳不正常会被剔除,非临时实例则不会被剔除
- Nacos支持服务列表变更的消息推送模式,服务列表更新更及时
区别: - Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式
- 临时实例心跳不正常会被剔除,非临时实例则不会被剔除
- Nacos支持服务列表变更的消息推送模式,服务列表更新更及时
- Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;eureka采用AP方式