天天看点

springcloud Nacos一、服务多级存储模型1.6 eureka与nacos的区别

一、服务多级存储模型

1.1

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

1.localhost:8081

2.localhost:8082

3.localhost:8083

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

1.localhost:8081 上海

2.localhost:8082 上海

3.localhost:8083 北京

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

springcloud Nacos一、服务多级存储模型1.6 eureka与nacos的区别

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

注意:上海的order-service应该优先访问同机房的user-service,如果本地的不可以访问,在去访问其他的

springcloud Nacos一、服务多级存储模型1.6 eureka与nacos的区别

1.2 修改集群部署

在userservice的.yml中

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ # 集群名称   
           

1.3为了让orderservice优先访问本地的

默认的

ZoneAvoidanceRule

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

因此Nacos中提供了一个

NacosRule

的实现,可以优先从同集群中挑选实例。

1.3.1在.yml中配置

springcloud Nacos一、服务多级存储模型1.6 eureka与nacos的区别

1.3.2 修改负载均衡规则

在.yml中

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

1.4修改权重

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

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

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

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

1.4.1

在nacos控制台,找到的实例列表,点击编辑,即可修改权重:

springcloud Nacos一、服务多级存储模型1.6 eureka与nacos的区别

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

springcloud Nacos一、服务多级存储模型1.6 eureka与nacos的区别

1.4.2注意

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

1.5 nacos 环境隔离 namespace

nacos中可以有多个namespace

namespace下可以有group、service等

不同namespace之间相互隔离,例如不同namespace的服务互相不可见

springcloud Nacos一、服务多级存储模型1.6 eureka与nacos的区别

打开nacos的主页 选中命名空间

springcloud Nacos一、服务多级存储模型1.6 eureka与nacos的区别
springcloud Nacos一、服务多级存储模型1.6 eureka与nacos的区别

完成之后回到服务列表

发现dev没有东西,是因为没有配置
springcloud Nacos一、服务多级存储模型1.6 eureka与nacos的区别

1.5.1 需要去配置环境修改

给微服务配置namespace只能通过修改配置来实现。

例如,修改orderservice的.yml文件:

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ
        namespace: 492a7d5d-237b-46a1-a99a-fa8e98e4b0f9 # 命名空间,填ID
           

1.5.2 注意

每个namespace有唯一不同的id

不同的namesp下的服务不可见

1.6 eureka与nacos的区别

springcloud Nacos一、服务多级存储模型1.6 eureka与nacos的区别

nacos不会把非临时实例剔除,会等着这哦服务回复健康

1.6.1 Nacos的服务实例分为两种l类型:

1.6.1.1 临时实例:如果实例宕机超过一定时间,会从服务列表剔除,默认的类型。

1.6.1.2 非临时实例:如果实例宕机,不会从服务列表剔除,也可以叫永久实例。

1.6.1.3 配置一个服务实例为永久实例:

spring:
  cloud:
    nacos:
      discovery:
        ephemeral: false # 设置为非临时实例
           
springcloud Nacos一、服务多级存储模型1.6 eureka与nacos的区别