生产环境相对是比较恶劣的,我们需要对服务的流量进行更加精细的控制.Nacos支持多种负载均衡策略,包括权重,同机房,同地域,同环境等.
1. 服务下线
当某一个节点上接口的性能较差时,我们可以第一时间对该节点进行下线.
操作步骤: 服务详情 ->下线
当点击下线后,再次通过服务发现的服务来请求该接口,该服务就不会有请求进来。再次上线后又会继续受到请求。
这里只是在注册中心中下线了,直接通过后端的接口仍然是可以访问的。
2 权重配置
除了将服务下线之外,我们还可以配置该节点的流量权重。
2.1 配置权重
操作步骤: 找到对应节点 ->编辑 ->在弹出的窗口修改权重值,修改9091端口的权重
2.2 开启Nacos负载均衡策略
由于Spring Cloud LoadBalance组件自身有负载均衡配置方式,所以不支持Nacos的权重属性配置
我们需要开启Nacos的负载均衡策略,让权重配置生效
参考:如何解决MSE Nacos上修改服务实例的权重不生效问题_微服务引擎(MSE)-阿里云帮助中心
2.3 测试权重配置
3. 同集群优先访问
3.1 概述
Nacos把同一个机房内的实例,划分为一个集群,所以同集群优先访问,在一定程度上也可以理解为同机房优先访问.
微服务架构中,一个服务通常有多个实例共同提供服务,这些实例可以部署在不同的机器上,这些机器可以分布在不同的机房,比如product-service:
实例1:分布在上海机房
实例2:分布在上海机房
实例3:分布在北京机房
实例4:分布在北京机房
微服务访问时,应尽量访问同机房的实例,当本机房内实例不可用时,才访问其他机房的实例.
比如order-service 在上海机房,product-service 在北京和上海机房都有实例,那我们希望可以优先访问上海机房,如果上海机房没有实例,或者实例不可用,再访问北京机房的实例.通常情况下,因为同一个机房的机器属于一个局域网,局域网访问速度更快一点.
3.2 场景演示
# 将订单服务的地点配置为北京,修改nacos.discovery.cluster-name为BJ
# 将商品服务(9090端口)的cluster-name配置为BJ,其余的配置为SH
# 开启nacos负载均衡策略
# 测试,观察结果
- 多次发送请求发现只有9090端口的商品服务能够提供服务,因为他和订单服务都在“北京”,在一个集群。
- 把9090端口的实例进行下线(SH集群),再次访问接口,观察日志,发现9091端口和9092端口的实例收到了请求