Hi,
I have a question about the possibilities offered by DDS about a micro-services-based infrastructure.
For the following use case:
I have a program (a micro-service, a standalone binary that acts like a server) and another program (let's call it Client).
The Client(s) can send many (many) requests to the Server, so here our server is not able to process all the requests of all clients.
In my use case, I want to instanciate multiple instances of my Server to process all requests. My Servers do not know the clients (how many clients, how many requests will be received, ...). Same, the clients do not know how many servers there are.
Is there any way in DDS to "dispatch" the requests to the Servers, so that 1 request is received only by 1 server, to parallelize the job?
No not hesitate if I'm not clear enough ;-)
Thanks,
Lucie
The RTI Queuing Service is designed for this type of use-case, and may be appropriate. Another option is to balance the requests across the servers using a content filter based on the request attributes. For example, assuming the requests have a field named "type" that has the values 0-10, then you could have each server use a content filtered topic with a range of the values. Server A could filter for type 0-3, server B for type 4-7, and server C for type 8-10. This is simpler than using the RTI Queuing Service, but it depends on the ability to divide up the requests in a way that effectively balances the load.
Hi,
Thank you for your answer, the RTI Queuing Service seams to be exactly what I needed!
My reasearch on "Load Balancing" did not give me this answer.
At first we considered the same kind of solution you mentionned (with filtered topics) but since neither the servers nor the client know how many requests will be sent, it's hard to put it in place.
Thank you very much
Lucie