Akka (zestaw narzędzi)
Oryginalni autorzy | Jonas Boner |
---|---|
Deweloperzy | Zagięcie światła |
Pierwsze wydanie | lipiec 2009 |
Wersja stabilna | 2.6.19 / 21 marca 2022
|
Magazyn | |
Napisane w | Scala |
System operacyjny | Międzyplatformowe |
Platforma | Maszyna wirtualna Java |
Licencja | wiele |
Strona internetowa |
Akka jest dostępnym w źródle zestawem narzędzi i środowiskiem wykonawczym, upraszczającym tworzenie współbieżnych i rozproszonych aplikacji na maszynie JVM . Akka obsługuje wiele modeli programowania dla współbieżności, ale kładzie nacisk na współbieżność opartą na aktorach , z inspiracją zaczerpniętą z Erlang .
Powiązania językowe istnieją zarówno dla Javy , jak i Scali . Akka jest napisana w Scali, a od Scali 2.10 aktorzy w standardowej bibliotece Scali są przestarzałi na rzecz Akka.
Historia
Implementacja aktora, napisana przez Philippa Hallera, została wydana w lipcu 2006 roku jako część Scali 2.1.7. Do 2008 roku Scala przyciągała uwagę do stosowania w złożonych aplikacjach serwerowych, ale współbieżność nadal była zwykle osiągana poprzez tworzenie wątków, które współdzieliły pamięć i synchronizowały się w razie potrzeby za pomocą blokad. Świadomy trudności związanych z takim podejściem i zainspirowany Erlang do pisania wysoce współbieżnych aplikacji sterowanych zdarzeniami, szwedzki programista Jonas Bonér stworzył Akka, aby wprowadzić podobne możliwości do Scali i Javy. Bonér rozpoczął pracę nad Akka na początku 2009 roku, a swoją wizję spisał w czerwcu tego roku. Pierwszym publicznym wydaniem była Akka 0.5, ogłoszona w styczniu 2010 roku. Akka jest teraz częścią platformy Lightbend wraz z frameworkiem Play i językiem programowania Scala .
We wrześniu 2022 roku Lightbend ogłosił, że Akka zmieni swoją licencję z licencji wolnego oprogramowania Apache License 2.0 na zastrzeżoną licencję dostępną w źródle , znaną jako Business Source License (BSL). Każdy nowy kod w ramach BSL stałby się dostępny na licencji Apache po trzech latach.
Cechy wyróżniające
Kluczowymi punktami wyróżniającymi aplikacje oparte na aktorach Akka są:
- Współbieżność jest oparta na komunikatach i asynchroniczna: zazwyczaj nie są udostępniane żadne zmienne dane i nie są używane żadne operacje podstawowe synchronizacji; Akka implementuje model aktora .
- Sposób interakcji aktorów jest taki sam, niezależnie od tego, czy znajdują się na tym samym hoście, czy na oddzielnych hostach, komunikują się bezpośrednio lub za pośrednictwem urządzeń routingu, działają na kilku lub wielu wątkach itp. Takie szczegóły można zmieniać w czasie wdrażania za pomocą mechanizmu konfiguracji, co pozwala program, który można skalować w górę (w celu wykorzystania mocniejszych serwerów) i na zewnątrz (w celu wykorzystania większej liczby serwerów) bez modyfikacji.
- Aktorzy są uszeregowani hierarchicznie ze względu na awarie programu, które traktowane są jako zdarzenia do obsługi przez przełożonego aktora (niezależnie od tego, który aktor wysłał komunikat wywołujący awarię). W przeciwieństwie do Erlanga, Akka wymusza nadzór rodzicielski, co oznacza, że każdy aktor jest tworzony i nadzorowany przez swojego aktora-rodzica.
Akka ma strukturę modułową, z głównym modułem zapewniającym aktorów. Dostępne są inne moduły, które dodają funkcje, takie jak dystrybucja sieciowa aktorów, klastrów , Command and Event Sourcing, integracja z różnymi systemami innych firm (np. Apache Camel , ZeroMQ ), a nawet obsługa innych modeli współbieżności, takich jak Futures i Agents.
Struktura projektu
Viktor Klang został kierownikiem technicznym projektu Akka we wrześniu 2011 r. Kiedy w grudniu 2012 r. Viktor został dyrektorem ds. inżynierii w Lightbend, Roland Kuhn został kierownikiem technicznym projektu Akka. Główna część rozwoju jest wykonywana przez główny zespół zatrudniony w Lightbend, wspierany przez aktywną społeczność. Obecnie nacisk kładziony jest na rozszerzenie klastrów .
Stosunek do innych bibliotek
Pojawiły się inne frameworki i zestawy narzędzi, które utworzyły ekosystem wokół Akka:
- Zestaw narzędzi Spray jest zaimplementowany przy użyciu Akka i obejmuje serwer HTTP oraz powiązane udogodnienia, takie jak język specyficzny dla domeny (DSL) do tworzenia interfejsów API RESTful
- Framework Play do tworzenia aplikacji internetowych oferuje integrację z Akka
- Do wersji 1.6 Apache Spark używał Akka do komunikacji między węzłami
- Biblioteka Socko Web Server obsługuje implementację API REST dla aplikacji Akka
- Biblioteka eventsourced zapewnia obsługę architektury sterowanej zdarzeniami (zobacz także projektowanie oparte na domenie ) dla aktorów Akka
- Narzędzie do testów warunków skrajnych Gatling do testowania obciążenia serwerów sieciowych jest zbudowane na Akka
- Scalatra oferuje integrację z Akka .
- Ramy programistyczne aplikacji internetowych Vaadin można zintegrować z Akka
- System RPC Apache Flink (platforma do rozproszonego strumienia i przetwarzania danych wsadowych) jest zbudowany przy użyciu Akka, ale odizolowany od wersji 1.14.
- Framework Lagom do budowania reaktywnych mikroserwisów jest zaimplementowany na Akka.
GitHub zarejestrowanych jest ponad 250 projektów publicznych , które używają Akka.
Publikacje o Akka
Istnieje kilka książek o Akka:
- Akka Essentials
- Przykłady kodu Akka
- Współbieżność Akka
- Akka w akcji
- Skuteczna Akka
- Composable Futures z Akka 2.0, zawierające przykłady kodów Java, Scala i Akka
Akka występuje również w:
- „Aktorzy w Scali” P. Hallera
- „Scala w akcji” N. Raychaudhuriego
- „Programowanie funkcyjne dla programistów Java” D. Wamplera
- „Książka kucharska Scala” A. Aleksandra
- „Współbieżność programowania w JVM” V. Subramaniama
- „Reaktywne aplikacje internetowe” M. Bernhardta
Oprócz wielu artykułów internetowych, które opisują komercyjne wykorzystanie Akka, istnieją również artykuły ogólne na ten temat.