Object Capabilities and Uniqueness for Isolating Actors in Akka
Autor: | Sommar, Fredrik |
---|---|
Jazyk: | angličtina |
Rok vydání: | 2018 |
Předmět: | |
Druh dokumentu: | Text |
Popis: | Large-scale concurrent systems need to ensure that the number of bugs is as low as possible, especially since the symptoms may appear far from the cause. Data races, for instance, is caused by the lack of isolation between systems. Akka is the de facto actor library, which is a common way to write large-scale concurrent systems, and is written for the statically typed language Scala. LaCasa is a compiler plugin for Scala that introduces object capabilities and uniqueness to Scala’s type system, providing isolation and thus preventing data races. This thesis investigates compile-time isolation for actors by designing and implementing an adapter for LaCasa in Akka. The adapter was developed as a set of alternative versions of Akka interfaces created in a similar package hierarchy, each wrapping their Akka equivalent. That way, the concepts from Akka carry over, while a new, safer, API is exposed. Users can either ensure all their messages are Safe, which is a marker that signifies deeply immutable classes, since deeply immutable objects have isolation properties by default, or resort to using boxes – LaCasa’s core concept, providing object capabilities and uniqueness to isolate references. The adapter supports receiving both Safe messages and boxes from the same actor, where Safe messages are treated similarly to how regular Akka handles messages. To evaluate the adapter, a selection of programs was picked from the Savina actor benchmark suite, capturing different kinds of actor applications. The results show that it is feasible to use the adapter for existing applications – when all messages are Safe, which was true for 6 out of 7 applications. It exceeds expectations set in the hypothesis; requiring on average 10% of code to be modified for Safe messages, and with an insignificant change in total lines of code. Furthermore, the performance impact was also shown to be insignificant with the introduction of LaCasa. During the migration, several patterns were observed and documented in Chapter 6. Future work should be put into supporting more Akka patterns, automate the marking of Safe types and increase the conveniencewhen using boxes. Storskaliga parallella system måste se till att antalet buggar minimeras, speciellt eftersom symptom kan dyka upp långt ifrån orsakerna. I system som saknar isolering kan det lätt hända att processer tävlar om samma resurs. Akka är programmeringsvärldens de facto aktörsystem (ett vanligt sätt att skriva parallella program på) och är skrivet för det statiskt typade språket Scala. LaCasa är en insticksmodul för Scalas kompilator som introducerar objektförmågor och unikhet, och kan genom det bistå med isolering av objekt, och på så sätt förhindra det ovannämnda resurstävlandet redan innan ett program kör. Det här examensarbetet undersöker isolering för aktörer under kompilering genom att utforma och implementera en adapter för LaCasa i Akka. Adaptern utvecklades som en uppsättning alternativa versioner av Akkas gränssnitt, där varje version sparar en dold instans av Akkas motsvarighet till gränssnittet. Gränssnitten är skapade i en liknande pakethierarki, och på så sätt överförs koncepten från Akka, medan ett nytt, säkrare programmeringsgränssnitt exponeras. Användaren kan antingen försäkra sig om att alla dess meddelanden är Safe (klasser med oföränderliga data), eller utnyttja lådor – LaCasas kärnkoncept som tillhandahåller objektförmågor och unikhet. Objekt med oföränderlig data har inbyggda isoleringsegenskaper, medan lådor bistår med ett mer strikt system för isolering. I en aktör går det att ta emot både Safe meddelanden och lådor. Meddelanden som är Safe behandlas på samma sätt som ordinarie Akka hanterar meddelanden. För att utvärdera adaptern valdes ett urval av program från Savina jämförelseindex, som inkluderar olika varianter av aktörprogram. Resultaten visar att svaret på problemformuleringen är ja: det är möjligt att använda adaptern för befintliga applikationer – när alla meddelanden är Safe, vilket är fallet för sex av sju program. Det överträffade förväntningarna i hypotesen; i genomsnitt krävs det att 10% av koden ändras i de fall alla meddelanden är Safe, samt en obetydlig förändring av antalet rader kod. Utöver det visades även att prestandan förändrades obetydligt med introduktionen av LaCasa. Under migreringen observerades flera programmeringsmönster, som dokumenterats i kapitel 6. Framtida arbete bör fokusera på att stödja fler av Akkas programmeringsmönster, automatiskt markera meddelanden som är e, samt att öka användarvänligheten när det kommer tillanvändning av lådor när meddelanden inte är Safe. |
Databáze: | Networked Digital Library of Theses & Dissertations |
Externí odkaz: |