Как и в Java, мы можем сравнивать Актера как поток. Но по сравнению с нитями Актеры намного легче. Это гораздо более высокий уровень абстракции, чем потоки. Реализация также намного проще, чем по сравнению с потоками. Как только мы усвоили основную идею этой модели, она позволила нам сосредоточиться на наших требованиях больше, чем на управлении низкоуровневыми проблемами, такими как блокировка и общие данные, как в потоках.
Некоторые из основных особенностей библиотеки актеров Akka:
- Это отказоустойчивость, а значит, ее можно использовать при создании «самовосстановляющихся систем».
- Согласно документации, на один ГБ ОЗУ может приходиться 2,7 миллиона актеров.
- Это обеспечивает нам прозрачность местоположения. Он может охватывать несколько JVM и серверов, он предназначен для работы в качестве распределенных серверов.
Элвин Александер в своей книге Scala Cookbook утверждает, что
«Мне нравится думать об актере как о веб-службе на чужом сервере, которую я не могу контролировать. Я могу отправлять сообщения в эту веб-службу, чтобы спросить, нужно ли что-то делать, или я могу запросить у нее информацию, но я не могу связаться с веб-службой, чтобы напрямую изменить ее состояние или получить доступ к ее ресурсам, я могу работать только через ее API, который это то же самое, что отправлять неизменяемые сообщения. С одной стороны, это немного ограничивает, но с точки зрения мудрого написания параллельных алгоритмов это очень полезно.”
Думаю, этого утверждения достаточно, чтобы понять основную концепцию актера.
Акторная модель
Вот несколько моментов, касающихся актеров.
- Подобно объекту в системе, основанной на акторах, актор является наименьшей единицей.
- Как и у объектов, у акторов также есть состояние и поведение.
- Мы ничего не можем сделать внутри самого актора, чтобы получить его состояние. Единственное, что мы можем сделать, это отправить актору сообщение с запросом информации о его состоянии, но мы не можем вызывать и выполнять его внутренние методы.
- У каждого актора будет свой почтовый ящик, основной целью которого является обработка сообщения в почтовом ящике.
- Мы можем общаться с актором, только отправляя ему неизменяемые сообщения, которые попадают в его почтовый ящик.
- После получения сообщений Актер достает их из почтового ящика, выполняет какую-то задачу, для которой он создан, и после завершения берет другие сообщения из почтового ящика. И если сообщения нет, то он будет ждать, пока не получит его.
Typesafe предлагает нам думать об актере как о человеке, например, как о человеке в бизнес-организации. Актер может иметь только одного родителя, который также известен как создавший его супервайзер. Но у актера может быть много детей. Точно так же у актера могут быть братья и сестры. Каждый актер делегирован на свою работу.
Обработка ошибок
Если что-то пойдет не так или возникнет исключение, когда актор приостанавливает себя и всех своих дочерних элементов и отправляет сообщение своему родителю (руководителю) о сбое и его возникновении.
в зависимости от характера работы и неудачи у руководителя есть четыре варианта выбора:
- Резюме подчиненных, сохраняя свое внутреннее состояние.
- Перезапустите подчиненный, придав ему чистое состояние.
- Уволить подчиненных.
- Эскалируйте неудачу.