微服务开发------------Nacos服务分级存储

第一天 f:

Nacos注册中心:

nacos服务分级存储模型:

在nacos中,把nacos的分级存储提供了一个新的概念,集群。

把服务分为多个部分,分为多个集群,它时按照机房来分,这样做可以防止因为总集群出现什么问题,而导致了服务崩溃。

举个例子,京东的购物平台,会在多个城市分别放一个服务端口,比如北京,上海,杭州...我们把在北京的服务称为一个集群。这些集群都属于在这个总服务上。

服务跨集群调用问题:

在这里会出现一个问题:在本地的消费端进行调用时,我们是应该调用本地的服务端还是外地的服务端?

当然,服务端当然要用本地的服务区,如果是调用外地端口,肯定会有延迟的问题。只有当本第服务出现问题时,才会去调用外地的服务器。

如何去配置集群?

spring:
   cloud:
     nacos:
      server-addr: localhost:8848 #网络地址
      discovery:
         cluster-name: HZ #集群名字
这里如何让两个服务端口是两个集群呢?

在配置完成后启动相应的服务端口,当你想让另一个改为另一个集群时,先在配置中改变其的集群名称,但在这时不能让前面的服务端口,不然两个的服务都是在同一个集群中。做完后他们在nacos的注册中心的集群信息不同。

所以分级是什么意思呢?

一级是服务,如user Service。
二级是集群, 如北京集群。
三级是实例, 如具体的服务端口号。

服务集群属性:

当然在服务中,无论是提供者,还是消费者他们的配置都是一样的。

如何进行集群负载均衡:

1.先与前面的消费端的服务一样,设置application.yml,设置为HZ:
spring:
   cloud:
      nacos:
        server-aadr: localhost:8084 #nacos的网络地址
        discovery:
           cluster-name: HZ #集群名

2.然后在消费端设置负载均衡的Rule为NacosRlue,这个规则会优先选择同集群的服务:

userService: #提供端服务
   ribbon:
      NFBalancerRuleClassName : com.alibaba.nacos.ribbon.NacosRule #负载均衡规则
   

3.注意把提供端的权重设为1。

注意:当这里出现本地提供端服务停止服务时,它会主动去调用外地的服务端,同时此时console会显示黄色的提示。

 根据权重负载均衡:

直接在nacos注册中心中进行修改。

这里的权重,就是指的是其占的比例用于表现,它们出现的概率有关。

实际用处:比如在这个服务要进行升级,可以通过改变权重来做到,是那一个接口在进行升级,而另外一个可以照常运行,同时也可以用于测试,让少数用户进行尝试。

环境隔离,namespace:

在Nacos中服务存储和数据存储的最外层都有一个名为namespace的东西,用于做外部隔离。

1. 先在nacos里创建新的命名空间

 新建命名空间

只需要填写名称与描述,这时就会创建好相应的文件。

而在配置详情界面的左上角也会出现其命名空间。其中Id是唯一的,且是自动生成的。

 

那如何改变服务的命名空间位置呢

要在需要改变的服务的yml里加入:

spring:
   cloud:
     nacos:
       server-addr:localhost:8084 #nacos网络地址
       discovery:
          cluster-name: HZ
          namespace: d4b5d26b-62ed-482a-8eb8-6e6cbc335f8a #注入其命名空间的Id

做到这里,当你再打开,启动服务时就会发现它无法访问了。

 Nacos注册中心细节分析:

此图中的nacos与Eureka基本操作相同,在两点较为不同;

1.在nacos中,临时实例是用的心跳监测,而非临时实例则是会主动去访问,如果出现问题,也会把它设为不健康,而不会直接剔除,相反会等它恢复正常。但是他如果是一个临时实例,nacos会直接把他剔除。

2.在nacos里服务消费端不光会拉取(pull)服务信息,nacos注册中心还会主动去給服务消费端推送变更的信息。

如何配值临时实例或非临时实例呢:

spring:
  cloud: 
    nacos:
      server-addr: localhost:8084 #nacos网络网址
      discovery:
         ephemeral: false #设为非临时实例

true就为临时实例,而false则为非临时实例。

注意:1.这里服务的健康与否类似于服务是否是正常运行的,只要不是正常运行就是它处于不健康的状态。

2.在nacos中默认使用的是AP模式(即当服务不能正常运行时,就会把它直接删除),但当设置为非临时实例时,就会使用PC模式(即当服务不能正常运行时,会自动等它恢复到正常状态),而Eureka只会采取AP模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值