Akka (инструментарий) - Akka (toolkit)
Оригинальный автор (ы) | Йонас Бонер |
---|---|
Разработчики) | Lightbend |
изначальный выпуск | Июль 2009 г. |
Стабильный выпуск | 2.6.3 / 28 января 2020 г.[1] |
Репозиторий | |
Написано в | Scala |
Операционная система | Кроссплатформенность |
Платформа | Виртуальная машина Java |
Лицензия | Лицензия Apache 2.0 |
Интернет сайт | акка |
Акка это бесплатно и с открытым исходным кодом инструментарий и среда выполнения, упрощающие создание параллельных и распределенных приложений на JVM. Akka поддерживает несколько моделей программирования для параллелизма, но подчеркивает параллелизм на основе акторов, с вдохновением от Erlang.[2]
Языковые привязки существуют для обоих Ява и Scala. Akka написан на Scala, и, начиная со Scala 2.10, акторы в стандартной библиотеке Scala устарели в пользу Akka.[3]
История
Реализация актора, написанная Филиппом Халлером, была выпущена в июле 2006 года как часть Scala 2.1.7.[4] К 2008 году Scala привлекала внимание к использованию в сложных серверных приложениях, но параллелизм по-прежнему обычно достигался путем создания потоков, разделяющих память и синхронизируемых при необходимости с помощью блокировок. Зная о трудностях этого подхода и вдохновляясь Erlang Поддержка библиотеки языка программирования для написания высоко конкурентных, событийно-ориентированных приложений, шведский программист Йонас Bonér создал Akka, чтобы привнести аналогичные возможности в Scala и Java. Бонер начал работать над Akka в начале 2009 года.[5] и написал свое видение этого в июне того же года.[6] Первым публичным выпуском был Akka 0.5,[7] анонсирован в январе 2010 года.[8] Akka теперь является частью платформы Lightbend вместе с Фреймворк игры и Scala язык программирования.
Отличительные черты
Ключевые моменты, отличающие приложения на основе акторов Akka:
- Параллелизм основан на сообщениях и является асинхронным: обычно не используются совместно изменяемые данные и не используются примитивы синхронизации; Akka реализует актерская модель.
- То, как взаимодействуют субъекты, одинаково независимо от того, находятся ли они на одном узле или на разных узлах, общаются напрямую или через средства маршрутизации, работают в нескольких или многих потоках и т. Д. Такие детали могут быть изменены во время развертывания с помощью механизма конфигурации, что позволяет программа, которая должна быть увеличена (для использования более мощных серверов) и расширена (для использования большего количества серверов) без изменений.
- Субъекты организованы иерархически в отношении сбоев программы, которые рассматриваются как события, которые должны обрабатываться супервизором субъекта (независимо от того, какой субъект отправил сообщение, инициирующее сбой). В отличие от Erlang, Akka обеспечивает родительский надзор, что означает, что каждый актор создается и контролируется своим родительским актером.
Akka имеет модульную структуру с основным модулем, обеспечивающим акторов. Доступны другие модули для добавления таких функций, как сетевое распределение участников, кластер поддержка, сбор команд и событий, интеграция с различными сторонними системами (например, Apache Camel, ZeroMQ ), и даже поддержка других моделей параллелизма, таких как Фьючерсы и агенты.
Структура проекта
Виктор Кланг стал техническим руководителем проекта Akka в сентябре 2011 года. Когда Виктор стал техническим директором Lightbend в декабре 2012 года, Роланд Кун стал техническим руководителем Akka. Основная часть разработки выполняется основной командой Lightbend,[9] поддерживается активным сообществом.[10] В настоящее время упор делается на расширение кластер поддерживать.
Отношение к другим библиотекам
Другие фреймворки и инструменты появились, чтобы сформировать экосистему вокруг Akka:
- Набор инструментов Spray[11] реализован с использованием Akka и имеет HTTP сервер а также сопутствующие объекты, такие как предметно-ориентированный язык (DSL) для создания RESTful API
- В Фреймворк игры для развития веб-приложения предлагает интеграцию с Akka[12]
- До версии 1.6 Apache Spark использовал Akka для связи между узлами[13]
- Библиотека Socko Web Server поддерживает реализацию REST API для приложений Akka.[14]
- В события[15] библиотека предоставляет событийная архитектура (смотрите также предметно-ориентированный дизайн ) поддержка актеров Akka
- В Гатлинг инструмент стресс-тестирования для нагрузочного тестирования веб-серверов построен на Akka[16]
- В Скалатра веб-фреймворк построен на Akka и предлагает интеграцию с ним[17]
- В Ваадин фреймворк для разработки веб-приложений может интегрироваться с Akka[18]
- В Apache Flink Платформа для распределенной потоковой и пакетной обработки данных построена на Akka.[19]
- В Лагом фреймворк для построения реактивных микросервисов реализован поверх akka.[20]
На сайте зарегистрировано более 250 государственных проектов. GitHub которые используют Akka.[21]
Публикации об Акке
Есть несколько книг об Акке:
- Akka: главное[22]
- Примеры кода 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.3". Получено 4 февраля 2020.
- ^ Команда Akka. «Введение в Scala Actors». Получено 17 сентября 2018.
- ^ Йованович, Войин. "Руководство по миграции Scala Actors". Получено 13 марта 2013.
- ^ «История версий Scala - старые версии». scala-lang.org. 2009-02-16. Архивировано из оригинал на 2013-01-04.
- ^ Йонас Бонер (16 февраля 2009 г.). "инициализация настройки проекта". github.com.
- ^ Бонер, Йонас. "Akka Actor Kernel". [email protected]. Архивировано из оригинал на 2016-03-04. Получено 2017-07-13.
- ^ Йонас Бонер (12 июля 2009 г.). "v0.5". github.com.
- ^ Йонас Бонер (04.01.2010). «Представляем Akka - более простую масштабируемость, отказоустойчивость, параллелизм и удаленное взаимодействие через акторов». jonasboner.com.
- ^ "Akka team". akka.io. Получено 6 июн 2013.
- ^ "Список участников Akka". github.com. Получено 6 июн 2013.
- ^ Дениц, Матиас. «Набор инструментов для распыления». spray.io. Получено 6 июн 2013.
- ^ «Документация по фреймворку Play: интеграция с Akka». playframework.com. Получено 6 июн 2013.
- ^ "Источники проекта Spark". github.com. Получено 6 июн 2013.
- ^ "Веб-сервер Socko". sockoweb.org. Получено 6 июн 2013.
- ^ "библиотека событий". eligosource. Получено 6 июн 2013.
- ^ «Инструмент стресс-теста Гатлинга». github.com. Получено 6 июн 2013.
- ^ «Документация Scalatra: Akka». scalatra.org. Архивировано из оригинал 6 августа 2013 г.. Получено 6 июн 2013.
- ^ «Ваадин в Акке». Vaadin.com. Получено 26 апреля 2014.
- ^ "Apache Flink - Акка на победу!". flink.apache.org. Получено 2 декабря 2015.
- ^ https://www.lagomframework.com/documentation/1.4.x/java/Akka.html
- ^ Ташарофи, Самира. "Корпус актерского проекта Akka на GitHub". cs.illinois.edu. Архивировано из оригинал на 2012-10-30. Получено 2013-06-06.
- ^ Гупта, Муниш К. (2012). Akka: главное. Packt Publishing. п. 334. ISBN 1849518289.
- ^ Вятт, Дерек (2013). Акка Параллелизм. Артима. п. 521. ISBN 0981531660.
- ^ Рёстенбург, Раймонд (2013). Akka в действии. Публикации Мэннинга. п. 475. ISBN 1617291013.
- ^ Аллен, Джейми (2013). Эффективный Акка. O'Reilly Media. п. 74. ISBN 1449360076.
- ^ Слинн, Майкл (2012). Составные фьючерсы с Akka 2.0. Микронавтика. п. 178. ISBN 0984278923.
- ^ Галлер, Филипп (2012). Актеры в Scala. Артима. п. 169. ISBN 0981531652.
- ^ Райчаудхури, Ниланджан (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 Networks переходит на Scala». gigaom.com. Получено 8 июн 2013.
- ^ Росс, Дэвид. «Масштабирование Klout API с помощью Scala, Akka и Play». Получено 8 июн 2013.
- ^ Хейнс, Стивен (8 мая 2013 г.). «Проекты Java с открытым исходным кодом: Akka». JavaWorld. Получено 2020-07-15.
- ^ «Журнал Java 6.13». jaxenter.de. Архивировано из оригинал 13 августа 2013 г.. Получено 8 июн 2013.