JP2023505544A - アプリケーションとサーバとの間のトランザクション要求の制御 - Google Patents

アプリケーションとサーバとの間のトランザクション要求の制御 Download PDF

Info

Publication number
JP2023505544A
JP2023505544A JP2022534861A JP2022534861A JP2023505544A JP 2023505544 A JP2023505544 A JP 2023505544A JP 2022534861 A JP2022534861 A JP 2022534861A JP 2022534861 A JP2022534861 A JP 2022534861A JP 2023505544 A JP2023505544 A JP 2023505544A
Authority
JP
Japan
Prior art keywords
transaction requests
transaction
collisions
collision groups
collision
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2022534861A
Other languages
English (en)
Inventor
コールマン、アンドリュー、ジョン
リーブ、ジョン、アンソニー
ドルビー、トレバー、クリフォード
ゴルビー-カーク、マシュー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2023505544A publication Critical patent/JP2023505544A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/562Brokering proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/547Messaging middleware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)

Abstract

分散化アーキテクチャを介してアプリケーションとサーバとの間で送達されるトランザクション要求を制御するための概念。そのような概念では、並列に処理される場合にトランザクション・コリジョンを引き起こし得るトランザクション要求のグループに関する情報を考慮して、トランザクション要求の送達が制御される。トランザクション要求のそのようなグループ化は、以前または現在の観測されたトランザクション・コリジョンに基づいて、実行時に定義、修正、および更新され得る。

Description

本発明は、一般にはアプリケーションとサーバとの間の通信の分野に関し、詳細にはアプリケーションとサーバとの間のトランザクション要求を制御するためのミドルウェア・システムに関する。
本発明はまた、アプリケーションとサーバとの間のトランザクション要求を制御するためのコンピュータ実装方法に関する。
本発明はまた、システムのプロセッサ、またはネットワークのいくつかのプロセッサがそのような方法を実装することを可能にするコンピュータ可読プログラム・コードを含むコンピュータ・プログラム製品に関する。
企業アーキテクチャは通常、様々なソースおよびターゲット、たとえばデータベース管理システム、メッセージング・システム、および分散型台帳技術との間でデータをルーティングするように構成される統合ミドルウェアを中心に構築される。
そのようなアーキテクチャ実装は、1つのデータを書き込むことを求める要求に、上書きされているデータの現在値を表すハッシュまたはバージョン・コードが付随しなければならないという要件と共に、データの同時読取りおよび書込みを可能にするマルチバージョン・コンカレンシー・コントロール(MVCC)を利用し得る。ハッシュまたはバージョン・コードが現在値に合致しない場合、データを上書きすることを求める要求が拒否される(すなわち、MVCC障害となる)。そのことは、別の接続されたクライアントが同時に値を更新していることを示すからである。クライアントの書込み要求が拒否される場合、クライアントは再試行(たとえば、要求を反復)しなければならず、そのことは通常、現在値を読み取ること、および再び書込み要求を送ることを必要とする。重い負荷の下では、MVCC障害の割合が急速に増大し、システム性能が不十分となり得る。
本発明は、アプリケーションとサーバとの間のトランザクション要求を制御するためのミドルウェア・システムを提供することを模索する。
本発明はまた、アプリケーションとサーバとの間のトランザクション要求を制御するための方法を提供することを模索する。そのような方法はコンピュータで実装され得る。
本発明はさらに、処理装置によって実行されるときに、提案される方法を実装するためのコンピュータ・プログラム・コードを含むコンピュータ・プログラム製品を提供することを模索する。本発明はまた、このコンピュータ・プログラム・コードを実行するように適合された処理システムを提供することを模索する。
本発明の一態様によれば、アプリケーションとサーバとの間のトランザクション要求を制御するためのミドルウェア・システムが提供される。ミドルウェア・システムはブローカ構成要素を備える。ブローカ構成要素は、実行時に、以前または現在の観測されたトランザクション・コリジョンに基づいて、トランザクション要求の1つまたは複数のコリジョン・グループを定義し、1つまたは複数のコリジョン・グループに基づいて、並列のトランザクション要求の送達を制御するように構成される。
MVCCコリジョンの危険を低減するようにトランザクション要求を制御するための概念が提案される。そのような概念では、アプリケーションとサーバとの間(たとえば、クライアント・アプリケーションとブロックチェーン・ネットワーク(または他のMVCC制約付きバックエンド・システム)との間)でミドルウェア・システムが利用され得、ミドルウェア・システムは、一定の要求だけが並列にサブミットされることが許可されるように、トランザクション要求のフローを制御(たとえば、スロットリングまたは待ち行列化)し得る。たとえば、ミドルウェア・システムは、実行時に、並列に送達されるときにトランザクション・コリジョンを生み出すことをミドルウェア・システムが観測するトランザクション要求をグループ化し得る。そのようなグループに基づいて、ミドルウェア・システムは、トランザクションを並列に送達すべきかどうかを判定し得る。
実施形態は、潜在的に競合するトランザクション要求がグループとして構成され得、これが、観測されたコリジョンに基づいて実行時に動的に行われ得ることを提案する。次いで、以前の要求が首尾よく処理されるまで、ブロックチェーンのケースでは台帳にコミットされるまで、各グループ内のトランザクション要求が順番に一時的に待ち行列化され得る。したがって、いくつかの実施形態は、成功したトランザクション・サブミットのスループットを最大にするように要求スロットリング挙動を動的に制御し得る統合フロー・ノードについての提案を提供し得る。
提案される実施形態は、トランザクション・コリジョン(たとえば、MVCCコリジョン)の実行時履歴に基づいてコリジョン・グループを動的に作成する概念を利用し得る。さらに、そのような動的グループ化情報が他の構成要素、ノード、または組織に発行され得、それによって、他の構成要素、ノード、または組織がそのグループ構成を更新することが可能となる。
提案される概念によれば、ミドルウェア構成要素またはシステムが統合フローとして提供され、クライアント・アプリケーションとサーバとの間に配置され得る。そのような統合フローは、トランザクション・コリジョン(たとえば、障害)を最小限に抑え、または潜在的にはなくすような方式でトランザクション要求のサブミットを制御するように構成される、新しい「サブミッタ」または「ブローカ」ノードを形成し得る。
例として、ノードはグループのセット(以下では「コリジョン・グループ」と呼ぶ)を維持し得、グループ内の各トランザクション要求は、そのグループ内の任意の他のトランザクション要求と同時にサブミットされる場合、障害のコリジョンを引き起こす可能性が高くなる。次いで、グループ内の複数のトランザクション要求が任意のある時間に到着する場合、ノードは、要求をサブミットすることができるまで、先入れ先出し(FIFO)順に要求を待ち行列化することによって、要求をスロットリングし得る。各グループは互いに独立して動作し得、それによって、相異なるグループからのトランザクション要求の並列処理が可能となる。
したがって、提案される実施形態によれば、トランザクション・コリジョンの危険を低減する方式でトランザクション要求を動的にグループ化し、スロットリングするように構成される統合ミドルウェアが提供され得る。以前または現在の観測されたトランザクション・コリジョンに基づいてトランザクション要求を動的にグループ化することにより、トランザクション要求の並列サブミットを制御するために活用される情報が提供され得る。
具体的には、提案される概念は、クライアント・アプリケーションとMVCC制約付きバックエンド・システムとの間にミドルウェア(たとえば、統合フローまたはブローカ構成要素)を提供することによってMVCCコリジョンの危険を低減することを模索し得る。ミドルウェアは、MVCCクラッシュを引き起こさない要求だけが並列にサブミットされることが許可されるように、トランザクション要求をスロットリングする。実施形態は、(たとえば、MVCCコリジョンの実行時履歴などに基づいて)潜在的に競合するトランザクションをグループ化するための着想を活用し、次いでそのようなグループを使用して、着信トランザクションを並列にサブミットすることができるか否かを判定し得る。たとえば、グループ内の複数のトランザクション要求が任意のある時間に到着する場合、トランザクション要求を安全にサブミットすることができるまで、トランザクション要求が待ち行列化され得る。
いくつかの実施形態では、ブローカ構成要素は、1つまたは複数のリモート構成要素に1つまたは複数のコリジョン・グループについての情報を通信するように構成されたパブリッシャ構成要素を備え得る。このようにして、実施形態は、他のブローカ構成要素などの他の構成要素、ノード、または組織と情報を共有し、それによって、他の構成要素、ノード、または組織がその構成を更新することを可能にするように構成され得る。
ブローカ構成要素は、観測されたトランザクション・コリジョン、およびリモート構成要素からのトランザクション要求の別のコリジョン・グループのうちの少なくとも1つについての情報を受信するように構成されたレシーバ構成要素を備え得る。次いで、ブローカ構成要素は、実行時に、受信した情報にさらに基づいてトランザクション要求の1つまたは複数のコリジョン・グループを定義するように構成され得る。したがって、実施形態は、コリジョン・グループを更新および改善するように、他のブローカ構成要素などの他の構成要素、ノード、または組織からの情報を活用し得る。このようにして、実施形態は、ネットワークまたはシステム内の変化する条件またはパラメータあるいはその両方を反映するように動的に適応し、再構成し得る。
いくつかの実施形態では、ブローカ構成要素は、1つまたは複数のコリジョン・グループのうちの同一のコリジョン・グループのメンバである複数のトランザクション要求を識別したことに応答して、複数のトランザクション要求の並列送達を防止するように、複数のトランザクション要求を待ち行列化するように構成され得る。たとえば、ブローカ構成要素は、複数のトランザクション要求を先入れ先出し順に待ち行列化するように構成され得る。これにより、トランザクション・コリジョンが回避/防止されることになる後の時間まで、たとえば延期または遅延を介して、トランザクション要求の送達を制御することが可能となり得る。
ブローカ構成要素は、トランザクション要求の送達の結果として生じるトランザクション・コリジョンを識別したことに応答して、識別したトランザクション・コリジョンに基づいてトランザクション要求の1つまたは複数のコリジョン・グループを再定義し、再定義した1つまたは複数のコリジョン・グループに基づいてトランザクション要求の再送達を制御するように構成され得る。したがって、実施形態は、トランザクション要求の送達を動的に再構成するように適合され得る。たとえば、トランザクション要求が、コリジョン・グループの再定義後に自動的に再送達/再サブミットされ、したがって、トランザクション要求がコリジョンを引き起こしたことに応答して送達が単純に打ち切られることが回避され得る。
ミドルウェア・システムは、クライアント・アプリケーションとマルチバージョン・コンカレンシー・コントロール(MVCC)制約付きサーバとの間のトランザクション要求の送達を傍受および制御するように構成され得る。したがって、実施形態は、MVCCを利用するアーキテクチャ実装にとって特に価値があり得る。
本発明の別の態様によれば、アプリケーションとサーバとの間のトランザクション要求を制御するためのコンピュータ実装方法が提供される。方法は、実行時に、以前または現在の観測されたトランザクション・コリジョンに基づいて、トランザクション要求の1つまたは複数のコリジョン・グループを定義することと、1つまたは複数のコリジョン・グループに基づいて、並列のトランザクション要求の送達を制御することとを含む。
本発明の別の態様によれば、コンピュータ・プログラム製品が提供される。コンピュータ・プログラム製品は、プログラム命令が実施されたコンピュータ可読記憶媒体を含み、プログラム命令は、提案される実施形態による方法を処理装置に実施させるように処理装置によって実行可能である。
本発明の別の態様によれば、一実施形態による少なくとも1つのプロセッサおよびコンピュータ・プログラム製品を備えるコンピュータ・システムが提供される。少なくとも1つのプロセッサが、前記コンピュータ・プログラム製品のコンピュータ・プログラム・コードを実行するように適合される。
本発明のこれらおよび他の目的、特徴、および利点は、添付の図面と共に読むべきである本発明の例示的実施形態の以下の詳細な説明から明らかとなるであろう。図は、当業者が詳細な説明と共に本発明を理解するのを容易にする際に明快にするためのものであるので、図面の様々な特徴は原寸に比例しない。
例示的実施形態の態様が実装され得る例示的分散型システムの絵画表現を示す図である。 例示的実施形態の態様が実装され得る例示的システムのブロック図である。 一実施形態による、提案される分散型通信システムの概略図である。 別の実施形態によるシステムを示す図である。
図は概略的なものに過ぎず、原寸に比例して描かれていないことを理解されたい。同一または類似の部分を示すために各図にわたって同一の参照番号が使用されることも理解されたい。
本願の文脈では、本発明の実施形態が方法を構成する場合、そのような方法はコンピュータによる実行のためのプロセスであり得、すなわちコンピュータで実装可能な方法であり得ることを理解されたい。したがって、方法の様々なステップは、コンピュータ・プログラムの様々な部分、たとえば1つまたは複数のアルゴリズムの様々な部分を反映し得る。
さらに、本願の文脈では、システムは、本発明の方法の1つまたは複数の実施形態を実行するように適合される単一のデバイスまたは分散型デバイスの集合であり得る。たとえば、システムは、パーソナル・コンピュータ(PC)、サーバ、あるいは本発明の方法のうちの少なくとも1つの実施形態を協働して実行するようにローカル・エリア・ネットワーク、インターネットなどのネットワークを介して接続されたPCもしくはサーバまたはその組合せの集合であり得る。さらに、構成要素は、1つまたは複数の処理装置によって実行される統合フローであり得る。
分散化アーキテクチャ(すなわち、相互接続された分散型ネットワーク)を介してアプリケーションとサーバとの間で送達されるトランザクション要求を制御するための概念が提案される。そのような概念では、並列に処理される場合にトランザクション・コリジョンを引き起こし得るトランザクション要求のグループに関する情報を考慮して、トランザクション要求の送達が制御される。トランザクション要求のそのようなグループ化は、以前または現在の観測されたトランザクション・コリジョンに基づいて、実行時に定義、修正、および更新され得る。
たとえば、潜在的に競合するトランザクション要求がグループ内に配置され得、観測されたトランザクション・コリジョンに基づいて、これが実行時に動的に行われ得ることが提案される。したがって、定義済みグループは、複数の受信された(または傍受された)トランザクション要求が並列に処理されることを防止すべきかどうかを判定するために使用され得る。たとえば、同一のグループ内の複数のトランザクション要求は、前の要求が首尾よく処理されるまで、順番に一時的に待ち行列化され得る。このようにして、実施形態は、コリジョンを低減または回避する(それによって、成功したトランザクション・サブミットのスループットを最大化するように模索する)ようにトランザクション要求挙動を動的にスロットリングし得る。
具体的には、実施形態は、統合ミドルウェア(たとえば、データベース管理システム、メッセージング・システム、および分散型台帳技術)を利用する既存の分散型通信アーキテクチャと共に実装され得る。
図1は、例示的実施形態の態様が実装され得る例示的分散型システムの絵画表現を示す。分散型システム100は、例示的実施形態の態様が実装され得るコンピュータのネットワークを含み得る。分散型システム100は、分散型データ処理システム100内で互いに接続された様々なデバイスおよびコンピュータの間の通信リンクを提供するために使用される媒体である少なくとも1つのネットワーク102を含む。ネットワーク102は、ワイヤ、ワイヤレス通信リンク、光ファイバ・ケーブルなどの接続を含み得る。
図示される例では、第1のサーバ104および第2のサーバ106が、記憶ユニット108と共にネットワーク102に接続される。さらに、クライアント110、112、および114もネットワーク102に接続される。クライアント110、112、および114は、エッジ・デバイス、たとえばパーソナル・コンピュータ、ネットワーク・コンピュータ、IoTデバイスなどであり得る。図示される例では、第1のサーバ104は、ブート・ファイル、オペレーティング・システム・イメージ、アプリケーションなどのデータをクライアント110、112、および114に提供する。クライアント110、112、および114は、図示される例では第1のサーバ104に対するクライアントである。分散型処理システム100は、図示されていない追加のサーバ、クライアント、および他のデバイスを含み得る。
図示される例では、分散型システム100はインターネットであり、ネットワーク102は、互いに通信するためにプロトコルの伝送制御プロトコル/インターネット・プロトコル(TCP/IP)プロトコル・スイートを使用するネットワークおよびゲートウェイの世界的な集合を表す。インターネットの中心は、データおよびメッセージをルーティングする数千の商業、政府、教育、および他のコンピュータ・システムからなるメジャー・ノードまたはホスト・コンピュータの間の高速データ通信回線のバックボーンである。もちろん、分散型システム100はまた、たとえばイントラネット、ローカル・エリア・ネットワーク(LAN)、広域ネットワーク(WAN)などのいくつかの異なるタイプのネットワークを含むように実装され得る。前述のように、図1は、本発明の様々な実施形態についてのアーキテクチャ上の制限としてではなく一例として意図され、したがって図1に示される特定の要素は、本発明の例示的実施形態が実装され得る環境に関する制限と見なされるべきではない。
図2は、例示的実施形態の態様が実装され得る例示的システム200のブロック図である。システム200は、本発明の例示的実施形態についてのプロセスを実装するコンピュータ使用可能コードまたは命令が配置され得る、図1のクライアント110などのコンピュータの一例である。たとえば、提案される実施形態が、システム200の処理装置206内に部分的に実装され得る。
図示される例では、システム200は、ノース・ブリッジおよびメモリ・コントローラ・ハブ(NB/MCH)202と、サウス・ブリッジおよび入力/出力(I/O)コントローラ・ハブ(SB/ICH)204とを含むハブ・アーキテクチャを利用する。したがって、別の提案される実施形態は、システム200のメモリ・コントローラ・ハブ202で実装され得る。処理装置206、メイン・メモリ208、およびグラフィックス・プロセッサ210がNB/MCH202に接続される。グラフィックス・プロセッサ210は、アクセラレーテッド・グラフィックス・ポート(AGP)を通じてNB/MCH202に接続され得る。
図示される例では、ローカル・エリア・ネットワーク(LAN)アダプタ212がSB/ICH204に接続される。オーディオ・アダプタ216、キーボードおよびマウス・アダプタ220、モデム222、読取り専用メモリ(ROM)224、ハード・ディスク・ドライブ(HDD)226、CD-ROMドライブ230、ユニバーサル・シリアル・バス(USB)ポートおよび他の通信ポート232、ならびにPCI/PCIeデバイス234が、第1のバス238および第2のバス240を通じてSB/ICH204に接続される。PCI/PCIeデバイスには、たとえば、イーサネット(R)・アダプタ、アドイン・カード、およびノートブック・コンピュータ用のPCカードが含まれ得る。PCIはカード・バス・コントローラを使用し、PCIeはカード・バス・コントローラを使用しない。ROM224は、たとえばフラッシュ基本入出力システム(BIOS)であり得る。
HDD226およびCD-ROMドライブ230は、第2のバス240を通じてSB/ICH204に接続される。HDD226およびCD-ROMドライブ230は、たとえばintegrated drive electronics(IDE)またはserial advanced technology attachment(SATA)インターフェースを使用し得る。SuperI/O(SIO)デバイス236がSB/ICH204に接続され得る。
オペレーティング・システムが処理装置206上で実行される。オペレーティング・システムは、図2のシステム200内の様々な構成要素の制御を調整および実現する。クライアントとして、オペレーティング・システムは市販のオペレーティング・システムであり得る。Java(R)(TM)プログラミング・システムなどのオブジェクト指向プログラミング・システムがオペレーティング・システムと共に実行され得、システム200上で実行中のJava(R)(TM)プログラムまたはアプリケーションからオペレーティング・システムへの呼出しを実現する。
サーバとして、システム200は、たとえば、Advanced Interactive Executive (AIX(R))オペレーティング・システムまたはLinux(R)オペレーティング・システムを実行中のIBM(R) eServer(TM) System p(R)コンピュータ・システムであり得る。システム200は、処理装置206内に複数のプロセッサを含む対称型マルチプロセッサ(SMP)システムであり得る。代替として、単一プロセッサ・システムが利用され得る。
オペレーティング・システム、プログラミング・システム、およびアプリケーションまたはプログラムのための命令が、HDD226などの記憶デバイス上に配置され、処理装置206による実行のためにメイン・メモリ208内にロードされ得る。同様に、実施形態による1つまたは複数のプログラムが、記憶デバイスまたはメイン・メモリ208あるいはその両方によって記憶されるように適合され得る。
本発明の例示的実施形態のためのプロセスは、コンピュータ使用可能プログラム・コードを使用して処理装置206によって実施され得、コンピュータ使用可能プログラム・コードは、たとえばメイン・メモリ208、ROM224などのメモリ内に、あるいは1つまたは複数の周辺デバイス226および230内に配置され得る。
図2に示されるような第1のバス238や第2のバス240などのバス・システムが、1つまたは複数のバスを備え得る。もちろん、バス・システムは、ファブリックまたはアーキテクチャに接続された相異なる構成要素またはデバイスの間のデータの転送を実現する任意のタイプの通信ファブリックまたはアーキテクチャを使用して実装され得る。図2のモデム222やネットワーク・アダプタ212などの通信ユニットが、データを送信および受信するために使用される1つまたは複数のデバイスを含み得る。メモリは、たとえばメイン・メモリ208、ROM224、または図2のNB/MCH202内で見つかるようなキャッシュであり得る。
図1および2のハードウェアは実装に応じて様々であり得ることを当業者は理解されよう。フラッシュ・メモリ、同等の不揮発性メモリ、光ディスク・ドライブなどの他の内部ハードウェアまたは周辺デバイスが、図1および2に示されるハードウェアに加えて、またはその代わりに使用され得る。さらに、例示的実施形態のプロセスは、本発明の範囲から逸脱することなく、前述のシステム以外のマルチプロセッサ・データ処理システムに適用され得る。
さらに、システム200は、クライアント・コンピューティング・デバイス、サーバ・コンピューティング・デバイス、タブレット・コンピュータ、ラップトップ・コンピュータ、電話または他の通信デバイス、携帯情報端末(PDA)などを含むいくつかの異なるデータ処理システムのいずれかの形態を取り得る。いくつかの例示的な例では、システム200は、たとえば、オペレーティング・システム・ファイルまたはユーザが生成したデータあるいはその両方を記憶するための不揮発性メモリを実現するようにフラッシュ・メモリと共に構成されるポータブル・コンピューティング・デバイスであり得る。したがって、システム200は、本質的に、アーキテクチャ上の制限なしに、任意の知られている、または後に開発されるデータ処理システムであり得る。
上記で詳述したように、提案される実施形態は、分散化アーキテクチャを介してアプリケーションとサーバとの間で送達されるトランザクション要求を制御するための方法およびシステムを提供する。別の説明として、提案される実施形態が、アプリケーション310およびサーバ320を含む分散型通信システムに関してこれから説明される。
図3を参照すると、一実施形態による、提案される分散型通信システムの概略図が示されている。通信システムは、一実施形態による、アプリケーション310とサーバ320との間のトランザクション要求を制御するためのミドルウェア・システム300を含む。より具体的には、図3の図示される例では、ミドルウェア・システム300は、通信ネットワーク330(たとえば、インターネット)を介してクライアント・アプリケーション310とMVCC制約付きサーバ320との間のトランザクション要求の送達を傍受および制御するように構成される。
ミドルウェア・システム300はブローカ構成要素340を備える。ブローカ構成要素340は、実行時に、分散型通信システム内の以前または現在の観測されたトランザクション・コリジョンに基づいて、トランザクション要求の1つまたは複数のコリジョン・グループを定義するように構成される。言い換えれば、ブローカ構成要素は、トランザクション・コリジョンの実行時履歴に基づいてコリジョン・グループを定義する。
ここで、ブローカ構成要素340は、並列に送達される場合にトランザクション・コリジョンが生じる複数のトランザクション要求をコリジョン・グループのそれぞれが定義するようにグループを定義する。
この例では、ブローカ構成要素340は、通信システム内の観測されたトランザクション・コリジョン、またはリモート構成要素(別のブローカ構成要素360など)からのトランザクション要求の別のコリジョン・グループ、あるいはその両方についての情報を受信するように構成されるレシーバ構成要素350を含む。ブローカ構成要素340はまた、この受信した情報を利用してコリジョン・グループを定義し得る。したがって、図3の図示される例では、ブローカ構成要素は、実行時に、受信した情報にさらに基づいてトランザクション要求のコリジョン・グループを定義するように構成される。
ブローカ構成要素340はまた、1つまたは複数のリモート構成要素(別のブローカ360またはリモートに配置されたデータベース370あるいはその両方)に定義済みコリジョン・グループについての情報を(ネットワーク330を介して)通信するように構成されるパブリッシャ構成要素355をも備える。このようにして、ブローカ構成要素340は、コリジョン・グループについての情報を共有するように構成され、したがってコリジョン・グループ定義を更新または改善あるいはその両方を行うために複数のブローカ構成要素が協力する(たとえば、情報を組み合わせ、またはプールする)ことを潜在的に可能にする。
コリジョン・グループに基づいて、ブローカ構成要素340は、傍受したトランザクション要求の送達を制御するように構成される。より具体的には、複数の傍受したトランザクション要求が同一のコリジョン・グループのメンバであることを識別したことに応答して、ブローカ構成要素340は、複数のトランザクション要求の並列送達を防止するように、複数のトランザクション要求を待ち行列化する。たとえば、ブローカ構成要素340は、複数のトランザクション要求を先入れ先出し順に待ち行列化し得る。このようにして、第1および第2のトランザクション要求が同一のコリジョン・グループのメンバである場合、ブローカ構成要素340は、第1のトランザクション要求を遅延し、第2のトランザクション要求と並列にサブミットされることを防止し得る。
さらに、この例では、トランザクション要求の送達の結果として生じるトランザクション・コリジョンを識別したことに応答して、ブローカ構成要素340は、識別したトランザクション・コリジョンに基づいてコリジョン・グループを再定義するように構成される。さらに、トランザクション要求を打ち切るのではなく、ブローカ構成要素340は、新しく再定義したコリジョン・グループに基づいてトランザクション要求の再送達を制御する。
提案される概念の別の説明および図示により、提案される実施形態が従来のトランザクション要求送達機構をどのように変更し得るかを次に考慮する。ブロックチェーン・ネットワークにトランザクション要求をサブミットするための従来の機構は通常、以下の複数ステッププロセスを起動することを必要とする。
(i)トランザクション要求を作成する-これは、ブロックチェーン・ネットワークで起動すべき機能と、その機能に供給すべきパラメータ/引数とを含むデータ構造である。
(ii)「承認」を求めてブロックチェーン・ネットワーク内の各ノードにトランザクション要求を送る-各ノードのスマート・コントラクトがその機能の処理をシミュレートし、読取り/書込みセット(RWset)を生成する。このRWsetは、ブロックチェーン・ネットワーク内の各ノードについての台帳データ・ストアの関連する部分の現状態および提案される将来の状態を含む。RWsetは、実際にはこの段階では適用されず、要求側クライアントに返される。
(iii)クライアントが、各ノードから受信したRWsetをグループ化し、ブロックチェーンの「順序付けサービス」に送る。このサービスは以下のステップを実施する。
a)RWsetのすべて(または承認ポリシーを満たすのに十分な数)が同一のRWsetを有することをチェックする。この段階では、RWsetが異なる場合、トランザクション要求が拒否され得る。あるノードが他のノードに対して異なる読取り状態を有し、その特定の状態がネットワーク内で変更中であるプロセスにある(MVCC障害)ことを示し得るからである。
b)ステップa)に合格した場合、順序付けサービスは、1つまたは複数のトランザクションのバッチを含む「ブロック」を作成する。このブロックは暗号式に署名され、ネットワーク内の各ピアに送られる。
c)各ピアは、ブロックの受信時に、各トランザクションをピアの台帳に適用しようと試みる。ブロック内の各トランザクションについて、各ピアは、RWsetの「読取り」部分がピアの台帳の現読取り状態と合致することをチェックする。それが合致しない場合、トランザクションはMVCC障害として拒否される。順序付けサービスの処置は、ネットワーク内のすべてのノードがトランザクションを同様に受け入れ、または拒否することを保証することに留意されたい。
d)MVCC障害が発生していないと仮定すると、このときトランザクションは、ブロックチェーン・ネットワークにコミットされている。
上記で詳述したステップ(iii)は非同期である。トランザクションが最終的に台帳にコミットされたときにクライアントが通知を受けることを望む場合、クライアントは、イベントの通知を受信するためにピアにリスナを登録する。
提案される実施形態に従って前述の従来の手法がどのように修正されるかを考慮するとき、クライアント・アプリケーションとブロックチェーン・ネットワークとの間にミドルウェア構成要素(たとえば、統合フロー)が配置されることに留意されたい。これは、MVCC障害を最小限に抑え、または潜在的になくすような方式でブロックチェーンに対するトランザクション要求のサブミットを制御する新しいブローカ構成要素(これは「サブミッタ」ノードと考えることができる)として動作するように構成される。
ブローカ構成要素は、別個のコリジョン・グループのセットについての情報を維持し、グループ内の各トランザクション要求は、その同一のグループ内の任意の他のトランザクション要求と同時にサブミットされる場合、MVCC障害を引き起こす可能性が高い。こうしたコリジョン・グループに基づいて、同一のグループの複数のトランザクション要求が一度に(たとえば、同時に、または所定の時間ウィンドウ内に)到着した場合、ブローカ構成要素は、MVCCコリジョンを引き起こすことなくサブミットすることができるまで、(たとえば、トランザクション要求を待ち行列化することによって)そうしたトランザクション要求を遅延する。コリジョン・グループは、互いに独立して動作し得、したがって相異なるグループからのトランザクション要求の並列処理を可能にする。
別の例として、一実施形態によるブローカ構成要素が、以下のように動作するように構成され得る。
-「コリジョン・グループ定義」プロパティが、各トランザクション要求がどのグループであるべきかを実行時に判定する表現と共に構成される。これは、トランザクション要求の内容を使用して、コリジョン・グループ名に合致する文字列値を導出する表現であり得る。
-実行時に、相異なるグループからの提案がMVCC障害を引き起こしているとブローカ構成要素が判定した場合、ブローカ構成要素がグループを動的に組み合わせることを可能にするようにフラグがセットされ得る。
実行時に、ブローカ構成要素は以下のプロセスを実装し得る。
-ブローカ構成要素に到着する各トランザクション要求について、コリジョン・グループ定義表現が評価され、どの名前のコリジョン・グループ内にトランザクション要求が配置されるべきかが判定される。その名前のコリジョン・グループが存在しない場合、その名前のコリジョン・グループが作成される。
-トランザクション要求が、そのコリジョン・グループに関連付けられるFIFOキュー内に配置される。
-次いで、各コリジョン・グループが以下のプロセスを(並列に、互いのコリジョン・グループに対して独立に)実装し得る。
-キューが空でない場合、トランザクション要求がキューのヘッドから除去される。
-従来のブロックチェーン・サブミット・プロセスのステップ1および2が、上記で詳述したように実施される。
-コミット・リスナがブロックチェーン・ピアに登録される。
-ブロックチェーン・サブミット・プロセスのステップ3が実施される。
-コミット・イベントを待機する。
-成功したコミット・イベントが受信されると、このプロセスは先頭から開始し得る(グループのキュー上の次の提案を処理する)。
-コミット・イベントがMVCC障害をシグナリングした場合、障害の原因を判定し、原因がMVCC障害である場合、他のどのトランザクション要求がクラッシュを引き起こしたか、および他のそのトランザクション要求が属するのはどのグループかを判定する。この情報はブロック・メタデータから抽出され得る。
-それが異なるグループである場合、2つのグループを1つにマージし、処理のために、このトランザクション要求を新しくマージしたグループに移動する。さらに、他のブローカ構成要素インスタンスがこの情報に対して作用することを選ぶことができるように、このグループ・マージの情報を含むメッセージを発行する。
-そうでない場合、このプロセスを反復することによって、障害が発生したトランザクション要求のサブミットを、それが首尾よく処理されるまで反復する(これは、この統合フローを介してではなく、直接的にトランザクションをサブミットする他のクライアント・アプリケーションがある場合、MVCC障害が依然として発生し得るからである)。
実施形態はコンピュータ・システム70を含み得、コンピュータ・システム70は、図4に示されるネットワーク化システム7の部分を形成し得る。たとえば、一実施形態による、アプリケーションとサーバとの間のトランザクション要求を制御するように構成されたブローカ構成要素が、コンピュータ・システム70内で(たとえば、処理装置71として)実装され得る。コンピュータ・システム/サーバ70の構成要素は、限定はしないが、たとえばプロセッサまたは処理装置71と、システム・メモリ74と、システム・メモリ74を含む様々なシステム構成要素を処理装置71に結合するバス90とを備える1つまたは複数の処理構成を含み得る。
システム・メモリ74は、ランダム・アクセス・メモリ(RAM)75またはキャッシュ・メモリ76あるいはその両方などの揮発性メモリの形態のコンピュータ・システム可読媒体を含み得る。コンピュータ・システム/サーバ70は、他の取外し可能/取外し不能な揮発性/不揮発性コンピュータ・システム記憶媒体をさらに含み得る。そのような場合、それぞれは、1つまたは複数のデータ媒体インターフェースによってバス90に接続され得る。メモリ74は、提案される実施形態の機能を実施するように構成されるプログラム・モジュールのセット(たとえば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含み得る。たとえば、メモリ74は、提案される実施形態による、アプリケーションとサーバとの間のトランザクション要求を制御するための方法を入力/出力(I/O)インターフェース72に実施させるように処理装置71によって実行可能なプログラムを有するコンピュータ・プログラム製品を含み得る。プログラム・モジュール79のセット(少なくとも1つ)を有するプログラム/ユーティリティ78が、メモリ74内に記憶され得る。プログラム・モジュール79は一般に、メモリに対する部分書込み操作のために、提案される実施形態の機能または方法あるいはその両方を実施する。
コンピュータ・システム/サーバ70はまた、キーボード、ポインティング・デバイス、ディスプレイ85などの1つまたは複数の外部デバイス80、ユーザがコンピュータ・システム/サーバ70と対話することを可能にする1つまたは複数のデバイス、またはコンピュータ・システム/サーバ70が1つまたは複数の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(たとえば、ネットワーク・カード、モデムなど)、あるいはその組合せと通信し得る。そのような通信は入力/出力(I/O)インターフェース72を介して行われ得る。さらに、コンピュータ・システム/サーバ70は、(たとえば、求めたDFWFの最適な値を分散型ネットワークのエッジ・デバイスに通信するために)ネットワーク・アダプタ73を介して、ローカル・エリア・ネットワーク(LAN)、一般の広域ネットワーク(WAN)、または公衆ネットワーク(たとえば、インターネット)、あるいはその組合せなどの1つまたは複数のネットワークと通信し得る。
本願の文脈では、本発明の実施形態が方法を構成する場合、そのような方法は、コンピュータによる実行のためのプロセス、すなわちコンピュータで実装可能な方法であることを理解されたい。したがって、方法のステップは、コンピュータ・プログラムの様々な部分、たとえば1つまたは複数のアルゴリズムの部分を反映する。
本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に記載の教示の実装はクラウド・コンピューティング環境に限定されないことをあらかじめ理解されたい。むしろ、本発明の実施形態は、現在知られている、または後に開発される任意の他のタイプのコンピューティング環境と共に実装され得る。
クラウド・コンピューティングは、最小限の管理労力またはサービスのプロバイダとの対話で迅速にプロビジョニングされ、解放され得る、構成可能なコンピューティング・リソース(たとえば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンド・ネットワーク・アクセスを可能にするためのサービス配信のモデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つの配置モデルを含み得る。
特徴は以下の通りである。
オンデマンド・セルフサービス:クラウド消費者は、サービスのプロバイダとの人間の対話を必要とすることなく、必要に応じて自動的に、サーバ時間やネットワーク・ストレージなどのコンピューティング機能を一方的にプロビジョニングし得る。
広範なネットワーク・アクセス:機能がネットワークを介して利用可能であり、異種シンまたはシック・クライアント・プラットフォーム(たとえば、携帯電話、ラップトップ、およびPDA)による使用を促進する標準機構を通じてアクセスされる。
リソース・プーリング:マルチ・テナント・モデルを使用して複数の消費者にサービスするためにプロバイダのコンピューティング・リソースがプールされ、異なる物理および仮想リソースが、要求に従って動的に割当ておよび再割当てされる。消費者は一般に、提供されるリソースの厳密な位置に関する制御または知識を有さないが、より高いレベルの抽象化(たとえば、国、州、またはデータセンタ)で位置を指定することができ得るという点で、ある意味で位置独立性がある。
迅速な弾力性:迅速にスケールアウトし、迅速に解放して迅速にスケールインするために、機能が、迅速かつ弾力的に、あるケースでは自動的にプロビジョニングされ得る。消費者にとって、プロビジョニングのために利用可能な機能はしばしば、無制限であり、いつでも任意の量を購入できるように見える。
測定サービス:クラウド・システムは、サービスのタイプにとって適切な何らかのレベルの抽象化(たとえば、ストレージ、処理、帯域幅、およびアクティブなユーザ・アカウント)の計量機能を活用することによってリソース使用量を自動的に制御し、最適化する。リソース使用量が監視され、制御され、レポートされ得、利用されるサービスのプロバイダと消費者の両方についての透明性が実現される。
サービス・モデルは以下の通りである。
Software as a Service(SaaS):消費者に提供される機能は、クラウド・インフラストラクチャ上で実行中のプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザ(たとえば、ウェブ・ベースのeメール)などのシン・クライアント・インターフェースを通じて、様々なクライアント・デバイスからアクセス可能である。消費者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、さらには個々のアプリケーション機能を含む、基礎となるクラウド・インフラストラクチャを管理または制御しないが、可能性のある例外は、限定されたユーザ特有のアプリケーション構成設定である。
Platform as a Service(PaaS):消費者に提供される機能は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、消費者が作成または取得したアプリケーションをクラウド・インフラストラクチャ上に配置することである。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む、基礎となるクラウド・インフラストラクチャを管理または制御しないが、配置されるアプリケーション、および場合によってはアプリケーション・ホスティング環境構成に関する制御を有する。
Infrastructure as a Service(IaaS):消費者に提供される機能は、処理、ストレージ、ネットワーク、および他の基本コンピューティング・リソースをプロビジョニングすることであり、消費者は、オペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを配置および実行することができる。消費者は、基礎となるクラウド・インフラストラクチャを管理または制御しないが、オペレーティング・システム、ストレージ、配置されるアプリケーションに関する制御、および場合によっては選択されたネットワーキング構成要素(たとえば、ホスト・ファイアウォール)の限定された制御を有する。
配置モデルは以下の通りである。
プライベート・クラウド:クラウド・インフラストラクチャが組織だけのために運用される。クラウド・インフラストラクチャは、組織または第3者によって管理され得、オンプレミスまたはオフプレミスで存在し得る。
コミュニティ・クラウド:クラウド・インフラストラクチャがいくつかの組織によって共有され、共有される関心事(たとえば、任務、セキュリティ要件、ポリシー、およびコンプライアンスの考慮事項)を有する特定のコミュニティをサポートする。クラウド・インフラストラクチャは、組織または第3者によって管理され得、オンプレミスまたはオフプレミスで存在し得る。
パブリック・クラウド:クラウド・インフラストラクチャが、一般社会または大規模な産業グループに対して利用可能にされ、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、固有のエンティティのままであるが、データおよびアプリケーション・ポータビリティを可能にする標準化技術または所有権を主張できる技術(たとえば、クラウド間のロード・バランシングのためのクラウド・バースティング)によって互いに結び付けられる2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の合成である。
クラウド・コンピューティング環境は、ステートレスネス(statelessness)、低結合、モジュラリティ、およびセマンティック相互運用性(semantic interoperability)に焦点を合わせることを指向するサービスである。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
本発明は、任意の可能な技術的詳細統合レベルのシステム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであり得る。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含み得る。
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持し、記憶し得る有形デバイスであり得る。コンピュータ可読記憶媒体は、たとえば、限定はしないが、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または前述の任意の適切な組合せであり得る。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュ・メモリ)、静的ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピィ・ディスク、命令が記録されたパンチ・カードや溝の中の隆起構造などの機械的に符号化されたデバイス、および前述の任意の適切な組合せが含まれる。本明細書では、コンピュータ可読記憶媒体は、電波または他の自由伝播電磁波、導波路または他の伝送媒体を通じて伝播する電磁波(たとえば、光ファイバ・ケーブルを通過する光パルス)、ワイヤを通じて伝送される電気信号など、本質的に一時的信号であると解釈されるべきではない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいはネットワーク、たとえばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくはワイヤレス・ネットワーク、またはその組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含み得る。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体内に記憶するためにコンピュータ可読プログラム命令を転送する。
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械語命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用の構成データ、あるいはSmalltalk、C++などのオブジェクト指向プログラミング言語と、「C」プログラミング言語や類似のプログラミング言語などの手続型プログラミング言語とを含む1つまたは複数のプログラミング言語の何らかの組合せで書かれたソース・コードまたはオブジェクト・コードであり得る。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、スタンド・アロン・ソフトウェア・パッケージとして部分的にユーザのコンピュータ上で、部分的にユーザのコンピュータ、および部分的にリモート・コンピュータ上で、または完全にリモート・コンピュータもしくはサーバ上で実行され得る。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続され得、または接続が外部コンピュータに対して(たとえば、インターネット・サービス・プロバイダを使用してインターネットを通じて)行われ得る。いくつかの実施形態では、たとえばプログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル論理アレイ(PLA)を含む電子回路が、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別化することによってコンピュータ可読プログラム命令を実行し得る。
本発明の態様が、本開示の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して本明細書で説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方の中のブロックの組合せが、コンピュータ可読プログラム命令によって実装され得ることを理解されよう。
こうしたコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行される命令により、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定される機能/動作を実装するための手段を生み出すように、コンピュータまたは他のプログラム可能データ処理装置のプロセッサに与えられ、マシンが作り出され得る。こうしたコンピュータ可読プログラム命令はまた、命令を記憶するコンピュータ可読記憶媒体がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定される機能/動作の態様を実装する命令を含む製造品を含むように、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するように指示し得るコンピュータ可読記憶媒体内に記憶され得る。
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定される機能/動作を実装するように、コンピュータ、他のプログラム可能データ処理装置、または他のデバイス上にロードされ、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実施させて、コンピュータ実装プロセスが生成され得る。
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。この点で、フローチャートまたはブロック図の各ブロックは、指定の論理的機能を実装するための1つまたは複数の実行可能命令を含む命令のモジュール、セグメント、または部分を表し得る。いくつかの代替実装では、ブロック内に記載の機能は、図に記載されている以外の順序で行われ得る。たとえば、連続して示される2つのブロックは、実際には、1つのステップとして実施され、部分的または全体的に時間的に重複する方式で、同時に、ほぼ同時に実行され得、またはブロックは、関係する機能に応じて、時には逆の順序で実行され得る。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方のブロックの組合せが、指定の機能または動作を実施し、あるいは専用ハードウェアおよびコンピュータ命令の組合せを実施する専用ハードウェア・ベースのシステムによって実装され得ることにも留意されよう。
本発明の様々な実施形態の説明が例示のために提示されたが、説明は網羅的なものではなく、開示される実施形態に限定されないものとする。記載の実施形態の範囲および思想から逸脱することなく、多くの修正形態および変形形態が当業者には明らかであろう。本明細書で用いられた用語は、実施形態の原理、実際の応用、または市場で見出される技術に勝る技術的改良を最良に説明するように、または当業者が本明細書で開示される実施形態を理解することを可能にするように選ばれた。

Claims (20)

  1. アプリケーションとサーバとの間のトランザクション要求を制御するためのミドルウェア・コンピュータ・システムであって、
    ブローカ構成要素であって、実行時に、
    以前または現在の観測されたトランザクション・コリジョンに基づいて、トランザクション要求の1つまたは複数のコリジョン・グループを定義し、
    前記1つまたは複数のコリジョン・グループに基づいて、並列のトランザクション要求の送達を制御する
    ように構成された、前記ブローカ構成要素
    を備えるミドルウェア・コンピュータ・システム。
  2. 前記1つまたは複数のコリジョン・グループのそれぞれが、並列に送達されることに応答してトランザクション・コリジョンが生じる複数のトランザクション要求を定義する、請求項1に記載のミドルウェア・コンピュータ・システム。
  3. 前記ブローカ構成要素が、1つまたは複数のリモート構成要素に前記1つまたは複数のコリジョン・グループについての情報を通信するように構成されたパブリッシャ構成要素を備える、請求項1に記載のミドルウェア・コンピュータ・システム。
  4. 前記ブローカ構成要素が、
    観測されたトランザクション・コリジョンと、
    リモート構成要素からのトランザクション要求の別のコリジョン・グループ
    のうちの少なくとも1つについての情報を受信するように構成されたレシーバ構成要素を備え、前記ブローカ構成要素が、実行時に、受信した情報にさらに基づいてトランザクション要求の1つまたは複数のコリジョン・グループを定義するように構成される、請求項1に記載のミドルウェア・コンピュータ・システム。
  5. 前記ブローカ構成要素が、前記1つまたは複数のコリジョン・グループのうちの同一のコリジョン・グループのメンバである複数のトランザクション要求を識別したことに応答して、前記複数のトランザクション要求の並列送達を防止するように、前記複数のトランザクション要求を待ち行列化するように構成される、請求項1に記載のミドルウェア・コンピュータ・システム。
  6. 前記ブローカ構成要素が、前記複数のトランザクション要求を先入れ先出し順に待ち行列化するように構成される、請求項5に記載のミドルウェア・コンピュータ・システム。
  7. 前記ブローカ構成要素が、トランザクション要求の送達の結果として生じるトランザクション・コリジョンを識別することに応答して、識別したトランザクション・コリジョンに基づいてトランザクション要求の前記1つまたは複数のコリジョン・グループを再定義し、再定義した1つまたは複数のコリジョン・グループに基づいて前記トランザクション要求の再送達を制御するように構成される、請求項1に記載のミドルウェア・コンピュータ・システム。
  8. 前記ミドルウェア・システムが、クライアント・アプリケーションとマルチバージョン・コンカレンシー・コントロール(MVCC)制約付きサーバとの間のトランザクション要求の送達を傍受および制御するように構成される、請求項1に記載のミドルウェア・コンピュータ・システム。
  9. アプリケーションとサーバとの間のトランザクション要求を制御するためのプロセッサ実装方法であって、
    実行時に、以前または現在の観測されたトランザクション・コリジョンに基づいて、トランザクション要求の1つまたは複数のコリジョン・グループを定義することと、
    前記1つまたは複数のコリジョン・グループに基づいて、並列のトランザクション要求の送達を制御することと
    を含む方法。
  10. 前記1つまたは複数のコリジョン・グループのそれぞれが、並列に送達されることに応答してトランザクション・コリジョンが生じる複数のトランザクション要求を定義する、請求項9に記載の方法。
  11. 1つまたは複数のリモート構成要素に前記1つまたは複数のコリジョン・グループについての情報を通信すること
    をさらに含む、請求項9に記載の方法。
  12. 観測されたトランザクション・コリジョンと、リモート構成要素からのトランザクション要求の別のコリジョン・グループのうちの少なくとも1つについての情報を受信すること
    をさらに含み、
    トランザクション要求の1つまたは複数のコリジョン・グループを定義することが、受信した情報にさらに基づく、請求項9に記載の方法。
  13. 前記1つまたは複数のコリジョン・グループのうちの同一のコリジョン・グループのメンバである複数のトランザクション要求を識別することに応答して、前記複数のトランザクション要求の並列送達を防止するように、前記複数のトランザクション要求を待ち行列化すること
    をさらに含む、請求項9に記載の方法。
  14. 前記複数のトランザクション要求を待ち行列化することが、前記複数のトランザクション要求を先入れ先出し順に待ち行列化することを含む、請求項13に記載の方法。
  15. トランザクション要求の送達の結果として生じるトランザクション・コリジョンを識別したことに応答して、識別したトランザクション・コリジョンに基づいて、トランザクション要求の前記1つまたは複数のコリジョン・グループを再定義することと、
    再定義した1つまたは複数のコリジョン・グループに基づいて、前記トランザクション要求の再送達を制御することと
    をさらに含む、請求項9に記載の方法。
  16. クライアント・アプリケーションとマルチバージョン・コンカレンシー・コントロール(MVCC)制約付きサーバとの間のトランザクション要求の送達を傍受および制御するように構成される、請求項9に記載の方法。
  17. プログラム命令が実施されたコンピュータ可読有形記憶媒体を含むコンピュータ・プログラム製品であって、前記プログラム命令が、コンピュータ・ネットワーク上で実行されるときに、アプリケーションとサーバとの間のトランザクション要求を制御するための方法を処理装置に実施させるように前記処理装置によって実行可能であり、前記方法が、
    実行時に、以前または現在の観測されたトランザクション・コリジョンに基づいて、トランザクション要求の1つまたは複数のコリジョン・グループを定義するステップと、
    前記1つまたは複数のコリジョン・グループに基づいて、並列のトランザクション要求の送達を制御するステップと
    を含む、コンピュータ・プログラム製品。
  18. 少なくとも1つのプロセッサと、請求項17に記載のコンピュータ・プログラム製品とを備えるコンピュータ・システムであって、前記少なくとも1つのプロセッサが、前記コンピュータ・プログラム製品の前記コンピュータ・プログラム・コードを実行するように適合される、コンピュータ・システム。
  19. 前記1つまたは複数のコリジョン・グループのそれぞれが、並列に送達されることに応答してトランザクション・コリジョンが生じる複数のトランザクション要求を定義する、請求項17に記載のコンピュータ・プログラム製品。
  20. 1つまたは複数のリモート構成要素に前記1つまたは複数のコリジョン・グループについての情報を通信すること
    をさらに含む、請求項17に記載のコンピュータ・プログラム製品。
JP2022534861A 2019-12-10 2020-12-04 アプリケーションとサーバとの間のトランザクション要求の制御 Pending JP2023505544A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/708,575 2019-12-10
US16/708,575 US11082527B2 (en) 2019-12-10 2019-12-10 Controlling transaction requests between applications and servers
PCT/IB2020/061526 WO2021116860A1 (en) 2019-12-10 2020-12-04 Controlling transaction requests between applications and servers

Publications (1)

Publication Number Publication Date
JP2023505544A true JP2023505544A (ja) 2023-02-09

Family

ID=76210435

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022534861A Pending JP2023505544A (ja) 2019-12-10 2020-12-04 アプリケーションとサーバとの間のトランザクション要求の制御

Country Status (8)

Country Link
US (1) US11082527B2 (ja)
JP (1) JP2023505544A (ja)
KR (1) KR102692099B1 (ja)
CN (1) CN114730305A (ja)
AU (1) AU2020399282B2 (ja)
DE (1) DE112020006047T5 (ja)
GB (1) GB2605549B (ja)
WO (1) WO2021116860A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
CN113518384B (zh) * 2021-07-29 2023-12-01 中移(杭州)信息技术有限公司 分布式事务处理方法、装置、设备及计算机可读存储介质
US11968280B1 (en) * 2021-11-24 2024-04-23 Amazon Technologies, Inc. Controlling ingestion of streaming data to serverless function executions
US12015603B2 (en) 2021-12-10 2024-06-18 Amazon Technologies, Inc. Multi-tenant mode for serverless code execution

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7433950B2 (en) * 2003-12-04 2008-10-07 International Business Machines Corporation Method and mechanism to multiplex multiple application server requests over a single database connection
KR100683172B1 (ko) 2005-02-14 2007-02-15 삼성전기주식회사 그룹 상황 정보 관리를 위한 추상적 서비스의 의미를 이용한 응용 프로그램간의 충돌 제어 방법 및 그 시스템
WO2007113543A1 (en) 2006-04-03 2007-10-11 British Telecommunications Public Limited Company Conflict handler
US7917912B2 (en) 2007-03-27 2011-03-29 International Business Machines Corporation Filtering application messages in a high speed, low latency data communications environment
US10067969B2 (en) 2015-05-29 2018-09-04 Nuodb, Inc. Table partitioning within distributed database systems
US10331657B1 (en) 2015-09-28 2019-06-25 Amazon Technologies, Inc. Contention analysis for journal-based databases
US9870367B2 (en) * 2016-01-04 2018-01-16 Acronis International Gmbh System and method of using data blocks to optimize file storage
US11321299B2 (en) 2016-02-01 2022-05-03 Verizon Patent And Licensing Inc. Scalable conflict detection in transaction management
US10810165B2 (en) * 2016-10-07 2020-10-20 Electronics And Telecommunications Research Institute Distributed storage server, server device included therein, and method of operating server device
US10346386B2 (en) 2016-11-04 2019-07-09 Salesforce.Com, Inc. Multiversion concurrency control of database records with uncommitted transactions
WO2018137277A1 (zh) * 2017-01-24 2018-08-02 华为技术有限公司 一种交易处理方法及终端
US20180322158A1 (en) 2017-05-02 2018-11-08 Hewlett Packard Enterprise Development Lp Changing concurrency control modes
CN109493223B (zh) 2018-11-07 2021-12-21 联动优势科技有限公司 一种记账方法及装置

Also Published As

Publication number Publication date
DE112020006047T5 (de) 2023-02-02
CN114730305A (zh) 2022-07-08
AU2020399282B2 (en) 2023-08-31
GB202209838D0 (en) 2022-08-17
US11082527B2 (en) 2021-08-03
US20210176333A1 (en) 2021-06-10
GB2605549A (en) 2022-10-05
GB2605549B (en) 2023-04-05
KR102692099B1 (ko) 2024-08-05
AU2020399282A1 (en) 2022-03-24
WO2021116860A1 (en) 2021-06-17
KR20220035960A (ko) 2022-03-22

Similar Documents

Publication Publication Date Title
JP7210713B2 (ja) オンデマンドコード実行システムにおける実行環境についての効率的な状態メンテナンス
EP3198419B1 (en) Managing change events for devices in an enterprise system
JP2023505544A (ja) アプリケーションとサーバとの間のトランザクション要求の制御
US10833935B2 (en) Synchronizing network configuration in a multi-tenant network
US9148426B2 (en) Securely identifying host systems
US9928125B1 (en) Message queueing in middleware by a message broker
US10805228B2 (en) Injection of information technology management process into resource request flows
US20200278975A1 (en) Searching data on a synchronization data stream
US11144213B2 (en) Providing preferential access to a metadata track in two track writes
US9473565B2 (en) Data transmission for transaction processing in a networked environment
US20230055511A1 (en) Optimizing clustered filesystem lock ordering in multi-gateway supported hybrid cloud environment
US9509641B1 (en) Message transmission for distributed computing systems
US11792289B2 (en) Live socket redirection
US11762708B2 (en) Decentralized resource scheduling
JP2024500420A (ja) スケーラブルアプリケーションにおいて行われる要求を調整すること
US20150213124A1 (en) Continuously blocking query result data for a remote query
US11526490B1 (en) Database log performance
US11741063B2 (en) Deleting and inserting rows in fully homomorphically encrypted databases using queues
US10884832B2 (en) Aggregation messaging within an integration environment
US10831571B2 (en) Communicating between systems using a coupling facility list structure

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221214

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230525

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240617

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240625

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20240903

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240909