服务多级存储模型 Nacos给我们提供了一个这样的服务分级存储模型: 配置服务的集群属性配置 Nacos-NacosRule负载均衡规则 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的负载均衡规则,我们就要先进行配置 在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, 然后对它进行配置, 完成后可以将权重稍微调大一点, 一遍放过来一小部分请求方便测试, 如果没毛病, 我们再将权重调大, 这个不停机更新的方法很优雅 |