/ / Korzystanie z aktorów Akka / Remoting do dystrybucji algorytmów graficznych w klastrze - scala, graph, Distributed, actor, akka

Korzystanie z Akka Actors / Remoting w celu dystrybucji algorytmów graficznych w klastrze - scala, wykres, rozpowszechniany, aktor, akka

Obecnie pracuję nad dystrybucją mojego kodu Scala na wielu komputerach dla dużego wykresu („część 1” pytania) i obecnie pracuję nad strukturą Akka w nadziei, że wykorzystam Aktorów i Remoting.

Przeczytałem dokument tutaj i wygląda na to, że sposób, w jaki wykonano ten przykład, można rozszerzyć, aby robił to, co chcę, ale mam kilka obaw dotyczących tej metody ...

1) Jak decydujemy, ile wystąpień aktorów powinniśmy utworzyć? Czy musimy zrobić próbę / błąd, aby zobaczyć, który jest najlepszy, czy jest jakiś bardziej intuicyjny sposób?

2) Zastanawiam się nad tym, aby wykonać swoje zadanie podobniejak powstał przykład - z Mistrzem, który spawnuje kilku Robotników i komunikuje się za pomocą klas przypadków jako wiadomości. Chcę znaleźć metrykę między parami wierzchołków (chodzenie losowe) dla wszystkich par. Mam klasę grafów, która implementuje metodę obliczania metryki dla dwóch wierzchołków.

Dam każdemu Pracownikowi dwa wierzchołki „u” i „v” do obliczenia metryki i każę pracownikom zwrócić wartość.

Kiedy Mistrz wysyła wiadomości do Robotników doobliczyć metrykę, pracownik potrzebuje struktury wykresu - czy po prostu to robię, dołączając do wiadomości strukturę wykresu (tj. listę sąsiadów, którą jest HashMap)? Czy spowoduje to narzut związany z kopiowaniem struktury wykresu za każdym razem, czy też wszyscy pracownicy po prostu udostępnią ten wykres, czy może jest lepszy sposób na to?

3) Czy algorytm obliczania metrykimiędzy parami wierzchołków należy ponownie zaimplementować rozszerzoną klasę Actor, czy też istnieje sposób dla poszczególnych aktorów, aby uzyskać dostęp do tej samej struktury grafów w celu wywołania metody (wydaje mi się, że jest to podobne do powyższego pytania dotyczącego przejścia całej struktury grafu jako część wiadomości)?

Dzięki! Pozdrowienia, -struktura

Odpowiedzi:

3 dla odpowiedzi № 1

1) Jak decydujemy, ile wystąpień aktorów powinniśmy stworzyć?

Chociaż aktorzy wyodrębniają podstawowe wątkizarządzanie, tworzenie mniejszej liczby aktorów niż dostępnych rdzeni procesora marnuje moc obliczeniową. Jeśli masz 10 serwerów, po 8 rdzeni każdy, utwórz co najmniej 80 aktorów, po 8 na maszynę.

Jeśli algorytm intensywnie korzysta z procesora, tworzenie większej liczby nie zapewni wzrostu wydajności - dodatkowi pracownicy będą po prostu czekać na dostępny rdzeń.

[...] Pracownik potrzebuje struktury wykresu - czy mam to zrobić po prostu przez włączenie struktury wykresu (tj. Listy sąsiedztwa, która jest HashMap) do wiadomości? […]

Nie ma kosztów ogólnych, jeśli wszyscy twoi aktorzy mieszkająta sama JVM - po prostu przekazujesz w wiadomości odwołanie do struktury grafu. Jednak w środowisku rozproszonym spowoduje to serializację wykresu i przesłanie go przewodem - prawdopodobnie dużo danych.

Rozważ udostępnienie tej struktury danych wszystkim aktorom.

Nie rozumiem pytania 3.