Akka (zestaw narzędzi)

Akka
Oryginalni autorzy Jonas Boner
Deweloperzy Zagięcie światła
Pierwsze wydanie lipiec 2009 ( 2009-07 )
Wersja stabilna
2.6.19 / 21 marca 2022 ; 11 miesięcy temu ( 21.03.2022 )
Magazyn
Napisane w Scala
System operacyjny Międzyplatformowe
Platforma Maszyna wirtualna Java
Licencja wiele
Strona internetowa aka.io _

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:

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.

Linki zewnętrzne