Ik ben bezig met de ontwikkeling van een gedistribueerde applicatie, die zal gaan draaien op meerdere machines. Ik heb al aardig wat zaken gelezen over CORBA, JMS, RMI, en consorten, en zie door de bomen het bos niet meer.
Er zitten verschillende soorten nodes in het systeem:
database nodes: Machines waar een databaseserver op draait, met hierop een eigen java interface die een verbinding met de management interface onderhoud, en verbindingen met de verschillende worker nodes onderhoud. Data toegang moet scalable zijn. Worker nodes krijgen door de management node een database node toegewezen. Database updates (SQL UPDATE queries dus) worden naar de management node verzonden, die ze verzend naar alle actieve database nodes, om ervoor te zorgen dat de database nodes in sync blijven. Worker nodes krijgen hun data direct van de aan hun toegewezen database nodes.
management nodes: een hoofd node + een backup node. Onderhoud verbindingen met alle overige nodes, en verzorgt de distributie van opdrachten. Houd tevens een lijst bij waarin staat welke opdracht op welke node uitgevoerd wordt.
worker nodes: verwerken opdrachten na verstrekking door de management node.
Ik wil het systeem hot-pluggable maken, m.a.w.: zodra ik een nieuwe worker node of database node aanzet, meldt deze zich aan bij de management node, en wordt deze nieuwe node opgenomen in de betreffende pool van nodes.
Ik kan de distributie van opdrachten naar nodes op verschillende manieren aanpakken: m.b.v. objecten: de opdrachten in een class inpakken, en deze naar de nodes distribueren, of een message-based systeem waarin een worker bijvoorbeeld een opdracht-ID krijgt, en de bijbehorende opdracht via de toegewezen database node kan opvragen...
De vraag waar ik mee rondloop is: wat voor protocol kan ik het beste gebruiken van intra-server communicatie ?
Er zitten verschillende soorten nodes in het systeem:
database nodes: Machines waar een databaseserver op draait, met hierop een eigen java interface die een verbinding met de management interface onderhoud, en verbindingen met de verschillende worker nodes onderhoud. Data toegang moet scalable zijn. Worker nodes krijgen door de management node een database node toegewezen. Database updates (SQL UPDATE queries dus) worden naar de management node verzonden, die ze verzend naar alle actieve database nodes, om ervoor te zorgen dat de database nodes in sync blijven. Worker nodes krijgen hun data direct van de aan hun toegewezen database nodes.
management nodes: een hoofd node + een backup node. Onderhoud verbindingen met alle overige nodes, en verzorgt de distributie van opdrachten. Houd tevens een lijst bij waarin staat welke opdracht op welke node uitgevoerd wordt.
worker nodes: verwerken opdrachten na verstrekking door de management node.
Ik wil het systeem hot-pluggable maken, m.a.w.: zodra ik een nieuwe worker node of database node aanzet, meldt deze zich aan bij de management node, en wordt deze nieuwe node opgenomen in de betreffende pool van nodes.
Ik kan de distributie van opdrachten naar nodes op verschillende manieren aanpakken: m.b.v. objecten: de opdrachten in een class inpakken, en deze naar de nodes distribueren, of een message-based systeem waarin een worker bijvoorbeeld een opdracht-ID krijgt, en de bijbehorende opdracht via de toegewezen database node kan opvragen...
De vraag waar ik mee rondloop is: wat voor protocol kan ik het beste gebruiken van intra-server communicatie ?