Today I'd like to point out some grid architectures or topologies and some differences between them and give the "political" name to each type.
Pure Master-Worker(Authoritarianism)
This type of Grid includes two different grid nodes groups: master nodes and worker ones.
Benefits:
One could have as many master nodes as needed but master and worker have some differences:
Of course there are some Grids that gives you extra features like worker nodes communication but there are always masters and workers.
Publisher - subscriber (anarchism)
This Grid uses centralized cache (it can be local or distributed - does not matter). Usually they publish some data with well known marks for the processing. Nodes that have corresponding processing modules/code installed pick up unprocessed data from cache and handle them. After that they return processing results back in cache and mark them as "processed" somehow.
The good example is a GigaSpaces product made on the top of distributed cache.
Benefits:
Pure Master-Worker(Authoritarianism)
This type of Grid includes two different grid nodes groups: master nodes and worker ones.
Benefits:
- Optimized nodes communication traffic.
- Simple and native concept.
One could have as many master nodes as needed but master and worker have some differences:
- Master node CAN publish tasks/jobs to execute, Worker node on the contrary is intended to process assigned tasks/jobs and thus CAN NOT publish tasks/jobs and does not have extra logic to handle task/jobs result.
- Master node usually sees all workers it need to assign task/jobs to. Worker node in opposite to master one usually does not see anyone else and thus cannot reassign task/jobs to another workers or even communicate with the others.
Of course there are some Grids that gives you extra features like worker nodes communication but there are always masters and workers.
Publisher - subscriber (anarchism)
This Grid uses centralized cache (it can be local or distributed - does not matter). Usually they publish some data with well known marks for the processing. Nodes that have corresponding processing modules/code installed pick up unprocessed data from cache and handle them. After that they return processing results back in cache and mark them as "processed" somehow.
The good example is a GigaSpaces product made on the top of distributed cache.
Benefits:
- Transparent load balancing - nodes pick up data as soon as they complete processing previous data pack.
- Cache works like a queue and since it is distributed one (usually) it works fine in LAN as well as WAN.
- Nodes usually don't see each other. They can use cache to communicate but does not have direct connection.
- Each node CAN publish new task/jobs and each node can subscribe for the data
Peer Grids (Democracy)
This kind of grid consists of equal nodes. Saying equal I don't mean the same hardware or software (homogeneous environment). They have equal "rights" (This kind of grid is like democracy - everyone can do everything but should not break the law).
Some benefits:
- Since all nodes can publish tasks/jobs and they see each other they can easily reassign work from one node to another even in runtime (so called late balancing or work stealing).
- Jobs can have dependences and communicate each other if they need or even wait for each other.
- Nodes are equal and CAN post tasks/jobs.
- Nodes see each other and can communicate (usually directly).
I don't want to say which one is better. Of course every case that needs Grid should be investigated and appropriate solution selected.

