Akka (sada nástrojů) - Akka (toolkit) - Wikipedia
![]() | |
Původní autoři | Jonas Bonér |
---|---|
Vývojáři | Lightbend |
První vydání | Červenec 2009 |
Stabilní uvolnění | 2.6.3 / 28. ledna 2020[1] |
Úložiště | ![]() |
Napsáno | Scala |
Operační systém | Cross-platform |
Plošina | Virtuální stroj Java |
Licence | Licence Apache 2.0 |
webová stránka | akka |
Akka je zdarma a open-source Toolkit a runtime zjednodušující konstrukci souběžných a distribuovaných aplikací na Windows JVM. Akka podporuje více modelů programování pro souběžnost, ale zdůrazňuje souběžnost podle herce, s inspirací čerpanou z Erlang.[2]
Vazby jazyků existují pro obě Jáva a Scala. Akka je napsána ve Scale a od verze Scala 2.10 jsou herci ve standardní knihovně Scala zastaráni ve prospěch Akky.[3]
Dějiny
Implementace herce, napsaná Philippem Hallerem, byla vydána v červenci 2006 jako součást Scala 2.1.7.[4] Do roku 2008 Scala přitahovala pozornost pro použití ve složitých serverových aplikacích, ale souběžnosti bylo stále obvykle dosaženo vytvořením vláken, které sdílely paměť a v případě potřeby byly synchronizovány pomocí zámků. Vědomy obtíží s tímto přístupem a inspirované Erlang podpora knihovny programovacího jazyka pro psaní vysoce souběžných aplikací řízených událostmi, švédský programátor Jonas Bonér vytvořil Akka, aby přinesl podobné možnosti jako Scala a Java. Bonér začal pracovat na Akce počátkem roku 2009[5] a svou vizi pro ni napsal v červnu téhož roku.[6] První veřejné vydání bylo Akka 0.5,[7] oznámeno v lednu 2010.[8] Akka je nyní součástí platformy Lightbend společně s Hrajte rámec a Scala programovací jazyk.
Charakteristické rysy
Klíčové body rozlišující aplikace založené na aktérech Akka jsou:
- Souběžnost je založená na zprávách a asynchronní: obvykle nejsou sdílena žádná proměnlivá data a nejsou použity žádné synchronizační primitivy; Akka implementuje herec model.
- Způsob, jakým aktéři interagují, je stejný, ať už jsou na stejném hostiteli nebo samostatných hostitelích, komunikují přímo nebo prostřednictvím směrovacích zařízení, běží na několika vláknech nebo mnoha vláknech atd. Tyto podrobnosti mohou být změněny v době nasazení prostřednictvím konfiguračního mechanismu, což umožňuje program, který má být zvětšen (pro použití výkonnějších serverů) a mimo (pro využití více serverů) bez úprav.
- Aktéři jsou hierarchicky uspořádáni s ohledem na selhání programu, s nimiž se zachází jako s událostmi, které mají být zpracovány nadřízeným herce (bez ohledu na to, který herec odeslal zprávu spouštějící selhání). Na rozdíl od Erlanga Akka vynucuje rodičovský dohled, což znamená, že každý aktér je vytvořen a dohlížen jeho mateřským aktérem.
Akka má modulární strukturu a základní modul poskytuje herce. K dispozici jsou další moduly pro přidání funkcí, jako je síťová distribuce aktérů, shluk podpora, získávání příkazů a událostí, integrace s různými systémy třetích stran (např. Apache Camel, ZeroMQ ), a dokonce i podpora dalších modelů souběžnosti, jako je Futures a agenti.
Struktura projektu
Viktor Klang se stal technickým vedoucím projektu Akka v září 2011. Když se Viktor v prosinci 2012 stal technickým ředitelem společnosti Lightbend, technickým vedoucím společnosti Akka se stal Roland Kuhn. Hlavní část vývoje zajišťuje základní tým zaměstnaný ve Lightbendu,[9] podporováno aktivní komunitou.[10] Současný důraz je kladen na rozšiřování shluk Podpěra, podpora.
Vztah k jiným knihovnám
Objevily se další rámce a sady nástrojů, které vytvářejí ekosystém kolem Akky:
- Sada nástrojů Spray[11] je implementován pomocí Akka a funkcí a HTTP server stejně jako související zařízení, jako je a jazyk specifický pro doménu (DSL) pro vytváření Klidný API
- The Hrajte rámec pro vývoj webové aplikace nabízí integraci s Akkou[12]
- Až do verze 1.6, Apache Spark používá Akka pro komunikaci mezi uzly[13]
- Knihovna Socko Web Server podporuje implementaci REST API pro aplikace Akka[14]
- The události pocházejí[15] knihovna poskytuje architektura řízená událostmi (viz také design řízený doménou ) podpora herců Akka
- The Gatling zátěžový testovací nástroj pro testování zátěžových webových serverů je postaven na Akce[16]
- The Scalatra webový rámec je postaven na Akce a nabízí integraci s ním[17]
- The Vaadin rámec pro vývoj webových aplikací lze integrovat s Akkou[18]
- The Apache Flink platforma pro distribuovaný stream a dávkové zpracování dat je postavena na Akce.[19]
- The Lagom rámec pro budování reaktivních mikroslužeb je implementován na vrcholu akky.[20]
Je zaregistrováno více než 250 veřejných projektů GitHub které používají Akka.[21]
Publikace o Akce
O Akce existuje několik knih:
- Akka Essentials[22]
- Příklady kódu Akka
- Souběžnost Akka[23]
- Akka v akci[24]
- Efektivní Akka[25]
- Kompoziční futures s Akka 2.0, příklady Java, Scala a Akka Code[26]
Akka také vystupuje v
- „Herci ve Scale“ od P. Hallera[27]
- „Scala v akci“ od N. Raychaudhuriho[28]
- D. Wampler „Funkční programování pro vývojáře Java“[29]
- „Kuchařská kniha Scala“ A. Alexandra[30]
- V. Subramaniam „Programování souběžnosti na JVM“[31]
- „Reaktivní webové aplikace“ M. Bernhardta[32]
Kromě mnoha webových článků, které popisují komerční využití Akky,[33][34]jsou o tom také přehledové články.[35][36]
Viz také
Portál svobodného softwaru
Reference
- ^ Tým Akka. „Akka 2.6.3 Vydáno“. Citováno 4. února 2020.
- ^ Tým Akka. „Představení herců Scala“. Citováno 17. září 2018.
- ^ Jovanovic, Vojin. „Průvodce migrací Scala Actors“. Citováno 13. března 2013.
- ^ "Historie verzí Scala - starší verze". scala-lang.org. 16. února 2009. Archivovány od originál dne 04.01.2013.
- ^ Jonas Bonér (16. 02. 2009). "nastavení projektu". github.com.
- ^ Bonér, Jonas. „Jádro herce Akka“. [email protected]. Archivovány od originál dne 04.03.2016. Citováno 2017-07-13.
- ^ Jonas Bonér (12.7.2009). „v0.5“. github.com.
- ^ Jonas Bonér (04.01.2010). „Představujeme Akku - jednodušší škálovatelnost, odolnost proti chybám, souběžnost a vzdálená komunikace prostřednictvím herců“. jonasboner.com.
- ^ „Tým Akka“. akka.io. Citováno 6. června 2013.
- ^ „Seznam přispěvatelů Akka“. github.com. Citováno 6. června 2013.
- ^ Doenitz, Mathias. "Spray toolkit". spray.io. Citováno 6. června 2013.
- ^ „Play framework documentation: Integrating with Akka“. playframework.com. Citováno 6. června 2013.
- ^ „Zdroje projektu Spark“. github.com. Citováno 6. června 2013.
- ^ "Socko Web Server". sockoweb.org. Citováno 6. června 2013.
- ^ "knihovna poskytovaná událostmi". oprávněný zdroj. Citováno 6. června 2013.
- ^ "Gatlingův zátěžový testovací nástroj". github.com. Citováno 6. června 2013.
- ^ "Scalatra dokumentace: Akka". scalatra.org. Archivovány od originál dne 6. srpna 2013. Citováno 6. června 2013.
- ^ „Vaadin v Akce“. Vaadin.com. Citováno 26. dubna 2014.
- ^ „Apache Flink - Akka o vítězství!“. flink.apache.org. Citováno 2. prosince 2015.
- ^ https://www.lagomframework.com/documentation/1.4.x/java/Akka.html
- ^ Tasharofi, Samira. „Korpus herců projektu Akka na GitHubu“. cs.illinois.edu. Archivovány od originál dne 2012-10-30. Citováno 2013-06-06.
- ^ Gupta, Munish K. (2012). Akka Essentials. Packt Publishing. p. 334. ISBN 1849518289.
- ^ Wyatt, Derek (2013). Souběžnost Akka. Artima. p. 521. ISBN 0981531660.
- ^ Roestenburg, Raymond (2013). Akka v akci. Manning Publications. p. 475. ISBN 1617291013.
- ^ Allen, Jamie (2013). Efektivní Akka. O'Reilly Media. p. 74. ISBN 1449360076.
- ^ Slinn, Michael (2012). Kompoziční futures s Akka 2.0. Mikronautický výzkum. p. 178. ISBN 0984278923.
- ^ Haller, Philipp (2012). Herci ve Scale. Artima. p. 169. ISBN 0981531652.
- ^ Raychaudhuri, Nilanjan (2013). Scala v akci. Manning Publications. p. 416. ISBN 1935182757.
- ^ Wampler, Dean (2011). Funkční programování pro vývojáře Java. O'Reilly Media. str.90. ISBN 1449311032.
- ^ Alexander, Alvin (2013). Scala kuchařka. O'Reilly Media. p. 722. ISBN 1449339611.
- ^ Subramaniam, Venkat (2011). Programování souběžnosti na JVM: Mastering Synchronization, STM a Actors. Pragmatická knihovna. str.280. ISBN 193435676X.
- ^ Bernhardt, Manuel (2016). Reaktivní webové aplikace: Kryty Play, Akka a Reaktivní streamy. Manning Publications. p. 328. ISBN 9781633430099.
- ^ Darrow, Barb. „Juniper Networks Sign on with Scala“. gigaom.com. Citováno 8. června 2013.
- ^ Ross, David. „Scaling the Klout API with Scala, Akka and Play“. Citováno 8. června 2013.
- ^ Haines, Stephen (8. května 2013). „Open source Java projects: Akka“. JavaWorld. Citováno 2020-07-15.
- ^ „Java Magazin 6.13“. jaxenter.de. Archivovány od originál dne 13. srpna 2013. Citováno 8. června 2013.