服务跨集群调用问题:
服务调用尽可能的选择本地集群的服务,跨集群调用延迟较高。
本地集群不可访问的情况下,再去访问其他集群。
如何配置集群的实例属性:
spring:
cloud:
nacos:
server-addr: localhost:8848 #nacos服务端地址
discovery:
cluster-name: chengdu #配置集群名称也就是机房位置
order-service的集群名称为 chengdu
user-service有两个实例,分别的集群名称是chengdu,chongqing
配置负载均衡的规则:
user-service:
ribbon:
# NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #负载均衡规则
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule #负载均衡规则
确定了集群的实例列表后,会采用随机的负载均衡挑选实例。
如果本地集群不可访问的情况下,再去访问其他集群。日志信息为:
04-22 22:42:50:760 WARN 26368 --- [nio-8080-exec-5] c.alibaba.cloud.nacos.ribbon.NacosRule : A cross-cluster call occurs,name = user-service, clusterName = chengdu, instance = [Instance{instanceId='192.168.2.15#8082#chongqing#DEFAULT_GROUP@@user-service', ip='192.168.2.15', port=8082, weight=1.0, healthy=true, enabled=true, ephemeral=true, clusterName='chongqing', serviceName='DEFAULT_GROUP@@user-service', metadata={preserved.register.source=SPRING_CLOUD}}]