akka http で 60 以上の API を使用して REST Web サービスを作成する場合。akka ストリームと akka アクターのどちらを使用するかを選択するにはどうすればよいですか? Jos は彼の投稿で、akka http で API を作成する 2 つの方法を示していますが、いつどちらを選択すべきかについては示していません。
2 に答える
これは難しい質問です。明らかに、両方のアプローチが機能します。したがって、ある程度は好み/慣れの問題です。したがって、以下のすべては私の個人的な意見です。
可能であれば、より高度な性質と型の安全性から akka-stream を使用することを好みます。しかし、これが実行可能なアプローチであるかどうかは、REST API のタスクに大きく依存します。
あかストリーム
REST API が外部データに基づいて質問に回答するサービス (通貨為替レート API など) である場合は、akka-stream を使用して実装することをお勧めします。
akka-stream が望ましい別の例は、REST API のタスクがクエリ パラメータを解析し、それらを DB クエリに変換し、クエリを実行し、要求されたコンテンツ タイプに従って結果を変換することであるある種のデータベース フロントエンドです。ユーザーによって。どちらの場合も、データ フローは akka-stream プリミティブに簡単にマップされます。
アクター
アクターの使用が望ましい例としては、API でクラスター上の多数の永続的なアクターのクエリと更新が許可されている場合があります。その場合、純粋なアクターベースのソリューションまたは混合ソリューション (akka-stream を使用してクエリ パラメーターの解析と結果の変換を行い、残りはアクターを使用して行う) のいずれかが望ましい場合があります。
アクターベースのソリューションが望ましい別の例は、長時間実行されるリクエスト (Websocket など) 用の REST API があり、REST API 自体の処理パイプラインをクラスターにデプロイする場合です。現在、akka-stream を使用してこのようなことを行うことはまったく不可能だと思います。
概要
要約すると、各 API のデータ フローを見て、それが akka-stream によって提供されるプリミティブにきれいにマッピングされているかどうかを確認します。その場合は、akka-stream を使用して実装してください。それ以外の場合は、アクターまたは混合ソリューションを使用して実装します。