stringtranslate.com

Akka (набор инструментов)

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 .

В сентябре 2022 года Lightbend объявила, что Akka изменит свою лицензию с лицензии свободного программного обеспечения Apache License 2.0 на проприетарную лицензию с доступом к исходному коду , известную как Business Source License (BSL). Любой новый код под BSL станет доступен под лицензией Apache License через три года. [9]

Отличительные черты

Ключевые моменты, отличающие приложения на основе актеров Akka:

Akka имеет модульную структуру, с основным модулем, предоставляющим акторов. Другие модули доступны для добавления функций, таких как сетевое распределение акторов, поддержка кластера , Command and Event Sourcing, интеграция с различными сторонними системами (например, Apache Camel , ZeroMQ ) и даже поддержка других моделей параллелизма, таких как Futures и Agents.

Структура проекта

Виктор Кланг стал техническим руководителем проекта Akka в сентябре 2011 года. Когда Виктор стал директором по инжинирингу в Lightbend в декабре 2012 года, Роланд Кун стал техническим руководителем Akka. Основная часть разработки выполняется основной командой, работающей в Lightbend, [10] при поддержке активного сообщества. [11] В настоящее время акцент делается на расширении поддержки кластера .

Связь с другими библиотеками

Появились и другие фреймворки и наборы инструментов, сформировавшие экосистему вокруг Akka:

На GitHub зарегистрировано более 250 публичных проектов , использующих Akka. [23]

Публикации об Акке

Есть несколько книг об Акке:

Акка также присутствует в:

Помимо множества веб-статей, описывающих коммерческое использование Akka, [36] [37] существуют также обзорные статьи о нем. [38] [39]

Ссылки

  1. ^ Команда Акка. «Выпущен Акка 23.10» . Проверено 27 декабря 2023 г.
  2. ^ Команда Акка. «Введение в актеры Scala» . Проверено 17 сентября 2018 г.
  3. ^ Йованович, Воин. "The Scala Actors Migration Guide". Архивировано из оригинала 5 декабря 2013 года . Получено 13 марта 2013 года .
  4. ^ "История версий Scala - Старые версии". scala-lang.org. 2009-02-16. Архивировано из оригинала 2013-01-04.
  5. ^ Йонас Бонер (16.02.2009). "init project setup". github.com.
  6. ^ Бонер, Йонас. "Akka Actor Kernel". [email protected] . Архивировано из оригинала 2016-03-04 . Получено 2017-07-13 .
  7. ^ Йонас Бонер (12 июля 2009 г.). «v0.5». github.com.
  8. ^ Йонас Бонер (2010-01-04). «Представляем Akka — более простая масштабируемость, отказоустойчивость, параллелизм и удаленное взаимодействие через актеров». jonasboner.com.
  9. ^ Бонер, Йонас. «Почему мы меняем лицензию для Akka» . Получено 7 сентября 2022 г.
  10. ^ "Команда Akka". akka.io . Получено 6 июня 2013 г. .
  11. ^ "Список участников Akka". github.com . Получено 6 июня 2013 г. .
  12. ^ Дёниц, Матиас. "Spray toolkit". spray.io . Получено 6 июня 2013 г. .
  13. ^ "Документация по фреймворку Play: Интеграция с Akka". playframework.com . Получено 6 июня 2013 г. .
  14. ^ "Исходные данные проекта Spark". github.com . Получено 6 июня 2013 г. .
  15. ^ "Socko Web Server". sockoweb.org . Получено 6 июня 2013 г. .
  16. ^ "eventsourced library". eligosource . Получено 6 июня 2013 г. .
  17. ^ "Инструмент стресс-теста Gatling". github.com . Получено 6 июня 2013 г. .
  18. ^ "Акка - Скалатра". scalatra.org . Проверено 6 октября 2022 г.
  19. ^ «Ваадин в Акке». Vaadin.com . Проверено 26 апреля 2014 г.
  20. ^ «Apache Flink — Акка за победу!». http://flink.apache.org . Проверено 2 декабря 2015 г.
  21. ^ "Apache Flink: Scala Free в One Fifteen". flink.apache.org . 22 февраля 2022 г. . Получено 22 апреля 2022 г. .
  22. ^ «Лагом — Интеграция с Аккой».
  23. ^ Ташарофи, Самира. «Корпус актерского проекта Akka на GitHub». cs.illinois.edu. Архивировано из оригинала 30 октября 2012 г. Проверено 6 июня 2013 г.
  24. ^ Гупта, Муниш К. (2012). Akka Essentials. Packt Publishing. стр. 334. ISBN 978-1849518284.
  25. ^ Вятт, Дерек (2013). Акка Параллелизм . Артима. п. 521. ИСБН 978-0981531663.
  26. ^ Лопес-Санчо Абрахам, Франциско (2023). Акка в действии, второе издание . Публикации Мэннинга. п. 400. ИСБН 978-1617299216.
  27. ^ Ростенбург, Раймонд (2013). Акка в действии . Публикации Мэннинга. п. 475. ИСБН 978-1617291012.
  28. ^ Аллен, Джейми (2013). Эффективная Акка . О'Рейли Медиа. п. 74. ИСБН 978-1449360078.
  29. ^ Slinn, Michael (2012). Компонуемые будущие с Akka 2.0 . Исследования в области микронавтики. стр. 178. ISBN 978-0984278923.
  30. ^ Халлер, Филипп (2012). Актеры в Scala . Артима. п. 169. ИСБН 978-0981531656.
  31. ^ Райчаудхури, Ниланджан (2013). Скала в действии . Публикации Мэннинга. п. 416. ИСБН 978-1935182757.
  32. ^ Уомплер, Дин (2011). Функциональное программирование для разработчиков Java . O'Reilly Media. С. 90. ISBN 978-1449311032.
  33. ^ Александр, Элвин (2013). Scala Cookbook . O'Reilly Media. стр. 722. ISBN 978-1449339616.
  34. ^ Субраманиам, Венкат (2011). Программирование параллелизма на JVM: Освоение синхронизации, STM и актеров . Pragmatic Bookshelf. С. 280. ISBN 978-1934356760.
  35. ^ Бернхардт, Мануэль (2016). Реактивные веб-приложения: охватывает Play, Akka и реактивные потоки . Manning Publications. стр. 328. ISBN 9781633430099.
  36. Дарроу, Барб (25 июня 2012 г.). «Juniper networks sign on with Scala». gigaom.com. Архивировано из оригинала 2 июня 2013 г. Получено 8 июня 2013 г.
  37. ^ Росс, Дэвид. «Масштабирование API Klout с помощью Scala, Akka и Play» . Получено 8 июня 2013 г.
  38. ^ Хейнс, Стивен (8 мая 2013 г.). "Проекты Java с открытым исходным кодом: Akka". JavaWorld . Получено 15 июля 2020 г. .
  39. ^ "Java Magazin 6.13". jaxenter.de. Архивировано из оригинала 13 августа 2013 г. Получено 8 июня 2013 г.

Внешние ссылки