Как и в Java, мы можем сравнивать Актера как поток. Но по сравнению с нитями Актеры намного легче. Это гораздо более высокий уровень абстракции, чем потоки. Реализация также намного проще, чем по сравнению с потоками. Как только мы усвоили основную идею этой модели, она позволила нам сосредоточиться на наших требованиях больше, чем на управлении низкоуровневыми проблемами, такими как блокировка и общие данные, как в потоках.

Некоторые из основных особенностей библиотеки актеров Akka:

  • Это отказоустойчивость, а значит, ее можно использовать при создании «самовосстановляющихся систем».
  • Согласно документации, на один ГБ ОЗУ может приходиться 2,7 миллиона актеров.
  • Это обеспечивает нам прозрачность местоположения. Он может охватывать несколько JVM и серверов, он предназначен для работы в качестве распределенных серверов.

Элвин Александер в своей книге Scala Cookbook утверждает, что

«Мне нравится думать об актере как о веб-службе на чужом сервере, которую я не могу контролировать. Я могу отправлять сообщения в эту веб-службу, чтобы спросить, нужно ли что-то делать, или я могу запросить у нее информацию, но я не могу связаться с веб-службой, чтобы напрямую изменить ее состояние или получить доступ к ее ресурсам, я могу работать только через ее API, который это то же самое, что отправлять неизменяемые сообщения. С одной стороны, это немного ограничивает, но с точки зрения мудрого написания параллельных алгоритмов это очень полезно.

Думаю, этого утверждения достаточно, чтобы понять основную концепцию актера.

Акторная модель
Вот несколько моментов, касающихся актеров.

  1. Подобно объекту в системе, основанной на акторах, актор является наименьшей единицей.
  2. Как и у объектов, у акторов также есть состояние и поведение.
  3. Мы ничего не можем сделать внутри самого актора, чтобы получить его состояние. Единственное, что мы можем сделать, это отправить актору сообщение с запросом информации о его состоянии, но мы не можем вызывать и выполнять его внутренние методы.
  4. У каждого актора будет свой почтовый ящик, основной целью которого является обработка сообщения в почтовом ящике.
  5. Мы можем общаться с актором, только отправляя ему неизменяемые сообщения, которые попадают в его почтовый ящик.
  6. После получения сообщений Актер достает их из почтового ящика, выполняет какую-то задачу, для которой он создан, и после завершения берет другие сообщения из почтового ящика. И если сообщения нет, то он будет ждать, пока не получит его.

Typesafe предлагает нам думать об актере как о человеке, например, как о человеке в бизнес-организации. Актер может иметь только одного родителя, который также известен как создавший его супервайзер. Но у актера может быть много детей. Точно так же у актера могут быть братья и сестры. Каждый актер делегирован на свою работу.

Обработка ошибок

Если что-то пойдет не так или возникнет исключение, когда актор приостанавливает себя и всех своих дочерних элементов и отправляет сообщение своему родителю (руководителю) о сбое и его возникновении.

в зависимости от характера работы и неудачи у руководителя есть четыре варианта выбора:

  1. Резюме подчиненных, сохраняя свое внутреннее состояние.
  2. Перезапустите подчиненный, придав ему чистое состояние.
  3. Уволить подчиненных.
  4. Эскалируйте неудачу.