Nacos多级服务存储模型, NacosRule负载均衡规则入门

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 下面来简单认识一下今天的主角Nacos吧.Nacos给我们提供了一个这样的服务分级存储模型:1级是服务, 2级是集群, 3级是实例.Nacos提供了权重配置来控制访问频率, 权重越大访问频率越高;Nacos同一集群的默认权重是1:1的;Nacos控制台可以设置实例的权重值0~1之间

👳我亲爱的各位大佬们好😘😘😘
♨️本篇文章记录的为 NacosRule负载均衡规则 相关内容,适合在学Java的小白,帮助新手快速上手,也适合复习中,面试中的大佬🙉🙉🙉。
♨️如果文章有什么需要改进的地方还请大佬不吝赐教❤️🧡💛
👨‍🔧 个人主页 : 阿千弟

比如说在分布式的多模块环境开发中,我们有一个服务叫做user-service, 它有多个实例, 这些实例都部署在一个机房里面, 有一天机房突然停电了,那么这个机房的所有实例都会挂掉😧😧😧, 该怎样解决这个问题呢?

@[toc]

服务多级存储模型

Nacos给我们提供了一个这样的服务分级存储模型:

我们可以将一个服务的多个实例部署在多个机房里面:

在这里插入图片描述

比方说公司在上海有个机房容纳端口为8081和8082的user-service的实例, 在杭州有个机房容纳端口为8083和8084的user-service的实例, 如果上海的机房停电了, 我们杭州这边的机房还能支撑我们服务的运行, 这就是我们Nacos提供的容灾技术

所以在Nacos的服务分级里面 : 1级是服务, 2级是集群, 3级是实例

为什么Nacos引入这样一个服务分级的模型呢?原来直接通过服务来找实例不好吗?

我们可以这样设想
在这里插入图片描述

原来我们都是在本地机房通过局域网的方式本地实例去访问本地实例, 然后如果我们的本地实例挂了才去访问其他机房的实例,这个过程的调用延迟是比较高的. 下面我们来配置实例的集群属性.

配置服务的集群属性配置

pom中添加如下依赖

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

然后我们再配置 cluster-name: baiduyun,

然后启动, 可以发现确实是有了两个实例和两个集群

在这里插入图片描述
一个集群名称是aliyun另一个是baiduyun, 完美

在这里插入图片描述

Nacos-NacosRule负载均衡规则

既然我们想要了解Nacos的负载均衡规则,我们就要先进行配置

在pom文件中配置:

xxxservice: # 要做配置的服务名称
    ribbon:
      NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule

那么在Nacos集群里面负载均衡规则是咋样的?

NacosRule优先选择本地集群, 然后在本地集群内的多个服务当中它再采用随机方式进行负载均衡, 这就是NacosRule的访问特点了

Nacos根据权重进行负载均衡

有时候我们在服务器上进行服务部署的时候, 可能由于设备问题 : 有的服务器比较新,性能好;有点比较老旧不能那么好用,这时候我们就希望让新的服务器承担更多的请求.

  • Nacos提供了权重配置来控制访问频率, 权重越大访问频率越高

  • Nacos同一集群的默认权重是1:1的

  • Nacos控制台可以设置实例的权重值, 0~1之间

这时候我们把8082端口的权重改为0.1, 8082端口的权重仍为1
在这里插入图片描述
理论上将我们把服务请求11次, 大概率上有10次服务请求到了8081的端口上, 只有1次服务请求到了8082的端口上

注意, 如果我们把权重设置为0, 则完全不会被访问到
在这里插入图片描述

服务上线不停机更新

其实这个特性是非常强的, 作为一个服务器不要以为权重是0就觉得它是废物, 想想看,如果我们现在对一个服务进行升级, 先将8082的权重调成0, 然后对它进行配置, 完成后可以将权重稍微调大一点, 一遍放过来一小部分请求方便测试, 如果没毛病, 我们再将权重调大, 这个不停机更新的方法很优雅

在这里插入图片描述

如果这篇【文章】有帮助到你💖,希望可以给我点个赞👍,创作不易,如果有对Java后端或者对spring感兴趣的朋友,请多多关注💖💖💖
👨‍🔧 个人主页 : 阿千弟

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
1月前
|
弹性计算 监控 负载均衡
|
1月前
|
运维 负载均衡 算法
|
7月前
|
存储 Nacos 数据安全/隐私保护
【SpringCloud】Nacos的安装、Nacos注册、Nacos服务多级存储模型
【SpringCloud】Nacos的安装、Nacos注册、Nacos服务多级存储模型
89 1
|
2月前
|
负载均衡 Kubernetes 区块链
随机密码生成器+阿里k8s负载均衡型服务加证书方法+移动终端设计+ico生成器等
随机密码生成器+阿里k8s负载均衡型服务加证书方法+移动终端设计+ico生成器等
67 1
|
3月前
|
负载均衡 Java Nacos
SpringCloud基础1——远程调用、Eureka,Nacos注册中心、Ribbon负载均衡
微服务介绍、SpringCloud、服务拆分和远程调用、Eureka注册中心、Ribbon负载均衡、Nacos注册中心
SpringCloud基础1——远程调用、Eureka,Nacos注册中心、Ribbon负载均衡
|
4月前
|
存储 设计模式 缓存
OpenFeign集成Ribbon负载均衡-过滤和选择服务核心实现
该文章主要介绍了如何在OpenFeign中集成Ribbon以实现负载均衡,并详细分析了Ribbon中服务选择和服务过滤的核心实现过程。文章还涉及了Ribbon中负载均衡器(ILoadBalancer)和负载均衡策略(IRule)的初始化方式。
OpenFeign集成Ribbon负载均衡-过滤和选择服务核心实现
|
4月前
|
负载均衡 Kubernetes 开发工具
k8s相关服务与负载均衡
k8s相关服务与负载均衡
58 0
|
5月前
|
负载均衡 监控 Kubernetes
Service Mesh 是一种用于处理服务间通信的基础设施层,它通常与微服务架构一起使用,以提供诸如服务发现、负载均衡、熔断、监控、追踪和安全性等功能。
Service Mesh 是一种用于处理服务间通信的基础设施层,它通常与微服务架构一起使用,以提供诸如服务发现、负载均衡、熔断、监控、追踪和安全性等功能。
|
4月前
|
负载均衡 Dubbo 算法
Dubbo服务负载均衡原理
该文章主要介绍了Dubbo服务负载均衡的原理,包括Dubbo中负载均衡的实现位置、为什么需要负载均衡机制、Dubbo支持的负载均衡算法以及随机负载均衡策略的源码分析。
|
负载均衡 Java Nacos
Nacos有几种负载均衡策略?
Nacos有几种负载均衡策略?
919 0
Nacos有几种负载均衡策略?