Нравится (инструментарий)
![]() | |
Оригинальный автор(ы) | Йонас Бонер |
---|---|
Разработчик(и) | изгиб света |
Первоначальный выпуск | июль 2009 г. |
Стабильная версия | 2.9.1
/ 19 декабря 2023 г [ 1 ] |
Репозиторий | |
Написано в | Скала |
Операционная система | Кросс-платформенный |
Платформа | Виртуальная машина Java |
Лицензия | несколько |
Веб-сайт | как |
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 ] Первым публичным релизом стала As 0.5. [ 7 ] объявлено в январе 2010 года. [ 8 ] Akka теперь является частью платформы Lightbend вместе с платформой Play и языком программирования Scala .
В сентябре 2022 года Lightbend объявила, что Akka изменит свою лицензию с лицензии на бесплатное программное обеспечение Apache License 2.0 на проприетарную лицензию с доступным исходным кодом , известную как Business Source License (BSL). Любой новый код под BSL станет доступен по лицензии Apache через три года. [ 9 ]
Отличительные особенности
[ редактировать ]Ключевые моменты, отличающие приложения на основе акторов Akka:
- Параллелизм основан на сообщениях и является асинхронным: обычно изменяемые данные не передаются совместно и примитивы синхронизации не используются; Akka реализует модель актера .
- Способ взаимодействия субъектов одинаков, независимо от того, находятся ли они на одном и том же хосте или на разных хостах, взаимодействуют напрямую или через средства маршрутизации, работают в нескольких потоках или во многих потоках и т. д. Такие детали могут быть изменены во время развертывания с помощью механизма конфигурации, что позволяет программа, которую можно масштабировать (чтобы использовать более мощные серверы) и расширять (чтобы использовать больше серверов) без изменений.
- Актеры расположены иерархически относительно сбоев программы, которые рассматриваются как события, которые должен обрабатывать супервизор актера (независимо от того, какой актер отправил сообщение, вызвавшее сбой). В отличие от Erlang, Akka обеспечивает родительский контроль, что означает, что каждый актер создается и контролируется его родительским актером.
Akka имеет модульную структуру, в которой основной модуль предоставляет актеров. Доступны другие модули для добавления таких функций, как сетевое распределение субъектов, поддержка кластеров , источник команд и событий, интеграция с различными сторонними системами (например, Apache Camel , ZeroMQ ) и даже поддержка других моделей параллелизма, таких как Futures и Agents.
Структура проекта
[ редактировать ]Виктор Кланг стал техническим руководителем проекта Akka в сентябре 2011 года. Когда в декабре 2012 года Виктор стал техническим директором Lightbend, Роланд Кун стал техническим руководителем Akka. Основная часть разработки выполняется основной командой Lightbend. [ 10 ] поддерживается активным сообществом. [ 11 ] В настоящее время акцент делается на расширении поддержки кластеров .
Связь с другими библиотеками
[ редактировать ]Появились другие фреймворки и наборы инструментов для формирования экосистемы вокруг Akka:
- Набор инструментов для распыления [ 12 ] реализован с использованием Akka и включает HTTP-сервер , а также связанные с ним средства, такие как доменно-ориентированный язык (DSL) для создания RESTful API.
- Платформа Play для разработки веб-приложений предлагает интеграцию с Akka. [ 13 ]
- Вплоть до версии 1.6 Apache Spark использовал Akka для связи между узлами. [ 14 ]
- Библиотека веб-сервера Socko поддерживает реализацию REST API для приложений Akka. [ 15 ]
- Источник событий [ 16 ] библиотека обеспечивает поддержку архитектуры, управляемой событиями (см. также проектирование, управляемое предметной областью ), для субъектов Akka.
- Инструмент стресс-тестирования Gatling для нагрузочного тестирования веб-серверов основан на Akka. [ 17 ]
- Веб- фреймворк Scalatra предлагает интеграцию с Akka. [ 18 ]
- Платформа разработки веб-приложений Vaadin может интегрироваться с Akka. [ 19 ]
- ( платформа Система RPC Apache Flink для распределенной потоковой и пакетной обработки данных) построена с использованием Akka. [ 20 ] но изолирован с версии 1.14. [ 21 ]
- Фреймворк Lagom для создания реактивных микросервисов реализован поверх Akka. [ 22 ]
зарегистрировано более 250 публичных проектов На GitHub , использующих Akka. [ 23 ]
Публикации о Лайке
[ редактировать ]Об Акке есть несколько книг:
- Нравится Основы [ 24 ]
- Нравятся примеры кода
- Как параллелизм [ 25 ]
- Как в действии, второе издание [ 26 ]
- Как в действии [ 27 ]
- Эффективен как [ 28 ]
- Компонуемые фьючерсы с Akka 2.0 с примерами кода на Java, Scala и Akka [ 29 ]
А также особенности:
- «Актеры Скалы» П. Халлера. [ 30 ]
- «Скала в действии» Н. Райчаудхури. [ 31 ]
- Д. Уэмплер «Функциональное программирование для Java-разработчиков». [ 32 ]
- «Кулинарная книга Scala» А. Александра. [ 33 ]
- «Параллельное программирование на JVM» В. Субраманиама. [ 34 ]
- «Реактивные веб-приложения» М. Бернхардта. [ 35 ]
Помимо множества веб-статей, описывающих коммерческое использование Akka, [ 36 ] [ 37 ] об этом также есть обзорные статьи. [ 38 ] [ 39 ]
Ссылки
[ редактировать ]- ^ Как команда. «Выпущено 23.10» . Получено 27 декабря.
- ^ Команда Акка. «Введение в актеры Scala» . Проверено 17 сентября 2018 г.
- ^ Йованович, Вожин. «Руководство по миграции актеров Scala» . Архивировано из оригинала 5 декабря 2013 года . Проверено 13 марта 2013 г.
- ^ «История версий Scala — более ранние версии» . scala-lang.org. 16 февраля 2009 г. Архивировано из оригинала 4 января 2013 г.
- ^ Йонас Бонер (16 февраля 2009 г.). «инициализация настройки проекта» . github.com.
- ^ Бонер, Йонас. «Акка Актер Кернел» . [электронная почта защищена] . Архивировано из оригинала 4 марта 2016 г. Проверено 13 июля 2017 г.
- ^ Йонас Бонер (12 июля 2009 г.). "v0.5" . github.com.
- ^ Йонас Бонер (4 января 2010 г.). «Представляем Akka — упрощенная масштабируемость, отказоустойчивость, параллелизм и удаленное взаимодействие через актеров» . jonasboner.com.
- ^ Бонер, Йонас. «Почему мы меняем лицензию на Akka» . Проверено 7 сентября 2022 г.
- ^ «Команда Акка» . akka.io. Проверено 6 июня 2013 г.
- ^ «Список участников Akka» . github.com . Проверено 6 июня 2013 г.
- ^ Дениц, Матиас. «Набор инструментов для распыления» . спрей.io . Проверено 6 июня 2013 г.
- ^ «Документация платформы Play: интеграция с Akka» . playframework.com . Проверено 6 июня 2013 г.
- ^ «Источники проекта Spark» . github.com . Проверено 6 июня 2013 г.
- ^ «Веб-сервер Соко» . sockoweb.org . Проверено 6 июня 2013 г.
- ^ «Библиотека событий» . Элигоисточник . Проверено 6 июня 2013 г.
- ^ «Инструмент стресс-тестирования Гатлинга» . github.com . Проверено 6 июня 2013 г.
- ^ «Акка-Скалатра» . scalatra.org . Проверено 6 октября 2022 г.
- ^ «Ваадин в Акке» . Vaadin.com . Проверено 26 апреля 2014 г.
- ^ «Apache Flink — Акка за победу!» . http://flink.apache.org . Проверено 2 декабря 2015 г.
- ^ «Apache Flink: Scala Free в одном пятнадцати» . http://flink.apache.org . 22 февраля 2022 г. Проверено 22 апреля 2022 г.
- ^ «Лагом — Интеграция с Аккой» .
- ^ Ташарофи, Самира. «Как корпус актерского проекта на GitHub» . cs.illinois.edu. Архивировано из оригинала 3 октября 2012 г. Проверено 0 июня 2013 г.
- ^ Гупта, Муниш К. (2012). Акка Основы . Пакт Паблишинг. п. 334. ИСБН 978-1849518284 .
- ^ Вятт, Дерек (2013). Таким образом, параллелизм . Артима. п. 521. ИСБН 978-0981531663 .
- ^ Лопес-Санч Абрахам, Фрэнсис (2023). Как в «Действии», второе издание . Публикации Мэннинга. п. 400. ИСБН 978-1617299216 .
- ^ Рустенбург, Раймонд (2013). Акка в действии . Публикации Мэннинга. п. 475. ИСБН 978-1617291012 .
- ^ Аллен, Джейми (2013). Эффективен как . О'Рейли Медиа. п. 74. ИСБН 978-1449360078 .
- ^ Слинн, Майкл (2012). Составные фьючерсы с Akka 2.0 . Микронавтические исследования. п. 178. ИСБН 978-0984278923 .
- ^ Халлер, Филип (2012). Актеры в Scala . Артима. стр. 169. ИСБН 978-0981531656 .
- ^ Райчаудхури, Ниланджан (2013). Масштаб в действии Публикации Мэннинга. п. 416. ИСБН 978-1935182757 .
- ^ Вамплер, Дин (2011). Функциональное программирование для разработчиков Java . О'Рейли Медиа. стр. 90 . ISBN 978-1449311032 .
- ^ Александр, Элвин (2013). Поваренная книга Скала . О'Рейли Медиа. п. 722. ИСБН 978-1449339616 .
- ^ Субраманиам, Венкат (2011). Параллельное программирование на JVM: освоение синхронизации, STM и актеров . Прагматичная книжная полка. стр. 280 . ISBN 978-1934356760 .
- ^ Бернхардт, Мануэль (2016). Реактивные веб-приложения: охватывают Play, Akka и Reactive Streams . Публикации Мэннинга. п. 328. ИСБН 9781633430099 .
- ^ Дэрроу, Барб (25 июня 2012 г.). «Juniper Networks подписывает контракт со Scala» . gigaom.com. Архивировано из оригинала 2 июня 2013 года . Проверено 8 июня 2013 г.
- ^ Росс, Дэвид. «Масштабирование Klout API с помощью Scala, Akka и Play» . Проверено 8 июня 2013 г.
- ^ Хейнс, Стивен (8 мая 2013 г.). «Java-проекты с открытым исходным кодом: Akka» . JavaWorld . Проверено 15 июля 2020 г.
- ^ «Ява-Магазин 6.13» . jaxenter.de. Архивировано из оригинала 13 августа 2013 года . Проверено 8 июня 2013 г.