リアクティブプログラミングとは何ですか?

序文

現在、リアクティブプログラミングはまだ混乱の時代にあり、各ファミリには独自の定義と実装があります。レスポンシブ宣言は、レスポンシブが満たすべき特性を定義します。Spring5には独自のリアクティブソリューションテクノロジースタックがあり、rxJavaに属する有名なreactiveXも独自の理解があります。応答性はイベントベースであると言う人もいれば、データフローベースであると言う人もいます。リアクティブプログラミングは、実際には同時プログラミングを容易にする単なるapiライブラリであると言う人もいれば、リアクティブプログラミングはプログラミングのアイデアでありプログラミングパラダイムであると言う人もいます。Ma Ying-jeouが言ったように、テクノロジー界は曖昧です一种技术,各自表述リアクティブプログラミングは曖昧で、やや中空で、やや誇張されているため、通常の学習者が始めるのは必然的に難しく、頭痛の種です。

以下は、主にリアクティブマニフェストとreactiveXに基づいて、リアクティブプログラミングを説明しています。異議がある場合は、コメント領域で気軽に話し合い、アドバイスしてください。

リアクティブプログラミングとは何ですか?

これは、非同期データフロープログラミングを使用したリアクティブプログラミングのアイデアです。ここから

Reactive Programmingこれはオブザーバーモデルに基づいています。これは全員のコンセンサスです。非同期シナリオの処理を容易にする非ブロッキングおよび非同期機能を提供し、それによって制限を回避回调地狱および突破しFutureます。組み合わせるのは困難です。(私はこの利点に同意しません。java8のcompleteFutureは十分に改善されています)。

reactXでは、APIライブラリがいくつかの言語用に提供されており、オブザーバーモードを拡張し、数据OR事件ベースのドライバーをサポートします声明式オブザーバーシーケンス組み合わせることができます。抽象同期プログラミングと非同期プログラミングを統合します。

コード内の非同期プログラミングと同期プログラミングの実施形態は、次の表に反映されている。従来のプルタイプとは異なり、レスポンシブプログラミングは通常プッシュタイプのデータ送信を使用し、プロデューサーが消費速度を制御しますが、消費者の消費速度が不十分な場合、プロデューサーに生産速度(backPressure)、backPressureを下げるように促すこともできます。以下に説明します。

函数式的思想リアクティブプログラミングには通常が付属していますが、これは肥大化したオブジェクト指向の構文を単純化するために使用されます。リアクティブプログラミングのコアはリアクティブにあります。リアクティブには、ファンクショナルリアクティブプログラミングではなく、ファンクショナルの機能の一部しかありません。これはまったく異なるものです。 。

応答宣言

レスポンシブシステムにはどのような特性が必要ですか

システムに即時応答性(応答性)、回復力(回復力)、弾力性(弾性)、およびメッセージ駆動型(メッセージ駆動型)がある場合。このようなシステムをリアクティブシステム(リアクティブシステム)と呼びます。

img

図に示すように、リアクティブプログラミングの価値は1にあります。書き込みと保守が簡単です(特に非同期プログラミング)。2。タイムリーな応答。

何が及时响应問題なのか、電源障害、ネットワークジッタ、またはコードバグに関係なく、時間内に対応し、十分な使いやすさを提供できます。

レスポンシブ宣言では、例外はエラーの処理を簡素化するためメッセージと見なされ、エラーは単純にさまざまな例外と見なすことができます。

弾力性とは何ですか?弾力性?

弾力性とは、さまざまな負荷の下でシステムのスループットと応答性に違いがないことを意味します。応答性により、スケーリングアルゴリズムを通じて、システムがリソースの競合ポイントや中心的なボトルネックから解放されます。

復元力とは、システムに障害が発生した場合(停電、ハードウェア障害、リソースの枯渇など)、レプリケーション、封じ込め、分離、および委任によって、システムがすぐに応答できるようにすることを意味します。

メッセージ主導またはイベント主導?

メッセージはデータであり、イベントはシグナルです。メッセージに含まれる情報はより豊富です。

メッセージ駆動型システムの場合、メッセージが届かないと、受信者は非同期でブロックを解除し、スレッドが到着するのを待ちます(スリープ)。

イベント駆動型システムの場合、コールバックメソッドがよく使用されます。

消息驱动イベント駆動型システムは復元力を実現するのが難しいため、レスポンシブマニフェストでデザインを使用することをお勧めします

イベント駆動型システムの場合、処理プロセスの準備が整い、リスナーが結果に応答して結果を変換するように設定されている場合、これらのリスナーは通常、成功または失敗直接処理し、実行結果を元のクライアントに報告します。 。

(これらのリスナー)は、通常の機能を復元するためにコンポーネントの障害に応答します(障害が発生したコンポーネントを参照)。一方、処理する必要があるのは、短期間のクライアント要求にバンドルされていないが影響を与えるものです。コンポーネント全体のヘルスステータスが失敗します。

リアクティブプログラミング関連のディスカッション

オブザーバーモードを使用する理由

回调地狱解放された開発者からのこのモードReactiveXはストリームを使用订阅者して、非同期操作と同期操作を統合し、さまざまな操作を組み合わせてコードの読みやすさを向上させます。

コールバック地獄とは何ですか?実際、コールバック関数を組み合わせる必要がある場合、コードの複雑さが大幅に増加し、コードの読みやすさが大幅に低下することがよくあります。

ReactiveXのオブザーバーモードは非常に柔軟性があり、プッシュだけでなくプルもサポートします。

背圧(backPressure)とは

実際、背圧は十分に変換されていないため、背圧を呼び出す方が適切です。Zhihuにはバックプレッシャの説明があります。とても良いと思います。バックプレッシャは実際には単なる現象ですが、レスポンシブプログラミングではbackPressure、消費が生産に追いつかず、生産者の速度が低下する場合の問題を解決するための処理戦略です。プッシュボタンをクリックするか、直接ドロップしてください...

上流の生産者から下流の消費者へのデータストリーム送信の過程で、上流の生産速度が下流の消費速度よりも速く、下流のバッファがオーバーフローする原因となります。この現象はバックプレッシャと呼ばれます。

個人的な考え

学生の頃、リアクティブプログラミングやウェブフラックスの話をよく耳にしましたが、当時はいろいろな新技術に戸惑い、関連する紹介文をランダムに読んだり、いろいろなリアクティブプログラミングを聞いたりしていました。ブログの投稿はとても良くて進んでいて、その時に学ばなければならないと感じました。

仕事をしてみると、実際の制作にはそれほど高度なものは必要ないことがわかりました。ほとんどの場合、オンラインシステムの安定性が最も重要です。Java 8は今でも中国で人気があり、多くの人がJava 8の特徴を理解していませんが、それでも彼らは自分たちの仕事を支えています。

開発者にとって、インターネット上のあらゆる種類の「テクニカルマーケティング」に騙されないでください。新しいテクノロジーを学ぶ前に、本当に学びたいかどうかを考えてください。どのコード、どのテクノロジー、どのフレームワークがインターネット上の移民労働者の手に渡る単なるハンマーであり、ハンマーが新しくて派手であるほど良いというわけではなく、実際の作業内容を解決することができます。

さまざまな新しいテクノロジーやフレームワークを学ぶよりも、映画を見たり、家族と買い物に行ったりする方がよい場合があります。私たちはインターネットのねじではありません。私たちは人間です。それは資本主義の時代と一致しています。ほとんどの人は疎外されています。 「道具の人」ですが、私たち全員に自分の人生、家族や友人がいて、みんなが違っていて、私たち全員に自分の人生があります。

全体として、市場にはさまざまな種類のリアクティブプログラミングがあり、さまざまな定義と不十分なメリットの証明があります。市場に突入しないでください。

関連資料

  1. http://reactivex.io/intro.html
  2. GitHub rxjava
  3. リアクティブ-プログラミング-テクノロジー-それぞれ表現
  4. 応答宣言
  5. レスポンシブ宣言用語集

おすすめ

転載: blog.csdn.net/qq_38619183/article/details/112430869
おすすめ