Nacos服务分级存储模型
服务跨集群调用问题
1、配置集群
- 修改服务的application.yml,并且配置ZH之后启动实例1、2,然后在配置SH之后启动实例3(效果:集群一:杭州1,2;集群二:上海3)
spring:
cloud:
nacos:
server-addr: localhost:8848 #nacos的服务地址
discovery:
cluster-name: SH #集群名称,ZH(杭州),SH(上海)
- 在Nacos控制台可以看到集群变化:
2、根据集群负载均衡
- 修改order-service中的application.yml,设置集群为ZH:
spring:
cloud:
nacos:
server-addr: localhost:8848 #nacos的服务地址
discovery:
cluster-name: SH #集群名称,表示此服务在上海集群
- 然后在order-service中设置负载均衡的IRule为NacosRule,这个规则优先会寻找与自己同集群的服务:
userservice:
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule #负载均衡规则
- 注意将user-service的权重都设置为1,否则在本地集群的多个实例中会随机发起调用
3、根据权重负载均衡
实际部署中会出现这样的场景:
- 服务器设备性能有差异,部分实例所在机器性能较好,另一些较差,我们希望性能好的机器承担更多的用户请求
Nacos提供了权重配置来控制访问频率,权重越大则访问频率越高
- 在Nacos控制台可以设置实例的权重值,首先选中实例后面的编辑按钮
- 将权重设置为0.1,测试可以发现8081被访问到的频率大大降低