Akka和Vert.x的消息传递模型的差异

Bha*_*waj 47 scala akka vert.x

我是Scala程序员,从开发人员的角度理解Akka.我没有查看过Akka库的代码.已经阅读了Akka模型中的两种类型的演员 - 基于线程和基于事件 - 但没有大规模运行Akka我没有配置Akka用于生产的经验.我是Vert.x的新手.所以,从选择的角度来构建一个我想知道的反应式应用程序堆栈 -

  1. Akka和Vert.x的消息传递模型是否有很大不同?怎么样?
  2. Akka的演员和Vert.x的Verticle背后的数据结构是否缓冲消息非常不同?

cla*_*ccs 57

在肤浅的视图中,它们非常相似,尽管我个人认为更多类似的vert.x想法到某个MQ系统而不是akka ... vert.x拓扑更平坦:Verticle与其他Verticle共享一条消息并接收一个响应......相反,akka更像是一棵树,你有几个演员,但是你可以用其他演员来监督演员......对于简单的项目,也许它们不是那么大,但对于大项目,你可以欣赏一个更多"等级制"......

另一方面,vert.x在非常流行的语言之间提供了更好的互操作性*.对于我来说,这是一个重点,你需要将演员与MQ系统混合并处理更多的复杂性,vert.x使它变得简单而优雅.所以答案,哪个更好?...依赖,如果你的系统将只在scala上构建,然后akka可能是最好的方式...如果你需要与javascript,ruby,python,java等进行通信......并且不需要复杂的层次结构,那么vert.x就是要走的路..

*(使用json,相比之下可能是优势或劣势)

你还必须考虑vert.x是一个完整的解决方案,tcp,http服务器,路由,甚至websocket !!! 这是非常了不起的,因为它们提供了完整的堆栈,api非常干净......如果你选择akka,你需要使用像play,xitrum o spray这样的框架.我不喜欢它们中的任何一个.

还要记住,vertx是一个不固定的平台,你可以使用akka或kafka,例如,几乎没有任何开销.系统的每个部分如何在一个垂直内部解耦的方式使它变得如此简单......

Vert.x是一个具有惊人观点的大项目,但是真的很新,如果你现在需要一个解决方案可能它不是更好的选择,幸运的是你可以学习这两个并在同一个项目中使用它们...

  • 到目前为止,Akka支持HTTP集成。因此,Akka和Vert.x的差异得以最小化。 (2认同)
  • 这个答案应该更新!因为akka确实支持你提到的关于vertx的一切 (2认同)

tux*_*dna 38

在做了一些谷歌搜索后,我发现在Akka与Vert.x的详细比较还没有完成(至少我找不到它).

计算模型:

  • Vert.x基于事件驱动模型.
  • Akka基于并发的Actor模型,

反应流:

  • Vert.x内置了Reactive Streams
  • Akka通过Akka Streaming支持Reactive Streams.Akka拥有简洁干净的流媒体运营商(通过Scala DSL).

HTTP支持

  • Vert.x内置支持创建网络服务(HTTP,TCP等)
  • Akka为此提供了Akka HTTP

Scala支持

  • Vert.x是用Java编写的
  • Akka是用Scala编写的,它的工作很有趣

远程服务

  • Vert.x支持服务,因此我们需要显式创建服务
  • Akka的Actors可以部署在网络的任何地方,支持集群,复制,负载平衡,监督等.

参考文献:

  • 您编写“ * Vert.x是用Java *编写的”。是的,`vertx-core`是,但是vert.x工具包是写成多语言的,您可以使用任何基于JVM的语言进行开发,包括Scala:[vertx-lang-scala](https://github.com/vert -x3 / vertx-lang-scala) (2认同)