SOFARPC provides a variety of load balancing algorithms and currently supports the following five types:
| Type | Name | Description |
|---|---|---|
| random | Random algorithm | The default load balancing algorithm. |
| localPref | Local preference algorithm | Firstly detect whether the service is published locally, if not, random algorithm is used. |
| roundRobin | Round Robin algorithm | Method-level polling, the polling is carried out separately to each method, without affecting each other. |
| consistentHash | Consistent hash algorithm | The same method-level request is routed to the same node. |
| weightRoundRobin | Weighted Round Robin algorithm | Poll nodes by weight. Not recommended due to poor performance. |
To use a specific load balancing algorithm, you can configure as follows:
In XML
If you reference the service using XML, you can configure it by setting the loadBalancer property of the sofa:global-attrs tag:
<sofa:reference interface="com.example.demo.SampleService" id="sampleService">
<sofa:binding.bolt>
<sofa:global-attrs loadBalancer="roundRobin"/>
</sofa:binding.bolt>
</sofa:reference>
In Annotation
It is currently not supported to configure a load balancing algorithm for a reference in Annotation. The function will be provided in subsequent releases.
In API under Spring environment
If you use the API in a Spring or Spring Boot environment, you can configure it by calling the setLoadBalancer method of BoltBindingParam:
BoltBindingParam boltBindingParam = new BoltBindingParam();
boltBindingParam.setLoadBalancer("roundRobin");
In API under non-Spring environment
If you directly use the bare API provided by SOFARPC in a non-Spring environment, you can configure it by calling the setLoadBalancer method of ConsumerConfig:
ConsumerConfig consumerConfig = new ConsumerConfig();
consumerConfig.setLoadbalancer("random");