Interface LoadBalancer

All Known Implementing Classes:
AbstractLoadBalancer, RandomLB, RoundRobinLB, StaticLB

public interface LoadBalancer
LoadBalancer allows you to send operations to one of a number of endpoints(Members). It is up to the implementation to use different load balancing policies.

If Client is configured with ClientNetworkConfig.isSmartRouting(), only the operations that are not key based will be routed to the endpoint returned by the LoadBalancer. If it is not ClientNetworkConfig.isSmartRouting(), LoadBalancer will not be used.

For configuration see ClientConfig.setLoadBalancer(LoadBalancer)

  • Method Summary

    Modifier and Type Method Description
    default boolean canGetNextDataMember()
    Returns whether this instance supports getting data members through a call to nextDataMember().
    void init​(Cluster cluster, ClientConfig config)
    Initializes the LoadBalancer.
    Member next()
    Returns the next member to route to.
    default Member nextDataMember()
    Returns the next data member to route to.
  • Method Details

    • init

      void init​(Cluster cluster, ClientConfig config)
      Initializes the LoadBalancer.
      Parameters:
      cluster - the Cluster this LoadBalancer uses to select members from.
      config - the ClientConfig.
    • next

      Member next()
      Returns the next member to route to.
      Returns:
      Returns the next member or null if no member is available
    • nextDataMember

      default Member nextDataMember()
      Returns the next data member to route to.
      Returns:
      Returns the next data member or null if no data member is available
      Throws:
      UnsupportedOperationException - if the operation is not supported by this instance
    • canGetNextDataMember

      default boolean canGetNextDataMember()
      Returns whether this instance supports getting data members through a call to nextDataMember().

      This method is used by components that require communication with data members only, such as the SQL engine.

      Returns:
      true if this instance supports getting data members through a call to nextDataMember()
      See Also:
      nextDataMember()