Nacos的服务分级模型

  1. 分级模型

    • 为了提升整个系统的容灾性,Nacos 引入了地域 (Zone) 的概念,如上图中的北京、上海和杭州。把同一个服务的多个实例部署到不同地域的机房中 (鸡蛋分开不同的篮子放) ;又把在同一个地域的机房的多个服务实例称为集群 (Cluster) 。比如,杭州机房的 2 个用户服务 user-service 称为杭州 user-service 集群。

    • 因此,在 Nacos 的服务分级模型中,
      第一级是微服务 (如订单服务) ;
      第二级是集群 (如北京订单服务集群、上海订单服务集群等) ;
      第三集是实例 (如杭州服务集群的 8081 端口实例、8082 端口实例等) 。

  2. 服务分级模型的必要性

    • 微服务之间的远程调用要优先调用同一个地域的集群中的实例,因为访问同一个集群中的服务距离较短、速度比较快、延迟比较低。而跨地域集群地域距离远、速度慢、延迟高 。

    • 那为什么 Nacos 还要增加一层【集群】的概念呢?

    为了避免跨地域集群的远程调用发生,让微服务之间的远程调用尽可能地发生在同一个地域集群中,保证访问的高速低延迟。同时为了当同地域的集群服务不可用时,可以跨地域集群访问,保证服务的高可用,提升系统的容灾能力。

  3. 配置集群属性

    • 需要修改服务提供者的application.yml 配置文件,启动不同的实例
    spring: 
      # Nacos配置
      cloud:
        nacos:
          server-addr: 127.0.0.1:8848 # Nacos服务地址
          discovery:
            cluster-name: HZ 
    
    • 需要修改服务消费者的application.yml 配置文件,启动不同的实例
    spring: 
      # Nacos配置
      cloud:
        nacos:
          server-addr: 127.0.0.1:8848 # Nacos服务地址
          discovery:
            cluster-name: HZ 
    
    • 还需要修改消费者的负载均衡策略
    userservice:
      ribbon:
        NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule  # 负载均衡策略
    
  4. 根据权重负载均衡:服务器的设备差异,在nacos中可以直接编辑权重值。

  5. Nacos中的环境隔离:在机器不够的情况下,需要一套Nacos多个环境使用,那么在这里一般会使用多个Namespace(dev、test、staging、prod)来区分环境,然后再通过dataID来指定每个服务的配置文件,这样就可以每个环境的服务注册发现不会相互干扰,并且也不会用到其他环境的配置文件。

    cloud:
        nacos:
          discovery:
            username: nacos
            password: nacos
            server-addr: 127.0.0.1:8848
            # 注册到 nacos 的指定 namespace,默认为 public
            namespace: public
    
  6. Nacos和Eureka的区别

    • Nacos和Eureka都提供了动态服务发现、配置管理、服务元数据管理和流量管理等功能。然而,它们之间也存在一些差异。例如,Nacos支持服务端主动检测提供者状态,而Eureka则采用客户端检测机制。此外,Nacos支持服务列表变更的消息推送模式,服务列表更新更及时,而Eureka则采用拉取模式。

    • Nacos和Eureka都具有较高的性能和可扩展性。然而,由于Nacos是基于长连接的,因此在处理大量并发请求时可能会表现出更高的性能。而Eureka则采用短连接和定时发送的方式,因此在处理少量请求时可能具有更好的性能。

    • Eureka采用CS架构,由服务注册中心Eureka Server和服务提供者/消费者Eureka Client组成;Nacos采用高可用的P2P设计(无主节点),所有的server节点都是同等作用,支持AP和CP两种模式;

posted @ 2024-05-23 09:47  Hanyta  阅读(14)  评论(0编辑  收藏  举报