/ / akka actor model vs użycie java w następującym scenariuszu - wydajność, scala, skalowalność, akka

akka actor model vs użycie java w następującym scenariuszu - performance, scala, scaleability, akka

Chcę poznać zastosowanie modelu aktora Akka.

Wiem, że w tym przypadku przydatna jest ogromna liczbaInstancje aktorów są tworzone i niszczone. na przykład serwer połączeń, gdzie każde połączenie przychodzące tworzy instancję aktora i komunikuje się z kilkoma innymi aktorami i ginie po zakończeniu połączenia.

Czy jest to również przydatne w następującym scenariuszu:

Serwer ma kilka elementów przetwarzania (10 ~ 50)wdrożone nad aktorami. Żywotność tych elementów przetwarzających jest nieskończona. niektóre z nich nie utrzymują stanu i kilka utrzymują stan. Elementy przetwarzania przetwarzają wiadomość i przekazują wiadomość innym podmiotom w ustalony sposób. System odbiera ogromną liczbę wiadomości z zewnątrz i przechodzi przez elementy przetwarzania i wychodzi z systemu.

Moje przeczucie jest takie, że nie możemy dostać żadnegoprzewaga dzięki użyciu modelu Akka Actor, a nawet wdrożenie tego serwera w Scali. Ponieważ przypadek użycia, dla którego została zaprojektowana Akka, nie ma tu zastosowania. Gdyby zwiększenie skali oznaczało, że elementy przetwarzania byłyby dynamicznie zwiększane, byłoby to odpowiednie.

Dla stałych topologii myślę, że jeśli ją wdrożęw Javie będzie bardziej korzystne pod względem wydajności. Funkcja „niezmienności” Scali prowadzi do większej liczby kopii, a tym samym zmniejsza wydajność. Więc wierzę, że lepiej trzymać się Javy.

Czy moje zrozumienie jest prawidłowe? Muszę wiedzieć, dlaczego powinienem opuścić Javę i użyć Scala / Akka do powyższego scenariusza aplikacji. a moim celem jest przetworzenie 1 miliona wiadomości na sekundę.

Odpowiedzi:

2 dla odpowiedzi № 1

Jeśli to pytanie jest nadal aktualne ...

  1. Scala vs. Java

    • Scala zapewnia wydajność programistom.
    • Niezmienność zmniejsza debugowanie do niemal zera.
    • GC doskonale radzi sobie z odpadami niezmiennymi.
  2. Akka Aktorzy a inne środki

    • Akka ma dyspozytora, który rozdziela wszystkie zadaniaw puli stałych wątków. Pozwala to na równomierne wykorzystanie dostępnych zasobów. Podejście to jest znacznie lepsze niż stałe wątki robocze - zasoby przetwarzania są dostarczane do zadań, a nie do węzłów DataFlow.
  3. Implementacja DataFlow

    • Tam jest SynapseGrid biblioteka zbudowana na bazie Akka Actors i umożliwiająca łatwą budowę systemów DataFlow dystrybuowanych na stałych nieśmiertelnych Aktorach. Może nawet narysować diagram DataFlow (w format .dot) całego systemu. (Biblioteka jest wygodniejsza w użyciu w Scali.)