Я немного читал об актерской модели, но не очень понимаю, как использовать актеров в реальной ситуации - как моделировать проблему с ними.
Может кто-нибудь объяснить, пожалуйста? Простой пример или ссылки на примеры будут высоко оценены.
Я немного читал об актерской модели, но не очень понимаю, как использовать актеров в реальной ситуации - как моделировать проблему с ними.
Может кто-нибудь объяснить, пожалуйста? Простой пример или ссылки на примеры будут высоко оценены.
Ответы:
Актеры, в смысле моделирования действий, с сообщениями и т. Д., - это способ моделирования программного обеспечения, который предоставляет несколько полезных элементов ...
Актеры могут жить в одном потоке, что позволяет выполнять не-поточно-безопасные / не параллельные операции без какой-либо магии блокировки. Актер будет отвечать на сообщения в своем почтовом ящике. Когда вы хотите, чтобы он обработал команду, вы отправляете ему сообщение, и оно будет заботиться о них в порядке их получения. Прямо как обычная очередь. Потокобезопасность здесь убийственна, и я использую это в ряде проектов с открытым исходным кодом, над которыми я работаю.
В некоторых языках, например, в Scala, легко превратить код на основе акторов в одном процессе в распределенную систему, разделив актеров и превратив каналы, по которым они общаются, в удаленные каналы. Это меняется между реализациями в отношении того, насколько это просто, но это потрясающая функция.
Помогает сосредоточиться на задачах, основанных на событиях, а не на событиях CRUD. CRUD прост, но это как взаимодействие с картотекой. Если мы можем обеспечить большую ценность, чем та, которую мы производим в программном обеспечении, почему мы это делаем? Связывание нескольких действий с одной командой «Обновить» в системе задач более полезно, чем просто сохранение в БД. Это также входит в такие вещи, как CQRS.
Тревис ответ твердый. Когда вы начинаете говорить о параллелизме, вы пытаетесь решить проблемы с ресурсами. Параллелизм с потоками и блокировками довольно легко сделать неправильно. Актерская модель помогает вам запрограммировать параллельные части вашего кода как самодостаточные слепки, которые могут выполняться параллельно и без зависимости от другого фрагмента кода. Вы пытаетесь избежать неприятностей, таких как условия гонки и тупики.
Актеры, как вы и я в этом разговоре. Вы просто не можете проникнуть в мой мозг и выбрать то, что я печатаю. Вы передали мне сообщение "Почему мы существуем?" Я сел и сжал некоторые цифры и отправил ответ: «Я думаю, поэтому я». Вы не могли бы сказать, что я делал на своем собственном кусочке планеты Земля, единственный контакт, который вы имеете со мной, - через сообщения, которые мы передаем взад и вперед.
РЕДАКТИРОВАТЬ:
Вы не сказали, на каких языках вам удобно, но посмотрите, есть ли реализация актера на вашем языке. Возможно, самым простым из них будут некоторые из библиотек актеров в python. Но, вероятно, лучше для изучения был бы Эрланг. Язык немного грубоват, но как только вы преодолеете нюансы, это хороший язык.
Действующие лица являются элементом диаграмм вариантов использования, которые представляют любую внешнюю сущность (пользователя, внешнюю систему и т. Д.), Которая может действовать в системе. Любой базовый вариант использования будет содержать актеров - просто Google «вариант использования» для множества примеров.