Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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]

См. Также [ править ]

  •  Портал бесплатного программного обеспечения

Ссылки [ править ]

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

Внешние ссылки [ править ]

  • Официальный сайт Akka