2009-05-29 8 views
0

Je suis en train de concevoir un protocole primitif de threading à distance. Actuellement, nous n'avons besoin que de mutex (c'est-à-dire de moniteurs) et de sémaphores. L'idée principale est qu'il n'y a pas besoin d'être une autorité centrale - les primitifs devraient être orchestrés parmi les pairs qui s'y intéressent.Remote Locking

J'ai défoncé quelques idées sur papier et dans ma tête pendant quelques semaines; mais je pense que je devrais vraiment jeter un coup d'oeil à la littérature antérieure. Y a-t-il?

Il fonctionnera sur XMPP - mais c'est un détail d'implémentation. Je suis à la recherche d'une spécification ou d'une spécification sur le flux de protocole réel - peu importe de quel protocole provient la littérature.

Merci mille fois.

+1

pas sûr si cela aide mais je voudrais jeter un oeil à la source de certains des projets middleware open source http://en.wikipedia.org/wiki/Message_queue, en particulier il y a un certain nombre d'algorithmes de niveau supérieur comme caches répartis et similaires qui peuvent utiliser des primitives comme celles dont vous avez besoin et gérer les délais, la corruption, etc ... –

+0

@ sambo99 - pourquoi ne pas en faire une réponse? –

Répondre

1

Les mutex distribués sont des structures délicates. Vous devez gérer toutes sortes de conditions étranges qui n'existent pas avec une seule implémentation basée sur une machine. En particulier, vous devez gérer les situations dans lesquelles les agents perdent des communications avec le groupe et conservent toujours un verrou sur une ressource partagée. En plus de ce scénario, il existe des scénarios complexes où votre groupe est fracturé et vous prenez un verrou sur une ressource. Lorsque les groupes fracturés se joignent à un grand groupe, vous avez besoin d'un moyen de réconcilier les verrous, ce qui est loin d'être trivial.

Je recommande fortement la recherche dans certains messaging based middleware tels que Erlang et JBoss

Je recommande également poster des questions distinctes sur les algorithmes distribués particuliers/structures de données dont vous avez besoin mis en œuvre. Il est possible que vous puissiez vous en sortir avec une implémentation prête à l'emploi dans une bibliothèque de middleware qui pourrait être ajustée pour répondre à vos besoins.

Questions connexes