Как используется модель актера?

18

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

Может кто-нибудь объяснить, пожалуйста? Простой пример или ссылки на примеры будут высоко оценены.

Pnutus
источник
Или вы имеете в виду модель актера ?
back2dos
Я подозреваю, что вы имеете в виду агентов, а не актеров. Если это так, проверьте эту запись в Википедии: en.wikipedia.org/wiki/Software_agent
DwB
1
Они играют главную роль в Зеленом Фонаре и Планете Обезьян, чтобы развлечь гиков в /. В свою очередь, гики в /. развлекать остальных из нас.
Работа
Я имею в виду модель актера, и обновил свой пост, чтобы уточнить.
Pnutus

Ответы:

21

Актеры, в смысле моделирования действий, с сообщениями и т. Д., - это способ моделирования программного обеспечения, который предоставляет несколько полезных элементов ...

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

  2. В некоторых языках, например, в Scala, легко превратить код на основе акторов в одном процессе в распределенную систему, разделив актеров и превратив каналы, по которым они общаются, в удаленные каналы. Это меняется между реализациями в отношении того, насколько это просто, но это потрясающая функция.

  3. Помогает сосредоточиться на задачах, основанных на событиях, а не на событиях CRUD. CRUD прост, но это как взаимодействие с картотекой. Если мы можем обеспечить большую ценность, чем та, которую мы производим в программном обеспечении, почему мы это делаем? Связывание нескольких действий с одной командой «Обновить» в системе задач более полезно, чем просто сохранение в БД. Это также входит в такие вещи, как CQRS.

Travis
источник
Спасибо за ваш полезный ответ и ссылки. На каком языке вы бы порекомендовали начать смотреть, чтобы лучше почувствовать себя актерами?
Pnutus
1
Я думаю, это зависит от того, с какими языками вам удобно. Хотя у Scala есть лучшая документация по актерам, поскольку они являются языковой концепцией. Erlang великолепен для обмена сообщениями в целом, хотя весь язык основан на этой концепции.
Трэвис
Я посмотрю на Скалу и Эрланга. Найдено в этом руководстве для начинающих для Erlang, собирается начать там. Благодарность!
Pnutus
+1: очень интересно. Знаете ли вы, есть ли библиотека C ++, которая реализует удаленные актеры? Я был бы рад использовать Scala, но мой проект на C ++.
Джорджио
1
Рассмотрим эту реализацию актерской модели C ++: actor-framework.org
Чен О. Т.
4

Тревис ответ твердый. Когда вы начинаете говорить о параллелизме, вы пытаетесь решить проблемы с ресурсами. Параллелизм с потоками и блокировками довольно легко сделать неправильно. Актерская модель помогает вам запрограммировать параллельные части вашего кода как самодостаточные слепки, которые могут выполняться параллельно и без зависимости от другого фрагмента кода. Вы пытаетесь избежать неприятностей, таких как условия гонки и тупики.

Актеры, как вы и я в этом разговоре. Вы просто не можете проникнуть в мой мозг и выбрать то, что я печатаю. Вы передали мне сообщение "Почему мы существуем?" Я сел и сжал некоторые цифры и отправил ответ: «Я думаю, поэтому я». Вы не могли бы сказать, что я делал на своем собственном кусочке планеты Земля, единственный контакт, который вы имеете со мной, - через сообщения, которые мы передаем взад и вперед.

РЕДАКТИРОВАТЬ:

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

M15K
источник
Я не уверен, что редактирование комара направлено на меня, но моим любимым оружием обычно является Haskell. Эрланг, безусловно, хороший язык. Haskell традиционно полагался на CSP для параллелизма, но есть некоторые реализации актеров.
M15K
-2

Действующие лица являются элементом диаграмм вариантов использования, которые представляют любую внешнюю сущность (пользователя, внешнюю систему и т. Д.), Которая может действовать в системе. Любой базовый вариант использования будет содержать актеров - просто Google «вариант использования» для множества примеров.

afeygin
источник
6
Разве это не так называемые фигурки ?
pillmuncher
1
Мне было непонятно, а вы неправильно поняли. Я говорил об актерской модели.
Pnutus