Czytałem interesting blog post o erlangu i modelu aktora. Słyszałem też, że Scala wspiera model aktorski. Z tego, co zgromadziłem do tej pory, model aktora przerywa przetwarzanie na komponenty, które komunikują się ze sobą przekazując wiadomości. Zazwyczaj procesy te są niezmienne.to model aktora ograniczony do określonych języków?
Czy są to cechy specyficzne dla danego języka na poziomie architektury? dokładniej, czy nie możesz po prostu zaimplementować tego samego modelu aktora w niemal dowolnym języku i po prostu użyć jakiejś formy kolejki komunikatów, aby przekazywać wiadomości między procesami roboczymi? (na przykład użyj czegoś podobnego do celery). A może języki takie jak erlang i scala po prostu robią to w sposób przejrzysty i much faster?
Dzięki @dsmith. To interesujące. Więc jeśli to rozumiem, wspólny zmienny stan jest głównym źródłem problemów.O ile widzę, każda architektura oparta na kolejce komunikatów, która przekazuje serializowane zadania/dane do procesów roboczych, powinna być w zasadzie odporna na to. Czy zatem jest to zgodne z modelem aktora? Można zatem założyć, że np. seler już wdraża model aktorski? – gingerlime
Kluczem jest izolacja zmiennego stanu. Erlang izoluje zmienny stan w procesach lekkich. Stan węzłów byłby izolowany w procesach systemu operacyjnego z pojedynczym wątkiem wykonania. I tak, rozwiązania komunikacyjne, takie jak selekcja/rabbitmq, miałyby te same cechy. – dsmith
Jeszcze raz dziękuję. Przyjąłem twoją odpowiedź (wraz z dodatkowymi informacjami dostarczonymi przez @talg, co naprawdę mnie dopełniło). Mam teraz o wiele lepszy obraz o erlangu, a jednak warto wiedzieć, że model aktora może być nadal zaimplementowany (choć w nieco ograniczonej formie) z czymś takim jak python/selera/rabbitmq itp. – gingerlime