Автор (ы) оригинала | Йонас Бонер |
---|---|
Разработчики) | Lightbend |
Первый выпуск | Июль 2009 г. |
Стабильный выпуск | 2.6.13 / 23 февраля 2021 г . [1] |
Репозиторий | |
Написано в | Scala |
Операционная система | Кроссплатформенность |
Платформа | Виртуальная машина Java |
Лицензия | Лицензия Apache 2.0 |
Веб-сайт | акка |
Akka - это бесплатный набор инструментов и среда выполнения с открытым исходным кодом, упрощающие создание параллельных и распределенных приложений на JVM . Akka поддерживает несколько моделей программирования для параллелизма, но при этом подчеркивает параллелизм на основе акторов , вдохновленный Erlang . [2]
Привязки языков существуют как для Java, так и для Scala . Akka написан на Scala, и, начиная со Scala 2.10, акторы в стандартной библиотеке Scala устарели в пользу Akka. [3]
История [ править ]
Реализация актора, написанная Филиппом Халлером, была выпущена в июле 2006 года как часть Scala 2.1.7. [4] К 2008 году Scala привлекала внимание к использованию в сложных серверных приложениях, но параллелизм по-прежнему обычно достигался путем создания потоков, разделяющих память и синхронизируемых при необходимости с помощью блокировок. Осознавая трудности этого подхода и вдохновленный поддержкой библиотеки языка программирования Erlang для написания высоко параллельных событийно-ориентированных приложений, шведский программист Йонас Бонер создал Akka, чтобы привнести аналогичные возможности в Scala и Java. Бонер начал работать над Akka в начале 2009 года [5] и написал свое видение этого проекта в июне того же года. [6]Первым публичным выпуском был Akka 0.5, [7] объявленный в январе 2010 года. [8] Akka теперь является частью платформы Lightbend вместе с платформой Play и языком программирования Scala .
Отличительные особенности [ править ]
Ключевые моменты, отличающие приложения, основанные на акторах Akka:
- Параллелизм основан на сообщениях и является асинхронным: обычно не используются совместно изменяемые данные и не используются примитивы синхронизации; Akka реализует модель актера .
- Способ взаимодействия субъектов одинаков, независимо от того, находятся ли они на одном хосте или на разных хостах, общаются напрямую или через средства маршрутизации, работают в нескольких или многих потоках и т. Д. Такие детали могут быть изменены во время развертывания с помощью механизма конфигурации, что позволяет программа, которая должна быть увеличена (для использования более мощных серверов) и расширена (для использования большего количества серверов) без изменений.
- Субъекты организованы иерархически в отношении сбоев программы, которые рассматриваются как события, которые должны обрабатываться супервизором субъекта (независимо от того, какой субъект отправил сообщение, инициирующее сбой). В отличие от Erlang, Akka обеспечивает родительский надзор, что означает, что каждый субъект создается и контролируется своим родительским субъектом.
Akka имеет модульную структуру с основным модулем, обеспечивающим акторов. Другие модули доступны для добавления функций, таких как сетевое распределение субъектов, поддержка кластера , сбор команд и событий, интеграция с различными сторонними системами (например, Apache Camel , ZeroMQ ) и даже поддержка других моделей параллелизма, таких как Futures и Agents.
Структура проекта [ править ]
Виктор Кланг стал техническим руководителем проекта Akka в сентябре 2011 года. Когда Виктор стал техническим директором Lightbend в декабре 2012 года, Роланд Кун стал техническим руководителем Akka. Основная часть разработки выполняется основной командой, работающей в Lightbend [9], при поддержке активного сообщества. [10] В настоящее время упор делается на расширение поддержки кластеров .
Отношение к другим библиотекам [ править ]
Другие фреймворки и инструменты появились, чтобы сформировать экосистему вокруг Akka:
- Набор инструментов Spray [11] реализован с использованием Akka и включает HTTP-сервер, а также связанные с ним средства, такие как предметно-ориентированный язык (DSL) для создания RESTful API.
- Платформа Play для разработки веб-приложений предлагает интеграцию с Akka [12]
- До версии 1.6 Apache Spark использовал Akka для связи между узлами [13]
- Библиотека Socko Web Server поддерживает реализацию REST API для приложений Akka [14]
- Библиотека eventsourced [15] обеспечивает поддержку событийно-управляемой архитектуры (см. Также предметно-ориентированное проектирование ) для акторов Akka.
- Инструмент стресс-теста Gatling для нагрузочного тестирования веб-серверов построен на Akka [16]
- Scalatra фреймворк построен на Акко и предлагает интеграцию с ним [17]
- Vaadin среда разработки веб - приложение может интегрироваться с Акки [18]
- Платформа Apache Flink для распределенной потоковой и пакетной обработки данных построена на Akka. [19]
- ЛАГ основа для создания реактивных microservices реализована поверх Akka. [20]
На GitHub зарегистрировано более 250 публичных проектов, использующих Akka. [21]
Публикации об Акке [ править ]
Есть несколько книг об Акке:
- Основы Akka [22]
- Примеры кода Akka
- Параллелизм Akka [23]
- Akka в действии [24]
- Эффективный Акка [25]
- Составные фьючерсы с Akka 2.0, включая примеры кода Java, Scala и Akka [26]
Akka также присутствует в
- «Актеры в Скале» П. Галлера [27]
- «Скала в действии» Н. Райчаудхури [28]
- D. Wampler "Функциональное программирование для разработчиков Java" [29]
- "Поваренная книга Scala" А. Александера [30]
- В. Субраманиам "Параллелизм программирования на JVM" [31]
- «Реактивные веб-приложения» М. Бернхардта [32]
Помимо множества статей в Интернете, описывающих коммерческое использование Akka [33] [34], есть также обзорные статьи об этом. [35] [36]
См. Также [ править ]
- Портал бесплатного программного обеспечения
Ссылки [ править ]
- ^ Команда Akka. «Выпущена Akka 2.6.13» . Проверено 24 февраля 2021 года .
- ^ Команда Akka. «Введение в Scala Actors» . Проверено 17 сентября 2018 года . CS1 maint: обескураженный параметр ( ссылка )
- ↑ Йованович, Войин. «Руководство по миграции Scala Actors» . Проверено 13 марта 2013 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ «История версий Scala - старые версии» . scala-lang.org. 2009-02-16. Архивировано из оригинала на 2013-01-04. CS1 maint: обескураженный параметр ( ссылка )
- ^ Jonas Бонер (2009-02-16). "инициализация настройки проекта" . github.com.
- ^ Бонер, Йонас. "Akka Actor Kernel" . [email protected] . Архивировано из оригинала на 2016-03-04 . Проверено 13 июля 2017 .
- ^ Jonas Бонер (2009-07-12). «v0.5» . github.com.
- ^ Jonas Бонер (2010-01-04). «Представляем Akka - более простую масштабируемость, отказоустойчивость, параллелизм и удаленное взаимодействие через акторов» . jonasboner.com.
- ^ "Команда Акка" . akka.io . Проверено 6 июня 2013 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ "Список участников Akka" . github.com . Проверено 6 июня 2013 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ Дениц, Матиас. «Набор инструментов для распыления» . spray.io . Проверено 6 июня 2013 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ «Документация по фреймворку Play: интеграция с Akka» . playframework.com . Проверено 6 июня 2013 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ "Источники проекта Spark" . github.com . Проверено 6 июня 2013 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ "Веб-сервер Socko" . sockoweb.org . Проверено 6 июня 2013 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ "библиотека событийного поиска" . eligosource . Проверено 6 июня 2013 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ "Инструмент стресс-теста Гатлинга" . github.com . Проверено 6 июня 2013 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ "Документация Scalatra: Akka" . scalatra.org. Архивировано из оригинала на 6 августа 2013 года . Проверено 6 июня 2013 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ "Ваадин в Акке" . Vaadin.com . Проверено 26 апреля 2014 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ "Apache Flink - Акка для победы!" . flink.apache.org . Дата обращения 2 декабря 2015 . CS1 maint: обескураженный параметр ( ссылка )
- ^ https://www.lagomframework.com/documentation/1.4.x/java/Akka.html
- ^ Ташарофи, Самира. "Корпус актерского проекта Akka на GitHub" . cs.illinois.edu. Архивировано из оригинала на 2012-10-30 . Проверено 6 июня 2013 .
- ^ Гупта, Munish К. (2012). Akka Essentials . Packt Publishing. п. 334. ISBN 1849518289.
- Перейти ↑ Wyatt, Derek (2013). Акка Параллелизм . Артима. п. 521. ISBN. 0981531660.
- ^ Roestenburg, Raymond (2013). Akka в действии . Публикации Мэннинга. п. 475. ISBN 1617291013.
- ^ Аллен, Джейми (2013). Эффективный Акка . O'Reilly Media. п. 74. ISBN 1449360076.
- ^ Слинн, Майкл (2012). Составные фьючерсы с Akka 2.0 . Микронавтика. п. 178. ISBN 0984278923.
- Перейти ↑ Haller, Philipp (2012). Актеры в Scala . Артима. п. 169. ISBN. 0981531652.
- ^ Raychaudhuri, Nilanjan (2013). Scala в действии . Публикации Мэннинга. п. 416. ISBN 1935182757.
- ^ Wampler, Дин (2011). Функциональное программирование для разработчиков Java . O'Reilly Media. С. 90 . ISBN 1449311032.
- ^ Александр, Элвин (2013). Поваренная книга Scala . O'Reilly Media. п. 722. ISBN 1449339611.
- ^ Субраманьям Венкат (2011). Параллельное программирование на JVM: освоение синхронизации, STM и участников . Прагматическая книжная полка. С. 280 . ISBN 193435676X.
- ^ Бернхардт, Мануэль (2016). Реактивные веб-приложения: охватывают Play, Akka и реактивные потоки . Публикации Мэннинга. п. 328. ISBN 9781633430099.
- ^ Дэрроу, Барб. «Сети Juniper подписываются на Scala» . gigaom.com . Проверено 8 июня 2013 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ Росс, Дэвид. «Масштабирование Klout API с помощью Scala, Akka и Play» . Проверено 8 июня 2013 года . CS1 maint: обескураженный параметр ( ссылка )
- Рианна Хейнс, Стивен (8 мая 2013 г.). «Проекты Java с открытым исходным кодом: Akka» . JavaWorld . Проверено 15 июля 2020 . CS1 maint: обескураженный параметр ( ссылка )
- ^ "Java Magazin 6.13" . jaxenter.de. Архивировано из оригинального 13 августа 2013 года . Проверено 8 июня 2013 года . CS1 maint: обескураженный параметр ( ссылка )
Внешние ссылки [ править ]
- Официальный сайт Akka