2009-06-07 6 views

Répondre

11

En règle générale, RPC fournit un niveau d'abstraction plus élevé que certains autres moyens de communication interprocessus. Cela le rend peut-être plus facile à utiliser que les primitives de niveau inférieur. Pour cette abstraction, vous risquez de payer une pénalité de performance en raison du marshaling/unmarshaling et devrez peut-être gérer la complexité supplémentaire de la configuration pour des scénarios simples.

Vous pourriez être intéressé par ce thesis (pdf) par Jackie Silcock qui traite des différences entre le passage de message, RPC, et la mémoire partagée répartie en ce qui concerne plusieurs mesures différentes de performance et d'implémentation. Vous pouvez également lire l'un des articles sur la base de la thèse: Message Passing, Remote Procedure Calls and Distributed Shared Memory as Communication Paradigms for Distributed Systems (pdf)

+0

Le lien semble être rompu. Savez-vous où trouver le document? – SteinNorheim

+1

@ norheim.se - le TR semble avoir disparu, mais j'ai retrouvé la thèse originale et un document basé dessus. J'espère que ces liens dureront un peu plus longtemps. – tvanfosson

+0

génial! Merci beaucoup! +1 – SteinNorheim

22

Parlez-vous de RPC vs Messaging? Comme dans la messagerie (généralement) asynchrone? Si c'est de cela que vous parlez, la messagerie a tendance à être plus robuste au détriment de la complexité et de l'infrastructure supplémentaire.

L'exemple le plus simple est si vous avez un scénario où vous RPC-> RPC-> RPC, vous finissez par avoir une pile d'appels qui est profonde de 3 processus/machines. L'un de ces processus/machine peut échouer pendant le traitement et la totalité de la pile se déroule.

Si vous transmettiez des messages, la connectivité réelle entre les processus est bien moindre. Vous passez le message, et vous êtes sur votre chemin. Maintenant, si l'un des processus échoue, il y a de bonnes chances qu'il soit redémarré à l'endroit où il s'est arrêté, car, typiquement, le message est toujours dans une file d'attente quelque part en attente d'un nouveau processus pour le récupérer. Le temps global peut être plus long, mais c'est un système beaucoup plus robuste. Attention, ce n'est pas une panacée, il y a beaucoup d'embûches avec une architecture asynchrone, mais cette robustesse est une distinction primordiale entre les systèmes RPC et Messaging.

Questions connexes