2017-10-11 1 views
0
この質問はおそらく同様に他のライブラリに適用される

を翻訳しますが、具体的な例として、カサンドラを使用すると、私は釈明質問を求めていることを確認しようとします私はCassandraの非同期メソッドを使用して、ListenableFutureインテグレーション、またはでラップすることができます。Cassandraの同期メソッドを使用し、その使用方法を中断メソッドおよび起動/ asyncでラップすることができます。Kotlinのコルーチンは:、Kotlinで</p> <p>:カサンドラ同期の使用をラップ対非同期の使用

ライブラリの既存の非同期メソッドを使用することが、デッドロックを回避しやすくなり、高速になると推測していますが、私はコルーチンに戸惑っています。

これはコルーチンの経験が豊富な人にとっては明らかな答えですか、それとも「それは依存する」特定の分野ですか?

答えて

2

それはあなたが使用しているライブラリの内部詳細にし、あなたのパフォーマンス/スケーラビリティの目標に依存します:あなたのライブラリがある場合は

  • 内部で非同期常にそのネイティブ経由して、それを使用することをお勧めだろう非同期API免責事項:Cassandraが内部的にどのように構成されているか(同期または非同期)はわかりません。
  • あなたのライブラリーは、内部同期/ブロックしている(とほとんどのレガシーライブラリがある)場合、それは異なります。
    • アプリケーションがIO-バインドされている場合(/はに/ ネットワーク/ディスクからのバイトの多くを読み書きします)、スループットを最適化している場合(大きなバッチロードで処理するバイト数が最大で )、 親のルールとして、同期/ブロッキングAPIを使用する方がよいでしょう。
    • アプリケーションがメモリにバインドされていて、それを の同時接続/要求に拡張したい場合は、経験則として、非同期APIを使用するほうがよいでしょう( )。
関連する問題