Hello,
I'd like to be able to deploy my cluster-wide singleton services all collocated
on the same cluster node. What is the best way to achieve that?
Ideally, I'd like to be able to define the "service groups" where all services
in a group would be deployed on the same node, whereas the different groups
would be load balanced all over the cluster. The services included in the same
group would usually the ones that share their data or/and closely collaborate
on the same task. By collocating services in such a way, I'll be able to
optimize some of the execution paths (reducing the number of remote
invocations, for example) and have in-process coordination between the services
(if necessary) as a bonus.
I've considered the affinity-based collocation (where the "group" would consist
of the all services configured with the same affinity key), but the drawback,
IMHO, is that topology changes may cause unnecessary mass migration of the
services to the new primary node where the services get then restarted. I'd
like to avoid paying the service shutdown/start-up overhead as much as
possible, since in my case it's pretty expensive.
Any ideas/suggestion are very much appreciated!
Thanks
Andrey