【问题标题】:Finagle and Akka, why not use them together?Finagle 和 Akka,为什么不一起使用呢?
【发布时间】:2013-12-17 02:39:48
【问题描述】:

我没有在实践中使用过 Finagle 或 Akka,但我已经阅读了很多关于它们的内容。

Finagle 是一个 RPC 系统,而 Akka 是一个用于高并发应用程序的工具包,为什么所有人都将它们作为两种可能的解决方案进行比较,不能一起使用?我所做的所有搜索都建议使用其中一种,没有人建议将它们一起使用。

例如,Finagle 有一种非常有趣的方式来通过 thrift 及其 IDL 定义端点。使用这个 IDL,我们可以定义一个自定义端点,并通过 scooge 或任何代码生成工具,可以毫不费力地获得服务。此外,还创建了一个连接到此服务的客户端,自动解决了许多常见的客户端问题(重新连接、超时、重试、负载平衡、连接池......)。

相反,Akka 解决了很多并发问题,并且它的扩展性非常好,没有手动控制线程的所有复杂性。

总结一下,为什么不一起使用呢?:

  • Finagle + Thrift(及其 IDL):它有助于服务设计和开发以及部署(包括易于横向扩展)。
  • Akka:它通过其 Actor 系统使用所有服务器功能,并且如果我更改服务器属性(例如,如果它部署在 EC2 上并且我将我的节点从 m1.small 转换为 m1.large),它的扩展性非常好。李>

你怎么看?

注意:假设映射 Futures 和 Promises 的问题已经解决,以及 FuturePools 和 ExecutionContexts 之间的不匹配。该模式是将 Finagle 转换为使用 Futures 的 scala 方式。

【问题讨论】:

  • 我认为在这里提出这样的问题更好:groups.google.com/forum/?hl=en#!forum/finaglers
  • 戈尔卡,感谢您提出这个问题。我对 Akka 和 Finagle 也有类似的想法。我没有使用 Akka,但我使用 Finagle 来构建我的服务。我在想 Akka(或 Spring 团队发布的 Reactor)可以用来处理 Service 中的并发。很高兴知道有志同道合的人。

标签: scala akka finagle twitter-finagle


【解决方案1】:

你说得对,服务发现和服务实现是正交的问题,我可以按照你关于使用 Finagle 处理前者和 Akka 处理后者的论点。原则上,您可以将两者一起使用,而无需寻求期货的大统一,因为您只需将服务的回复在消息中发送回请求的 Actor,即您需要添加自己的小“pipeTo”模式Twitter 期货的顶部。

【讨论】:

    猜你喜欢
    • 2018-10-14
    • 2018-11-12
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    相关资源
    最近更新 更多