2013-08-26 14 views
9

Mam system oparty na aktorach, który wykonuje okresowe, intensywne procesory danych i obsługuje RESTful punkty końcowe. Używam aktorów Akka do sygnalizowania/kontrolowania różnych etapów procesu spożywania i Sprayu (który oczywiście jest zbudowany na Akka), aby służyć moim restfulm punktom końcowym.Priorytety aktora Akka

Mój problem polega na tym, że gdy proces się rozpocznie, zużywa on większość procesora, zagnieżdżając punkty RESTful aż do jego zakończenia.

Jaki jest najlepszy sposób na obniżenie priorytetu spożywania? W tej chwili moduł ingest i Spray mają ten sam ActorSystem, ale można je oddzielić, jeśli pomoże to rozwiązanie.

Odpowiedz

8

Wygląda na to, że różne podmioty w twoim systemie muszą mieszkać w różnych dyspozytorach. Utwórz nowego dyspozytora dla aktorów intensywnie obciążających procesor i pozostaw aktorów usług sieciowych w domyślnym module rozsyłającym (lub przenieś je do innego kontrolera, jeśli uznasz to za stosowne).

Być może zechcesz poprawić nowo utworzonego dyspozytora - na przykład, jeśli mówisz, że twoi intestujący aktorzy wykonują intensywne obliczeniowo zadania, powinieneś zmniejszyć stopień równoległości dyspozytora do czegoś bliższego 1.0

Rozdzielenie systemu aktorów na różnych dyspozytorów zapobiega problemom podobnym do tego, który masz - jeśli niektóre aktorzy zaczynają niszczyć podstawowe wątki, które kończą, nasycając dyspozytora, który je uruchamia. Dzięki uczestnikom sieci w innym systemie rozsyłającym ograniczasz wpływ aktorów intensywnie obciążających procesor na resztę systemu. Jest to trochę podobne do koncepcji "bulkheading".

Oto kilka informacji na temat dyspozytorów Akka: http://doc.akka.io/docs/akka/2.2.0/scala/dispatchers.html

Aby skonfigurować nowego dyspozytora to też warto przyjrzeć sekcji konfiguracji dokumentacji: http://doc.akka.io/docs/akka/2.2.0/general/configuration.html

2

Są to priorytetowe skrzynek pocztowych, które mogą być zbudowany w celu zdefiniowania, które wiadomości są obsługiwane, w którym priorytecie. Możesz również ukrywać/usuwać wiadomości, które działają dobrze z funkcją "gorącej kartki", jeśli chcesz ukryć wiadomości i poradzić sobie z nimi po napotkaniu określonego stanu. Informacje o magazynie znajdują się tutaj: http://doc.akka.io/docs/akka/snapshot/scala/actors.html

Powiązane problemy