Каковы недостатки RPC в отношении передачи сообщений?
Каковы недостатки RPC в отношении передачи сообщений?
Ответы
Ответ 1
Как правило, RPC обеспечивает более высокий уровень абстракции, чем некоторые другие средства межпроцессного общения. Это делает его, пожалуй, более простым в использовании, чем примитивы нижнего уровня. Для этой абстракции вы можете заплатить определенную штрафную силу из-за маршалинга/отмены маршалинга и, возможно, придется усложнять конфигурацию для простых сценариев.
Вам может быть интересен этот тезис (pdf) Джеки Силкок, в котором обсуждаются различия между передачей сообщений, RPC и распределенной общей памятью с помощью в отношении нескольких различных показателей эффективности и реализации. Вы также можете прочитать одну из статей на основе тезиса: Передача сообщений, Удаленные вызовы процедур и
Распределенная общая память как связь
Парадигмы для распределенных систем (pdf)
Ответ 2
Вы говорите о RPC vs Messaging? Как в (как правило) асинхронном обмене сообщениями? Если это то, о чем вы говорите, то система обмена сообщениями имеет тенденцию быть более надежной ценой сложности и дополнительной инфраструктуры.
Самый простой пример - если у вас есть сценарий, в котором вы RPC- > RPC- > RPC, у вас есть стек вызовов, который 3 процесса/машины в глубину. Любой из этих процессов/машины может выйти из строя во время обработки, а весь пакет распадается.
Если вы отправляете сообщения, фактическая связь между процессами намного меньше. Вы передаете сообщение, и вы уже в пути. Теперь, если один из процессов выходит из строя, есть хорошие шансы перезапустить его там, где он остановился, поскольку, как правило, сообщение все еще сидит в очереди где-то в ожидании нового процесса для его получения. Общее время может быть больше, но это гораздо более надежная система.
Не считайте это панацеей, есть много подводных камней с асинхронной архитектурой, но эта надежность является простым различием между системами RPC и Messaging.