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

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

Ответы

Ответ 1

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

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

Ответ 2

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

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

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

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