Каковы недостатки RPC в отношении передачи сообщений? - PullRequest
19 голосов
/ 07 июня 2009

Каковы недостатки RPC в отношении передачи сообщений?

Ответы [ 2 ]

26 голосов
/ 30 июля 2009

Вы говорите о RPC против обмена сообщениями? Как в (как правило) асинхронном обмене сообщениями? Если это то, о чем вы говорите, то Messaging имеет тенденцию быть более надежным за счет сложности и дополнительной инфраструктуры.

Простейший пример - если у вас есть сценарий, в котором вы используете RPC-> RPC-> RPC, то в итоге у вас будет стек вызовов глубиной 3 процесса / машины. Любой из этих процессов / машин может произойти сбой во время обработки, и весь стек раскручивается.

Если вы обменивались сообщениями, фактическая связь между процессами намного меньше. Вы передаете сообщение, и вы уже в пути. Теперь, если один из процессов завершится неудачно, есть большая вероятность того, что он будет перезапущен с того места, на котором остановился, поскольку, как правило, сообщение все еще находится в очереди где-то в ожидании, пока новый процесс его извлечет. Общее время может быть больше, но это гораздо более надежная система.

Имейте в виду, что это не панацея, есть много подводных камней с асинхронной архитектурой, но эта надежность - главное различие между системами RPC и Messaging.

15 голосов
/ 07 июня 2009

Как правило, RPC обеспечивает более высокий уровень абстракции, чем некоторые другие средства межпроцессного взаимодействия. Это делает его, возможно, более простым в использовании, чем примитивы более низкого уровня. За эту абстракцию вы можете заплатить некоторое снижение производительности из-за маршалинга / демаршалинга и, возможно, придется иметь дело с дополнительной сложностью конфигурации для простых сценариев.

Вас может заинтересовать этот тезис (pdf) Джеки Силкока, в котором обсуждаются различия между передачей сообщений, RPC и распределенной разделяемой памятью в отношении нескольких различных показателей производительности и реализации. Вы также можете прочитать одну из статей, основанную на диссертации: Передача сообщений, Удаленные вызовы процедур и Распределенная общая память как коммуникация Парадигмы для распределенных систем (pdf)

...