• Nacos集群分区


    实际上集群分区概念在之前的Eureka中也有出现,比如:

    1. eureka:
    2. client:
    3. fetch-registry: false
    4. register-with-eureka: false
    5. service-url:
    6. defaultZone: http://localhost:8888/eureka
    7. # 这个defaultZone是个啥玩意,为什么要用这个名称?为什么要要用这样的形式来声明注册中心?

    在一个分布式应用中,相同服务的实例可能会在不同的机器、位置上启动,比如我们的用户管理服务,可能在成都有1台服务器部署、重庆有一台服务器部署,而这时,我们在成都的服务器上启动了借阅服务,那么如果我们的借阅服务现在要调用用户服务,就应该优先选择同一个区域的用户服务进行调用,这样会使得响应速度更快。

    因此,我们可以对部署在不同机房的服务进行分区,可以看到实例的分区是默认:

    我们可以直接在配置文件中进行修改:

    1. spring:
    2. application:
    3. name: borrowservice
    4. cloud:
    5. nacos:
    6. discovery:
    7. server-addr: localhost:8848
    8. # 修改为重庆地区的集群
    9. cluster-name: Chongqing

    当然由于我们这里使用的是不同的启动配置,直接在启动配置中添加环境变量spring.cloud.nacos.discovery.cluster-name也行,这里我们将用户服务和图书服务两个区域都分配一个,借阅服务就配置为成都地区:

    修改完成之后,我们来尝试重新启动一下(Nacos也要重启),观察Nacos中集群分布情况:

    可以看到现在有两个集群,并且都有一个实例正在运行。我们接着去调用借阅服务,但是发现并没有按照区域进行优先调用,而依然使用的是轮询模式的负载均衡调用。

    我们必须要提供Nacos的负载均衡实现才能开启区域优先调用机制,只需要在配制文件中进行修改即可:

    1. spring:
    2. application:
    3. name: borrowservice
    4. cloud:
    5. nacos:
    6. discovery:
    7. server-addr: localhost:8848
    8. cluster-name: Chengdu
    9. # 将loadbalancer的nacos支持开启,集成Nacos负载均衡
    10. loadbalancer:
    11. nacos:
    12. enabled: true

    现在我们重启借阅服务,会发现优先调用的是同区域的用户和图书服务,现在我们可以将成都地区的服务下线:

    可以看到,在下线之后,由于本区域内没有可用服务了,借阅服务将会调用重庆区域的用户服务。

    除了根据区域优先调用之外,同一个区域内的实例也可以单独设置权重,Nacos会优先选择权重更大的实例进行调用,我们可以直接在管理页面中进行配置:

    或是在配置文件中进行配置:

    1. spring:
    2. application:
    3. name: borrowservice
    4. cloud:
    5. nacos:
    6. discovery:
    7. server-addr: localhost:8848
    8. cluster-name: Chengdu
    9. # 权重大小,越大越优先调用,默认为1
    10. weight: 0.5

    通过配置权重,某些性能不太好的机器就能够更少地被使用,而更多的使用那些网络良好性能更高的主机上的实例。

  • 相关阅读:
    计算机毕业设计ssm高校OA办公管理平台jnpxm系统+程序+源码+lw+远程部署
    5G+AI数字化智能工厂建设解决方案
    vue3 如何国际化
    ios app安装的多种方式
    分销模式为用户解决哪些痛点?
    图片如何加水印?教你几招轻松加
    Python初级练习小实例(1-20例),1个实例多个例子相互参考
    机器学习入门五
    数据挖掘的学习路径
    Kerberos环境下 命令行连接kafka 和zk
  • 原文地址:https://blog.csdn.net/Leon_Jinhai_Sun/article/details/126065237