Шаблоны проектирования / лучшие практики для построения системы на основе актера
Я изо всех сил пытаюсь найти какие-либо достойные ссылки на шаблоны проектирования, лучшие практики или хорошие базовые архитектурные принципы, которые следует использовать при создании приложений на основе Actor. Те немногие, о которых я знаю:
Сообщения в блогах, статьи, вики, руководства
- Принципы разработки OTP Руководство пользователя
- Шаблоны и рекомендации для корпоративной интеграции (в общем, могут применяться к любой архитектуре, управляемой сообщениями)
- Серия постов Джеймса Ири о работе с государством в дизайне с актерами
- Серия постов по дизайну с актерами Scala Иттаем Дрором
- Статья о шаблонах параллелизма в Википедии
- Масштабируемые шаблоны проектирования системы (напрямую не связанные с актерами, но весьма полезные)
- Понимание параллелизма между актерами, часть 1, часть 2, автор Alex Miller
документы
- Диплом о создании надежных распределенных систем Джо Армстронг
- Компоненты Scalabale, разработанные Филиппом Халлером и Мартином Одерским
- Программирование на основе событий без инверсии управления Мартином Одерским и Матиасом Ценгером
- Актеры с шаблонами получения многоголовых сообщений от Martin Sulzmann
книги
- Актеры в Scala Филиппом Халлером и Фрэнком Соммерсом
- Программирование Erlang от Джо Армстронга
- Эрланг и OTP в действии: Мартин Логан, Эрик Мерритт и Ричард Карлссон
Реализации
- Akka Framework (альтернативная реализация акторов в Scala с портом нескольких вариантов поведения Эрланга и множеством других шаблонов для актеров)
- Scalaz Actors (актерские композиции, стратегии и обещания)
Презентации
- Актер Мышление Дейла Шумахера
- 1000-летний дизайн узоров Ульфа Вигера
- Актерское программирование от Джейми Риджуэя
- Школа Актерского Мастерства Василя Ременюка
Примеры от highscalability.com
- Простой сервис очередей (SQS) - этот сервис предоставляет сервис массового обслуживания в Интернете для хранения сообщений. Распределенные актеры ставят работу в очередь и снимают работу из очереди. Типичное использование: централизованная рабочая очередь. Вы помещаете задания в очередь, и разные субъекты могут извлекать работу из очереди и обрабатывать их, когда у них появляется процессорное время. Часть масштабируемости. Есть любое количество производителей и потребителей. Вы не беспокоитесь об этом. Очереди распределены по нескольким машинам и нескольким центрам обработки данных.
3 ответа
Это связано с предыдущим вопросом, если не точно так же!
Это не такой простой вопрос, потому что модель параллелизма акторов позволяет создавать много разных типов приложений: от приложения с одной виртуальной машиной с состоянием (с несколькими отдельными классами акторов) до кластера без состояний из тысяч экземпляров класса акторов.,
Однако основные принципы одинаковы:
- Никогда не подвергайте актерское состояние
- Общайтесь исключительно через передачу неизменных сообщений
Я опубликовал блог об изучении развития актеров в Scala несколько недель назад. Это пост о лучших практиках и вещах, которых следует избегать, основываясь на нескольких годах опыта работы с этой парадигмой.
Книга "Реактивные шаблоны проектирования" находится в разработке в Мэннинге.
Смотрите: https://www.manning.com/books/reactive-design-patterns