Как актер akka помогает в легком дистанционном общении - PullRequest
0 голосов
/ 30 января 2020

Из документации akka:

В отличие от объектов, акторы инкапсулируют не только свое состояние, но и свое исполнение. Общение с актерами происходит не через вызовы методов, а через передачу сообщений. Хотя это различие может показаться незначительным, на самом деле это то, что позволяет нам преодолеть ограничения OOP, когда речь идет о параллелизме и удаленном взаимодействии.

Я немного понимаю о параллелизме, но я не очень понятно об удаленной связи.

Ответы [ 2 ]

1 голос
/ 31 января 2020

Дистанционная связь - это, по сути, всегда асинхронная передача сообщений.

В OOP межобъектная связь обычно осуществляется посредством синхронных вызовов методов (т. Е. Блоков вызовов, пока не будет получен результат). Таким образом, чтобы обмениваться данными с удаленными объектами, нужно либо использовать механизм RP C, который оборачивает основную асинхронную передачу сообщений, чтобы представить синхронный интерфейс, либо использовать что-то вроде фьючерсов, чтобы сделать интерфейс гибридным синхронным и асинхронным. Оба подхода добавляют много сложности: механизмы RP C имеют тенденцию добавлять много скрытой сложности, а фьючерсы имеют тенденцию добавлять много кажущейся сложности.

Для актеров связь представляет собой асинхронную передачу сообщений. Единственная концептуальная разница между отправкой сообщения субъекту Akka, работающему в той же JVM, что и отправитель, и субъекту Akka, работающему в другой JVM (той же или другой машине), заключается в том, что в первом случае можно оптимизировать, не сериализовав сообщение , Помимо внутренних издержек, связанных с установлением связи между двумя различными JVM, нет никакой дополнительной сложности в том, чтобы заставить актера взаимодействовать удаленно. Если два актера могут успешно работать вместе на месте, чтобы создать работающую систему, практически наверняка они могут легко (например, с удаленным взаимодействием Akka) работать вместе, даже когда им нужно общаться по сети.

0 голосов
/ 30 января 2020

В Akka Toolkit Актер может инкапсулировать как состояние, так и поведение:

An Actor = State + behavior

Однако это состояние доступно или модифицируется только само по себе. Никто другой не может получить к нему доступ.

Как и в модели параллельного использования общего состояния, поток является базовой c единицей выполнения; в актере актор - это базовая c единица исполнения.

актер также является объектом; однако это не похоже на обычный объект OOP. это не простой или простой объект. Он имеет много внутренних компонентов и делает намного больше, чтобы легко выполнять свою работу или вычисления.

ActorRef
Dispatcher
Mailbox
Actor
...