【发布时间】: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