2017-08-22 12 views
1

私はプロジェクト原子炉、モノズ、フラックスのことについてたくさん研究していますが、私はこのテーマについて少し混乱しています。プロジェクトの原子炉の動作原理

ここでは、私が理解していることについていくつか前提を述べたいと思いますが、私は正しい道にいるかどうかを教えてください。

Reactiveのコンセプトに興味があった理由は、Jetty Serverで「Continuations」と呼ばれるコンセプトと似ていると思ったのですが、Jetty Serverがリクエストを受け取ったときに、サーバースレッドスレッドが待機中のブロッキング状態になると、継続は待機状態を引き継ぎ、ブロッキングや何もしない代わりに実際の作業を行うためにスレッドを解放します。フィッティング時にこのスレッドに結果を渡します。

Project Reactorの場合、Mono \ Fluxとスロットルの公開/購読については同じ原則ですが、ここでは同じ継続概念を明確に見ることはできません。

第2に、Jetty Continuationは機能を提供するためにNative IOが必要でしたが、Project ReactorはWebプロジェクトではないため、このような動作をどのように実現していますか?

概念を完全に間違って理解していますか?

回答のためのThx。

答えて

1

reactor-coreは、単一のJVM内で非同期処理とオーケストレーションを処理しています。

複数のイベントシーケンスを1つのスレッドで処理できるように非ブロックパターンを適用しますが、非同期処理パイプライン(非同期シーケンス)を構築するための多数のプリミティブ(演算子)も用意されています。これらの演算子の中には、実行がどこで行われるかを制御できるものがあります。

リアクタでは、与えられたシーケンスのオペレータは、そのスレッドが別の独立したシーケンスに関与する可能性があるため、実行するスレッドを決してブロックしません。したがって、ユーザコードを実行する演算子が、そのユーザコードがブロックされない(または、それが関連するシーケンスより多くブロックする可能性がある)ことが重要です。

さらに、reactor-nettyと呼ばれるネットワークIO指向のプロジェクトがあります。その名前が示すように、それは有名なノンブロッキングネットワークIOライブラリNettyの上に反応的なAPIをもたらしますが、これはもう一つのアプローチが(私が理解しているところから)Jetty継続と比較して近づいていますが、最終目標は同じですリクエストごとに1スレッドを実行し、IOが終了するのを待っているスレッドは避けてください)。

教材用にreference documentationlearn pageをご覧ください。

+0

私はドキュメントを読んで、それを理解しようとしますが、被写体はちょっとわかりにくいです。 – posthumecaver

+0

私はパラダイムを明確にすることができる主題について話しましたが、それは上にリンクしたサイトの学習セクションにあります。あなたはそれを見てみましたか? –

+0

私はそれらを理解しようとするのを読んで、被験者は少し把握しにくいです。私は考慮する1つの特別なシナリオを持っていますが、私はそれが意味をなさないと判断することはできません。私は、別の第2のサービスS2を呼び出す古典的なSpring RESTサービス、サービスS1を持っていると言います.S2での処理はしばらく時間がかかり、S1がブロックされます。私はSpring Webflux(反応原理を使用して)をプロキシサービスS3を構築するために使用する予定です.S3はS2を呼び出すだけですが、S3 WebfluxのスレッドはS1からの他の呼び出しを自由に処理できます。これは正しい仮定ですか? – posthumecaver

関連する問題