阿里云首页 SOFAStack 微服务

负载均衡

本文介绍 SOFARPC 支持的负载均衡算法以及如何设置负载均衡。

负载均衡算法

SOFARPC 目前支持以下五种算法:

类型

名称

描述

random

随机算法

默认负载均衡算法。

localPref

本地优先算法

优先发现是否本机发布了该服务,如果没有再采用随机算法。

roundRobin

轮询算法

方法级别的轮询,各个方法间各自轮询,互不影响。

consistentHash

一致性 Hash 算法

服务请求与处理请求的服务器之间可以一一对应。

weightRoundRobin

按权重负载均衡轮询算法

按照权重对节点进行轮询。性能较差,不推荐使用。

设置负载均衡

要使用某种特定的负载均衡算法,可以按照以下的方式进行设置:

  • XML 方式

    如果使用 XML 的方式引用服务,可以通过设置 sofa:global-attrs 标签的 loadBalancer 属性来设置负载均衡。以下示例以设置负载均衡算法为 roundRobin 为例:

    <sofa:reference interface="com.example.demo.SampleService" id="sampleService">
        <sofa:binding.bolt>
            <sofa:global-attrs loadBalancer="roundRobin"/>
        </sofa:binding.bolt>
    </sofa:reference>
  • Annotation 方式

    Annotation 方式目前暂未提供设置某一个 Reference 的负载均衡算法的方式,请等待后续版本提供。

  • 在 Spring 环境下 API 方式

    如果在 Spring 或者 Spring Boot 的环境下使用 API,可以通过调用 BoltBindingParamsetLoadBalancer 方法来设置。以下示例以设置负载均衡算法为 roundRobin 为例:

    BoltBindingParam boltBindingParam =new BoltBindingParam();
    boltBindingParam.setLoadBalancer("roundRobin");
  • 非 Spring 环境下 API 方式

    如果在非 Spring 环境下直接使用 SOFARPC 提供的裸 API,可以通过调用 ConsumerConfigsetLoadBalancer 方法来设置。以下示例以设置负载均衡算法为 random 为例:

    ConsumerConfig consumerConfig =new ConsumerConfig();
    consumerConfig.setLoadbalancer("random");