How to achieve request load balancing on RO SDK


(estebanp) #1

Hi guys,

RO/DA latest, Delphi Servers. Synapse SuperTCP. Delphi / .Net clients.

One big issue we are trying to work around is how to use all the great features of the RO/DA sdks and achieve a proper load balancing.

Originally RO had some load balancing solutions and most of them were later differed to the use of load balancers on the software or hardware level. We are currently using a hardware level one (F5s) but the problem is that we only achieve a connection load balancing but not a request load balancing.

Meaning that if a service connects to another service (microservices), or a client connects to a service, only on that first attempt of doing a connection it will load balance between the available services to establish the connection but further requests will be directed to the original service where the connection was established, so we can have a client sending only a couple of requests per hour and another one with a full load and no balancing being done.

gRPC uses some interesting techniques to achieve that, some other Remote SDKs too. I have some ideas but I will like to hear what will be your suggestion to achieve this goal.

(EvgenyK) #2


you are using SuperTCP channel that means that it will keep connection as long as it possible. this is way as SuperTCP was designed.
you can check the ServiceDiscovery sample, that returns info about current server load.
you can do something similar - i.e. ask servers about current loading and perform method executing on server with minimal loading.