18

実際に Finagle も Akka も使用したことはありませんが、それらについてはたくさん読んでいます。

Finagle は RPC システムであり、Akka は高度な並行アプリケーション用のツールキットです。なぜすべての人が、それらを一緒に使用できない 2 つの可能なソリューションとして比較するのでしょうか? 私が行ったすべての検索では、どちらか一方を使用することを提案していますが、それらを一緒に使用することを提案している人はいません。

たとえば、Finagle には、thrift とその IDL を介してエンドポイントを定義する非常に興味深い方法があります。この IDL を使用すると、カスタム エンドポイントを定義でき、scooge などのコード生成ツールを使用して、簡単にサービスを作成できます。また、このサービスに接続するためのクライアントが作成され、多くの一般的なクライアントの問題が自動的に解決されます (再接続、タイムアウト、再試行、負荷分散、接続プーリングなど)。

代わりに、Akka は多くの同時実行の問題を解決し、手作業で制御されたスレッド化の複雑さをまったく排除して、非常にうまくスケーリングします。

まとめとして、それらを一緒に使用してみませんか?:

  • Finagle + Thrift (IDL を使用): サービスの設計と開発、および展開 (スケールアウトの容易さを含む) を容易にします。
  • Akka: アクター システムを介してすべてのサーバー パワーを使用し、サーバー プロパティを変更すると (たとえば、EC2 にデプロイされ、ノードを m1.small から m1.large に変換した場合)、非常にうまくスケーリングします。

どう思いますか?

注: Futures と Promises のマッピングの問題、および FuturePools と ExecutionContexts の間の不一致が解決されたと仮定します。パターンは、Finagle を Future を使用する scala の方法に変換することです。

4

1 に答える 1