Virtual synchrony とは

バーチャルシンクロは、プロセス間のメッセージのやり取り(順序付けられた、信頼性の高いマルチキャストとも呼ばれる)技術です。バーチャルシンクロナイゼーションシステムでは、ネットワーク上で動作するプログラムをプロセスグループに編成し、グループにメッセージを送信することができます(特定のプロセスに送信するのではなく)。各メッセージは、すべてのグループメンバーに同じ順序で配信されます。これは、2つのメッセージが異なる送信者によって同時に送信された場合でも同じです。アプリケーションの設計と実装は、このプロパティによって大幅に簡素化されます。すべてのグループメンバーは同じイベント(グループメンバーシップの変更と受信メッセージ)を同じ順序で見ます。
事実上同期サービスは、典型的には、状態機械複製と呼ばれるプログラミングのスタイルを用いて実装され、何らかの形態の遠隔メッセージ通過インフラストラクチャを介してクライアントからの入力を受け取り、次に新しい状態に入り、決定論的な方法。その後、最初の実装は、プログラムの複数のインスタンスが、仮想的に同期するメッセージパッシングシステムを使用して、異なるマシン上で起動され、メンバー上で着信メッセージを複製するように変換されます。レプリカは同じイベントを同じ順序で参照し、同じ状態にあるため、同じ状態遷移を行い、一貫した状態を維持します。
サービスのレプリケーションはフォールトトレランス機能を提供します。レプリカに障害が発生した場合(クラッシュによって)、他のレプリカが残り、応答を提供し続けることができます。レプリカグループの異なるメンバーは、通常、グループメンバーシップを使用してそれぞれの役割を決定することによって、ワークロードを細分化するようにプログラムすることもできます。これにより、N個のメンバーのグループが、N個のメンバーよりもN倍高速に実行することができます。また、N回の要求を処理することもできますが、クラッシュ時にフォールトトレランスを提供し続けます。
バーチャルシンクロナイゼーションは、プログラマがメッセージの早期(楽観的な)配信を要求できる、または緩やかな形式のオーダーを要求できる機能を備えているため、古典的な状態マシンの複製とは区別されます。これらの機能を適切に使用すると、大幅な高速化が可能になります。しかし、プログラマは、保証の緩和が正確さを損なわないことを確実にする必要があります。
例えば、同期して更新されたデータを保護するためにロックを使用するサービスでは、メッセージングシステムは、個々の送信者がメッセージを送信する順序(FIFO保証)を考慮して安価な形式のメッセージ順序を使用するように指示することができるメッセージが異なる送信者によって同時に送信された場合、合意された注文を課そうとはしません。送信側が実際にデータをロックしていれば、FIFO順序が正しいことを示すことができます。利点は、FIFOの順序付けは、並行メッセージの順序全体より実装する方がはるかにコストがかからないことです。
別の例を挙げると、メッセージを楽観的に配信することで、仮想マシンはPaxosよりもパフォーマンスが優れています。Paxosは通常2フェーズプロトコルを必要としますが、オプティミスティック仮想同期プロトコルは到着時にすぐにメッセージを送信できます。ただし、これにより、状態マシンの複製モデルの安全性が損なわれる可能性があります。このような問題を防ぐために、この機能を使用するプログラマは、flushというプリミティブを呼び出す必要があります。これは、楽観的に配信されたメッセージがすべてのグループメンバーに届くまで、呼び出し元を遅らせます。プログラマがこの動作を理解し、外部クライアントや永続ストレージとの対話に先立ってflushを呼び出すように注意するならば、安全性を損なうことなくより高いパフォーマンスを達成することができます。
これらの限定された形式のイベントの並べ替えと楽観的な早期配信に関連する柔軟性により、非常に高いフォールトトレランスと一貫性の保証を維持しながら、非常に高いデータレートを実現する仮想同期プラットフォームが可能になります。

Distributed object communication とは

分散コンピューティング環境では、分散オブジェクト通信は、分散オブジェクト間の通信を実現する。主な役割は、オブジェクトがデータにアクセスし、リモートオブジェクト(非ローカルメモリ空間に存在するオブジェクト)のメソッドを呼び出すことができるようにすることです。リモートオブジェクトのメソッドを呼び出すことは、リモートメソッド呼び出し(RMI)またはリモート呼び出しと呼ばれ、リモートプロシージャコール(RPC)のオブジェクト指向プログラミングアナログです。

MetaWeblog とは

MetaWeblog APIは、ソフトウェア開発者Dave Winerによって作成されたアプリケーションプログラミングインターフェイスで、Webサービスを使用してウェブログエントリの作成、編集、および削除を可能にします。
APIは、名前が関数を記述する3つのメソッド(metaweblog.newPost()、metaweblog.getPost()、およびmetaweblog.editPost())を持つXML-RPC Webサービスとして実装されます。これらのメソッドは、ブログの作成者のユーザー名とパスワードと、個々のWeblogエントリに関する情報を指定する引数をとります。
2002年にAPIを作成したのは、同じ目的を果たすBlogger APIの限界だと認識していました。 OAuthのような最新技術で開発された別のWeblog公開API Micropubは、2017年5月にW3C勧告になりました。
多数のデスクトップクライアントと同様に、多くのブログソフトウェアアプリケーションとコンテンツ管理システムがMetaWeblog APIをサポートしています。

Rinda (Ruby programming language) とは

Rindaは、タプル空間またはLinda分散コンピューティングのパラダイムを使用して、Rubyでモジュール式および分散型共同サービスを作成するためのソフトウェアライブラリです。
Rindaは、2000年にMasatoshi SEKIによってRubyコミュニティに最初にリリースされたソースコードに基づいて、後にRubyのコア分散型Ruby(DRb)モジュールに吸収されました。 RindaはRuby 1.8以降、Rubyの主要なライブラリの一部として配布されています。

Blocking (computing) とは

計算において、プロセスは実行されているコンピュータプログラムのインスタンスである。プロセスは常に正確に1つのプロセス状態で存在します。ブロックされるプロセスは、リソースが使用可能になったり、I / O操作が完了したりするなど、何らかのイベントを待っているプロセスです。
マルチタスクコンピュータシステムでは、個々のタスクまたは実行スレッドは、システムのリソースを共有しなければならない。共有リソースには、CPU、ネットワークおよびネットワークインターフェイス、メモリおよびディスクが含まれます。
1つのタスクがリソースを使用している場合、他のタスクがリソースにアクセスすることは一般的に不可能であり、望ましくない。このような同時使用を防止するために相互排除の手法が使用されています。他のタスクがブロックされると、最初のタスクが共有リソースの使用を終了するまで実行できません。
プログラミング言語とスケジューリングアルゴリズムは、オーバーオールエフェクトブロッキングを最小限に抑えるように設計されています。ブロックするプロセスは、ローカル作業タスクの進行を妨げる可能性があります。この場合、「ブロッキング」はしばしば望ましくないと見なされます。ただし、このような作業タスクは、スケジューリングが続行されるため、他の作業に影響を与えないか、ほとんど影響を与えない独立したプロセスに割り当てることができます。一例は、チャネルのセマンティクスの一部である他の部分(ポーリングやスピンループなし)を受動的に待つ「チャネル上でのブロック」です。正しく設計されたものは、反応系を実現するために使用することができます。
デッドロックとは、プロセスが病理学的にお互いを円で待つことを意味します。したがって、それはブロッキングに直接関連していません。
プロセスが待機している(「ブロックされている」)イベントが発生すると、プロセスはブロックされた状態から実行可能な状態などの差し迫った状態に進みます。

SIMPL とは

同期インタープロセスメッセージングLINUX(SIMPL)プロジェクトは、共有メモリーやUnixパイプなどのユーザー空間技術を使用してLinuxライブラリを追加してSendMssg / ReceiveMssg / ReplyMssgプロセスを実装することにより、QNX形式の同期メッセージの受け渡しを可能にする無料のオープンソースプロジェクトですメッセージングメカニズム。

Pipeline (software) とは

ソフトウェア工学では、パイプラインは、各要素の出力が次の要素の入力になるように配置された一連の処理要素(プロセス、スレッド、コルーチン、関数など)で構成されます。その名前は物理的なパイプラインに類似しています。通常、連続した要素の間にある量のバッファリングが提供されます。これらのパイプラインで流れる情報は、しばしばレコード、バイトまたはビットのストリームであり、パイプラインの要素はフィルタと呼ばれることがあります。これは、パイプとフィルターの設計パターンとも呼ばれます。要素をパイプラインに接続することは、関数の構成に似ています。
狭義に言えば、パイプラインは線形と一方向ですが、より一般的なフローに適用されることもあります。例えば、主に一方向性のパイプラインは、レクサーハックのように、リターンチャネルまたはバックチャネルとして知られている、またはパイプラインが完全に双方向性である、別の方向の通信を有することがあります。一方向ツリーと有向非循環グラフトポロジを持つフローは、(リニア)パイプラインと同様に動作します。サイクルがないとシンプルになるため、「パイプライン」と呼ばれることがあります。

DDObjects とは

DDObjectsは、Borland DelphiおよびC ++ Builderのリモーティングフレームワークです。 DDObjectを開発する際の主な目標は、できるだけシンプルなDDObjectを利用するために実装しなければならないコードを保持するだけでなく、Delphiの通常のイベント駆動型スタイルに非常に近いコードを保持することだけではありません。
DDObjectsは、リモートメソッド呼び出し、サーバコールバック、非同期コール、非同期コールバック、ステートフルで無駄なオブジェクト、およびその他の機能をサポートしています。 DDObjectsは、他の実装をDCOMまたはCORBA(最小限の共通分母に一般化されていますが、オブジェクト、例外、レコード、セットおよび列挙型を含むDelphiのリッチタイプシステムを使用します)と模倣しません。
DDObjectsはプロトコルとしてプレーンXMLとHTTPを使用し、ブローカコンポーネント、ソースコードジェネレータ、およびいくつかの新しいビジュアルコントロールを含みます。 DDObjectsは、Delphi 5から7、2005-XE2(現在32ビットのみ)、C ++ Builder 6,2006、および2009をサポートしています。