web-dev-qa-db-fra.com

Différence dans le modèle de transmission de messages d'Akka et Vert.x

Suis un Scala programmeur et comprends Akka du point de vue du développeur. Je n'ai pas examiné le code de la bibliothèque Akka. J'ai lu sur les deux types d'acteurs dans le modèle Akka - basé sur les threads et événementiel -based - mais n'ayant pas exécuté Akka à grande échelle, je n'ai aucune expérience de la configuration d'Akka pour la production. Et je suis complètement nouveau sur Vert.x. Donc, du point de vue des choix pour construire une pile d'applications réactives, je veux savoir -

  1. Le modèle de transmission de messages d'Akka et de Vert.x est-il très différent? Comment?
  2. Les structures de données derrière les acteurs d'Akka et les verticules de Vert.x pour tamponner les messages sont-elles très différentes?
44
Bharadwaj

Dans une vue superficielle, ils sont vraiment similaires, bien que je considère personnellement des idées vert.x plus similaires à certains systèmes MQ qu'à akka ... la topologie vert.x est plus plate: un verticle partage un message avec un autre verticle et reçoit un réponse ... au lieu de cela, akka ressemble plus à un arbre, où vous avez plusieurs acteurs, mais vous pouvez superviser des acteurs en utilisant un autre acteur, .. pour les projets simples, ils ne sont peut-être pas si gros, mais pour les grands projets, vous pourriez apprécier un plus "système hiérarchique" ...

vert.x, d'autre part, offre une meilleure interopérabilité entre des langages très populaires *. Pour moi, c'est un gros point, où vous auriez besoin de mélanger des acteurs avec un système MQ et de gérer plus de complexité, vert.x le rend simple et élégant .. donc la réponse, qui est mieux? ... dépend, si votre le système sera construit uniquement sur scala, alors akka pourrait être le meilleur moyen ... si vous avez besoin d'une communication avec javascript, Ruby, python, Java, etc ... et n'avez pas besoin d'une hiérarchie complexe, alors vert.x est le marche à suivre..

* (en utilisant json, ce qui pourrait être un avantage ou un inconvénient par rapport à)

vous devez également considérer que vert.x est une solution complète, tcp, serveur http, routage, même websocket !!! C'est assez étonnant car ils offrent une pile complète et l'api est très propre ... si vous choisissez akka, vous auriez besoin d'utiliser un cadre comme play, xitrum o spray..personnellement, je n'aime aucun d'entre eux.

Rappelez-vous également que vertx est une plate-forme sans opinion, vous pouvez utiliser akka ou kafka avec lui, par exemple, sans presque aucun frais généraux. La façon dont chaque partie du système est découplée à l'intérieur d'un verticle fait c'est si simple ...

Vert.x est un grand projet avec une perspective incroyable mais vraiment nouveau, si vous avez besoin d'une solution maintenant, ce ne serait peut-être pas la meilleure option, heureusement, vous pouvez apprendre les deux et les utiliser dans le même projet ...

56
clagccs

Après avoir fait un peu de recherche sur Google, je me suis dit que la comparaison détaillée d'Akka contre Vert.x n'a pas encore été effectuée (au moins, je ne le trouve pas).

Modèle de calcul:

  • Vert.x est basé sur le modèle Event Driven.
  • Akka est basé sur le modèle d'acteur de la concurrence,

Flux réactifs:

  • Vert.x intègre des flux réactifs
  • Akka prend en charge les flux réactifs via Akka Streaming. Akka a des opérateurs de flux (via Scala DSL) qui sont très concis et propres.

Prise en charge HTTP

  • Vert.x a un support intégré de création de services réseau (HTTP, TCP etc)
  • Akka a Akka HTTP pour ça

Support Scala

  • Vert.x est écrit en Java
  • Akka est écrit en Scala et son plaisir de travailler sur

Services à distance

  • Vert.x prend en charge les services, nous devons donc créer explicitement des services
  • Akka dispose d'acteurs qui peuvent être déployés n'importe où sur le réseau, avec prise en charge du clustering, de la réplication, de l'équilibrage de charge, de la supervision, etc.

Les références:

37
tuxdna