Jakie są alternatywy językowe i produktowe dla Akka?

Teraz patrzę na Play Framework i bardzo mi się podoba. Jedną z części heavy reklamowanych wśród funkcji oferowanych w grze jest Akka.

Aby lepiej zrozumieć Akkę i jak jej właściwie używać, możesz mi powiedzieć, jakie są alternatywy w innych językach lub produktach?

Jak wypada RabbitMQ w porównaniu do niego? Czy jest wiele nakładania się? Czy używanie ich razem jest praktyczne? W jakich przypadkach?

Author: Jacek Laskowski, 2012-04-22

6 answers

Najlepszym miejscem na początek jest wielka oficjalna dokumentacja Akki . Myślę, że najbliższym produktem / frameworkiem do Akki jest język erlang . I guess (nie używałem frameworka Play) Akka służy tam do implementacji komety i innych asynchronicznych procesów.

Rabbitmq jest nieco podobny w ideach (Infrastruktura do wysyłania wiadomości), zauważ, że RabbitMQ jest nawet napisane w erlang, ale mają nieco inne zastosowania. Powiedziałbym, że podczas gdy RabbitMQ skupia się na przekazywaniu wiadomości, Akka jest bardziej o aktorach (odbiorcach i nadawcach wiadomości).

 13
Author: Tomasz Nurkiewicz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-22 14:22:51

Używam RabbitMQ + Spring AMQP + Guava 's EventBus do automatycznej rejestracji komunikatorów podobnych do aktorów za pomocą Guava' s EventBus do dopasowywania wzorców odebranych wiadomości.

Podobieństwo do Spring AMQP i Akka jest niesamowite. Spring AMQP ' s SimpleMessageListenerContainer + MessageListener jest w zasadzie odpowiednikiem aktora.

Jednak dla wszystkich intencji i celów RabbitMQ jest bardziej potężny niż Akka, ponieważ ma wiele klientów implementacje w różnych językach, zapewnia trwałość (trwałe kolejki), topologiczny routing i pluggable algorytmy QoS .

To powiedziane Akka jest o wiele wygodniejsze i teoretycznie Akka może zrobić wszystkie powyższe i niektórzy ludzie mają napisane rozszerzenia, ale większość po prostu używa Akki i wtedy Akka dostarcza wiadomości przez RabbitMQ. Również Wiosna AMQP SimpleMessageListener pojemnik jest trochę ciężki i jego niejasne, co by się stało, gdyby stworzyłeś ich kilka milionów.

Z perspektywy czasu rozważyłbym użycie Akki do RabbitMQ zamiast Spring AMQP dla przyszłych projektów.

 18
Author: Adam Gent,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-28 23:26:49

Najlepszą radą, jaką mogę zaoferować, ponieważ przeszedłem przez ten sam proces myślowy, gdy Play 2.0 dołączył do Typesafe i zaczął używać Akka bardziej, jest poszukiwanie "Model aktora".

Wikipedia to wielki zasób- http://en.wikipedia.org/wiki/Actor_model . posiada listę języków programowania, które mogą obsługiwać model aktora, a także listę frameworków (w tym Akka), które są oparte na modelu aktora.

Mówiąc prościej, Model aktora opiera się na koncepcji podmiotów w równoległym modelu obliczeniowym. Aktorzy nie muszą oznaczać przekazywania wiadomości, ale najczęstsze przypadki użycia będą miały aktorów przekazujących wiadomości (stąd pojawią się podobieństwa do rabbitMQ).

 8
Author: Codemwnci,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-22 15:58:41

Akka jest zestawem narzędzi i runtime do budowania współbieżnych & rozproszone systemy. Aby to osiągnąć, Akka używa modelu aktora. Jeśli szukasz alternatywy dla Akka, myślę, że nie możesz znaleźć kompletnego rozwiązania, takiego jak Akka, ponieważ Akka ma kilka funkcji, które umożliwiają tworzenie solidnych współbieżnych & rozproszony system:

  • Akka aktor
  • aktor Routing, nadzorowanie i monitorowanie
  • asynchroniczne i nieblokujące wiadomości
  • Klaster Akka (do zarządzania klastrem)
  • Akka persistence (do implementacji Event sourcingu, persistence actor i co najmniej raz Delivery messaging) [11]}Akka I / O (dla komunikacji TCP i UDP)
  • Akka HTTP (do komunikacji HTTP jako klient lub Serwer)
  • strumień Akka (do przetwarzania strumienia)
  • ...

Ale proponuję rzucić okiem na Erlang / OTP i Kwazar .

 1
Author: Saeed Zarinfam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-12 04:49:35

Http://scalecube.io jest mikroserwisem o niskim opóźnieniu lib . kompletne rozwiązanie, które umożliwia opracowanie solidnego systemu współbieżnego i rozproszonego.

Jak Akka: - opiera się na plotkach i protokole pływania. - jego wiadomość napędzana w oparciu o protobuf (full duplex). - to dla JVM. - niskie opóźnienie i około ~6 razy szybsze. - używa RxJava, który okazał się szybszy od strumieni akka.

W Przeciwieństwie Do Akki: - jest mniej opiniotwórczy - nie ramy. - nie wymuszanie wzorca aktora jako holistycznego wzór.

 1
Author: ronen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-11 21:12:53
 0
Author: paul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-12 06:59:26