Feature #453

Updated by Madars over 4 years ago

as the ndrxd may count the number of messages in service queue.
Ndrxd should back-propogate this information to service shared memory (periodically) and in the same time when exchanging information to other cluster nodes, this shall be included too.
Thus later when tpcall is performed, the caller process shall evaluate all server nodes, to find the node with less queued messages.
But needs to take in account that:

- Nr of message in service Q is not real time infos

In overall the service load balance shall operate with following infos:

- number of server processes on each node
- number of messages in each queue
- and some load balancing attribute, between local and remote, enable/disable? Also maybe we want to configure the mode, for example, when we truly send the messages to node which hash the less messages in queue, or if all the same, then send to the one to which have largest server count. There could be percentage for example how much percent send in this mode, and how much percent of that process in round robin fashion.

From these parameters, there should be decision on which host request shall be sent.

- Also needs to think about how to test this all.

So LDBAL 0...100 -> 0 - all locally / 100 - all remote (remote random select)
LDBAL 101 - 200 - max free node / random select all


So:
0 - process locally;
50 - process 50% locally and 50% on random remote machine;
100 - process all on remote;
101 - Process all request on less busy node/or highest server count;
150 - Process 50 % on less busy node and 50% on random node;
200 - all traffic goes to random select node (same as 100);

Back