• SpringCloud&Nacos注册中心服务分级存储模型




    在这里插入图片描述

    之前对 Nacos注册中心入门 已经做了演示. 这篇文章对 Nacos 的服务分级存储模型做理论与实践.



    服务分级存储模型概述

    一个服务可以有多个实例,例如我们的 user-server,可以有:

    • 127.0.0.1:8081
    • 127.0.0.1:8082
    • 127.0.0.1:8083

    假如这些实例分布于全国各地的不同机房,例如:

    • 127.0.0.1:8081,在上海机房
    • 127.0.0.1:8082,在杭州机房
    • 127.0.0.1:8083,在杭州机房

    Nacos 就将同一机房内的实例 划分为一个集群

    也就是说,user-server 是服务,一个服务可以包含多个集群,如杭州、上海,每个集群下可以有多个实例,形成分级模型,如图:

    在这里插入图片描述

    微服务互相访问时,应该尽可能访问同集群实例,因为本地访问速度更快。当本集群内不可用时,才访问其它集群。例如:

    在这里插入图片描述

    杭州机房内的 order-server应该优先访问同机房的 user-server。


    配置集群

    user-server 配置集群.

    user-server 服务打包成三份. 三份配置文件做如下改动:

    配置1:

    server:
      port: 20242
    spring:
      cloud:
        nacos:
          # 注册中心地址
          server-addr: ip:8848
          discovery:
            cluster-name: HZ # 集群名称
      application:
        name: user-server
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    配置2:

    server:
      port: 20243
    spring:
      cloud:
        nacos:
          # 注册中心地址
          server-addr: ip:8848
          discovery:
            cluster-name: HZ # 集群名称
      application:
        name: user-server
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    配置3:

    server:
      port: 20244
    spring:
      cloud:
        nacos:
          # 注册中心地址
          server-addr: ip:8848
          discovery:
            cluster-name: SH # 集群名称
      application:
        name: user-server
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    依次启动上面3个项目,启动成功后观察 http://ip:8848/nacos

    在这里插入图片描述

    看到有两个集群,三个实例…这两个集群分别是 HZ 和 SH .其中 HZ 下有连个实例,集群 SH 下有一个实例.

    点击下图的详情:
    在这里插入图片描述

    会看到该服务的详情:

    在这里插入图片描述


    同集群优先的负载均衡

    默认的ZoneAvoidanceRule并不能实现根据同集群优先来实现负载均衡。

    因此 Nacos 中提供了一个NacosRule的实现,可以优先从同集群中挑选实例。

    1)给 消费者服务 配置集群信息

    修改 消费者服务application.yml 文件,添加集群配置:

    spring:
      cloud:
        nacos:
          server-addr: ip:8848
          discovery:
            cluster-name: HZ # 集群名称
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2)修改负载均衡规则

    修改 消费者服务application.yml 文件,修改负载均衡规则:

    userservice:
      ribbon:
        NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则 
    
    • 1
    • 2
    • 3

    权重配置

    实际部署中会出现这样的场景:

    服务器设备性能有差异,部分实例所在机器性能较好,另一些较差,我们希望性能好的机器承担更多的用户请求。

    但默认情况下 NacosRule 是同集群内随机挑选,不会考虑机器的性能问题。

    因此,Nacos 提供了权重配置来控制访问频率,权重越大则访问频率越高。

    Nacos 控制台,找到 user-server 的实例列表,点击编辑,即可修改权重:

    在这里插入图片描述

    在弹出的编辑窗口,修改权重

    在这里插入图片描述


    注意如果权重修改为 0,则该实例永远不会被访问


    总结

    在 Nacos 中,服务注册中心的服务分级存储模型是指将注册的服务信息按照不同的环境或命名空间进行分级存储,以实现服务的多环境隔离和管理。

    Nacos 的服务分级存储模型主要包括以下几个概念和特点:

    • 命名空间(Namespace):命名空间是 Nacos 中的一个重要概念,可以用来隔离不同环境或不同应用的服务数据。通过命名空间,用户可以在不同的环境中管理不同的服务信息,比如在开发、测试和生产环境中分别注册和管理服务。

    • 集群(Cluster):Nacos 支持将服务信息分布在不同的集群中进行存储和管理,每个集群可以包含多个节点,提供高可用性和扩展性。

    • 分组(Group):在每个集群中,服务可以根据实际需求分成不同的分组进行管理,以达到更细粒度的服务隔离和控制。

    • 服务存储结构:Nacos 将各级别的服务信息按照命名空间、集群和分组的层次结构进行存储,通过这种分级存储结构,可以实现服务信息的多级管理和隔离。

    通过 Nacos 的服务分级存储模型,用户可以更加灵活地管理和控制不同环境下的服务注册信息,实现服务的隔离和管理,从而提升系统的稳定性和可维护性。这种分级存储模型为企业级应用架构提供了更好的管理和控制手段,支持多租户、多环境的服务注册与管理,是 Nacos 注册中心的重要特性之一。

    在这里插入图片描述



  • 相关阅读:
    idea启动缓慢解决办法
    0基础跟我学python---进阶篇(1)
    七、python ConfigParser模块
    基于单片机的太阳能灯(声控)电路设计(#0221)
    【Leetcode刷题Python】611. 有效三角形的个数
    带有污染训练数据的深度时间序列异常检测模型的鲁棒学习
    安卓项目结构分析
    数值分析思考题(钟尔杰版)参考解答——第八章
    使用Vue的transition组件写一个数字滚动竟然如此简单
    Get、Post的区别------重定向和转发的区别-----http、https的区别!!!
  • 原文地址:https://blog.csdn.net/2301_78386975/article/details/136328260