JP2018531439A6 - トランザクション処理環境において分散型キャッシングを提供するためのシステムおよび方法 - Google Patents
トランザクション処理環境において分散型キャッシングを提供するためのシステムおよび方法 Download PDFInfo
- Publication number
- JP2018531439A6 JP2018531439A6 JP2017558432A JP2017558432A JP2018531439A6 JP 2018531439 A6 JP2018531439 A6 JP 2018531439A6 JP 2017558432 A JP2017558432 A JP 2017558432A JP 2017558432 A JP2017558432 A JP 2017558432A JP 2018531439 A6 JP2018531439 A6 JP 2018531439A6
- Authority
- JP
- Japan
- Prior art keywords
- caching
- cache
- data
- distributed
- layer
- 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.)
- Granted
Links
- 239000002365 multiple layer Substances 0.000 claims abstract description 3
- 239000010410 layer Substances 0.000 claims description 132
- UIIMBOGNXHQVGW-UHFFFAOYSA-M buffer Substances [Na+].OC([O-])=O UIIMBOGNXHQVGW-UHFFFAOYSA-M 0.000 claims description 83
- 238000000034 method Methods 0.000 claims description 16
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 230000001419 dependent Effects 0.000 claims description 4
- 241000677635 Tuxedo Species 0.000 description 26
- 239000008186 active pharmaceutical agent Substances 0.000 description 11
- 230000000875 corresponding Effects 0.000 description 7
- 230000006399 behavior Effects 0.000 description 5
- 229940024175 FML Drugs 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 230000003287 optical Effects 0.000 description 2
- JLUFWMXJHAVVNN-UHFFFAOYSA-N Methyltrichlorosilane Chemical compound C[Si](Cl)(Cl)Cl JLUFWMXJHAVVNN-UHFFFAOYSA-N 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000002708 enhancing Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006011 modification reaction Methods 0.000 description 1
- 230000002104 routine Effects 0.000 description 1
- FAPWRFPIFSIZLT-UHFFFAOYSA-M sodium chloride Chemical compound [Na+].[Cl-] FAPWRFPIFSIZLT-UHFFFAOYSA-M 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Abstract
一実施形態に従うと、トランザクション処理環境において分散型キャッシングを提供するためのシステムおよび方法がこの明細書中に記載される。キャッシングシステムは、複数のデータタイプについてのキャッシング特徴を提供する複数の層を含み得るとともに、複数のキャッシングプロバイダで使用されるように構成され得る。共通のデータ構造は、各データタイプのシリアライズされたバイトとキャッシュ設定アプリケーションを実行するソースプラットフォームのアーキテクチャ情報とを格納するために提供することができ、これにより、キャッシュ入手アプリケーションは、当該情報を用いて、シリアライズされたバイトをローカルフォーマットに変換することができる。プロキシサーバは分散型インメモリ・グリッドに対するクライアントとして機能するように設け得るとともに、キャッシング・クライアントに対するサービスをアドバタイズし得る。各々のアドバタイズされたサービスは、Coherenceなどの分散型インメモリ・データグリッドにおけるキャッシュと一致し得る。キャッシングシステムは、サービスから得られる結果をキャッシュするために用いることができる。
Description
発明の分野:
本発明の実施形態は、概して、アプリケーションサーバおよびクラウド環境に関し、特に、トランザクション処理環境において分散型キャッシングを提供するためのシステムおよび方法に関する。
本発明の実施形態は、概して、アプリケーションサーバおよびクラウド環境に関し、特に、トランザクション処理環境において分散型キャッシングを提供するためのシステムおよび方法に関する。
背景:
Tuxedo(登録商標)サーバ環境などのトランザクション処理環境においては、性能を向上させるためのユーザ関連データまたはアプリケーションデータをキャッシュする分散型キャッシングシステムは難易度の高いものになる可能性がある。なぜなら、クライアントプロセスとサーバプロセスとの間でデータを送信するのに複数のデータタイプを用いることができ、このため、さまざまな顧客が別々のキャッシングソリューションを選ぶ可能性があるからである。これらは、本発明の実施形態が対処するように意図される分野である。
Tuxedo(登録商標)サーバ環境などのトランザクション処理環境においては、性能を向上させるためのユーザ関連データまたはアプリケーションデータをキャッシュする分散型キャッシングシステムは難易度の高いものになる可能性がある。なぜなら、クライアントプロセスとサーバプロセスとの間でデータを送信するのに複数のデータタイプを用いることができ、このため、さまざまな顧客が別々のキャッシングソリューションを選ぶ可能性があるからである。これらは、本発明の実施形態が対処するように意図される分野である。
概要:
一実施形態に従うと、トランザクション処理環境において分散型キャッシングを提供するためのシステムおよび方法がこの明細書中に記載される。最上層は、キャッシングシステムと対話するためにクライアントをキャッシュすることによってアプリケーションプログラミングインターフェイス(application programming interface:API)をエクスポーズして使用できるようにすることができ、複数のバッファタイプと、各バッファタイプに対する1つ以上のコールバック機能とを登録することができる。共通のキャッシング層は共通のデータ構造をサポートすることができ、最上層からキャッシング要求を受取ったとき、そこにあるコールバック機能を用いて、キャッシング要求に関連付けられた特定のバッファタイプと共通のデータ構造との間で変換を行なうことができる。共通のキャッシング層は、キャッシング関連のAPIを提供するために1組の共通のAPIを定義することができるとともに、キーおよび値データのシリアライゼーション/デシリアライゼーションなどの複数のインプリメンテーションについての共通の挙動を定義することができる。プロバイダスイッチおよび関連するAPIを用いて、インプリメンテーション層からプロバイダスイッチの特定のインプリメンテーションをロードすることができる。プロバイダスイッチは、特定のキャッシングプロバイダによって提供されるキャッシング動作を指し示すポインタを含み得る。構成ファイルは、データコーディングと、キャッシングシステムのためにどのキャッシングプロバイダを使用するべきかとを指定するのに用いることができる。
一実施形態に従うと、トランザクション処理環境において分散型キャッシングを提供するためのシステムおよび方法がこの明細書中に記載される。最上層は、キャッシングシステムと対話するためにクライアントをキャッシュすることによってアプリケーションプログラミングインターフェイス(application programming interface:API)をエクスポーズして使用できるようにすることができ、複数のバッファタイプと、各バッファタイプに対する1つ以上のコールバック機能とを登録することができる。共通のキャッシング層は共通のデータ構造をサポートすることができ、最上層からキャッシング要求を受取ったとき、そこにあるコールバック機能を用いて、キャッシング要求に関連付けられた特定のバッファタイプと共通のデータ構造との間で変換を行なうことができる。共通のキャッシング層は、キャッシング関連のAPIを提供するために1組の共通のAPIを定義することができるとともに、キーおよび値データのシリアライゼーション/デシリアライゼーションなどの複数のインプリメンテーションについての共通の挙動を定義することができる。プロバイダスイッチおよび関連するAPIを用いて、インプリメンテーション層からプロバイダスイッチの特定のインプリメンテーションをロードすることができる。プロバイダスイッチは、特定のキャッシングプロバイダによって提供されるキャッシング動作を指し示すポインタを含み得る。構成ファイルは、データコーディングと、キャッシングシステムのためにどのキャッシングプロバイダを使用するべきかとを指定するのに用いることができる。
一実施形態に従うと、分散型キャッシングシステムによって使用されるデータシリアライゼーションをサポートするためのシステムおよび方法がこの明細書中に記載される。データシリアライゼーションシステムは共通のデータ構造を含み得る。共通のデータ構造は、複数のデータタイプのシリアライズされたストリーム/バイトを格納するために用いることができる。データ構造は、キャッシュセッターのアーキテクチャを記述する情報を含むヘッダを含み得る。異なるアーキテクチャ上で使用するために、キャッシュされたデータを検索する場合、ヘッダ内のアーキテクチャ情報を用いて、データを、その異なるアーキテクチャ上で使用できるように変換することができる。キャッシュされたデータが同じアーキテクチャ上で検索される場合、キャッシュされたデータを変換することなく用いることができる。データ構造は、付加的に、メモリを効率的に使用できるようにするために可変長をもつボディ、後方互換性についてのバージョン情報、および、拡張用のオプション特徴のためのフィールドを含み得る。
一実施形態に従うと、分散型インメモリ・データグリッド(たとえば、Coherence)を、キャッシングプロバイダとしての分散型キャッシングシステムに統合するためのシステムおよび方法がこの明細書中に記載される。分散型キャッシングシステムにおけるプロキシサーバは、分散型インメモリ・データグリッドに対するクライアントとしての役割を果たし得るとともに、IDCクライアントから転送されたキャッシング要求を受取り得る。起動時に、プロキシサーバは、キャッシング・システム・キャッシュを定義する構成ファイルと、分散型インメモリ・データグリッドキャッシュにキャッシュするマップとをロードし、キャッシング・システム・キャッシュの名前を用いてサービスをアドバタイズすることができる。要求されたサービスを指定するキャッシング要求をキャッシング・クライアントから受取ると、プロキシサーバは、要求されたサービスに基づいてアクセスするために、分散型インメモリ・データグリッドにおける対応するキャッシュを決定することができる。
一実施形態に従うと、トランザクション処理環境において分散型キャッシングシステムを用いて、サービスから戻された結果をキャッシュするためのシステムおよび方法がこの明細書中に記載される。構成ファイルは、サービスから戻された結果をキャッシュするのにどのキャッシュを用いるべきかと、キャッシュされた結果を識別する際に使用されるキーを如何に生成するかとを記述するエントリを含むキャッシングセクションを含み得る。サービスについての要求がクライアントから受取られると、トランザクション処理環境のアプリケーションサーバコアは、関連するキャッシュされたデータが、構成ファイルを用いて生成されたキーによって識別されるキャッシュに存在しているかどうかを判断することができる。存在している場合、アプリケーションサーバコアは、サービスを呼出す代わりに、キャッシュされたデータを直接戻すことができる。他の場合、アプリケーションサーバコアは、サービスを呼出し、生成されたキーを用いて、構成ファイルによって指定されたキャッシュにデータをキャッシュし、クライアントに結果を戻すことができる。
詳細な説明:
トランザクション処理環境(たとえば、Tuxedoサーバ環境)においては、メッセージが1つのプロセスから別のプロセスに送信可能になる前にバッファが割当てられる必要がある。このような環境における複雑なアプリケーションは、さまざまなプロトコルを用いて複数のネットワークを介して通信する異種システムにインストールすることができる。そのため、異なるタイプのバッファが必要となり、各々のバッファタイプは、メッセージを初期化し、送信し、受信し、かつデータを符号化し、復号化するためのさまざまなルーチンを必要とする。
トランザクション処理環境(たとえば、Tuxedoサーバ環境)においては、メッセージが1つのプロセスから別のプロセスに送信可能になる前にバッファが割当てられる必要がある。このような環境における複雑なアプリケーションは、さまざまなプロトコルを用いて複数のネットワークを介して通信する異種システムにインストールすることができる。そのため、異なるタイプのバッファが必要となり、各々のバッファタイプは、メッセージを初期化し、送信し、受信し、かつデータを符号化し、復号化するためのさまざまなルーチンを必要とする。
典型的には、ユーザ(たとえば、アプリケーション開発者)が性能向上のために分散型キャッシングシステムに型付きバッファをキャッシュする場合、ユーザは、特定の型付きバッファ用にカスタマイズされたコードを書込む必要がある。さらに、アプリケーションの開発が完成した後に異なるキャッシングプロバイダが用いられる場合、キャッシングプロバイダの変更に対応するために、コードを付加的に変更する必要がある。
分散型キャッシングシステム
一実施形態に従うと、トランザクション処理環境において分散型キャッシングを提供するためのシステムおよび方法がこの明細書中に記載される。最上層は、キャッシングシステムと対話させるためにクライアントをキャッシュすることによってアプリケーションプログラミングインターフェイス(API)をエクスポーズして使用できるようにすることができ、複数のバッファタイプと、各バッファタイプに対する1つ以上のコールバック機能とを登録することができる。共通のキャッシング層は、共通のデータ構造をサポートすることができ、最上層からキャッシング要求を受取ると、そこにあるコールバック機能を用いて、キャッシング要求に関連付けられた特定のバッファタイプと共通のデータ構造との間で変換を行なうことができる。共通のキャッシング層は、キャッシング関連のAPIを提供するために1組の共通のAPIを定義し、キーおよび値データのシリアライゼーション/デシリアライゼーションなどの複数のインプリメンテーションについての共通の挙動を定義することができる。プロバイダスイッチおよび関連するAPIを用いて、インプリメンテーション層からプロバイダスイッチの特定のインプリメンテーションをロードすることができる。プロバイダスイッチは、特定のキャッシングプロバイダによって提供されるキャッシング動作を指し示すポインタを含み得る。構成ファイルは、データコーディングと、キャッシングシステムのためにどのキャッシングプロバイダを使用するべきかとを指定するのに用いることができる。
一実施形態に従うと、トランザクション処理環境において分散型キャッシングを提供するためのシステムおよび方法がこの明細書中に記載される。最上層は、キャッシングシステムと対話させるためにクライアントをキャッシュすることによってアプリケーションプログラミングインターフェイス(API)をエクスポーズして使用できるようにすることができ、複数のバッファタイプと、各バッファタイプに対する1つ以上のコールバック機能とを登録することができる。共通のキャッシング層は、共通のデータ構造をサポートすることができ、最上層からキャッシング要求を受取ると、そこにあるコールバック機能を用いて、キャッシング要求に関連付けられた特定のバッファタイプと共通のデータ構造との間で変換を行なうことができる。共通のキャッシング層は、キャッシング関連のAPIを提供するために1組の共通のAPIを定義し、キーおよび値データのシリアライゼーション/デシリアライゼーションなどの複数のインプリメンテーションについての共通の挙動を定義することができる。プロバイダスイッチおよび関連するAPIを用いて、インプリメンテーション層からプロバイダスイッチの特定のインプリメンテーションをロードすることができる。プロバイダスイッチは、特定のキャッシングプロバイダによって提供されるキャッシング動作を指し示すポインタを含み得る。構成ファイルは、データコーディングと、キャッシングシステムのためにどのキャッシングプロバイダを使用するべきかとを指定するのに用いることができる。
階層化されたキャッシングシステムは、ユーザと下層のキャッシングプロバイダとの間を分離させることができ、これにより、システムが使いやすくなり、その拡張が容易になる。
たとえば、キャッシングシステムは、複数のキャッシングプロバイダとともに用いることができ、ユーザのアプリケーションを変更する必要なしに、複数のデータタイプをキャッシュすることができる。開発者がどんなバッファタイプをキャッシュする必要があるかどうかにかかわらず、かつ、そのキャッシングシステムのためにどのキャッシングプロバイダが構成されるべきであるかにかかわらず、ユーザは、同じセットのAPIを用いてキャッシング動作を実行することができる。
一実施形態に従うと、分散型キャッシングシステムは、アクセス回数および更新回数を減らすことができ、各々がキーによって識別されている複数のタイプのバッファをキャッシュすることができ、複製アクセス、非複製アクセス、ローカルアクセスおよびリモートアクセスを提供することができる。
図1は、一実施形態に従った、トランザクション処理環境において使用される分散型キャッシングを提供するためのシステムを示す。
図1に示されるように、分散型キャッシングシステム105は、キャッシュにデータを格納する(106)かまたはキャッシュからデータを検索する(107)ために、キャッシング・クライアント(たとえば、Tuxedoクライアントまたはサーバ)101によって使用されるトランザクション処理システム(たとえば、Tuxedoサーバ環境)100において、提供され得る。
図1においてさらに示されるように、分散型キャッシングシステムは、複数の層、たとえば、バッファベースの分散型キャッシング(buffer-based distributed caching:BDC)層109、共通の分散型キャッシング(common distributed caching:CDC)層125、分散型キャッシングのインプリメンテーション(implementation of distributed caching:IDC)層141、および、従属型サードパーティベンダー(dependent third-party vendor:DTV)層149を含み得る。構成ファイル103は、BDC層、CDC層およびIDC層の挙動を定義するために用いることができる。
一実施形態に従うと、BCD層は、キャッシング・クライアントに対する最上層であり、複数の型付きバッファを処理することができ、型付きバッファをCDCによってサポートされる共通の型付きバッファに変換した後、キャッシング・クライアントからCDC層にキャッシング要件を転送することができる。最上層の主要な機能は、さまざまな型付きバッファのシリアライゼーションおよびデシリアライゼーションである。
図1においてさらに示されるように、BDC層は、キャッシングシステムと通信するためにキャッシング・クライアントによって使用される1組の外部API121をエクスポーズすることができる。たとえば、外部APIは、データをキャッシュするかまたはデータをキャッシュから検索するために、アプリケーションにおいて直接用いることができる。
以下の表1は、一実施形態に従った外部APIの例示的なインターフェイスのリストを示す。
表1に示されるように、一実施形態に従うと、外部APIは、キャッシュに対するハンドルを取得し、キャッシュにバッファを入れ、バッファをキーに関連付け、バッファをキャッシュから削除して検索する際にアプリケーションが使用するべき方法を含み得る。
たとえば、ユーザは、Tuxedoキャッシュハンドルを得るために方法「tpgetcache」を用いることができる。方法のパラメータ「名」は、取得すべきキャッシュのタイプを指定することができる。方法についての戻された結果は、構造名TCACHEを指し示すポインタであり得る。「tpcacheput/tpcacheget」はデータをキャッシュに入れる/キャッシュから入手するために用いることができる。「tpcacheremove/tpcachemremove/tpcacheremoveall」は、キャッシュからアイテムを削除するために用いることができる。
一実施形態に従うと、BDC層は、キャッシングシステムにおいてキャッシュすることができるデータタイプとして複数の型付きバッファ130を登録することができる。たとえば、複数の型付きバッファは、ストリング(一連の文字)、carray(文字配列)、ptr(バッファを指すポインタ)、FML型付きバッファおよびVIEW型バッファを含み得る。他のデータタイプも、それらのデータタイプがBDC層に登録されていれば、キャッシングのためにサポートされ得る。
図1に示されるように、各々の登録された型付きバッファは、型付きバッファを記述するメタデータ(たとえば、型付きバッファメタデータ132)と、符号化および暗号化ならびにシリアライゼーションおよびデシリアライゼーションを含むバッファ上での複数の動作を定義する1つ以上のコールバック機能131と、に関連付けることができる。
一実施形態に従うと、BDC層は、各々の登録されたデータタイプ毎に、メタデータおよびコールバック機能を提供するスイッチ(データ構造)を含み得る。
以下のリスト1は、一実施形態に従った例示的なスイッチを示す。
リスト1に示されるように、スイッチは、バッファのタイプ、サブタイプおよびサイズ、シリアライゼーション動作「presend」および「presend2」、デシリアライゼーション動作「postrecv」、ならびに符号化/暗号化動作「encdec」を記述するメタデータを含み得る。
一実施形態に従うと、CDC層は、キャッシング関連のAPIを提供するために1組の共通のAPI(たとえば、キャッシングAPI127)を含み得るとともに、名前/キー値ペアを含むデータのシリアライゼーション/デシリアライゼーションなどの複数のインプリメンテーションについての共通の挙動を定義し得る。CDC層は、シリアライゼーション/デシリアライゼーションのインプリメンテーションのためのコールバック登録をサポートすることによって、複数のタイプのデータをシリアライズ/デシリアライズすることができる。
一実施形態に従うと、共通のデータ構造(たとえば、共通の型付きバッファ)133は、キャッシュされるべき型付きバッファのシリアライズされたバイトを格納するために、CDC層によってサポートすることができる。BDC層に登録される登録済みの型付きバッファまたは他のデータタイプの各々は、シリアライズされ、共通のデータ構造に格納され得る。
一実施形態に従うと、CDC層は実際のキャッシング動作を実行せず、必要なインターフェイスを定義する。これらのインターフェイスは、キャッシング動作の特定のインプリメンテーションに依拠しない。構成に基づいて、これらのインターフェイスの特定のインプリメンテーションは、IDC層から動的にロードすることができる。
一実施形態に従うと、キャッシングプロバイダスイッチ143および特定の方法はCDC層に提供されて、プロバイダスイッチの特定のインプリメンテーションを検索するのに使用され得る。プロバイダスイッチは、キャッシングプロバイダによって提供されるキャッシング動作を指し示す複数のポインタを含み得る。プロバイダスイッチの各インプリメンテーションのロードは、BDC層からのキャッシング要求に応じて、キャッシングAPIによって開始され得る(128)。以下のリスト2は、一実施形態に従った例示的なプロバイダスイッチを示す。
リスト2に示されるように、プロバイダスイッチは、「入れる(put)」、「入手する(get)」および「削除する(remove)」などのキャッシング動作を示すポインタを含み得る。方法「TMTDCGetCachingProviderSW」は、構成ファイルによって定義されるように、キャッシングインターフェイスの特定のインプリメンテーションを検索するために用いられる特定の方法である。
再び図1を参照すると、IDC層は、実際のキャッシング動作を提供することができ、各キャッシングプロバイダ毎にクライアントおよびサーバを含み得る。上述のとおり、各々のクライアントは、プロバイダスイッチのインプリメンテーションであってもよく、CDC層によって使用されるべく提供することができる。クライアントは、1つ以上のダイナミックライブラリによって提供することができ、このため、クライアントの各々を動的にCDC層にロードすることができる。サーバは、実際のキャッシングサーバまたはプロバイダとしてサードパーティアプリケーションを用いることができる。各々のキャッシングプロバイダは、それ自体のIDCインプリメンテーションを有することができ、これにより、ユーザが、アプリケーションコード変更のない構成によってIDCインプリメンテーションを変更することが可能となる。
一実施形態に従うと、DTV層は、複数のサードパーティキャッシングプロバイダ(たとえば、CoherenceおよびCloudStore)を含み得る。
一実施形態に従うと、BDC層およびCDC層は、トランザクション処理環境に対するクライアントアプリケーションとそこにあるサーバ(たとえば、TuxedoクライアントおよびTuxedoサーバ)との両方に存在し得るとともに、IDC層およびDTV層はサーバ上にのみ存在し得る。
一実施形態に従うと、構成ファイルは単純な行指向型フォーマットのファイルであり得る。構成ファイルにおけるプロパティは、行の観点から処理することができるため、新しく導入されたプロパティがファイルのローディングプロセスに影響を与えることはない。表2は、構成ファイルにおけるプロパティのサンプルリストを示す。
一実施形態に従うと、階層化されたキャッシングシステムは、ユーザと下層にあるキャッシングプロバイダとの間を分離し得るとともに、ユーザがシステム上でキャッシング動作を実行するために同じセットのインターフェイスを用いることを可能にし得る。
具体例として、BDC層が型付きバッファをキャッシュするようにとのキャッシング要求をキャッシング・クライアントから受取ると、BDC層は、CDC層にキャッシング要求を転送する(123)ことができ、これにより、型付きバッファをシリアライズするためにBDC層における対応するコールバック機能を呼出す(137)ことができ、シリアライズされたバイトを共通のデータ構造に格納する(138)ことができる。CDC層は、共通セットのインターフェイスを用いて、構成ファイルによって指定される特定のキャッシングプロバイダからキャッシング動作にアクセスして、キャッシング動作を実行することができる。
図2は、一実施形態に従った、トランザクション処理環境において使用される分散型キャッシングを提供するためのシステムをさらに示す。
図2に示されるように、CDC層におけるキャッシングAPIはさらに、共通のキャッシングインターフェイスおよび他の共通の挙動、たとえばシリアライゼーションおよびデシリアライゼーションなど、を定義する複数のオブジェクトを含み得る。ユーザにエクスポーズされる外部APIとは異なり、上述のとおり、キャッシングAPIは、キャッシングシステムによって使用されるべく提供される。
一実施形態に従うと、キャッシングAPIは、外部APIのユーザによって取得されるキャッシュを表わし得るキャッシュオブジェクト223を含み得る。このキャッシュは、キャッシュ関連の動作をすべて提供することができ、外部APIからキャッシング動作を受取ることができる。キャッシュは、たとえば、構成ファイルの「tdc.cache」プロパティによって指定されるキャッシュ名によって識別され得る。
図2に示されるように、キャッシュオブジェクトは、キャッシュキーオブジェクト225およびキャッシュ値オブジェクト227に関連付けることができる。キャッシュキーオブジェクトは、キャッシュのためのキーを生成および検索するための方法を含み得るとともに、キャッシュ値オブジェクトは、シリアライゼーションインターフェイスを含み得る。
一実施形態に従うと、キャッシングプロバイダ229は、構成ファイルにおいて、プロパティcache.providerによって指定されるように、プロバイダ名によって識別される1組のキャッシング動作を定義することができる。プロセスレベルコンテキスト(TUXP)において維持されるグローバルなキャッシュプロバイダコンテナ230は、すべてのキャッシングプロバイダを暗黙的に維持することができる。キャッシュマネージャ224は、トランザクション処理環境においてキャッシュを管理するために用いることができる。キャッシュマネージャは、ユーザが直接キャッシュを作成するべき場合に暗黙的に作成することができるものであるが、単一のキャッシングプロバイダに関連付けることができる。キャッシュマネージャが作成されたとき、キャッシングプロバイダが存在していなければ、関連付けられたキャッシングプロバイダを内部に作成することができる。グローバルなキャッシュマネージャコンテナ228は、スレッド内で暗黙的に作成されたマネージャを管理するためにスレッドレベル・コンテキスト(TUXT)において維持することができる。
図3は、一実施形態に従ったキャッシングAPIの詳細なクラス図を示す。
図4は、一実施形態に従った、トランザクション処理環境において使用される分散型キャッシングを提供するための方法を示す。
図4は、一実施形態に従った、トランザクション処理環境において使用される分散型キャッシングを提供するための方法を示す。
図4に示されるように、ステップ411において、分散型キャッシングシステムは、トランザクション処理環境において提供することができる。分散型キャッシングシステムは、キャッシング・クライアントからキャッシング要件を受取るためのBDC層と、共通セットのキャッシングインターフェイスを提供するためのCDC層と、共通セットのキャッシングインターフェイスのインプリメンテーションを提供するためのIDC層と、実際のキャッシングプロバイダを提供するためのDTV層とを含み得る。
ステップ413において、分散型キャッシングシステムのBDC層は、キャッシング・クライアントからキャッシング要求を受取ることができる。キャッシング要求は、BDC層によってエクスポーズされるAPIを用いて開始することができる。
ステップ415において、BDC層はCDC層にキャッシング要求を転送することができる。キャッシング要求に関連付けられた型付きバッファは、BDC層において定義されるコールバック機能を用いて、共通のデータ構造に変換することができる。
ステップ417において、CDC層は、インプリメンテーション層から共通セットのキャッシングインターフェイスの特定のインプリメンテーションをロードし、特定のインプリメンテーションを用いてキャッシング動作を実行することができる。
シリアライゼーションサポート
上述のとおり、CDC層は、型付きバッファ上でシリアライゼーション動作/デシリアライゼーション動作を呼出すために、コールバック機能のための登録機能を定義することができる。
上述のとおり、CDC層は、型付きバッファ上でシリアライゼーション動作/デシリアライゼーション動作を呼出すために、コールバック機能のための登録機能を定義することができる。
一実施形態に従うと、型付きバッファまたは別のデータタイプは、登録機能を用いて、シリアライゼーション・ハンドラ/デシリアライゼーション・ハンドラに登録される必要がある。登録機能の例は以下のとおりであり得る。
上述の登録機能においては、シリアライゼーションコールバック機能(cb1)およびデシリアライゼーション機能(cb2)が登録される。これらのコールバック機能は、上述のとおり、BDC層において定義することができ、以下のリスト3に例示することができる。
リスト3に示されるように、登録された型付きバッファまたは別のユーザ定義型データタイプはシリアライズされたストリームに変換され、キャッシュに格納され得る。その後、シリアライズされたストリームは、キャッシュから検索された後、変換されてユーザ定義型データバッファに戻され得る。
分散型キャッシングシステムにおいて使用される型付きバッファを含むさまざまなデータタイプをサポートするために、これらのデータタイプのシリアライズされたストリームを格納するための共通のデータ構造を提供することができる。
一実施形態に従うと、分散型キャッシングシステムによって使用されるデータシリアライゼーションをサポートするためのシステムおよび方法がこの明細書中に記載される。データシリアライゼーションシステムは、複数のデータタイプのシリアライズされたストリーム/バイトを格納するために用いることができる共通のデータ構造を含み得る。データ構造は、キャッシュセッターのアーキテクチャを記述する情報を含むヘッダを含み得る。異なるアーキテクチャ上で使用するために、キャッシュされたデータが検索される場合、ヘッダ内のアーキテクチャ情報を用いて、この異なるアーキテクチャ上で使用できるようにデータを変換することができる。キャッシュされたデータが同じアーキテクチャ上で検索される場合、キャッシュされたデータは、変換されずに用いることができる。データ構造は、付加的に、メモリを効率的に使用できるようにするために可変長をもつボディ、後方互換性についてのバージョン情報、および、拡張用のオプション特徴のためのフィールドを含み得る。
図5は、一実施形態に従った例示的な型付きバッファを示す。
図5に示されるように、型付きバッファ(たとえば、Tuxedo型バッファ)511は、フレキシブル・メッセージ・ヘッダ(flexible message header:FML)513、およびユーザ型付きコンテナモジュール(user typed container module:TCM)517を含み得る。TCMはさらに、型付きコンテナヘッダー(typed container header:TCH)519および型付きコンテナボディ(typed container body:TCB)521を含み得る。TCBはT_BUFFER523およびユーザデータ529を含み得る。T_BUFFERは、型付きバッファのタイプ525およびサブタイプ527を格納するために用いることができる。型付きバッファは、他のバッファに格納することができるいくつかの非ユーザTCMを有し得る。
図5に示されるように、型付きバッファ(たとえば、Tuxedo型バッファ)511は、フレキシブル・メッセージ・ヘッダ(flexible message header:FML)513、およびユーザ型付きコンテナモジュール(user typed container module:TCM)517を含み得る。TCMはさらに、型付きコンテナヘッダー(typed container header:TCH)519および型付きコンテナボディ(typed container body:TCB)521を含み得る。TCBはT_BUFFER523およびユーザデータ529を含み得る。T_BUFFERは、型付きバッファのタイプ525およびサブタイプ527を格納するために用いることができる。型付きバッファは、他のバッファに格納することができるいくつかの非ユーザTCMを有し得る。
図6は、一実施形態に従った、分散型キャッシングシステムによって使用されるデータシリアライゼーションをサポートするためのシステムを示す。
図6に示されるように、データ構造はCDC層によってサポートされる共通の型付きバッファ133であってもよい。データ構造はヘッダ611およびボディ613を含み得る。ヘッダは、4バイトで位置合わせされる必要があり、複数のフィールド、たとえば、マジックフィールド615、メジャーバージョンフィールド617、マイナーバージョンフィールド618、長さフィールド619、vdataフィールド622、exlenフィールド623、タイプフィールド625、およびフラグフィールド621を含み得る。
一実施形態に従うと、ボディは、ボディのサイズを示すための長さのフィールド629と、ソース型付きバッファのタイプ631およびサブタイプ633を格納するために用いられるT_Bufferのフィールド626と、ユーザデータフィールド635とを含み得る。
一実施形態に従うと、「マジック」のフィールドは、ヘッダを区別するために用いられるcharであり得るとともに、長さのフィールドは、ヘッダのサイズを示し得る。フラグのフィールドは、メジャーバージョンのフィールドにおける状態を示し得るかまたはオプション特徴を制御し得る。メジャーバージョンのフィールドは、データ構造における構造の変更を示すことができる。たとえば、新しいフィールド/メンバが追加もしくは削除されるか、または、フィールドの意味が変更される。マイナーバージョンのフィールドは、メジャーバージョン内の変更を示すために用いることができる。たとえば、新しいビット・フラグがフラグのフィールドに投入される。
一実施形態に従うと、exlenのフィールドは、一般的にはヘッダに含まれないであろういずれの余分なヘッダデータ(たとえば、オプションの特徴)をも記述し得る。「exlen」がゼロでなければ、プレースホルダ「vdata」から始まる最初の「exlen」*4バイトがヘッダデータの一部になり得る。余分なヘッダデータは、さまざまなフィールドを有し得る。各々のフィールドは、4バイトで位置合わせされたアドレスから始まり得るとともに、そのタイプを示すunsigned shortとしてfirst shortを用い、フィールドのデータの長さ(バイト)を示すunsigned shortとしてsecond shortを用い得るとともに、シリアライズされ得る。
一実施形態に従うと、vdataのフィールドは、余分なヘッダデータおよびボディを含む可変データを示すためのプレースホルダであり得る。ヘッダのうち最初の4バイトは、他の用途のために変更される可能性はなく、ヘッダにおけるメンバは、ビッグエンディアンを用いることができる(vdataは含まれていない)。ヘッダのサイズは可変データを含んでおらず、そのため、長さのフィールドに影響を与えることはない。
一実施形態に従うと、メジャーバージョン、長さおよびフラグのそれぞれのフィールドは、メジャーバージョン間でのプロトコル互換性をサポートするために用いることができる。加えて、フラグのフィールドは、符号化されていないデータ、符号化されたデータおよび自己記述型データのうちの1つであり得るデータの状態を示すことができる。
一実施形態に従うと、データが符号化されていない場合、シリアライゼーション中にどの動作も実行されず、ボディは、型付きバッファにおける元のユーザTCMと同じであり得る。キャッシュセッター(たとえば、キャッシュにデータを格納するアプリケーション)と同じアーキテクチャ(たとえば、同じ文字符号化または同じエンディアン)のマシンに存在するキャッシュゲッター(たとえば、キャッシュされたデータを検索するアプリケーション)は、キャッシュされたデータを検索して用いることができる。
一実施形態に従うと、データが符号化されると、型付きバッファにおける元のユーザTCMが特定の符号化機構を用いてシリアライズされるため、キャッシュゲッターがデータをデシリアライズするために適切な対応機構を用いていれば、如何なるプラットフォーム上のキャッシュゲッターでもデータを正確に取得することができるようになる。
一実施形態に従うと、この明細書中に記載されるデータ構造は「自己記述型」モードまたは状態を提供することができ、これにより、データ構造のボディを、型付きバッファにおいて、たとえば、「符号化されていない」状態で、元のユーザTCMと同じ状態にすることが可能になる。さらに、キャッシュセッターの元のアーキテクチャについての追加情報は、データ構造のヘッダに含めることができる。異なるアーキテクチャに位置するキャッシュゲッターがキャッシュされたデータを入手する場合、追加情報を用いて、異なるアーキテクチャにおいて使用できるようにデータを変換することができる。キャッシュゲッターがキャッシュセッターと同じアーキテクチャに位置する場合、データは、変換されずに直接用いられ得る。
一実施形態に従うと、データ構造は依然として「符号化された」モードをサポートすることができ、このため、Tuxedo符号化アルゴリズムをサポートする他のプロダクトとデータを共有することができるようになる。シナリオの例として、Tuxedoアプリケーションがキャッシュセッターとして機能するとともに、JATMIパッケージを用いるWeblogicアプリケーションがキャッシュゲッターとして機能する例を挙げることができる。
一実施形態に従うと、アーキテクチャは、以下のうち1つ以上によって異種となり得る。すなわち、1)異なるエンディアン(バイトオーダー、リトルエンディアンまたはビッグエンディアン);2)異なる文字集合(ASCII、EBCDICなど);および、3)異なるサイズを有するタイプ(たとえば、長さが4バイトまたは8バイトであり得る)。
一実施形態に従うと、「自己記述」状態が用いられる場合、構造上の相違についての情報を、データ構造のヘッダにおいて指定することができる。異種環境においては、「自己記述」モードは、符号化モードと比べて2つの利点を有する。すなわち、1)キャッシュセッターについて、「符号化されていない(unencoded)」場合と同じ性能;および、2)ゲッターがキャッシュゲッターと同じアーキテクチャに位置する場合、キャッシュゲッターについて、「符号化されていない(unencoded)」場合と同じ性能を有する。
具体例として、キャッシュセッターはデータ構造を用いて、シリアライズされたバイトをそれら自体のフォーマット(たとえば、ビッグエンディアンまたはリトルエンディアン)でキャッシュに格納することができ、かつ、データがどの「エンディアン」にあるかを指定する追加情報を格納することができる。キャッシュゲッターは、データを検索すると、追加情報を用いて、データをローカルフォーマットに変換することができる。
一実施形態に従うと、異種環境においては、ライブラリは各々のマシンに提供することができ、このため、受取るマシンは、キャッシュセッターのマシンのアーキテクチャにかかわらず、ライブラリを用いて、キャッシュされたデータを変換することができる。
そのため、データ構造は、キャッシングシステムの性能を向上させることができ、Tuxedo型付きバッファを含むさまざまなデータタイプのシリアライズされたバイトを格納することができる。
一実施形態に従うと、型付きバッファのユーザTCMをシリアライズするために2つのステップを実行することができる。第1のステップは表示することであり、第2のステップは符号化することである。上述のとおり、シリアライゼーションおよびデシリアライゼーションのための機能はBDC層におけるコールバック機能において実現される。
一実施形態に従うと、型付きバッファのユーザTCMをシリアライズすることができるものの、不必要なデータを減らすために型付きバッファのユーザデータおよびT−バッファだけがキャッシュされる必要があり、型付きバッファの残りはキャッシュされる必要がない。
リスト4は、一実施形態に従った型付きバッファの例示的なヘッダを示す。
図7は、一実施形態に従った、分散型キャッシングシステムによって使用されるデータシリアライゼーションをサポートするための方法を示す。
図7に示されるように、ステップ711において、分散型キャッシングシステムがトランザクション処理環境において提供され得る。
ステップ713において、複数のデータタイプのシリアライズされたストリーム/バイトを格納するために用いられるデータ構造が提供され得る。データ構造は、キャッシュ設定アプリケーションを実行するシステムアーキテクチャについての情報を含むヘッダを含む。
ステップ715において、異なるシステムアーキテクチャ上で実行されるキャッシュ入手アプリケーションはキャッシュされたデータを検索し、ソースシステムアーキテクチャについての情報を用いて、異なるアーキテクチャ上で使用できるようにデータを変換する。
Coherenceとの統合
一実施形態に従うと、キャッシングプロバイダ(たとえば、CoherenceまたはCloudStore)は構成によってキャッシングプロバイダとして用いることができる。
一実施形態に従うと、キャッシングプロバイダ(たとえば、CoherenceまたはCloudStore)は構成によってキャッシングプロバイダとして用いることができる。
一実施形態に従うと、分散型インメモリ・データグリッド(たとえば、Coherence)を、キャッシングプロバイダとしての分散型キャッシングシステムに統合するためのシステムおよび方法がこの明細書中に記載される。分散型キャッシングシステムにおけるプロキシサーバは分散型インメモリ・データグリッドに対するクライアントとして機能し得るとともに、IDCクライアントから転送されたキャッシング要求を受取り得る。始動時に、プロキシサーバは、キャッシング・システム・キャッシュを定義する構成ファイルと、分散型インメモリ・データグリッドキャッシュにキャッシュするマップとをロードすることができ、キャッシング・システム・キャッシュの名前を用いて、サービスをアドバタイズすることができる。要求されたサービスを指定するキャッシング要求をキャッシング・クライアントから受取ると、プロキシサーバは、要求されたサービスに基づいてアクセスするために、分散型インメモリ・データグリッドにおける対応するキャッシュを決定することができる。
一実施形態に従うと、キャッシュされるべきデータはシリアライズされてから、プロキシサーバに転送することができ、このプロキシサーバは、シリアライズされたデータを対応するインメモリ・データグリッドキャッシュに格納することができる。キャッシュされたデータが、シリアライズされたバイトとして対応するインメモリ・データグリッドキャッシュから検索されて、キャッシング・クライアントに送り返されると、キャッシング・クライアントは、データを元のデータにデシリアライズすることができる。
図8は、一実施形態に従った、キャッシングプロバイダとしての分散型キャッシングシステムに分散型インメモリ・データグリッドを統合するためのシステムを示す。
図8に示されるように、複数のコンピュータノード(たとえば、ノードA805およびノードB807)は、トランザクション処理環境(たとえば、Tuxedoサーバ環境)におけるクラスタまたはドメインにおいて機能するように構成することができる。各々のコンピュータノードはアプリケーションサーバ(たとえば、アプリケーションサーバA811およびアプリケーションサーバB813)を含み得る。
図8にさらに示されるように、分散型インメモリ・データグリッドクラスタ(たとえば、Coherence)831は、複数のコンピュータノード上でサポートされ得る。分散型インメモリ・データグリッドは、複数のコンピュータノードにわたって分散された複数のメンバを含み得る。たとえば、CoherenceメンバA819およびCoherenceメンバC823は、コンピュータノードA上に存在し得るとともに、CoherenceメンバB821およびCoherenceメンバD825はコンピュータノードB上に存在し得る。
一実施形態に従うと、1つ以上のプロキシサーバは、ロードバランシングおよび性能向上のために各々のコンピュータノード上に設けることができる。たとえば、Coherenceのためのプロキシサーバ815および817は、それぞれ、コンピュータノードAおよびコンピュータノードB上に設けられる。
一実施形態に従うと、各々のプロキシサーバは、Tuxedo Java(登録商標)サーバによって実現することができ、分散型キャッシングシステムにおいてサーバとして機能し得る。キャッシング・クライアント(たとえば、Tuxedoクライアントまたはサーバ)からのキャッシング要求は、トランザクション手順を呼出すことによって各々のプロキシサーバに転送され得る。各々のプロキシは、その後、1つ以上のキャッシング要求を分散型インメモリ・データグリッドに転送して、対応する応答を受取ることができる。
一実施形態に従うと、各々のプロキシサーバは、分散型インメモリ・データグリッドに対するJava(登録商標)クライアントとして、直接、機能し得る。構成ファイルは、分散型インメモリ・データグリッドに如何にアクセスするかを指定することができ、たとえば、1つ以上の分散されたキャッシュまたは複製されたキャッシュにアクセスするべきかどうかを指定することができる。読取りのアクセスが高く、および書込みのアクセスが低い場合、複製されたキャッシュをアクセス用に構成することができる。
図9は、一実施形態に従った、キャッシングプロバイダとしての分散型キャッシングシステムに分散型インメモリ・データグリッドを統合するためのシステムをさらに示す。
図9に示されるように、プロキシサーバ930は、Coherenceのためのキャッシングプロバイダスイッチインプリメンテーション943からトランザクション手順の呼出し929を受取るために、CDC層に存在し得る。トランザクション手順の呼出しは、キャッシング・クライアントから分散型キャッシングシステムへのキャッシング要求を受取った後、キャッシングプロバイダ・スイッチ・インプリメンテーションをホストしているサーバによって生成することができる。トランザクション手順の呼出しは、共通の型付きバッファから(928)のシリアライズされたバイトを含み得る。
一実施形態に従うと、Coherenceのためのキャッシングプロバイダ・インプリメンテーションは、IDC層からCDC層に提供されるIDCクライアントであり得る。Coherence932はデフォルトのキャッシングプロバイダとなるように構成することができる。このため、プロバイダスイッチのインプリメンテーションと、プロバイダスイッチインプリメンテーションをロードするのに用いられる方法とが、Tuxedoダイナミックライブラリlibtuxおよびlibwsに統合され得る。この場合、前者はTuxedoサーバおよび固有のクライアントによって使用され得るとともに、後者はTuxedo/WSクライアントのために使用され得る。
一実施形態に従うと、Coherenceに基づいたプロバイダスイッチ・インプリメンテーションまたはIDCクライアントは、tpcallによってプロキシサーバにキャッシング要求を転送することができる。不必要なコピーを減じるようにとの要求のタイプに基づいて、さまざまなバッファタイプを用いることができる。表3は、キャッシング要求のタイプに基づいて用いることができる型付きバッファのサンプルリストを示す。
一実施形態に従うと、プロキシサーバは、始動されると、構成ファイルから構成プロパティをロードすることができる。この場合、構成プロパティが定義することができる提供されたTuxedoキャッシュは、分散型キャッシングシステムにおける、構成された論理キャッシュまたは物理キャッシュであり得る。プロキシサーバは、Tuxedoキャッシュ名を用いて、サービスをアドバタイズすることができる。構成ファイルからのプロパティのリストの例を以下のリスト5に示すことができる。
一実施形態に従うと、上述のプロパティであれば、プロキシサーバは、「tc」という名のTuxedoサービスをアドバタイズすることができる。IDCクライアントは、tpcallによってプロキシサーバがアドバタイズしたサービス「tc」に対し、キャッシュ「tc」についての要求を転送することができる。リスト3に示されるように、プロパティは、分散型キャッシングシステムにおいて構成されたキャッシュについての、マップされたCoherenceキャッシュを指定することができる。キャッシング・クライアントがコマンド「getcache」によってキャッシュを取得する必要がある場合、プロキシサーバは、このキャッシュのために必要なすべてのプロパティ(たとえば、プロパティoptions.encoding)をキャッシング・クライアントに送り返すことができる。
一実施形態に従うと、要求されたサービスの名前が、構成ファイルによってCoherenceキャッシュにマッピングされたTuxedoキャッシュの名前と同じであり得る場合、プロキシサーバは、要求されたサービスに基づいてCoherenceキャッシュ名を決定することができる。
一実施形態に従うと、プロキシサーバはCoherenceのクライアントとして機能することができる。プロキシサーバは、プロキシサーバによって用いられるCoherence構成ファイルによって定義されるように、固有のクライアント(Coherenceクラスタのメンバ)またはリモートクライアントであり得る。
一実施形態に従うと、Coherenceキャッシュは、アプリケーションの要件によって決定されるように、分散型キャッシュ、ローカルキャッシュまたは他の任意のタイプのキャッシュであり得る。
一実施形態に従うと、キャッシュにデータを格納するために、たとえば「入れる(put)」というコマンドがアプリケーションにおいて呼出されると、データはシリアライズされてからプロキシサーバに転送され得る。プロキシサーバがバイト[]のタイプであり得るシリアライズされたデータを受取ると、プロキシサーバはシリアライズされたデータをCoherenceに格納することができる。
同様に、データをキャッシュから検索するために、たとえば「入手する(get)」というコマンドがアプリケーションにおいて呼出されると、キャッシュされたデータは、バイト[]のタイプを備えたCoherenceから検索されて、さらにキャッシング・クライアントに送り返され、このキャッシング・クライアントが、データをその元のフォーマットにデシリアライズすることができる。
図10は、一実施形態に従った、キャッシングプロバイダとしての分散型キャッシングシステムに分散型インメモリ・データグリッドを統合するための方法を示す。
図10に示されるように、ステップ1011において、プロキシサーバは、トランザクション処理環境において分散型キャッシングシステムに提供することができる。プロキシサーバは、キャッシング・システム・キャッシュを定義する構成ファイルと、分散型インメモリ・データグリッドキャッシュにキャッシュするマップとをロードし、キャッシング・システム・キャッシュの名前を用いてサービスをアドバタイズすることができる。
ステップ1013において、プロキシサーバは、キャッシング要求を受取ることができる。キャッシング要求は、分散型キャッシングシステムのIDCクライアントからのトランザクション手順の呼出しの際に転送される。
ステップ1015において、プロキシサーバは、トランザクション手順の呼出しの際に、要求されたサービスに基づいてアクセスするために、分散型インメモリ・データグリッドにおける対応するキャッシュを決定することができる。
サービスキャッシング
上述の分散型キャッシングシステムは以下のキャッシング特徴を提供することができる。すなわち、アクセス回数および更新回数が極めて少なく、キーによって識別されたTuxedoバッファをキャッシュすることができ、複製アクセス、非複製アクセス、ローカルアクセスおよびリモートアクセスを含む調整可能な品質サービスを提供する、というキャッシング特徴を提供することができる。
上述の分散型キャッシングシステムは以下のキャッシング特徴を提供することができる。すなわち、アクセス回数および更新回数が極めて少なく、キーによって識別されたTuxedoバッファをキャッシュすることができ、複製アクセス、非複製アクセス、ローカルアクセスおよびリモートアクセスを含む調整可能な品質サービスを提供する、というキャッシング特徴を提供することができる。
一実施形態に従うと、トランザクション処理環境において分散型キャッシングシステムを用いて、サービスから戻された結果をキャッシュするためのシステムおよび方法がこの明細書中に記載される。構成ファイルは、サービスから戻された結果をキャッシュするのにどのキャッシュを用いるべきかと、キャッシュされた結果を識別する際に使用されるキーを如何に生成するかとを記述するエントリを含むキャッシングセクションを含み得る。サービスについての要求がクライアントから受取られると、トランザクション処理環境のアプリケーションサーバコアは、関連するキャッシュされたデータが、構成ファイルを用いて生成されたキーによって識別されるキャッシュに存在しているかどうかを判断することができる。存在している場合、アプリケーションサーバコアは、サービスを呼出す代わりに、キャッシュされたデータを直接戻すことができる。他の場合、アプリケーションサーバコアは、サービスを呼出し、生成されたキーを用いて、構成ファイルによって指定されるキャッシュにデータをキャッシュし、クライアントに結果を戻すことができる。
一実施形態に従うと、キャッシュされるべきサービスについて戻された結果は、サービス要求における入力キーワードに基づいた、データベースからの検索結果であり得る。
サービス(たとえば、Tuxedoサービス)が、或る期間内で特定の要求に応じて、同じ結果を戻すのに比較的長い時間を費やし得る場合、サービスキャッシング特徴により、システム性能を著しく向上させることができる。加えて、このキャッシング特徴は、ユーザが、既存のコードを変更することなく、サービスから戻された結果をキャッシュすることを可能にする。
一実施形態に従うと、構成ファイルは、キャッシュされた結果を識別するために用いられるべきキーを如何に生成するかを指定することができる。このような識別用途のキーは、単純な連続ストリング(simple solid string)、サービス名から構成されるストリング、要求データから構成されるストリング、ならびに、サービス名および要求データから構成されるストリング、のうちの1つであり得る。
一実施形態に従うと、要求データがキーを生成するために用いられるべき場合、要求データ全体またはデータの一部を、要求データを含んでいる型付きバッファに従ってキーの一部として用いることができる。ユーザは以下を用いることができる。
1)開始インジケータ/終了インジケータによって識別されるSTRIGN/CARRAYバッファの一部;
2)VIEW/VIEW32バッファのうちの1つのフィールドもしくはいくつかのフィールド;
3)FML/FML32バッファのうちの1つのフィールドもしくはいくつかのフィールド;または、
4)XMLバッファのうちの1つのフィールドもしくはいくつかのフィールド。
2)VIEW/VIEW32バッファのうちの1つのフィールドもしくはいくつかのフィールド;
3)FML/FML32バッファのうちの1つのフィールドもしくはいくつかのフィールド;または、
4)XMLバッファのうちの1つのフィールドもしくはいくつかのフィールド。
一実施形態に従うと、トランザクション処理環境においては、FML型バッファなどの型付きバッファは、複数セットの名前値ペアを含み得る。型付きバッファは、クライアントからサーバに要求を送信し、サーバからクライアントに結果を戻すために用いることができる。キャッシュされたサービス結果は、特定のキャッシング要求についての外部からのデータを含み得る複数セットの名前値ペアを含み得る。たとえば、キャッシュされた名前値ペアのうちのいくつかは特定の要求のために必要とされないかもしれないが、但し、これらの名前値ペアは後続のキャッシング要求のために必要とされるかもしれない。
そのため、一実施形態に従うと、要求データから生成されたキーを用いることにより、クライアントアプリケーションが、必要なデータを正確に示し、それらのデータだけを検索することが可能となり、これにより、アクセス時間を減らし、性能を増強させることができる。
図11は、一実施形態に従った、トランザクション処理環境において分散型キャッシングシステムを用いて、サービスから戻された結果をキャッシュするためのシステムを示す。
図11に示されるように、分散型キャッシングシステムは、分散されたかまたは複製された複数のキャッシュ(たとえば、キャッシュA1121およびキャッシュB1123)を含み得るキャッシングプロバイダ1119としてCoherenceを用いるように構成することができる。
さらに図示されるように、トランザクション処理環境のための構成ファイル1104は、分散型キャッシングシステムを如何に用いるかを記述するエントリを含み得るサービスキャッシングセクション1107を含み得る。
たとえば、キャッシングセクションは、サービスAのためのキャッシュA1110およびサービスBのためのキャッシュB1111によって例示されるように、特定のサービスから戻されたものをキャッシュするためにどのキャッシュを使用すべきかを記述することができる。
一実施形態に従うと、セクションにおける追加のエントリは、サービスAのためのキーを生成するための方法1113、およびサービスBのためのキーを生成するための方法1115によって示されるように、特定のサービスからのキャッシュ済み結果を識別する際に使用すべきキーを如何に生成するかを記述することができる。上述のとおり、キー生成方法は、要求データを含むバッファのタイプに基づいて、キーを生成する際に、要求におけるデータのうちどのフィールドを使用すべきかを定義することができる。
図11を参照して、アプリケーションサーバコア(たとえば、Tuxedoコア)1114は、戻された結果をサービス1102からクライアントアプリケーション(たとえば、Tuxedoクライアント)1101に渡すために提供することができる。アプリケーションサーバコアは、複数のサービス(たとえば、サービスA1105およびサービスB1109)を実行することができるアプリケーションサーバA(たとえば、Tuxedoサーバ)1117に関連付けることができる。アプリケーションサーバコアはまた、結果についての特定のサービスを呼出すべきか、またはキャッシュにキャッシュされた結果を用いるべきかどうかを判断する際に使用されるサービスキャッシング論理1128にも関連付けることができる。
具体例として、サービスA1125についての要求がアプリケーションサーバによって受取られると、それに関連付けられたアプリケーションサーバコアは、サービスAのために構成されたキャッシュをチェックして、構成ファイルにおけるサービスについての関連するエントリに従って生成されたキー1127によって識別されるような、関連するキャッシュデータがキャッシュに存在するかどうかを判断することができる。存在する場合、アプリケーションサーバは、サービスAを呼出す代わりに、直接、キャッシュされたデータを戻すことができる。存在しない場合、アプリケーションサーバコアはサービスAを呼出し(1108)、クライアントアプリケーションに結果を戻すことができる。クライアントアプリケーションに結果を転送し返す前に、アプリケーションサーバコアは、生成されたキーを用いるデータを、サービスAによって使用されるように構成されたキャッシュにキャッシュすることができる。
図12は、一実施形態に従った、トランザクション処理環境において分散型キャッシングシステムを用いて、サービスから戻された結果をキャッシュするための方法を示す。
図12に示されるように、ステップ1211において、分散型キャッシングシステムは、特定のサービスのために戻された結果をキャッシュするためにどのキャッシュを使用すべきかと、キャッシュされた結果を識別する際に使用されるキーを如何に生成すべきかとを記述しているエントリを備えた構成ファイルを含み得るトランザクション処理環境において提供することができる。
ステップ1213において、アプリケーションサーバに関連付けられたアプリケーションサーバコアは、サービスについての要求が、サービスをホストしているアプリケーションサーバに対してクライアントアプリケーションから送信されていることを検出することができ、関連するキャッシュされたデータが構成ファイルを用いて生成されたキーによって識別されるキャッシュに存在しているかどうかを判断することができる。
テップ1215において、関連するキャッシュされたデータがキャッシュに存在している場合、アプリケーションサーバコアはサービスを呼出す代わりに、キャッシュされたデータを直接戻すことができる。他の場合、アプリケーションサーバコアは、サービスを呼出し、構成ファイルによって指定されたキャッシュに、生成されたキーを用いるデータをキャッシュし、クライアントに結果を戻すことができる。
この発明は、この開示の教示に従ってプログラミングされた1つ以上のプロセッサ、メモリおよび/またはコンピュータ読取り可能記憶媒体を含む、1つ以上の従来の汎用または特化型デジタルコンピュータ、コンピューティング装置、マシン、またはマイクロプロセッサを使用して都合よく実現されてもよい。ソフトウェア技術の当業者には明らかであるように、この開示の教示に基づいて、適切なソフトウェアコーディングが、熟練したプログラマによって容易に準備され得る。
実施形態によっては、本発明は、本発明のプロセスのうちいずれかを実行するためにコンピュータをプログラムするのに使用できる命令が格納された非一時的な記憶媒体または(1つもしくは複数の)コンピュータ読取り可能な媒体であるコンピュータプログラムプロダクトを含む。この記憶媒体は、フロッピー(登録商標)ディスク、光ディスク、DVD、CD−ROM、マイクロドライブ、および光磁気ディスクを含む、任意の種類のディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリデバイス、磁気もしくは光カード、ナノシステム(分子メモリICを含む)、または、命令および/もしくはデータを格納するのに適した任意の種類の媒体もしくはデバイスを含み得るものの、これらに限定されない。
本発明のこれまでの記載は例示および説明を目的として提供されている。すべてを網羅するかまたは本発明を開示された形態そのものに限定することは意図されていない。当業者には数多くの変更および変形が明らかであろう。実施形態は、本発明の原理およびその実際の応用を最もうまく説明することによって他の当業者がさまざまな実施形態および意図している特定の用途に適したさまざまな変形を理解できるようにするために、選択され説明されている。本発明の範囲は添付の特許請求の範囲およびそれらの同等例によって規定されるものと意図されている。
Claims (78)
- トランザクション処理環境に分散型キャッシングを提供するためのシステムであって、
1つ以上のマイクロプロセッサを含むコンピュータと、
前記コンピュータ上で実行されるとともに、キャッシング機能を提供する複数の層を含むトランザクション処理環境とを含み、前記複数の層は、
キャッシング要求を受取るためのバッファベースの分散型キャッシング(BDC)層と、
キャッシング動作の複数のインプリメンテーションを含むインプリメンテーション層とを含み、各々のインプリメンテーションは異なるキャッシングプロバイダによるものであり、前記複数の層はさらに、
共通のキャッシング関連のインターフェイスを定義する共通の分散型キャッシング(CDC)層を含み、
前記BDC層から転送されたキャッシング要求を受取ると、前記CDC層は、前記特定のキャッシングプロバイダによってキャッシング動作のインプリメンテーションをロードして、前記キャッシング要求に関連付けられたデータについてキャッシング動作を実行する、システム。 - 1つ以上のキャッシングプロバイダを含む従属型サードパーティベンダー層をさらに含む、請求項1に記載のシステム。
- 前記1つ以上のキャッシングプロバイダはCoherenceおよび/またはCloudStoreを含む、請求項1または2に記載のシステム。
- 前記BDC層は、前記分散型キャッシングシステムにおいて使用される複数のデータタイプを登録し、各々の登録されたデータタイプは、そのデータタイプについての動作を定義するスイッチに関連付けられている、請求項1から3のいずれか一項に記載のシステム。
- 各々の登録されたデータタイプについての定義された動作は、シリアライゼーション、デシリアライゼーション、符号化または復号化のうち1つ以上を含む、請求項4に記載のシステム。
- 前記CDC層は、前記共通のキャッシング関連のインターフェイスを提供するためのアプリケーションプログラミングインターフェイス(API)を含む、請求項1から5のいずれか一項に記載のシステム。
- 前記CDC層は、前記特定のキャッシングプロバイダからキャッシング動作のインプリメンテーションをロードする際に使用される、キャッシングプロバイダスイッチおよび関連するAPIを含む、請求項1から6のいずれか一項に記載のシステム。
- 前記キャッシングプロバイダスイッチは複数のポインタを含み、前記複数のポインタの各々は、特定のキャッシングプロバイダによって提供されるキャッシング動作を指し示す、請求項7に記載のシステム。
- 前記CDC層は、前記BDC層において定義される1つ以上のコールバック機能を呼出して、前記キャッシング要求に関連付けられた前記データのシリアライゼーションまたはデシリアライゼーションを実行する、請求項1から8のいずれか一項に記載のシステム。
- トランザクション処理環境において分散型キャッシングを提供するための方法であって、1つ以上のマイクロプロセッサ上で実行されるとともに、キャッシング機能を提供する複数の層を含むトランザクション処理環境を設けるステップと、
バッファベースの分散型キャッシング(BDC)層においてキャッシング要求を受取るステップと、
共通のキャッシング関連のインターフェイスを定義する共通の分散型キャッシング(CDC)層において、前記BDC層から転送される前記キャッシング要求を受取るステップと、
特定のキャッシングプロバイダによってキャッシング動作のインプリメンテーションを、前記CDC層を介して、インプリメンテーション層からロードするステップとを含み、前記インプリメンテーション層はキャッシング動作の複数のインプリメンテーションを含み、各々のインプリメンテーションは異なるキャッシングプロバイダによるものであり、前記方法はさらに、
前記キャッシング要求に関連付けられたデータについて、ロードされたキャッシング動作を実行するステップを含む、方法。 - 1つ以上のキャッシングプロバイダを含む従属型サードパーティベンダー層を設けるステップをさらに含む、請求項10に記載の方法。
- 前記1つ以上のキャッシングプロバイダはCoherenceおよび/またはCloudStoreを含む、請求項10または11に記載の方法。
- 前記BDC層は、前記分散型キャッシングシステムにおいて使用される複数のデータタイプを登録し、各々の登録されたデータタイプは、そのデータタイプについての動作を定義するスイッチに関連付けられている、請求項10から12のいずれか一項に記載の方法。
- 各々の登録されたデータタイプについて定義された前記動作は、シリアライゼーション、デシリアライゼーション、符号化または復号化のうち1つ以上を含む、請求項13に記載の方法。
- 前記CDC層は、前記共通のキャッシング関連のインターフェイスを提供するためのアプリケーションプログラミングインターフェイスを含む、請求項10から14のいずれか一項に記載の方法。
- 前記CDC層は、キャッシングプロバイダスイッチと、前記キャッシングプロバイダスイッチの特定のインプリメンテーションにおいて使用される関連するAPIとを含む、請求項10から15のいずれか一項に記載の方法。
- 前記キャッシングプロバイダスイッチは、複数のポインタを含み、前記複数のポインタの各々は、特定のキャッシングプロバイダによって提供されるキャッシング動作を指し示す、請求項16に記載の方法。
- 前記CDC層は、前記BDC層において定義される1つ以上のコールバック機能を呼出して、前記キャッシング要求に関連付けられたデータのシリアライゼーションまたはデシリアライゼーションを実行する、請求項10から17のいずれか一項に記載の方法。
- トランザクション処理環境において分散型キャッシングを提供するための1セットの命令を格納する非一時的なコンピュータ読取可能記憶媒体であって、前記命令は、1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに以下のステップを実行させ、前記以下のステップは、
バッファベースの分散型キャッシング(BDC)層においてキャッシング要求を受取るステップと、
共通の分散型キャッシング(CDC)層において前記BDC層から転送される前記キャッシング要求を受取るステップとを含み、前記CDC層は共通のキャッシング関連のインターフェイスを定義し、前記以下のステップはさらに、
特定のキャッシングプロバイダによるキャッシング動作のインプリメンテーションを、前記CDC層を介して、インプリメンテーション層からロードするステップを含み、前記インプリメンテーション層は、キャッシング動作の複数のインプリメンテーションを含み、各々のインプリメンテーションは異なるキャッシングプロバイダによるものであり、前記以下のステップはさらに、
前記キャッシング要求に関連付けられたデータについて、ロードされたキャッシング動作を実行する、非一時的なコンピュータ読取可能記憶媒体。 - 1つ以上のキャッシングプロバイダを含む従属型サードパーティベンダー層を設けるステップをさらに含む、請求項19に記載の非一時的なコンピュータ読取可能記憶媒体。
- トランザクション処理環境における分散型キャッシングシステムにおいて使用されるデータシリアライゼーションをサポートするためのシステムであって、
1つ以上のマイクロプロセッサを含むコンピュータと、
前記コンピュータ上で実行されるとともに、キャッシング機能を提供する複数の層を含むトランザクション処理環境と、
ヘッダおよびボディを含むデータ構造とを含み、前記ヘッダは、キャッシング要求を開始するソースアプリケーションを実行するソースプラットフォームのアーキテクチャ情報を含み、前記キャッシング要求に関連付けられたデータは、シリアライズされ、前記データ構造に格納され、その後、キャッシュに格納され、
異なるアーキテクチャを備えたプラットフォーム上で動作するアプリケーションがキャッシュされたデータを検索するとき、前記アプリケーションは、前記ソースプラットフォームの前記アーキテクチャ情報を用いて、前記キャッシュされたデータをローカルフォーマットに変換する、システム。 - 前記データ構造は前記トランザクション処理環境において使用される型付きバッファである、請求項21に記載のシステム。
- 前記ソースプラットフォームの前記アーキテクチャ情報は文字集合およびバイトオーダーを含む、請求項21または22に記載のシステム。
- 前記データ構造は、後方互換性についてのバージョン番号と、将来拡張できるようにするためのオプション特徴についての余分なデータのためのフィールドとを含む、請求項21から23のいずれか一項に記載のシステム。
- 前記データ構造は、登録されたデータタイプの各々についてのシリアライズされたバイトをBDC層に格納してから、前記シリアライズされたバイトをDTV層におけるキャッシュに格納する、請求項21から24のいずれか一項に記載のシステム。
- 前記キャッシュされたデータが、ソースアーキテクチャと同じアーキテクチャを備えたプラットフォーム上で実行されるアプリケーションによって検索されると、前記アプリケーションは、前記キャッシュされたデータを変換することなく直接用いる、請求項21から25のいずれか一項に記載のシステム。
- トランザクション処理環境における分散型キャッシングシステムにおいて使用されるデータシリアライゼーションをサポートするための方法であって、
1つ以上のマイクロプロセッサを含むコンピュータ上で実行されるとともに、キャッシング機能を提供する複数の層を含むトランザクション処理環境を設けるステップと、
ヘッダおよびボディを含むデータ構造を設けるステップとを含み、前記ヘッダは、キャッシング要求を開始するソースアプリケーションを実行するソースプラットフォームのアーキテクチャ情報を含み、前記キャッシング要求に関連付けられたデータは、シリアライズされ、前記データ構造に格納され、その後、キャッシュに格納され、
異なるアーキテクチャを備えたプラットフォーム上で動作するアプリケーションがキャッシュされたデータを検索するとき、前記アプリケーションは、前記ソースプラットフォームの前記アーキテクチャ情報を用いて、前記キャッシュされたデータをローカルフォーマットに変換する、方法。 - 前記データ構造は前記トランザクション処理環境において使用される型付きバッファである、請求項27に記載の方法。
- 前記ソースプラットフォームの前記アーキテクチャ情報は、文字集合およびバイトオーダーを含む、請求項27または28に記載の方法。
- 前記データ構造は、後方互換性についてのバージョン番号と、将来拡張できるようにするためのオプション特徴についての余分なデータのためのフィールドとを含む、請求項27から29のいずれか一項に記載の方法。
- 前記データ構造は、登録されたデータタイプの各々についてのシリアライズされたバイトをBDC層に格納してから、前記シリアライズされたバイトをDTV層におけるキャッシュに格納する、請求項27から30のいずれか一項に記載の方法。
- 前記キャッシュされたデータが、ソースアーキテクチャと同じアーキテクチャを備えたプラットフォーム上で実行されるアプリケーションによって検索されるとき、前記アプリケーションは、前記キャッシュされたデータを変換することなく直接用いる、請求項27から31のいずれか一項に記載の方法。
- トランザクション処理環境における分散型キャッシングシステムにおいて使用されるデータシリアライゼーションをサポートするための1セットの命令を格納する非一時的なコンピュータ読取可能記憶媒体であって、前記命令は、1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに以下のステップを実行させ、前記以下のステップは、
前記コンピュータ上で実行されるとともに、キャッシング機能を提供する複数の層を含むトランザクション処理環境を設けるステップと、
ヘッダおよびボディを含むデータ構造を設けるステップとを含み、前記ヘッダは、キャッシング要求を開始するソースアプリケーションを実行するソースプラットフォームのアーキテクチャ情報を含み、前記キャッシング要求に関連付けられたデータは、シリアライズされ、前記データ構造に格納され、その後、キャッシュに格納され、
異なるアーキテクチャを備えたプラットフォーム上で動作するアプリケーションがキャッシュされたデータを検索するとき、前記アプリケーションは、前記ソースプラットフォームの前記アーキテクチャ情報を用いて、前記キャッシュされたデータをローカルフォーマットに変換する、非一時的なコンピュータ読取可能記憶媒体。 - 前記データ構造は前記トランザクション処理環境において使用される型付きバッファである、請求項32に記載の非一時的なコンピュータ読取可能記憶媒体。
- 前記ソースプラットフォームの前記アーキテクチャ情報は、文字集合およびバイトオーダーを含む、請求項33または34に記載の非一時的なコンピュータ読取可能記憶媒体。
- 前記データ構造は、後方互換性についてのバージョン番号と、将来拡張できるようにするためのオプション特徴についての余分なデータのためのフィールドとを含む、請求項33から35のいずれか一項に記載の非一時的なコンピュータ読取可能記憶媒体。
- 前記データ構造は、登録されたデータタイプの各々についてのシリアライズされたバイトをBDC層に格納してから、前記シリアライズされたバイトをDTV層におけるキャッシュに格納する、請求項33から36のいずれか一項に記載の非一時的なコンピュータ読取可能記憶媒体。
- 前記キャッシュされたデータが、ソースアーキテクチャと同じアーキテクチャを備えたプラットフォーム上で実行されるアプリケーションによって検索されるとき、前記アプリケーションは、前記キャッシュされたデータを変換することなく直接用いる、請求項33から37のいずれか一項に記載の非一時的なコンピュータ読取可能記憶媒体。
- トランザクション処理環境における分散型キャッシングシステムに分散型インメモリ・データグリッドを統合するためのシステムであって、
1つ以上のマイクロプロセッサを含むコンピュータと、
前記コンピュータ上で実行されるとともに、キャッシング機能を提供する複数の層を含むトランザクション処理環境とを含み、前記複数の層は共通の分散型キャッシング(CDC)層およびインプリメンテーション層を含み、前記システムはさらに、
前記インプリメンテーション層において動作する分散型インメモリ・データグリッドと、
前記CDC層におけるプロキシサーバとを含み、前記プロキシサーバは、前記インメモリ・データグリッドに対するクライアントとして機能し、前記CDC層からのトランザクション手順の呼出しの際にキャッシング要求を受取り、キャッシングに関連付けられたデータを前記分散型インメモリ・データグリッドにおけるキャッシュに格納するかまたは前記キャッシュから検索する、システム。 - 前記分散型インメモリ・データグリッドはCoherenceである、請求項39に記載のシステム。
- 前記プロキシサーバは構成ファイルからプロパティをロードし、前記ロードされたプロパティはキャッシュを定義し、前記定義されたキャッシュを前記分散型インメモリ・データグリッドにおけるキャッシュに対してマッピングする、請求項39または40に記載のシステム。
- 前記プロキシサーバは前記定義されたキャッシュの名前を用いてサービスをアドバタイズする、請求項39から41のいずれか一項に記載のシステム。
- 前記プロキシサーバは、前記定義されたキャッシュに基づいて、かつ、前記定義されたキャッシュと前記分散型インメモリ・データグリッドにおけるキャッシュとの間におけるマッピングに基づいて、キャッシング動作を実行する際に使用される前記分散型インメモリ・データグリッドにおける前記キャッシュを決定する、請求項39から42のいずれか一項に記載のシステム。
- 1つ以上の付加的なプロキシサーバが、ロードバランシングのために、前記分散型インメモリ・データグリッドをホストする各々のコンピュータノード上に設けられる、請求項39から43のいずれか一項に記載のシステム。
- 前記プロキシサーバはJava(登録商標)サーバである、請求項39から44のいずれか一項に記載のシステム。
- トランザクション処理環境における分散型キャッシングシステムに分散型インメモリ・データグリッドを統合するための方法であって、
1つ以上のマイクロプロセッサを含むコンピュータ上で実行されるとともに、キャッシング機能を提供する複数の層を含むトランザクション処理環境を設けるステップを含み、前記複数の層は、共通の分散型キャッシング(CDC)層およびインプリメンテーション層を含み、前記方法はさらに、
前記インプリメンテーション層において動作する分散型インメモリ・データグリッドを設けるステップと、
前記CDC層にプロキシサーバを設けるステップとを含み、前記プロキシサーバは前記インメモリ・データグリッドに対するクライアントとして機能し、前記CDC層からのトランザクション手順の呼出しの際にキャッシング要求を受取り、前記キャッシングに関連付けられたデータを、前記分散型インメモリ・データグリッドにおけるキャッシュに格納するかまたは前記キャッシュから検索する、方法。 - 前記分散型インメモリ・データグリッドはCoherenceである、請求項46に記載の方法。
- 前記プロキシサーバは構成ファイルからプロパティをロードし、前記ロードされたプロパティはキャッシュを定義し、前記定義されたキャッシュを前記分散型インメモリ・データグリッドにおける前記キャッシュに対してマッピングする、請求項46または47に記載の方法。
- 前記プロキシサーバは前記定義されたキャッシュの名前を用いて、サービスをアドバタイズする、請求項46から48のいずれか一項に記載の方法。
- 前記プロキシサーバは、前記定義されたキャッシュに基づいて、かつ、前記定義されたキャッシュと前記分散型インメモリ・データグリッドにおけるキャッシュとの間におけるマッピングに基づいて、キャッシング動作を実行する際に使用される前記分散型インメモリ・データグリッドにおける前記キャッシュを決定する、請求項46から49のいずれか一項に記載の方法。
- 1つ以上の付加的なプロキシサーバが、ロードバランシングのために、前記分散型インメモリ・データグリッドをホストする各々のコンピュータノード上に設けられる、請求項46から50のいずれか一項に記載の方法。
- 前記プロキシサーバはJava(登録商標)サーバである、請求項46から51のいずれか一項に記載の方法。
- トランザクション処理環境における分散型キャッシングシステムに分散型インメモリ・データグリッドを統合するための1セットの命令を格納する非一時的なコンピュータ読取可能記憶媒体であって、前記命令は、1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに以下のステップを実行させ、前記以下のステップは、
コンピュータ上で実行されるとともに、キャッシング機能を提供する複数の層を含むトランザクション処理環境を設けるステップを含み、前記複数の層は、共通の分散型キャッシング(CDC)層およびインプリメンテーション層を含み、前記以下のステップはさらに、
前記インプリメンテーション層において動作する分散型インメモリ・データグリッドを設けるステップと、
前記CDC層にプロキシサーバを設けるステップとを含み、前記プロキシサーバは前記インメモリ・データグリッドに対するクライアントとして機能し、前記CDC層からのトランザクション手順の呼出しの際にキャッシング要求を受取り、前記キャッシングに関連付けられたデータを、前記分散型インメモリ・データグリッドにおけるキャッシュに格納するかまたは前記キャッシュから検索する、非一時的なコンピュータ読取可能記憶媒体。 - 前記分散型インメモリ・データグリッドはCoherenceである、請求項53に記載の非一時的なコンピュータ読取可能記憶媒体。
- 前記プロキシサーバは構成ファイルからプロパティをロードし、前記ロードされたプロパティはキャッシュを定義し、前記分散型インメモリ・データグリッドにおける前記キャッシュに前記定義されたキャッシュをマッピングする、請求項53または54に記載の非一時的なコンピュータ読取可能記憶媒体。
- 前記プロキシサーバは、前記定義されたキャッシュの名前を用いてサービスをアドバタイズする、請求項53から55のいずれか一項に記載の非一時的なコンピュータ読取可能記憶媒体。
- 前記プロキシサーバは、前記定義されたキャッシュに基づいて、かつ、前記定義されたキャッシュと前記分散型インメモリ・データグリッドにおけるキャッシュとの間におけるマッピングに基づいて、キャッシング動作を実行する際に使用される前記分散型インメモリ・データグリッドにおける前記キャッシュを決定する、請求項53から56のいずれか一項に記載の非一時的なコンピュータ読取可能記憶媒体。
- 1つ以上の付加的なプロキシサーバが、ロードバランシングのために、前記分散型インメモリ・データグリッドをホストする各々のコンピュータノード上に設けられる、請求項53から57のいずれか一項に記載の非一時的なコンピュータ読取可能記憶媒体。
- トランザクション処理環境における分散型キャッシングシステムにおけるサービス結果をキャッシュするためのシステムであって、
1つ以上のマイクロプロセッサを含むコンピュータと、
前記コンピュータ上で実行されるとともに、キャッシング機能を提供する複数の層を含むトランザクション処理環境と、
キャッシュされたデータを格納する際に使用されるように構成されたキャッシングプロバイダと、
前記トランザクション処理環境のための構成ファイルとを含み、前記構成ファイルはサービスのために戻された結果をキャッシュするためにどのキャッシュを使用すべきかと、前記キャッシュされた結果を識別する際に使用されるキーを如何に生成すべきかとを記述するエントリを含むキャッシングセクションを含む、システム。 - 前記キーはキャッシング要求に関連付けられたデータから生成される、請求項59に記載のシステム。
- アプリケーションサーバコアに関連付けられたサービスキャッシング論理をさらに含み、前記サービスキャッシング論理は、結果がキャッシュにおいて既に存在しているかどうかに基づいて、前記結果を前記キャッシュから検索すべきか、または、新しい結果を生成するようにサービスを呼出すべきかどうかを判断する、請求項59または60に記載のシステム。
- 前記アプリケーションサーバコアは、前記結果が前記キャッシュに存在するかどうかを判断するために前記キャッシュをチェックする、請求項59から61のいずれか一項に記載のシステム。
- 前記アプリケーションサーバコアは、要求データから生成されたキーと、前記キャッシュされたデータに関連付けられたキーとに基づいて前記判断を行なう、請求項62に記載のシステム。
- 各々のキーは、単純な連続ストリング、サービス名から構成されるストリング、前記要求データから構成されるストリング、ならびに、前記サービス名および前記要求データから構成されるストリング、のうちの1つである、請求項64に記載のシステム。
- 前記キャッシュは前記構成ファイルによって前記サービスのために定義される、請求項59から64のいずれか一項に記載のシステム。
- トランザクション処理環境における分散型キャッシングシステムにおいてサービス結果をキャッシュするための方法であって、
1つ以上のマイクロプロセッサを含むコンピュータ上で実行されるとともに、キャッシング機能を提供する複数の層を含むトランザクション処理環境を設けるステップと、
キャッシュされたデータを格納する際に使用されるように構成されたキャッシングプロバイダを設けるステップと、
前記トランザクション処理環境のために構成ファイルを設けるステップとを含み、前記構成ファイルはサービスのために戻された結果をキャッシュするためにどのキャッシュを使用すべきかと、前記キャッシュされた結果を識別する際に使用されるキーを如何に生成すべきかとを記述するエントリを含むキャッシングセクションを含む、方法。 - 前記キーは、キャッシング要求に関連付けられたデータから生成される、請求項66に記載の方法。
- アプリケーションサーバコアに関連付けられたサービスキャッシング論理を提供するステップをさらに含み、前記サービスキャッシング論理は、結果がキャッシュにおいて既に存在するかどうかに基づいて、前記キャッシュから前記結果を検索すべきかどうか、または、新しい結果を生成するように前記サービスを呼出すべきかどうかを判断する、請求項66または67に記載の方法。
- 前記アプリケーションサーバコアは、前記結果が前記キャッシュに存在するかどうかを判断するために前記キャッシュをチェックする、請求項66から68のいずれか一項に記載の方法。
- 前記アプリケーションサーバコアは、要求データから生成されたキーと、前記キャッシュされたデータに関連付けられたキーとに基づいて前記判断を行なう、請求項69に記載の方法。
- 各々のキーは、単純な連続ストリング、サービス名から構成されるストリング、前記要求データから構成されるストリング、ならびに、前記サービス名および前記要求データから構成されるストリング、のうちの1つである、請求項70に記載の方法。
- 前記キャッシュは前記構成ファイルによって前記サービスのために定義される、請求項66から71のいずれか一項に記載の方法。
- トランザクション処理環境における分散型キャッシングシステムにおいてサービス結果をキャッシュするための1セットの命令を格納する非一時的なコンピュータ読取可能記憶媒体であって、前記命令は、1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに以下のステップを実行させ、前記以下のステップは、
1つ以上のマイクロプロセッサを含むコンピュータ上で実行されるとともに、キャッシング機能を提供する複数の層を含むトランザクション処理環境を設けるステップと、
キャッシュされたデータを格納する際に使用されるように構成されたキャッシングプロバイダを設けるステップと、
前記トランザクション処理環境のために構成ファイルを設けるステップとを含み、前記構成ファイルは、サービスのために戻された結果をキャッシュするためにどのキャッシュを使用すべきかと、前記キャッシュされた結果を識別する際に使用されるキーを如何に生成すべきかとを記述するエントリを含むキャッシングセクションを含む、非一時的なコンピュータ読取可能記憶媒体。 - 前記キーはキャッシング要求に関連付けられたデータから生成される、請求項73に記載の非一時的なコンピュータ読取可能記憶媒体。
- アプリケーションサーバコアに関連付けられたサービスキャッシング論理を提供するステップをさらに含み、前記サービスキャッシング論理は、結果がキャッシュにおいて既に存在するかどうかに基づいて、前記結果を前記キャッシュから検索すべきかどうか、または、新しい結果を生成するように前記サービスを呼出すべきかどうかを判断する、請求項73または74に記載の非一時的なコンピュータ読取可能記憶媒体。
- 前記アプリケーションサーバコアは、前記結果が前記キャッシュに存在するかどうかを判断するために前記キャッシュをチェックする、請求項73から75のいずれか一項に記載の非一時的なコンピュータ読取可能記憶媒体。
- 前記アプリケーションサーバコアは、要求データから生成されたキーと、前記キャッシュされたデータに関連付けられたキーとに基づいて前記判断を行なう、請求項76に記載の非一時的なコンピュータ読取可能記憶媒体。
- 各々のキーは、単純な連続ストリング、サービス名から構成されるストリング、前記要求データから構成されるストリング、ならびに、前記サービス名および前記要求データから構成されるストリング、のうちの1つである、請求77に記載の非一時的なコンピュータ読取可能記憶媒体。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019158648A JP6902579B2 (ja) | 2015-10-22 | 2019-08-30 | トランザクション処理環境において分散型キャッシングを提供するためのシステムおよび方法 |
JP2019158649A JP6902580B2 (ja) | 2015-10-22 | 2019-08-30 | トランザクション処理環境において分散型キャッシングを提供するためのシステムおよび方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2015/092523 WO2017066953A1 (en) | 2015-10-22 | 2015-10-22 | System and method for providing distributed caching in transactional processing environment |
Related Child Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019158648A Division JP6902579B2 (ja) | 2015-10-22 | 2019-08-30 | トランザクション処理環境において分散型キャッシングを提供するためのシステムおよび方法 |
JP2019158650A Division JP6827084B2 (ja) | 2019-08-30 | 2019-08-30 | トランザクション処理環境において分散型キャッシングを提供するためのシステムおよび方法 |
JP2019158649A Division JP6902580B2 (ja) | 2015-10-22 | 2019-08-30 | トランザクション処理環境において分散型キャッシングを提供するためのシステムおよび方法 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2018531439A JP2018531439A (ja) | 2018-10-25 |
JP2018531439A6 true JP2018531439A6 (ja) | 2018-12-13 |
JP6613320B2 JP6613320B2 (ja) | 2019-11-27 |
Family
ID=58556596
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017558432A Active JP6613320B2 (ja) | 2015-10-22 | 2015-10-22 | トランザクション処理環境において分散型キャッシングを提供するためのシステムおよび方法 |
Country Status (6)
Country | Link |
---|---|
US (5) | US9894175B2 (ja) |
EP (1) | EP3365798B1 (ja) |
JP (1) | JP6613320B2 (ja) |
KR (1) | KR102385351B1 (ja) |
CN (1) | CN107615260B (ja) |
WO (1) | WO2017066953A1 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10490238B2 (en) * | 2017-06-29 | 2019-11-26 | SK Hynix Inc. | Serializer and memory device including the same |
CN109525584B (zh) * | 2018-11-26 | 2020-12-04 | 竞技世界(北京)网络技术有限公司 | 一种构建移动端跨平台多类型应用容器的方法 |
CN111538739B (zh) * | 2020-04-28 | 2023-11-17 | 北京思特奇信息技术股份有限公司 | 一种基于wsg的服务网关自动同步的方法和系统 |
CN111367853A (zh) * | 2020-05-29 | 2020-07-03 | 腾讯科技(深圳)有限公司 | 数据传输方法、装置、设备及计算机可读存储介质 |
CN111884347B (zh) * | 2020-08-28 | 2021-07-13 | 国网山东省电力公司郯城县供电公司 | 多源电力信息融合的电力数据集中控制系统 |
CN115994122B (zh) * | 2023-03-24 | 2023-06-06 | 北京江民新科技术有限公司 | 快速缓存信息的方法、系统、设备及储存介质 |
CN116016397B (zh) * | 2023-03-28 | 2023-05-30 | 湖南毂梁微电子有限公司 | 一种报文传输缓冲区快速检索方法和电路 |
Family Cites Families (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2693009B1 (fr) * | 1992-06-09 | 1994-11-25 | Bull Sa | Interface utilisateur pour système de traitement transactionnel. |
FR2692058B1 (fr) | 1992-06-09 | 1994-07-29 | Bull Sa | Systeme de traitement transactionnel entre un serveur informatique et une pluralite de stations de travail. |
US6269432B1 (en) | 1998-10-23 | 2001-07-31 | Ericsson, Inc. | Distributed transactional processing system having redundant data |
US6681251B1 (en) * | 1999-11-18 | 2004-01-20 | International Business Machines Corporation | Workload balancing in clustered application servers |
US7062556B1 (en) | 1999-11-22 | 2006-06-13 | Motorola, Inc. | Load balancing method in a communication network |
US7099926B1 (en) * | 2000-07-06 | 2006-08-29 | International Business Machines Corporation | Object caching and update queuing technique to improve performance and resource utilization |
EP1643381A3 (en) * | 2000-12-22 | 2006-06-07 | Research In Motion Limited | Information browser system and method for a wireless communication device |
US8606875B1 (en) | 2004-06-30 | 2013-12-10 | Oracle America, Inc. | Method and system for automatic distribution and installation of a client certificate in a secure manner |
US7516277B2 (en) | 2005-04-28 | 2009-04-07 | Sap Ag | Cache monitoring using shared memory |
CA2707680A1 (en) * | 2006-03-14 | 2007-09-20 | Transgaming Inc. | General purpose software parallel task engine |
US8074027B2 (en) | 2006-12-04 | 2011-12-06 | Microsoft Corporation | Multi-level read caching for multiplexed transactional logging |
US7720990B2 (en) | 2007-01-10 | 2010-05-18 | International Business Machines Corporation | Method and apparatus for handling service requests in a data processing system |
EP2122992B1 (en) * | 2007-03-12 | 2017-07-26 | Citrix Systems, Inc. | Systems and methods for cache operations |
CN104123239B (zh) * | 2008-01-31 | 2017-07-21 | 甲骨文国际公司 | 用于事务缓存的系统和方法 |
US8943271B2 (en) | 2008-06-12 | 2015-01-27 | Microsoft Corporation | Distributed cache arrangement |
US20100198651A1 (en) * | 2009-01-31 | 2010-08-05 | Stephen Michael Johnson | Integrated infrastructure operations management system and method |
US9262330B2 (en) * | 2009-11-04 | 2016-02-16 | Microsoft Technology Licensing, Llc | Column oriented in-memory page caching |
US8255626B2 (en) * | 2009-12-09 | 2012-08-28 | International Business Machines Corporation | Atomic commit predicated on consistency of watches |
US20120054440A1 (en) * | 2010-08-31 | 2012-03-01 | Toby Doig | Systems and methods for providing a hierarchy of cache layers of different types for intext advertising |
US9720715B2 (en) * | 2010-12-08 | 2017-08-01 | Nuance Communications, Inc. | Extending legacy scripting languages with graphical references |
JP2012203687A (ja) * | 2011-03-25 | 2012-10-22 | Nec Corp | 通信装置、通信方法、およびプログラム |
EP2702550A4 (en) * | 2011-04-25 | 2014-10-01 | Ikanos Communications Inc | METHOD AND APPARATUS FOR CACHING IN A NETWORK ENVIRONMENT |
US9294564B2 (en) * | 2011-06-30 | 2016-03-22 | Amazon Technologies, Inc. | Shadowing storage gateway |
JP6552196B2 (ja) | 2011-08-02 | 2019-07-31 | アジャイ ジャドハブ | クラウドベースの分散永続性及びキャッシュデータモデル |
US8825864B2 (en) | 2011-09-29 | 2014-09-02 | Oracle International Corporation | System and method for supporting a dynamic resource broker in a transactional middleware machine environment |
US8898271B2 (en) | 2011-09-29 | 2014-11-25 | Oracle International Corporation | System and method for supporting accurate load balancing in a transactional middleware machine environment |
US9231995B2 (en) | 2011-09-30 | 2016-01-05 | Oracle International Corporation | System and method for providing asynchrony in web services |
US9172608B2 (en) * | 2012-02-07 | 2015-10-27 | Cloudera, Inc. | Centralized configuration and monitoring of a distributed computing cluster |
US8792489B2 (en) * | 2012-03-29 | 2014-07-29 | International Business Machines Corporation | Communication transport protocol for distributed information technology architectures |
US9164702B1 (en) * | 2012-09-07 | 2015-10-20 | Google Inc. | Single-sided distributed cache system |
US9166862B1 (en) * | 2012-12-19 | 2015-10-20 | Amazon Technologies, Inc. | Distributed caching system |
US10019459B1 (en) * | 2012-12-19 | 2018-07-10 | Springpath, LLC | Distributed deduplication in a distributed system of hybrid storage and compute nodes |
US9195506B2 (en) | 2012-12-21 | 2015-11-24 | International Business Machines Corporation | Processor provisioning by a middleware processing system for a plurality of logical processor partitions |
CN103118132B (zh) * | 2013-02-28 | 2015-11-25 | 浙江大学 | 一种面向时空数据的分布式缓存系统及方法 |
CN103532754B (zh) * | 2013-10-12 | 2016-08-17 | 北京首信科技股份有限公司 | 一种通过高速内存、分布式处理海量日志的系统及方法 |
CN104168306A (zh) * | 2014-06-26 | 2014-11-26 | 湖北安标信息技术有限公司 | 基于分布式系统的配置集成方法 |
US10320941B2 (en) * | 2015-07-30 | 2019-06-11 | Nasdaq, Inc. | Server-side caching for web user interfaces |
-
2015
- 2015-10-22 CN CN201580079846.1A patent/CN107615260B/zh active Active
- 2015-10-22 KR KR1020177032994A patent/KR102385351B1/ko active IP Right Grant
- 2015-10-22 EP EP15906471.6A patent/EP3365798B1/en active Active
- 2015-10-22 WO PCT/CN2015/092523 patent/WO2017066953A1/en active Application Filing
- 2015-10-22 JP JP2017558432A patent/JP6613320B2/ja active Active
-
2016
- 2016-01-15 US US14/997,348 patent/US9894175B2/en active Active
- 2016-01-15 US US14/997,344 patent/US10200494B2/en active Active
- 2016-01-15 US US14/997,349 patent/US9715451B2/en active Active
- 2016-01-15 US US14/997,340 patent/US10244068B2/en active Active
-
2019
- 2019-03-04 US US16/291,888 patent/US11050840B2/en active Active
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6613320B2 (ja) | トランザクション処理環境において分散型キャッシングを提供するためのシステムおよび方法 | |
JP2018531439A6 (ja) | トランザクション処理環境において分散型キャッシングを提供するためのシステムおよび方法 | |
US7962917B2 (en) | System data interfaces, related architectures, print system data interfaces and related print system architectures | |
US6928488B1 (en) | Architecture and method for serialization and deserialization of objects | |
WO2016192556A1 (zh) | 接口调用方法、装置及终端 | |
US10678697B1 (en) | Asynchronous cache building and/or rebuilding | |
US10824559B2 (en) | Counter tracker service | |
US10817312B2 (en) | Programming model for performant computing in document-oriented storage services | |
JPH1069395A (ja) | 分散オブジェクトシステムにおけるリクエスト発送メカニズム | |
US8234586B2 (en) | User interface framework and techniques | |
AU2019425532B2 (en) | System and methods for loading objects from hash chains | |
JP6902579B2 (ja) | トランザクション処理環境において分散型キャッシングを提供するためのシステムおよび方法 | |
JP6902580B2 (ja) | トランザクション処理環境において分散型キャッシングを提供するためのシステムおよび方法 | |
US20110321043A1 (en) | System, Method and Program Product for Native Interface Optimization of Read-Only Arrays | |
JP6827084B2 (ja) | トランザクション処理環境において分散型キャッシングを提供するためのシステムおよび方法 | |
CN112347794B (zh) | 数据翻译方法、装置、设备及计算机存储介质 | |
US20060173849A1 (en) | Enabling client systems to discover services accessible by remote procedure calls (rpc) on server systems | |
US7720877B1 (en) | Class structure based enhancer for data objects |