2017-07-30 16 views
0

私はスプリングブート1.4.3プロジェクトを持っています。最近私は、サーバーからWebアプリケーションにログを送信し、ログをWebページに印刷する必要があるという要件を思いつきました。私はWebSocketsを認識していますが、より良いソリューションを探していました。私はReactive ProgrammingとgRPCを見つけました。スプリングブート2&スプリング5コンテナ混同

SpringはReactive ProgrammingをSpring version 5でサポートしていますが、gRPCとReactive Programmingの間ではかなり混乱しています。 gRPCは、Nettyの上に構築された双方向ストリーミングを特徴とし、サーバからリアクティブプログラミングのようなクライアントにデータをプッシュするのと同じ機能を提供します。だから私はどちらを使うべきです、あなたがこの混乱で私をクリアできるなら、それは本当に素晴らしいでしょう。

また、Spring Version 5をサポートするSpring Boot 2に移行すると、プロジェクトはNetty上で実行されます。私の混乱は、私はJettyサーバー上の通常のRESTエンドポイントやNettyサーバー上のReactive APIのような別のコンテナでアプリケーションを実行しなければならないのですか?またはSpringはNetty上の反応リクエストを処理して残りの一般的なREST私が知る限り、NettyはServlet Containerではないので、Jettyサーバー上のAPI。

+0

なぜ反応型プログラミングがこれを解決するのでしょうか?リアクティブプログラミングだけでは何も追加されません。また、Spring Boot 2もSpring 5も最終的なので、実際には使用したくないでしょう。ログのみを送信する場合は、アプリケーション全体を書き換えるのではなく、データベースにアクセスできる場所にログを保存します。 –

+0

@ M.Deinumログのデータはデータベースに保存されますが、フロントエンドはバックエンドに接続され、ログはデータベースから読み取られ、データのストリームとしてフロントエンドにプッシュされます。継続的に更新されるログデータも、同じアクティブな接続中に読み取られ、クライアントにプッシュされます。 – ghost

+0

まだ反応がありません。 Web SocketsのServer Sent Eventsのようにフロントエンドに転送するメカニズムが必要です。どちらも、反応的なプログラミングなしで完全にうまくいくことができます。 –

答えて

7

リアクティブプログラミングの重要な機能の1つは、背圧と非閉塞の方法で実装された背圧です。執筆時点では、gRPC doesn't support thisです。

さらに、クライアントとサーバー間の通信よりも、リアクティブプログラミングがあります。本当に反応的であるためには、端から端まで反応する必要があります。これには、データストアへのリアクティブなアクセスなどが含まれます。私が知る限り、これはgRPCが取り組んでいるものではありません。

従来のサーブレットベースのWebフレームワーク(Spring MVCなど)をWebFlux(SpringのリアクティブWebフレームワーク)を使用して混在させないでください。 100%の反応性のWebアプリケーションまたは100%のServletベースのWebアプリケーションを作成する必要があります。

関連する問題