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

xtupzzrd  于 2022-11-06  发布在  其他
关注(0)|答案(2)|浏览(166)

我是一名Scala程序员,从开发人员的Angular 了解Akka。我没有研究过Akka库的代码。我读过Akka模型中的两种参与者a-基于线程和基于事件--但没有大规模运行过Akka。我没有为生产配置Akka的经验。而且我对Vert. x完全是新手。所以,从选择的Angular 来构建一个我想知道的React式应用堆栈-

  1. Akka和Vert.x的消息传递模型是否有很大的不同?如何不同?
  2. Akka的actors和Vert.x的verticles缓冲消息的数据结构是否有很大的不同?
bbmckpt7

bbmckpt71#

从表面上看,它们确实很相似,尽管我个人认为Vert.x的思想与某些MQ系统比与Akka更相似... Vert.x拓扑更扁平:一个垂直体与其他垂直体共享消息并接收响应...相反,Akka更像一棵树,在这里你有几个演员,但你可以使用其他演员来监督演员,...对于简单的项目来说,他们可能不是那么重要,但对于大项目来说,你可以欣赏一个更“层次化的系统”...
另一方面,Vert.x在非常流行的语言之间提供了更好的互操作性 *。对我来说,这是一个很大的问题,当您需要将参与者与MQ系统混合在一起并处理更复杂的问题时,Vert.x使其变得简单而优雅...所以,答案是,哪一个更好?...取决于您的系统是否将仅在Scala上构建,那么Akka可能是最好的方法......如果您需要与JavaScript、Ruby、Python、Java等进行通信......并且不需要复杂的层次结构,那么Vert.x是最好的选择......

  • (使用JSON,与相比,这可能是优点,也可能是缺点)

另外,你必须考虑到Vert.x是一个完整的解决方案,TCP,HTTP服务器,路由,甚至WebSocket!!!这是相当惊人的,因为他们提供了一个完整的堆栈和API是非常干净的。如果你选择Akka,你需要使用一个框架,如播放,Xitrum Ospray。个人而言,我不喜欢他们中的任何一个。
同时请记住Vert.x是一个不固执己见的平台,你可以使用Akka或Kafka,例如,它几乎没有任何开销。系统的每个部分在一个verticle内部是如何解耦的,这使得它非常简单。
Vert.x是一个大项目,具有惊人的视角,但真的很新,如果你现在需要一个解决方案,也许它不会是更好的选择,幸运的是,你可以学习两者,并在同一个项目中使用两者。

clj7thdc

clj7thdc2#

在做了一点谷歌搜索后,我发现Akka与Vert.x的详细比较还没有完成(至少我找不到)。
计算模型:

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

React流:

  • Vert.x具有内置的React流
  • 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的Actor可以部署在网络上的任何位置,支持集群、复制、负载平衡、监督等。

参考文献:

相关问题