Nacos 的三个有利配置
- 🚗 Nacos 服务分级存储模型
- 🚗 🚗 环境隔离 - namespace
- 🚗 🚗 🚗 NacosRule 负载均衡策略
我们都知道在京东商城购买商品,如果选择的是京东自营,那么几乎都是次日达,因为京东在许多城市周边建立了自营仓库,如果说在济南下单买了一个优派的显示器,你会发现发货地址是德州xxx仓库;如果不是购买的自营商品,那么可能是在很远的地方发货,导致收货周期变长,并且浪费了大量的资源,如运输资源、人力,如果恰逢遇上某个城市疫情管控,可能收货周期遥遥无期~~
同样的道理,如果一些功能的服务提供者都在杭州,那么北京、上海、深圳都远程调用杭州的服务,那么势必会造成调用的延迟,毕竟在互联网行业上的延迟可能是致命的;因此针对这个问题,Nacos 就诞生了服务分级存储模型,划分为多个集群,如杭州集群、上海集群,服务的调用尽可能的选择本地集群的服务,本地集群不可访问时,再去访问其它集群,这样大大降低了跨集群调用延迟高的问题!
🚗 Nacos 服务分级存储模型
☞步骤一:修改 application.yml;
在服务提供者的 application.yml 中配置集群名称,如山东-SD:
☞☞步骤二:查看 Nacos 控制台的变化;
注意:一级是服务,也就是提供用户功能的服务;二级就是集群,也就是刚才我们设置的 SD 这个集群;三级则是 SD 这个集群下某台部署的 providerservice 服务器,分级模型如下图所示:
关于 Nacos 的环境隔离其实就是在 Nacos 控制台创建 namespace,用来隔离不同的环境;Nacos 中服务存储和数据存储的最外层都是一个名为 namespace 的东西,主要用来做最外层的隔离!
🚗 🚗 环境隔离 - namespace
☞步骤一:在 Nacos 控制台创建 namespace;
☞☞步骤二:填写命名空间信息;
这时候控制台就会出现刚才保存的命名空间的 ID;
☞☞☞步骤三:修改服务消费者 (consumer-service) 的 application.yml,添加namespace;
☞☞☞☞步骤四:重启服务消费者 (consumer-service), 刷新控制台, 查看控制台的变化;
注意:
- 每个 namespace 都有唯一的 id;
- 服务设置 namespace 时要写 id (也就是我们复制的那一串数字), 而不是名称 (dev);
- 不同的 namespace 下的服务都是互不可见的, 这也是隔离起来的作用.
前面我们已经设置好了山东(SD)这个集群,NacosRule 负载均衡策略可以设置优先选择同集群的服务实例,当本地集群找不到服务提供者时,才回去其它集群寻找,并且会报警告;确定好实例后,再采用随机负载均衡挑选出合适的实例。
🚗 🚗 🚗 NacosRule 负载均衡策略
☞步骤一:在服务消费者的 application.yml 中设置集群为 SD;
☞☞步骤二:在服务消费者的 application.yml 中设置负载均衡的规则为 NacosRule,此规则就是优先寻找同集群的服务;
在实际的项目部署过程中,可能会因为服务器设备性能的差异,部分实例所在的服务器性能比较好,我们当然希望性能比较好的机器能够承担更多的请求,因此 Nacos 又提供了权重配置来控制访问频率,权重越大的访问频率就会越高。
☞步骤一:在 Nacos 控制台设置配置实例的权重值;
☞☞步骤二:设置权重为 0.1,这时候关于 8081 这个实例的访问频率就会大大降低; 注意实例的权重值为 0~1 之间,如果设置为 0,则完全不会被访问;权重越高访问的频率就会越高;
其实关于权重的设置可以解决这样的问题:如果某一个实例所在的机器要进行停机维护,但是为了不让用户访问受限,我们就可以通过设置权重来解决,将权重设置为 0,这时候就不会访问要维护的这个机器,而是去访问权重高的机器,这时候就可以解决了停机维护问题并且不会造成用户的访问损失。