(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】特表2020-504377(P2020-504377A)
(43)【公表日】2020年2月6日
(54)【発明の名称】データベースバウンドアプリケーション用にユーザインターフェースバックエンドクラスタをスケーリングするための技術
(51)【国際特許分類】
G06F 16/178 20190101AFI20200110BHJP
【FI】
G06F16/178
【審査請求】未請求
【予備審査請求】未請求
【全頁数】24
(21)【出願番号】特願2019-533466(P2019-533466)
(86)(22)【出願日】2017年12月22日
(85)【翻訳文提出日】2019年8月15日
(86)【国際出願番号】US2017068130
(87)【国際公開番号】WO2018119370
(87)【国際公開日】20180628
(31)【優先権主張番号】15/389,714
(32)【優先日】2016年12月23日
(33)【優先権主張国】US
(81)【指定国】
AP(BW,GH,GM,KE,LR,LS,MW,MZ,NA,RW,SD,SL,ST,SZ,TZ,UG,ZM,ZW),EA(AM,AZ,BY,KG,KZ,RU,TJ,TM),EP(AL,AT,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,HU,IE,IS,IT,LT,LU,LV,MC,MK,MT,NL,NO,PL,PT,RO,RS,SE,SI,SK,SM,TR),OA(BF,BJ,CF,CG,CI,CM,GA,GN,GQ,GW,KM,ML,MR,NE,SN,TD,TG),AE,AG,AL,AM,AO,AT,AU,AZ,BA,BB,BG,BH,BN,BR,BW,BY,BZ,CA,CH,CL,CN,CO,CR,CU,CZ,DE,DJ,DK,DM,DO,DZ,EC,EE,EG,ES,FI,GB,GD,GE,GH,GM,GT,HN,HR,HU,ID,IL,IN,IR,IS,JO,JP,KE,KG,KH,KN,KP,KR,KW,KZ,LA,LC,LK,LR,LS,LU,LY,MA,MD,ME,MG,MK,MN,MW,MX,MY,MZ,NA,NG,NI,NO,NZ,OM,PA,PE,PG,PH,PL,PT,QA,RO,RS,RU,RW,SA,SC,SD,SE,SG,SK,SL,SM,ST,SV,SY,TH,TJ,TM,TN,TR,TT
(71)【出願人】
【識別番号】518279875
【氏名又は名称】イングラム マイクロ インコーポレーテッド
(74)【代理人】
【識別番号】100138760
【弁理士】
【氏名又は名称】森 智香子
(72)【発明者】
【氏名】アンドレフ,アレクサンダー ヴァシリエヴィッチ
(72)【発明者】
【氏名】キム,セルゲイ スタニスラヴォヴィッチ
(72)【発明者】
【氏名】ヴァグリン,イゴール
(57)【要約】
データベースバウンドのアプリケーションのユーザインターフェース(UI)バックエンドクラスタをスケーリングするための技術は、複数のUIアプリケーションサーバと、マスターデータベースサーバとを含む。UIアプリケーションサーバはそれぞれ、現在のユーザセッション中のマスターデータベースへの直近の書き込み動作中のマスターデータベースサーバのマスターデータベースのシーケンスIDに対応する、現在のユーザセッションに関連付けられるセッションシーケンスIDを取得するように構成されている。 加えて、UIアプリケーションサーバは、ローカルの読み取り専用データベースから、ローカルの読み取り専用データベースへのマスターデータベースの直近の非同期レプリケーション中のマスターデータベースのシーケンスIDに対応するローカルデータベースシーケンスIDを読み取るように構成されている。UIアプリケーションサーバは、セッションシーケンスIDが空である、又はローカルデータベースシーケンスID以下であるとの判定に応じて、ローカルの読み取り専用データベースからデータを読み取るように更に構成されている。追加の実施形態は本明細書に記載されている。
【選択図】
図1
【特許請求の範囲】
【請求項1】
データベースバウンドアプリケーションのユーザインターフェース(UI)バックエンドクラスタをスケーリングする方法であって、前記UIバックエンドクラスタは、複数のUIアプリケーションサーバと、マスターデータベースサーバとを備えており、方法は、
前記複数のUIアプリケーションサーバのうちのあるUIアプリケーションサーバのUIアプリケーションマネージャ―によって、データ読み取り動作を実行することであって、
現在のユーザセッションに関連付けられるセッションシーケンスIDを取得することであって、前記セッションシーケンスIDは、前記マスターデータベースサーバのマスターデータベースマネージャから、前記現在のユーザセッション中の前記マスターデータベースサーバのマスターデータベースへの直近の書き込み動作中に受信された第1のマスターデータベースシーケンスIDに対応することと、
前記セッションシーケンスIDが空でないとの判定に応じて、UIアプリケーションマネージャに関連付けられたローカルの読み取り専用データベースからローカルデータベースシーケンスIDを読み取ることであって、前記ローカルデータベースシーケンスIDは前記マスターデータベースの前記ローカルの読み取り専用データベースへの直近の非同期レプリケーション中に前記マスターデータベースマネージャから受信された第2のマスターデータベースシーケンスIDに対応し、前記ローカルの読み取り専用データベースは前記マスターデータベースの非同期的にレプリケーションされたコピーを含むことと、
前記セッションシーケンスIDが前記ローカルデータベースシーケンスID以下であるかどうかを判定することと、
前記セッションシーケンスIDが前記ローカルデータベースシーケンスID以下であるとの判定の後に、前記データを前記ローカルの読み取り専用データベースから読み取ることと、を含む、データ読み取り動作を実行すること、を含む、方法。
【請求項2】
前記データ読み取り動作を実行することは、前記セッションシーケンスIDが空であるとの判定に応じて、前記データを前記ローカルの読み取り専用データベースから読み取ることを更に含む、請求項1に記載の方法。
【請求項3】
前記ローカルデータベースシーケンスIDを、UIアプリケーションマネージャに関連付けられた前記ローカルの読み取り専用データベースから読み取ることは、データ読み取り要求を前記UIアプリケーションサーバのデータベースマネージャに送信することを含み、前記データベースマネージャによって、前記ローカルの読み取り専用データベースに、前記ローカルの読み取り専用データベースから前記ローカルのデータベースシーケンスIDを取得するように問い合わせることを更に含む、請求項1に記載の方法。
【請求項4】
前記データを前記ローカルの読み取り専用データベースから読み取ることは、前記UIアプリケーションサーバのデータベースマネージャにデータ読み取り要求を送信することを含み、前記データベースマネージャによって、前記ローカルの読み取り専用データベースに問い合わせて、前記ローカルの読み取り専用データベースから前記データ読み取り要求に対応する前記データを取得することを更に含む、請求項1に記載の方法。
【請求項5】
前記UIアプリケーションマネージャによって、前記UIアプリケーションサーバに通信可能に連結された複数のエンドポイントデバイスのうちのあるエンドポイントデバイスから1つ以上のメッセージを受信することと、
前記UIアプリケーションマネージャによって、前記受信されたメッセージの機能としてユーザインターフェースのデータをレンダリングすることと、を更に含む、請求項1に記載の方法。
【請求項6】
前記メッセージを受信することは、前記複数のUIアプリケーションサーバのそれぞれに通信可能に連結されたロードバランシングデバイスから前記メッセージを受信することを含み、前記ロードバランシングデバイスは前記複数のエンドポイントデバイスのそれぞれにネットワークを介して更に通信可能に連結されている、請求項5に記載の方法。
【請求項7】
前記メッセージを前記エンドポイントデバイスから受信することは、前記ユーザセッション中に前記UIアプリケーションサーバでのそのエンドポイントデバイスから全てのメッセージを受信することを含む、請求項6に記載の方法。
【請求項8】
前記UIアプリケーションマネージャによって、かつ前記ローカルの読み取り専用データベースからの前記データの前記読み取りが失敗したとの表示を受信した後に、前記表示を受信してから閾値持続時間が経過したかを判定することと、
前記UIアプリケーションマネージャによって、かつ前記閾値持続時間が経過したとの判定に応じて、別のデータ読み取り動作を実行することと、を更に含む、請求項4に記載の方法。
【請求項9】
前記UIアプリケーションマネージャによって、かつ前記ローカルの読み取り専用データベースからの前記データの読み取りが失敗したとの表示を受信した後に、前記マスターデータベースサーバのマスターデータベースマネージャにデータ読み取り要求を送信することを更に含み、前記データ読み取り要求は、前記マスターデータベースマネージャによって、前記マスターデータベースに問い合わせて、前記ローカルの読み取り専用データベースから前記データ読み取り要求に関連付けられた前記データを取得して前記マスターデータベースから適用可能データを取得するように使用可能である、請求項8に記載の方法。
【請求項10】
複数の指示を記憶する1つ以上のコンピュータ読み取り可能記憶媒体であって、前記指示は、実行されると、ユーザインターフェース(UI)バックエンドクラスタの複数のUIアプリケーションサーバのうちのあるUIアプリケーションサーバに、
前記UIアプリケーションサーバのUIアプリケーションマネージャによって、データ読み取り動作を実行させ、前記データ読み取り動作は、
現在のユーザセッションに関連付けられるセッションシーケンスIDを取得することであって、前記セッションシーケンスIDは、マスターデータベースサーバのマスターデータベースマネージャから、前記現在のユーザセッション中の前記マスターデータベースサーバのマスターデータベースへの直近の書き込み動作中に受信された第1のマスターデータベースシーケンスIDに対応することと、
前記セッションシーケンスIDが空でないとの判定に応じて、UIアプリケーションマネージャに関連付けられたローカルの読み取り専用データベースからローカルデータベースシーケンスIDを読み取ることであって、前記ローカルデータベースシーケンスIDは前記マスターデータベースの前記ローカルの読み取り専用データベースへの直近の非同期レプリケーション中に前記マスターデータベースマネージャから受信された第2のマスターデータベースシーケンスIDに対応し、前記ローカルの読み取り専用データベースは前記マスターデータベースの非同期的にレプリケーションされたコピーを含む、ことと、
前記セッションシーケンスIDが前記ローカルデータベースシーケンスID以下であるかどうかを判定することと、
前記セッションシーケンスIDが前記ローカルデータベースシーケンスID以下であるとの判定の後に、前記データを前記ローカルの読み取り専用データベースから読み取ることと、を含む、1つ以上のコンピュータ読み取り可能記憶媒体。
【請求項11】
前記データ読み取り動作を実行することは、前記セッションシーケンスIDが空であるとの判定に応じて、前記データを前記ローカルの読み取り専用データベースから読み取ることを更に含む、請求項10に記載の1つ以上のコンピュータ読み取り可能記憶媒体。
【請求項12】
前記ローカルデータベースシーケンスIDを、UIアプリケーションマネージャに関連付けられた前記ローカルの読み取り専用データベースから読み取ることは、(i)前記UIアプリケーションマネージャによって、データ読み取り要求を前記UIアプリケーションサーバのデータベースマネージャに送信することと、(ii)前記UIアプリケーションサーバのデータベースマネージャによって、前記ローカルの読み取り専用データベースに問い合わせて、前記ローカルの読み取り専用データベースから前記ローカルデータベースシーケンスIDを取得することと、を含む、請求項10に記載の1つ以上のコンピュータ読み取り可能記憶媒体。
【請求項13】
前記データを前記ローカルの読み取り専用データベースから読み取ることは、(i)前記UIアプリケーションマネージャによって、データ読み取り要求を前記UIアプリケーションサーバのデータベースマネージャに送信することと、(ii)前記UIアプリケーションサーバのデータベースマネージャによって、前記ローカルの読み取り専用データベースに問い合わせて、前記ローカルの読み取り専用データベースからデータ読み取り要求に対応する前記データを取得することと、を含む、請求項10に記載の1つ以上のコンピュータ読み取り可能記憶。
【請求項14】
前記複数の指示は、前記UIアプリケーションサーバに、
前記UIアプリケーションマネージャによって、前記UIアプリケーションサーバに通信可能に連結された複数のエンドポイントデバイスのうちのあるエンドポイントデバイスから1つ以上のメッセージを受信することと、
前記UIアプリケーションマネージャによって、前記受信されたメッセージの機能としてユーザインターフェースのデータをレンダリングすることと、を更にさせる、請求項10に記載の1つ以上のコンピュータ読み取り可能記憶媒体。
【請求項15】
前記メッセージを受信することは、前記複数のUIアプリケーションサーバのそれぞれに通信可能に連結されたロードバランシングデバイスから前記メッセージを受信することを含み、前記ロードバランシングデバイスは前記複数のエンドポイントデバイスのそれぞれにネットワークを介して更に通信可能に連結されている、請求項14に記載の1つ以上のコンピュータ読み取り可能記憶媒体。
【請求項16】
前記複数の指示は、前記UIアプリケーションサーバに、
前記UIアプリケーションマネージャによって、かつ前記ローカルの読み取り専用データベースからの前記データの前記読み取りが失敗したとの表示を受信した後に、前記表示を受信してから閾値持続時間が経過したかどうかを判定することと、
前記UIアプリケーションマネージャによって、かつ前記閾値持続時間が経過したとの判定に応じて、別のデータ読み取り動作を実行することと、を更にさせる、請求項10に記載の1つ以上のコンピュータ読み取り可能記憶媒体。
【請求項17】
前記複数の指示は、前記UIアプリケーションサーバに、前記UIアプリケーションマネージャによって、かつ前記ローカルの読み取り専用データベースからの前記データの前記読み取りが失敗したとの表示を受信した後に、前記マスターデータベースサーバのマスターデータベースマネージャにデータ読み取り要求を送信することを更にさせ、前記データ読み取り要求は、前記マスターデータベースマネージャによって、前記マスターデータベースに問い合わせて、前記ローカルの読み取り専用データベースから前記データ読み取り要求に関連付けられた前記データを取得して前記マスターデータベースから適用可能なデータを取得するように利用可能である、請求項16に記載の1つ以上のコンピュータ読み取り可能記憶媒体。
【請求項18】
データベースバウンドアプリケーション用にユーザインターフェース(UI)バックエンドクラスタをスケーリングするための複数のUIアプリケーションサーバのうちのあるUIアプリケーションサーバであって、前記UIバックエンドクラスタは、複数のUIアプリケーションサーバと、マスターデータベースサーバとを備え、前記UIアプリケーションサーバは、
CPUと、
複数の指示を記憶するメモリと、を備え、前記複数の指示は、プロセッサによって実行されると、前記UIアプリケーションサーバに、
前記UIアプリケーションサーバのUIアプリケーションマネージャによって、データ読み取り動作を実行させ、前記データ読み取り動作は、
現在のユーザセッションに関連付けられるセッションシーケンスIDを取得することであって、前記セッションシーケンスIDは、前記マスターデータベースサーバのマスターデータベースマネージャから、前記現在のユーザセッション中の前記マスターデータベースサーバのマスターデータベースへの直近の書き込み動作中に受信された第1のマスターデータベースシーケンスIDに対応する、ことと、
前記セッションシーケンスIDが空でないとの判定に応じて、UIアプリケーションマネージャに関連付けられたローカルの読み取り専用データベースからローカルデータベースシーケンスIDを読み取ることであって、前記ローカルデータベースシーケンスIDは前記マスターデータベースの前記ローカルの読み取り専用データベースへの直近の非同期レプリケーション中に前記マスターデータベースマネージャから受信された第2のマスターデータベースシーケンスIDに対応し、前記ローカルの読み取り専用データベースは前記マスターデータベースの非同期的にレプリケーションされたコピーを含む、ことと、
前記セッションシーケンスIDが前記ローカルデータベースシーケンスID以下であるかどうかを判定することと、
前記セッションシーケンスIDが前記ローカルデータベースシーケンスID以下であるとの判定の後に、前記データを前記ローカルの読み取り専用データベースから読み取ることと、を含む、UIアプリケーションサーバ。
【請求項19】
前記データ読み取り動作を実行することは、前記セッションシーケンスIDが空であるとの判定に応じて、前記データを前記ローカルの読み取り専用データベースから読み取ることを更に含む、請求項18に記載のUIアプリケーションサーバ。
【請求項20】
前記ローカルデータベースシーケンスIDを、UIアプリケーションマネージャに関連付けられた前記ローカルの読み取り専用データベースから読み取ることは、(i)前記UIアプリケーションマネージャによって、データ読み取り要求を前記UIアプリケーションサーバのデータベースマネージャに送信することと、(ii)前記UIアプリケーションサーバのデータベースマネージャによって、前記ローカルの読み取り専用データベースに問い合わせて、前記ローカルの読み取り専用データベースから前記ローカルデータベースシーケンスIDを取得することと、を含む、請求項18に記載のUIアプリケーションサーバ。
【請求項21】
前記データを前記ローカルの読み取り専用データベースから読み取ることは、(i)前記UIアプリケーションマネージャによって、データ読み取り要求を前記UIアプリケーションサーバのデータベースマネージャに送信することと、(ii)前記UIアプリケーションサーバのデータベースマネージャによって、前記ローカルの読み取り専用データベースに問い合わせて、前記ローカルの読み取り専用データベースからデータ読み取り要求に対応する前記データを取得することと、を含む、請求項18に記載のUIアプリケーションサーバ。
【請求項22】
前記1つ以上のプロセッサは、
前記UIアプリケーションマネージャによって、前記UIアプリケーションサーバに通信可能に連結された複数のエンドポイントデバイスのうちのあるエンドポイントデバイスから1つ以上のメッセージを受信することと、
前記UIアプリケーションマネージャによって、前記受信されたメッセージの機能としてユーザインターフェースのデータをレンダリングすることと、をさせる前記指示を実行するように更に構成されている、請求項18に記載のUIアプリケーションサーバ。
【請求項23】
前記メッセージを受信することは、前記複数のUIアプリケーションサーバのそれぞれに通信可能に連結されたロードバランシングデバイスから前記メッセージを受信することを含み、前記ロードバランシングデバイスは前記複数のエンドポイントデバイスのそれぞれにネットワークを介して更に通信可能に連結されている、請求項22に記載のUIアプリケーションサーバ。
【請求項24】
前記1つ以上のプロセッサは、
前記UIアプリケーションマネージャによって、かつ前記ローカルの読み取り専用データベースからの前記データの前記読み取りが失敗したとの表示を受信した後に、前記表示を受信してから閾値持続時間が経過したかどうかを判定することと、
前記UIアプリケーションマネージャによって、かつ前記閾値持続時間が経過したとの判定に応じて、別のデータ読み取り動作を実行することと、をさせる前記指示を実行するように更に構成されている、請求項18に記載のUIアプリケーションサーバ。
【請求項25】
前記1つ以上のプロセッサは、前記UIアプリケーションマネージャによって、かつ前記ローカルの読み取り専用データベースからの前記データの前記読み取りが失敗したとの表示を受信した後に、前記マスターデータベースサーバのマスターデータベースマネージャにデータ読み取り要求を送信させるための指示を実行するように更に構成され、前記マスターデータベースに問い合わせて、前記ローカルの読み取り専用データベースから前記データ読み取り要求に関連付けられた前記データを取得して前記マスターデータベースから適用可能なデータを取得するように利用可能である、請求項24に記載のUIアプリケーションサーバ。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本出願は国際特許出願であり、2016年12月23日に出願された米国特許出願整理番号第15/389,714号の優先権の利益を主張し、その記載及び図面はその全体にわたって本明細書に引用により援用される。
【0002】
本明細書に開示される実施形態は概してユーザインターフェースバックエンドクラスタに関し、より具体的には、データベースバウンドのアプリケーション用にユーザインターフェースバックエンドクラスタをスケーリングするための技術に関する。
【背景技術】
【0003】
典型的には、ユーザインターフェース(UI)バックエンドクラスタは、UIバックエンドコード/スクリプトを実行するために複数のコンピュートノードを利用する。しかしながら、そのようなUIバックエンドクラスタは典型的に、強固なデータの無矛盾性意味論を保持する努力として、単一のデータベースを共有する。このように、伝統的な解決策は、ハイパーテキストプリプロセッサ(PHP)に基づくウェブ開発されたアプリケーションなど、CPUバウンドアプリケーション用にアプリケーションレベルでのスケーラビリティを提供することができる。残念ながら、このような伝統的な解決策は、データベースがスケーリング可能でないために、データベースバウンドのアプリケーション(例えば、コミュニティクリーチャープロジェクト(Community Creature Project、CCP)v2 UI、アプリケーションパッケージングスタンダード(APS)2、など)についてはスケーリングを行わない。
【0004】
データベースのスケーリング不足を克服するための努力には複数のスレーブを追加することが含まれるが、特定のバックエンドクラスタ(例えば、PostgreSQL)は同期レプリケーションしかサポートしていない。このように、複数のスレーブを追加することは、結果として起こるデータの無矛盾性の問題、及び使用中にUIを変更させる可能性があり、そのUIのユーザを混乱させるような、ノンリピータブルリードの試みを引き起こす可能性がある。したがって、データベースバウンドアプリケーション用のスケーリング可能なUIバックエンドクラスタの需要がある。
【発明の概要】
【0005】
一態様は、データベースバウンドアプリケーション用にユーザインターフェース(UI)バックエンドクラスタをスケーリングする方法を含み、UIバックエンドクラスタは、複数のUIアプリケーションサーバと、マスターデータベースサーバとを備えている。方法は、マスターデータベースサーバによって、複数のUIアプリケーションサーバのうちのあるUIアプリケーションサーバからデータ変更要求を受信することを含み、データ変更要求は、変更されるデータの情報を識別することと、マスターデータベースサーバによって、受信されたデータ変更要求と関連付けられたデータを、マスターデータベースサーバによって管理されるマスターデータベースにおいて変更することと、マスターデータベースサーバによって、マスターシーケンス識別子を更新することであって、マスターシーケンス識別子はマスターデータベースに関連付けられる独自の値を定義する、ことと、マスターデータベースサーバによって、UIアプリケーションサーバに、更新されたマスターシーケンス識別子を含むメッセージを送信することと、マスターデータベースサーバによって、複数のUIアプリケーションサーバのそれぞれと関連付けられる対応するローカルの読み取り専用データベースそれぞれの非同期レプリケーションを実行することであって、非同期レプリケーションを実行することは、更新されたマスターシーケンス識別子をそれぞれの対応するローカルの読み取り専用データベースの対応するフィールドに保存することを含むことと、を含む。
【0006】
いくつかの実施形態では、UIアプリケーションサーバにメッセージを送信することは、メッセージとともにデータ変更動作状態を送信することを含み、データ変更動作状態は、データ変更要求に関連付けられたデータが変更を保留にしているかどうかを判定するのに使用可能である。加えて、いくつかの実施形態では、データ変更動作状態は、ローカルの読み取り専用データが古いことを示す。他の実施形態では、マスターシーケンス識別子を更新することは、マスターデータベースシーケンス識別子の前の値を整数の1で増分させることを含む。更に他の実施形態において、データを変更することは、マスターデータベース内の対応するデータを挿入、削除、又は更新することのうちの1つを含む。
【0007】
別の態様では、複数の指示をその中に記憶する1つ以上のコンピュータ読み取り可能記憶媒体であって、複数の指示は実行されると、ユーザインターフェース(UI)バックエンドクラスタのマスターデータベースサーバに、UIバックエンドクラスタの複数のUIアプリケーションのうちのあるUIアプリケーションサーバより、変更されるデータの情報を識別することを含むデータ変更要求を受信することと、受信されたデータ変更要求と関連付けられたデータを、マスターデータベースサーバによって管理されたマスターデータベースに変更することと、マスターデータベースに関連付けられた独自の値を定義するマスターシーケンス識別子を更新することと、更新されたマスターシーケンス識別子を含むメッセージをUIアプリケーションサーバに送信することと、複数のUIアプリケーションサーバそれぞれと関連付けられたローカルの読み取り専用データベースそれぞれの非同期レプリケーションを実行することであって、非同期レプリケーションを実行することは、更新されたマスターシーケンス識別子をそれぞれのローカル読み取り専用データベースの対応するフィールドに保存することを含む。
【0008】
いくつかの実施形態では、UIアプリケーションサーバにメッセージを送信することは、メッセージとともにデータ変更動作状態を送信することを含み、データ変更動作状態は、データ変更要求に関連付けられたデータが変更を保留にしているかどうかを判定するのに使用可能である。加えて、いくつかの実施形態では、データ変更動作状態は、ローカルの読み取り専用データベースが古いことを示す。他の実施形態では、マスターシーケンス識別子を更新することは、マスターデータベースシーケンス識別子の前の値を、整数の1で増分させることを含む。更に他の実施形態において、データを変更することは、マスターデータベース内の対応するデータを挿入、削除、又は更新することのうちの1つを含む。
【0009】
まだ別の態様では、データベースバウンドアプリケーションについてユーザインターフェース(UI)バックエンドクラスタをスケーリングする方法は、UIバックエンドクラスタが複数のUIアプリケーションサーバとマスターデータベースサーバとを含む。方法は、複数のUIアプリケーションサーバのうちのあるUIアプリケーションサーバのUIアプリケーションマネージャによって、現在のユーザセッションに関連付けられるセッションシーケンスIDを取得することであって、セッションシーケンスIDは現在のユーザセッション中にマスターデータベースサーバのマスターデータベースへの最新の書き込み動作中にてマスターデータベースサーバのマスターデータベースマネージャより受信された第1のマスターデータベースシーケンスIDに対応する、ことと、セッションシーケンスIDが空でないとの判定に応じて、UIアプリケーションマネージャに関連付けられるローカルの読み取り専用データベースからローカルデータベースシーケンスIDを読み取ることであって、ローカルデータベースシーケンスIDは、ローカルの読み取り専用データベースへのマスターデータベースの最新の非同期レプリケーション中にマスターデータベースマネージャより受信された第2のマスターデータベースシーケンスIDに対応する、ことと、セッションシーケンスIDがローカルデータベースシーケンスID以下であるかどうかを判定することと、セッションシーケンスIDがローカルのデータベースシーケンスID以下であるとの判定の後に、ローカルの読み取り専用データベースからデータを読み取ることと、を含む、データ読み取り動作を実行することを含む。
【0010】
いくつかの実施形態では、データ読み取り動作を実行することは、セッションシーケンスIDが空であるとの判定に応じて、ローカルの読み取り専用データベースからデータを読み取ることを更に含む。他の実施形態では、ローカルデータベースシーケンスIDをUIアプリケーションマネージャに関連付けられたローカルの読み取り専用データベースからを読み取ることは、UIアプリケーションサーバのデータベースマネージャにデータ読み取り要求を送信することを含み、データベースマネージャによって、ローカルの読み取り専用データベースに問い合わせて、ローカルデータベースシーケンスIDをローカルの読み取り専用データベースから取得することを更に含む。更に他の実施形態において、ローカルの読み取り専用データベースからデータを読み取ることは、UIアプリケーションサーバのデータベースマネージャにデータ読み取り要求を送信することを含み、データベースマネージャによって、ローカルの読み取り専用データベースに問い合わせて、データ読み取り要求に対応するデータをローカルの読み取り専用データベースから取得することを更に含む。
【0011】
いくつかの実施形態では、方法は、UIアプリケーションマネージャによって、1つ以上のメッセージを、UIアプリケーションサーバに通信可能に連結された複数のエンドポイントデバイスのうちのあるエンドポイントデバイスから受信することと、UIアプリケーションマネージャによって、ユーザインターフェースのデータを、受信したメッセージの機能としてレンダリングすることと、を更に含む。いくつかの実施形態では、メッセージを受信することは、メッセージを、複数のUIアプリケーションサーバのそれぞれに通信可能に連結されたロードバランシングデバイスから受信することを含み、ロードバランシングデバイスは、複数のエンドポイントデバイスのそれぞれに、ネットワークを介して、更に通信可能に連結されている。加えて、いくつかの実施形態では、メッセージをエンドポイントデバイスから受信することは、ユーザセッション中にUIアプリケーションサーバにあるそのエンドポイントデバイスから全てのメッセージを受信することを含む。
【0012】
いくつかの実施形態では、方法は、UIアプリケーションによって、かつローカルの読み取り専用データベースからのデータの読み取りが失敗したとの表示を受信した後に、その表示を受信してから閾値持続時間が経過したかを判定することと、UIアプリケーションマネージャによって、かつ閾値持続時間が経過したとの判定に応じて、別のデータ読み取り動作を実行することと、を更に含む。加えて、いくつかの実施形態では、方法は、UIアプリケーションマネージャによって、かつローカルの読み取り専用データベースのデータの読み取りが失敗したとの表示を受信した後に、マスターデータベースサーバのマスターデータベースマネージャにデータ読み取り要求を送信することを含み、データ読み取り要求は、マスターデータベースマネージャによって、マスターデータベースにデータ読み取り要求に関連付けられたデータをローカルの読み取り専用データベースから取得して、マスターデータベースから適用可能なデータを取得するように問い合わせるために使用可能である。
【0013】
更に別の態様では、複数の指示をその中に記憶する1つ以上のコンピュータ読み取り可能記憶媒体であって、複数の指示は実行されると、ユーザインターフェース(UI)バックエンドクラスタの複数のUIアプリケーションサーバのうちのあるUIアプリケーションサーバに、UIアプリケーションサーバのUIアプリケーションマネージャによってデータ読み取り動作を実行させることを含み、データ読み取り動作は、現在のユーザセッションに関連付けられたセッションシーケンスIDを取得することであって、セッションシーケンスIDは、UIバックエンドクラスタのマスターデータベースサーバのマスターデータベースマネージャから、現在のユーザセッション中のマスターデータベースサーバのマスターデータベースへのデータの直近の書き込み動作中に受信された第1のマスターデータベースシーケンスIDに対応する、ことと、セッションシーケンスIDが空でないとの判定に応じて、ローカルデータベースシーケンスIDをUIアプリケーションマネージャに関連付けられたローカルの読み取り専用データベースから読み取ることであって、ローカルデータベースシーケンスIDは、マスターデータベースマネージャから、マスターデータベースのローカルの読み取り専用データベースへの直近の非同期レプリケーション中に受信した第2のマスターデータベースシーケンスIDに対応し、ローカルの読み取り専用データベースはマスターデータベースの非同期レプリケーションされたコピーを含む、ことと、セッションシーケンスIDがローカルデータベースシーケンスID以下であるかどうかを判定することと、セッションシーケンスIDがローカルデータベースシーケンスID以下であるとの判定の後に、ローカルの読み取り専用データベースからデータを読み取ることと、を含む。
【0014】
いくつかの実施形態では、データ読み取り動作を実行することは、セッションシーケンスIDが空であるとの判定に応じて、データをローカルの読み取り専用データベースから読み取ることを更に含む。他の実施形態では、ローカルデータベースシーケンスIDを、UIアプリケーションマネージャと関連付けられたローカルの読み取り専用データベースから読み取ることは、(i)UIアプリケーションマネージャによって、データ読み取り要求をUIアプリケーションサーバのデータベースマネージャに送信することと、(ii)UIアプリケーションサーバのデータベースマネージャによってローカルの読み取り専用データベースに問い合わせて、ローカルの読み取り専用データベースからローカルデータベースシーケンスIDを取得することと、を含む。更に他の実施形態において、ローカルの読み取り専用データベースからデータを読み取ることは、(i)UIアプリケーションマネージャによって、UIアプリケーションサーバのデータベースマネージャにデータ読み取り要求を送信することと、(ii)UIアプリケーションサーバのデータベースマネージャによってローカルの読み取り専用データベースに問い合わせて、ローカルの読み取り専用データベースからデータ読み取り要求に対応するデータを取得することと、を含む。
【0015】
いくつかの実施形態では、複数の指示は、UIアプリケーションサーバに、UIアプリケーションマネージャによって、UIアプリケーションサーバに通信可能に連結された複数のエンドポイントデバイスから1つ以上のメッセージを受信することと、UIアプリケーションマネージャによって、ユーザインターフェースのデータを受信したメッセージの機能としてレンダリングすることと、を更にさせる。加えて、いくつかの実施形態では、メッセージを受信することは、複数のUIアプリケーションサーバのそれぞれに通信可能に連結されたロードバランシングデバイスからメッセージを受信することを含み、ロードバランシングデバイスは、複数のエンドポイントデバイスのそれぞれにネットワークを介して通信可能に更に連結されている。
【0016】
いくつかの実施形態では、複数の指示は、UIアプリケーションサーバに、UIアプリケーションマネージャによって、かつローカルの読み取り専用データベースからのデータの読み取りが失敗したとの表示を受信した後に、表示を受信してから閾値持続時間が経過したかどうかを判定することと、UIアプリケーションマネージャによって、かつ閾値持続時間が経過したとの判定に応じて、別のデータ読み取り動作を実行することと、を更にさせる。加えて、いくつかの実施形態では、複数の指示は、UIアプリケーションサーバに、UIアプリケーションマネージャによって、かつローカルの読み取り専用データベースからのデータの読み取りが失敗したとの表示を受信した後に、マスターデータベースサーバのマスターデータベースマネージャにデータ読み取り要求を送信することを更にさせ、データ読み取り要求は、マスターデータベースマネージャによって、マスターデータベースに問い合わせて、データ読み取り要求に関連付けられたデータをローカルの読み取り専用データベースから読み取って、マスターデータベースから適用可能なデータを取得するために使用可能である。
【図面の簡単な説明】
【0017】
本明細書に含まれる実施形態及び他の特徴、利点及び開示、並びにそれらを達成する態様、及び本開示は、以下の本開示の様々な例示的な実施形態の説明を添付図面と併せて参照することで明らかとなり、より理解できる。
【0018】
【
図1】
図1は、複数のユーザインターフェース(UI)アプリケーションサーバにネットワークを介して通信可能に連結された、それぞれがマスターデータベースサーバに通信可能に連結された1つ以上のエンドポイントデバイスを備える、データベースバウンドアプリケーション用にUIバックエンドクラスタをスケーリングするためのUIバックエンドクラスタシステムの例示的実施形態のブロック図である。
【
図2】
図2は、
図1のUIバックエンドクラスタシステムのサーバのうちの1つの例示的実施形態のブロック図である。
【
図3】
図3は、
図1のUIバックエンドクラスタシステムのマスターデータベースサーバによって実行され得るデータ変更要求に対応するための例示的実施形態の概略フロー図である。
【
図4】
図4は、
図1のUIバックエンドクラスタシステムのUIアプリケーションサーバのうちの1つによって実行され得るデータ読み取り動作を実行する例示的な方法の概略フロー図である。
【発明を実施するための形態】
【0019】
本開示の原則の理解を促進する目的で、図面で示される実施形態を参照し、それを説明するために具体的な表現を使用する。それでもなお、これによってこの開示の範囲を限定する意図がないことが理解されよう。
【0020】
図1は、データベースバウンドアプリケーションについてUIバックエンドクラスタをスケーリングするためのユーザインターフェース(UI)バックエンドクラスタシステム100を図示する。UIバックエンドクラスタシステム100は、1つ以上のエンドポイントデバイス102と、複数のUIアプリケーションサーバ120及びマスターデータベースサーバ130を含む、複数のサーバ110とを含む。図示するUIバックエンドクラスタシステム100では、1つ以上のエンドポイントデバイス102はネットワーク106を介してロードバランシングデバイス108に通信可能に連結されており、ロードバランシングデバイス108はUIアプリケーションサーバ120のそれぞれに通信可能に連結されている(例えば、UIアプリケーションサーバ(1)112及びUIアプリケーションサーバ(N)122を参照のこと)。加えて、UIアプリケーションサーバ120のそれぞれ、又はより具体的にはそれらのUIアプリケーションマネージャ(例えば、UIアプリケーションマネージャ114及びUIアプリケーションマネージャ124を参照のこと)は、マスターデータベースサーバ130、又はより具体的にはマスターデータベースサーバ130のマスターデータベースマネージャ132に通信可能に連結される。マスターデータベースサーバ130は、マスターデータベースマネージャ132によって管理されるマスターデータベース134を含む。
【0021】
UIアプリケーションマネージャ―はそれぞれ、データベースマネージャ(例えば、データベースマネージャ116及びデータベースマネージャ126を参照のこと)を介して読み取り専用のローカルのデータベース(例えば、読み取り専用データベース118及び読み取り専用データベース128を参照)に通信可能に連結されており、データベースマネージャは、それぞれの読み取り専用のローカルデータベースのデータを管理する(すなわち、読み取る、書き込む、挿入する、削除する、など)ように構成されている。読み取り専用のローカルデータベースはそれぞれ、マスターデータベース134の読み取り専用、非同期コピーを記憶するように構成されている。加えて、マスターデータベースマネージャ132は、それぞれのUIアプリケーションサーバ120のデータベースマネージャを介して読み取り専用のローカルのデータベースインスタンスそれぞれと、(例えば、マスターデータベース134上で実行されたデータ書き込み動作の後に)マスターデータベース134の非同期コピーを実行するように構成されている。
【0022】
非同期コピーを実行する際、その当時のバージョンに対応するグローバル一意シーケンス識別子の値(すなわち、マスターデータベースシーケンスID)が、対応する読み取り専用のローカルデータベースにローカルデータベースシーケンスIDとして記憶される。言い換えると、それぞれの読み取り専用のローカルデータベースに記憶されたローカルデータベースシーケンスIDは、再生時に対応する読み取り専用のローカルデータベース用のマスターデータベース134のバージョンを示す。したがって、以下に詳細に記載するように、ローカルデータベースシーケンスIDは、読み取り専用のローカルデータベースのデータがマスターデータベース134の最新のコピーを表すかどうかを見分けるために使用可能である。
【0023】
例示的な例では、エンドポイントデバイス102のうちの1つで実行されているクライアントアプリケーション104は、UIベースの要求を、UIアプリケーションサーバ120のうちの1つで実行されているUIアプリケーションマネージャに、ユーザセッション中に送信する。以下にて更に詳しく説明するように、UI要求は、受信したUIアプリケーションマネージャによって処理(例えば、受信、解析、分析など)され、この時点でUIアプリケーションマネージャは1つ以上のデータ読み取り動作(例えば、データベースからデータを要求する)又はデータ書き込み動作(例えば、データベースにデータを書き込む)を結果として開始させてもよい。前に説明したように、それぞれのUIアプリケーションサーバ120のローカルデータベースは、最後に非同期レプリケーションが実行された時の、マスターデータベース134のデータの読み取り専用コピーである。したがって、任意の書き込み動作はマスターデータベース134上で実行される一方で、データ読み取り動作はそれぞれの読み取り専用のローカルデータベース又はマスターデータベース134のいずれかで実行され得る。
【0024】
データ書き込み動作については、UIアプリケーションマネージャがマスターデータベースマネージャ132にデータ変更要求を送信する。
図3にて以下に更に記載するように、マスターデータベースマネージャ132はデータ変更要求を受信し、データ変更要求に関連付けられているマスターデータベース134内のデータを変更する。加えて、マスターデータベースマネージャ132は、マスターデータベースシーケンスIDを、データ変更要求が送信されたUIアプリケーションサーバ120に関連付けられたUIアプリケーションマネージャに送信する。受信後、UIアプリケーションマネージャはセッションシーケンスID(すなわち、現在のユーザセッションに対応する)を、受信したマスターシーケンスIDに設定する。
【0025】
データ読み取り動作については、データ読み取り動作を開始させるUIアプリケーションマネージャは、最初にどのデータベースからデータを問い合わせるべきかを決定しなければならない。そのために、
図4にて更に記載するように、UIアプリケーションマネージャは、読み取り専用のローカルデータベースに記憶されているデータが現在のものかを判定する。読み取るデータが現在のものであるかどうかを判定するには、UIアプリケーションマネージャは、ユーザセッションがセッションシーケンスID(例えば、前の書き込み動作から)を有しているかを確認する。ユーザセッションがセッションシーケンスIDを有さない場合、データは読み取り専用のローカルデータベースから要求されており、それとは異なり、ユーザセッションがセッションシーケンスIDを有する場合、UIアプリケーションマネージャはセッションシーケンスIDをローカルのデータベースシーケンスIDと比較して、データをローカルの読み取り専用データベースから読み取るか、ローカルの読み取り専用データベースが非同期レプリケーションされるまで待つか、マスターデータベース134からデータを読み取るかを決定する。したがって、ローカルの読み取り専用データベースとそれぞれのシーケンスID(例えば、マスターデータベースシーケンスID、ローカルデータベースシーケンスID、及びセッションシーケンスID)に関するマスターデータベース134の階層構造は、かかるUIバックエンドクラスタがスケーリングされることを可能にする。
【0026】
1つ以上のエンドポイントデバイス102は、本明細書に記載される、UIバックエンドクラスタシステム100のUIアプリケーションサーバ120とネットワーク(例えば、ネットワーク106)を介して通信することを含む機能を実行することができる任意のタイプのコンピューティングデバイスとして実装されてもよい。したがって、1つ以上のエンドポイントデバイス102は、非限定的に、デスクトップコンピュータ、モバイルコンピューティングデバイス、インターネット接続機器、インターネット接続テレビ、又は任意の他のタイプの「スマート」若しくは別の方法でのインターネット接続デバイスを含むことができる。エンドポイントデバイス102がモバイルコンピューティングデバイスとして実装されるこのような実施形態では、エンドポイントデバイス102は、モバイル特有のハードウェア及びソフトウェアコンポーネントを、スマートフォン、ウェアラブル機器(例えば、スマートウォッチ、スマートグラスなど)、タブレット、ラップトップなどのモバイルアーキテクチャ上でサービス及びアプリケーションを動作、実行、及び提供するために使用する任意のタイプの携帯型コンピューティングデバイスとして実装されてもよいように理解されたい。
【0027】
クライアントアプリケーション104は、クライアント−サーバアーキテクチャにおけるUIアプリケーションサーバ120のUIアプリケーションマネージャと通信するように構成される任意のタイプのネットワークベースのソフトウェアアプリケーションとして実装されてもよい。言い換えると、スタンドアローンアプリケーション、すなわちシッククライアントとは対照的に、クライアントアプリケーション104は、サーバベースのアプリケーション(例えば、クラウドベースのウェブサーバ)とネットワーク(例えば、ネットワーク106)を介して通信するように構成されて、そこに接続されるエンドポイントデバイス102のユーザにサービスを届けようと、シンクライアント(例えば、ウェブブラウザ、電子メールクライアントなど)として実装される。言い換えると、クライアントアプリケーション104は実装されなくてもよい。いくつかの実施形態では、本明細書内に使用されるユーザとは、人(すなわち、人間のユーザ)又はエンドポイントデバイス102自体を指すことができるように理解されたい。
【0028】
ネットワーク106は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、グローバルネットワーク(インターネット)などを含む、任意のタイプの有線及び/又は無線ネットワークとして実装されてもよい。したがって、ネットワーク106は、一連の有線及び/又は無線のインターコネクト器を介してネットワーク通信トラフィックの流れ及び/又は処理を促進するために通信可能に連結された1つ以上のネットワークコンピューティングデバイス(図示せず)を含むことができる。このようなネットワークコンピューティングデバイスには、非限定的に、1つ以上のアクセスポイント、ルータ、スイッチ、サーバ、コンピュートデバイス、記憶デバイスなどを含むことができる。
【0029】
例えば、このようなネットワークコンピューティングデバイスの1つ以上は、エンドポイントデバイス102の1つ以上を、ネットワーク106に、有線(例えば、イーサネット(登録商標)、トークンリングなど)及び/又は無線(例えば、Bluetooth(登録商標)、Wi−Fi(登録商標)、無線ブロードバンド、ZigBee(登録商標)など)の通信技術並びに関連するプロトコルを用いたLAN構成にて連結するように構成されてもよい。 例を補うと、LANは1つ以上のより大きなエリアネットワーク(例えば、WAN、メトロポリタンエリアネットワーク、(MAN)、インターネットなど)に、ネットワーク106の追加のネットワークコンピューティングデバイスを介して(例えば、同軸ケーブル、モバイル電話通信、光ファイバーケーブルなどを介して)連結されてもよい。
【0030】
ロードバランシングデバイス108は、リバースプロキシとして動作する、いくつかのサーバ(例えば、UIアプリケーションサーバ120)にわたってネットワーク及び/又はアプリケーショントラフィックを分配することを含む、本明細書に記載される機能を実行するように構成されている、任意のソフトウェア、ハードウェア、ファームウェア、及び回路を含む、任意のタイプのロードバランサデバイスとして実装されてもよい。例えば、いくつかの実施形態では、ロードバランシングデバイス108はスティッキーセッションをサポートして、読み取りの一貫性を得るために、ユーザセッション中にエンドポイントデバイス102のうちの特定の1つから受信された全ての要求がUIアプリケーションサーバ120の同一のものに送られるように経路を定めてもよい。ロードバランシングデバイス108が単一のデバイスとして図示されている一方で、ロードバランシング動作は、冗長性を通じて信頼性及び可用性を向上させるために、2つ以上のロードバランシングデバイス108によって実行されてもよいように理解されたい。
【0031】
サーバ110のそれぞれ(すなわち、UIアプリケーションサーバ120及びマスターデータベースサーバ130)は、本明細書に記載の機能を実行することができる任意のタイプのコンピュート及び/又は記憶装置として実装されてもよい。ここで
図2を参照すると、1つ以上のUIアプリケーションサーバ120及びマスターデータベースサーバ130を表すサーバ110の例示的実施形態を示している。例示的なサーバ110は、中央処理装置(CPU)200、入出力(I/O)コントローラ202、メモリ204、ネットワーク通信回路206、及びデータ記憶装置210、並びに、いくつかの実施形態では、1つ以上のI/O周辺機器208を備えている。代替の実施形態では、画像処理装置(GPU)など、例示的なサーバ110の構成要素に対して追加の、より少ない、及び/又は代替的な構成要素を含んでもよいように理解されたい。例示的な構成要素の1つ以上が、単一の集積回路(IC)上に単一のシステムオンアチップ(system-on-a-chip、SoC)上に組み合わされてもよいように、追加で理解されたい。
【0032】
CPU200、すなわちプロセッサは、データを処理することができる任意のタイプのハードウェア又は回路の組み合わせとして実装されてもよい。したがって、CPU200は、単一コアプロセッサアーキテクチャにおいて1つのプロセッシングコア(図示せず)を、又はマルチコアプロセッサアーキテクチャにおいて複数のプロセッシングコアを含んでもよい。プロセッシングコアの数にかかわらず、CPUはプログラムの指示の読み取り及び実行が可能である。いくつかの実施形態では、CPU200は、CPU200と直接一体化され得る、又はCPU200とは別のインターコネクト器で別のチップ上に載置される、キャッシュメモリ(図示せず)を含んでもよい。いくつかの実施形態では、ソフトウェア及び/ハードウェア動作(例えば、ネットワークトラフィック処理動作)を実行するために、CPU200に発行される又はCPU200から発行されるコマンドではなく、パイプラインロジックを使用してもよいように理解されたい。
【0033】
I/Oコントローラ202、すなわちI/Oインターフェースは、入出力デバイスとサーバ110との間をインターフェースで接続することができる任意のタイプのコンピュータハードウェア又は回路の組み合わせとして実装されてもよい。例示的に、I/Oコントローラ202はCPU200から入出力要求を受信するように、かつそれぞれの入出力デバイスに制御信号を送信するように構成されており、それによってサーバ110への、及びサーバ110からのデータフローを管理する。
【0034】
メモリ204は、処理用のデータ及び指示を保持することができる任意のタイプのコンピュータハードウェア又は回路の組み合わせとして実装され得る。このようなメモリ204は、メイン又はプライマリメモリと呼ばれ得る。いくつかの実施形態では、サーバ110の1つ以上の構成要素は、特定のデータがCPU200とは独立してダイレクトメモリアクセス(DMA)を介して記憶され得るよう、メモリへのダイレクトなアクセスを有することができることを理解されたい。
【0035】
ネットワーク通信回路206は、無線及び/又は有線の通信モードを介してネットワークインターフェース通信(例えば、メッセージ、データグラム、パケットなど)を管理することができる任意のタイプのコンピュータハードウェア又は回路の組み合わせとして実装されてもよい。したがって、いくつかの実施形態では、ネットワーク通信回路206は、サーバ110をコンピュータネットワーク(例えば、ネットワーク106)に接続するように構成可能なネットワークインターフェースコントローラ(NIC)、並びにUIバックエンドクラスタシステム100の他のデバイス(例えば、ロードバランシングデバイス108、UIアプリケーションサーバ120、マスターデータベースサーバなど)を含むことができる。
【0036】
1つ以上のI/O周辺機器208は、コンピューティングデバイス102と接続かつ通信するように構成された任意の補助デバイスとして実装されてもよい。例えば、I/O周辺機器208は、非限定的に、マウス、キーボード、モニタ、タッチスクリーン、プリンタ、スキャナ、マイク、スピーカーなどを含み得る。したがって、いくつかのI/Oデバイスは1つの機能(すなわち、入力若しくは出力)、又は両方の機能(すなわち、入力及び出力)を行うことができるように理解されたい。
【0037】
いくつかの実施形態では、I/O周辺機器208は、サーバ110に、サーバ110のケーブル(例えば、リボンケーブル、ワイヤ、ユニバーサルシリアルバス(USB)ケーブル、高精細度マルチメディアインターフェース(HDMI(登録商標))ケーブルなど)を介して接続され得る。このような実施形態では、ケーブルはサーバ110の対応するポート(図示せず)に接続され、それらの間で行われる通信はI/Oコントローラ202によって管理することができる。代替的な実施形態では、I/O周辺機器208は、ネットワーク通信回路206によって管理することができる無線モードの通信(例えば、Bluetooth(登録商標)、Wi−Fi(登録商標)など)を介してサーバ110に接続されてもよい。
【0038】
データ記憶装置210は、データの不揮発性記憶が可能なコンピュータハードウェアの任意のタイプ(例えば、半導体記憶媒体、磁気記憶媒体、光学記憶媒体など)として実装され得る。このようなデータ記憶装置210は、補助又は二次記憶として一般的に呼ばれ、典型的には上述のメモリ204に関する大量のデータを記憶するために使用される。
【0039】
それぞれのサーバ110の構成要素のタイプは、それぞれのサーバ110のタイプ及び意図する用途に基づかせることができることを理解されたい。例えば、マスターデータベースサーバ130は、UIアプリケーションサーバ120のコンピュート容量に対してより少ないコンピュート容量を有するデータベースサーバとして構成されてもよい。同様に、UIアプリケーションサーバ120は、マスターデータベースサーバ130のコンピュート容量に対してより多くのコンピュート容量を有するアプリケーションサーバとして構成されてもよい。
【0040】
再び
図1を参照して、1つ以上のエンドポイントデバイス102のそれぞれ、及びロードバランシングデバイス108が、
図2の例示的なサーバ110のものと同様の構成要素を含み得ることを理解されたい。したがって、そのような同様の構成要素は、説明の分かりやすさを維持するためにここでは説明しない。更に、いくつかの実施形態では、1つ以上のエンドポイントデバイス102のそれぞれ、及びロードバランシングデバイス108は、
図2の例示的なサーバ110のものに対して追加の又はより少ない構成要素を含み得ることをも理解されたい。
【0041】
UIアプリケーションサーバ120を再び参照して、いくつかの実施形態では、UIアプリケーションサーバ120はクラスタ内に設計されてもよく、ユーザの数(例えば、エンドポイントデバイス102)及び/又は必要な性能測定基準(例えば、クオリティオブサービス)にしたがって水平にスケーリングされ得る。
図1の例示的なUIアプリケーションサーバ120は、UIアプリケーションサーバ(1)112と表す第1のUIアプリケーションサーバと、UIアプリケーションサーバ(N)122と表す第NのUIアプリケーションサーバとを含む。第NのUIアプリケーションサーバ(すなわち、UIアプリケーションサーバ(N)122)は「N」個の追加のUIアプリケーションサーバ120を表し、「N」は正の整数の値であることを理解されたい。例示的なUIアプリケーションサーバ(1)112は、UIアプリケーションマネージャ114、データベースマネージャ116、及びUIアプリケーションサーバ(1)112にローカルな読み取り専用データベース118を含む。同様に、例示的なUIアプリケーションサーバ(N)122は、UIアプリケーションマネージャ124、データベースマネージャ126、及びUIアプリケーションサーバ(2)122にローカルな読み取り専用データベース128を含む。
【0042】
UIアプリケーションサーバ112、122は、本明細書に記載される機能を実行することができるソフトウェア、ハードウェア、ファームウェア、及び回路の任意の組み合わせとして実装されてもよい。このような機能には、エンドポイントデバイス102のクライアントアプリケーション104(例えば、ネットワーク106上でロードバランシングデバイス108を介して)、読み取り専用データベース118、128(例えば、それぞれのデータベースマネージャ116、126を介して)、及びマスターデータベースサーバ130のマスターデータベースマネージャ132(例えば、それぞれのデータベースマネージャ116、126を介して)とインターフェースで接続することが含まれる。UIアプリケーションマネージャ114、124のそれぞれは、データをレンダリングし、レンダリングされたデータを管理するUIを提供するように構成される。UIアプリケーションサーバ112、122のデータベースマネージャ116、126のそれぞれは、UIアプリケーションマネージャ114、124によって、エンドポイントデバイス102のクライアントアプリケーション104から受信された要求に応じて開始され得るように、開始された読み取り動作を管理するように構成されている。
【0043】
特定の条件下で、UIアプリケーションマネージャのうちの1つ(例えば、UIアプリケーションマネージャ114)によって開始された、いくつかの読み取り動作は、UIアプリケーションマネージャのうちの他のものの読み取り専用データベースからデータを読み取ろうとするために、UIアプリケーションマネージャの別のもの(例えば、UIアプリケーションマネージャ124)に送信され得ることを理解されたい。 例えば、UIアプリケーションマネージャ114は、UIアプリケーションマネージャ124の読み取り専用データベースからデータを読み取ろうとするために、UIアプリケーションマネージャ124にデータ読み取り要求を送信してもよい。更に、いくつかの実施形態では、読み取り専用データベース(すなわち、読み取り専用データベース118及び読み取り専用データベース128)はそれぞれのUIアプリケーションサーバ120に対してローカルではないが、近接する中では最も近い、又はUIアプリケーションサーバ120と読み取り専用データベースが記憶されているサーバ110との間のインターコネクト器に関連するコストが最も低い場合があることを理解されたい。
【0044】
例えば、このような実施形態では、UIアプリケーションサーバ120はコンピュート動作を扱うアプリケーションサーバと、読み取り専用データベースを管理する記憶サーバとを備えてもよい。このような実施形態では、アプリケーションサーバ及び記憶サーバの組み合わせは、同一サーバ110に収容されていないが、本明細書に提示される機能を説明する目的でUIアプリケーションサーバ120を包含するように意図される。それぞれの読み取り専用データベースの、それを管理するUIアプリケーションマネージャとの近接さとは関係なく、読み取り専用データベースは、データ取得時間を最小限にするために、できるだけUIアプリケーションマネージャに近くあるべきと理解されたい。いくつかの実施形態では、読み取り専用データベースは、性能及び再配分に対する影響を低減するために、単一データベースのハードウェアリソースとは異なるものにホストされてもよい。
【0045】
マスターデータベースサーバ130は、UIアプリケーションサーバ120(例えば、UIアプリケーションサーバ112、122)のUIアプリケーションマネージャ(例えば、UIアプリケーションマネージャ114、124)とインターフェースで接続すること、及びマスターデータベース134を管理することを含む、本明細書内に記載される機能を実行することができる、ソフトウェア、ハードウェア、ファームウェア、及び回路の任意の組み合わせとして実装されてもよい。マスターデータベース134を管理するには、例示的なマスターデータベースサーバ130は、マスターデータベース134のコンテンツの読み取り、挿入、削除、及び更新を行うために、マスターデータベース134上で読み取り/書き込み動作を実行するように構成されたマスターデータベースマネージャ132を含む。マスターデータベースマネージャ132は、マスターデータベース134の変更されたデータをマスターデータベース134の非同期コピー(すなわち、読み取り専用データベース118、128)に非同期レプリケーションを実行するように更に構成されている。 読み取り専用データベース118、128は、マスターデータベース134の読み取り専用の非同期コピーであることを理解されたい。したがって、読み取り専用データベース118、128は、マスターデータベース134と同じデータベースのスキーマに固執すべきである。
【0046】
マスターデータベースマネージャ132は、マスターデータベースシーケンスIDを生成/更新し(すなわち、データ変更動作が実行された後に)、マスターデータベースシーケンスIDをUIアプリケーションサーバ(単数又は複数)120に送信するように、付加的に構成されている。したがって、前に記載したように、マスターデータベースシーケンスIDは、ローカルの読み取り専用データベースのデータが現状のものか古いものかを識別するのに使用することができる。マスターデータベースシーケンスIDは、規則的なシーケンスに関するデータベーススキーマ又は当業者に公知の任意の他の論理に基づいて、マスターデータベースマネージャ132によって生成されてもよく、前のマスターデータベースシーケンスIDの増分された値に基づいて更新されてもよい。生成/更新プロセスにかかわらず、生成されたマスターデータベースシーケンスIDはUIバックエンドクラスタシステム100のライフサイクルにわたって独自であるべきであり、生成スキーマはスレッドセーフであるべきである。言い換えると、(例えば、2つの異なる、並行するデータ変更要求の機能として実行される)異なるデータの変更は、同一のマスターデータベースシーケンスIDを割り当てることができないようにしてあるべきである。
【0047】
ここで
図3を参照すると、マスターデータベースサーバ(例えば、
図1のマスターデータベースサーバ130)、又はより具体的にはマスターデータベースサーバ130のマスターデータベースマネージャ(例えば、
図1のマスターデータベースマネージャ132)によって実行され得るデータ変更要求(すなわち、受信されたデータ書き込み要求)を扱うための例示的な方法300が提供されている。方法300はブロック302から始まり、そこでマスターデータベースサーバ130は、UIアプリケーションサーバ(例えば、
図1のUIアプリケーションサーバ120のうちの1つ)からデータ変更要求が受信されたかどうかを判定する。
【0048】
前に記載したように、データ変更要求は、UIアプリケーションサーバ120のうちの対応する1つで明示的に実行されているUIアプリケーションマネージャ(例えば、UIアプリケーションマネージャ114、UIアプリケーションマネージャ124など)から受信されてもよい。データ変更要求は、マスターデータベースサーバ130によって(例えば、マスターデータベースマネージャ132を経由して)、マスターデータベースサーバ130のマスターデータベース(例えば、マスターデータベース134)に記憶されたデータを変更する(例えば、挿入、削除、更新するなどの)ために使用可能な任意のタイプのメッセージであってもよい。したがって、データ変更要求は、変更されるデータを識別するために使用可能な任意の情報を含む。
【0049】
ブロック304では、マスターデータベースサーバ130は、ブロック302で受信されたデータ変更要求に関連付けられたデータを変更する。加えて、データ変更動作中に、ブロック306では、マスターデータベースサーバ130はマスターデータベースシーケンスIDを更新する。前に記載したように、マスターデータベースシーケンスIDは、マスターデータベースマネージャ132によって、規則的なシーケンスに関するデータベーススキーマ又は当業者に知られる任意の他の論理に基づいて、生成されてもよい。例えば、マスターデータベースサーバ130は、マスターデータベースシーケンスIDの値を1だけ増分させることで更新するように構成されてもよい。同様に前に記載したように、生成プロセスにかかわりなく、生成されたマスターデータベースシーケンスIDはUIバックエンドクラスタシステム100のライフサイクルにわたって独自であるべきであり、生成スキーマはスレッドセーフであるべきである。
【0050】
ブロック308では、マスターデータベースサーバ130は、要求しているUIアプリケーションサーバ(すなわち、ブロック302でデータ変更要求が受信された送信元のUIアプリケーションサーバ120のうちの1つ)に、ブロック306で更新されたマスターデータベースシーケンスIDを含むメッセージを送信する。いくつかの実施形態では、ブロック310では、マスターデータベース130はメッセージとともにデータ変更の状態(すなわち、データ変更動作状態)を送信する。例えば、データ変更動作状態は、変更が成功したか失敗したかの表示を提供してもよい。
【0051】
ブロック312では、マスターデータベースサーバ130は、レプリケートされた読み取り専用データベース(例えば、読み取り専用データベース118、読み取り専用データベース128など)の全てで、マスターデータベース134の非同期レプリケーションを実行する。そうするには、マスターデータベースマネージャ132は、データベースマネージャのそれぞれ(例えば、データベースマネージャ116、データベースマネージャ126など)と通信するように構成される。それぞれの非同期レプリケーションを実行する際、プロック314では、マスターデータベースサーバ130が、非同期レプリケーションの結果として、ローカルの読み取り専用データベースそれぞれにおいて、更新されたマスターデータベースシーケンスIDに(例えば、ローカルの読み取り専用データベース及びマスターデータベース134のフィールドに)ローカルデータベースシーケンスID値を設定するように理解されたい。言い換えると、ブロック306でマスターデータベースマネージャー132によって更新されたマスターデータベースシーケンスIDを含むマスターデータベース134内のフィールドが、非同期レプリケーションが実行されたことによる副産物としてそれぞれのローカルの読み取り専用データベースにて利用可能になっている。
【0052】
データフィールド(すなわち、マスターデータベースシーケンスIDに対応するデータフィールド)が変更されたことを検出した後(例えば、非同期レプリケーションの完了後)、対応するUIアプリケーションサーバ120はそれぞれ、セッションシーケンスIDを受信したマスターデータベースシーケンスIDに等しく設定することで、マスターデータベースシーケンスIDをユーザセッションとセットにするか別途関連させるように構成される。したがって、非同期レプリケーションは、最小量のレイテンシが導入される様態で実行されるべきである(例えば、ユーザ要求及び/又は期待を満足させようとするため)。読み取り動作は、非同期レプリケーションが未完了の状態でローカルの読み取り専用データベース上で実行され得ることを理解されたい。言い換えると、データは、マスターデータベース134の最新データを表さないマスターデータベース134のバージョンからのデータに対応するデータを含むローカルの読み取り専用データベースから読み取られてもよい。
【0053】
前に記載するように、ロードバランシングデバイス108はスティッキーセッションをサポートするように構成され得る。このような実施形態では、ロードバランシングデバイス108は、ユーザセッション中にエンドポイントデバイス102のうちの特定の1つから受信された要求を全て、同一のUIアプリケーションサーバ120にルート付けすることができる。あるいは、別の実施形態では、UIアプリケーションマネージャは、ロードバランシングデバイス108ではなく、ユーザセッションを管理するように構成することができる。このような実施形態では、UIアプリケーションマネージャは、それぞれのユーザセッションを、関連付けられたセッションシーケンスIDを有して作成するように構成して、UIアプリケーションマネージャがユーザセッションを管理するように構成できるよう構成してもよい。
【0054】
ここで
図4を参照すると、UIアプリケーションサーバ(例えば、
図1のUIアプリケーションサーバ120のうちの1つ)によって、又はより具体的にはUIアプリケーションサーバ120のうちの1つのUIアプリケーションマネージャ(例えば、UIアプリケーションマネージャ114、UIアプリケーションマネージャ124など)によって実行され得るデータ読み取り動作を実行するために、例示的な方法400が提供されている。方法400はブロック402から始まり、そこではUIアプリケーションマネージャがデータ読み取り動作を実行するかどうかを判断する。データ読み取り動作は、例えば、
UIアプリケーションマネージャによってユーザインターフェースをレンダリングするのに必要であり得る、エンドポイントデバイス(例えば、
図1のエンドポイントデバイス102のうちの1つ)から受信されたUI要求に応じて実行されてもよい。
【0055】
データ読み取り動作が実行される場合、方法400はブロック404に進み、そこでUIアプリケーションマネージャはセッションシーケンスIDを取得する。以前に記載したように、セッションシーケンスIDは、UIアプリケーションマネージャによって開始された、マスターデータベースサーバ(例えば、
図1のマスターデータベースサーバ130のマスターデータベース134)にて実行されたデータ変更動作の後に受信されたマスターデータベースシーケンスIDに対応する。ブロック406では、UIアプリケーションマネージャは、取得されたセッションシーケンスIDがセッションシーケンスIDの元々の空の状態(例えば、「無し」に等しく設定されている)と等しいかどうかを判定する。そのようであれば、方法400はブロック408に分岐し、そこではUIアプリケーションマネージャが、UIアプリケーションマネージャに関連付けられるローカルの読み取り専用データベース(例えば、UIアプリケーションサーバ112の読み取り専用データベース118、UIアプリケーションサーバ(N)122の読み取り専用データベース128、など)からデータを読み取る。そうするには、UIアプリケーションマネージャは、ローカルの読み取り専用データベースのデータベースマネージャに読み取り要求を送信するように構成されてもよい。したがって、読み取り要求は、ローカルの読み取り専用データベースからデータを取得するようにデータベースマネージャによって使用可能な情報を含むように理解されたい。
【0056】
いくつかの実施形態では、データは、UIアプリケーションマネージャに関連付けられているローカルの読み取り専用データベースではない読み取り専用データベースから読み取られてもよい。言い換えると、このような実施形態では、読み取り要求は、UIバックエンドクラスタシステム100のローカルの読み取り専用データベースのうちの任意のものに送信することができる。UIアプリケーションサーバ(1)112が通常のデータ読み取りルーチンを実行している例示的な例では、UIアプリケーションサーバ(1)112はローカルの読み取り専用データベース118に(例えば、データベースマネージャ116に送信される1つ以上のコマンドを介して)、又はUIアプリケーションサーバ(N)122の読み取り専用データベース128に(例えば、データベースマネージャ126及び/又はUIアプリケーションサーバ(N)122のUIアプリケーションマネージャ124に送信された1つ以上のコマンドを介して)、データ取得要求を送信してもよい。
【0057】
ブロック406を再度参照して、UIアプリケーションマネージャが、取得されたセッションシーケンスIDが空でないと判定した場合、方法400はブロック410に分岐する。ブロック410では、UIアプリケーションマネージャはローカルのデータベースシーケンスIDをローカルの読み取り専用データベースから読み取る。前に記載したように、ローカルのデータベースシーケンスIDは、ローカルの読み取り専用データベースの直近の非同期レプリケーション中に受信されたマスターデータベースシーケンスIDの値に対応する。ローカルデータベースシーケンスIDをローカルの読み取り専用データベースから読み取るには、UIアプリケーションマネージャは、対応するローカルの読み取り専用データベースのデータベースマネージャに読み取り要求を送信するように構成されてもよい。したがって、読み取り要求は、対応するローカルの読み取り専用データベースからデータを読み取るために、データベースマネージャによって使用可能な情報を含むことを理解されたい。
【0058】
ブロック412では、UIアプリケーションマネージャは、ブロック404にて取得されたセッションシーケンスIDが、ブロック410で取得されたローカルデータベースシーケンスID以下であるかどうかを判定する。言い換えると、UIアプリケーションマネージャは、データが現在のものか古いものかを判定する。UIアプリケーションマネージャが、ブロック412でセッションシーケンスIDがローカルデータベースシーケンスIDよりも大きいと判定すると、方法400は以下に記載するブロック420に分岐し、そうでない場合は、方法400はブロック414に分岐する。ブロック414では、UIアプリケーションマネージャはローカルの読み取り専用データベースにデータ読み取り要求を送信する。言い換えると、UIアプリケーションマネージャは、ローカル読み取り専用データベースからデータの読み取りを試みる。
【0059】
ブロック416では、UIアプリケーションマネージャは、要求されたデータがうまく戻ったかどうかを判定する。例えば、UIアプリケーションマネージャは、読み取り専用のローカルデータベースが、例えば、読み取り専用のローカルデータベースが読み取り動作の実行時にマスターデータベース134と同期される場合に起こり得る、読み取り専用のローカルデータベースが現在利用不可能であると示す表示(例えば、データ読み取り要求に応じて受信された返信状態)を受信してもよい。UIアプリケーションマネージャが、要求されたデータがうまく返信されたと判定した場合、方法400はブロック418に進み、そこではUIアプリケーションマネージャが、方法400がブロック402に戻る前に、セッションシーケンスIDをセッションシーケンスIDの元の空の状態に設定する(例えば、「無し」に等しく設定する)。
【0060】
そうでない場合は、UIアプリケーションマネージャが、要求されたデータがうまく返信されなかったとブロック416で判定した場合、方法400はブロック420に分岐する。ブロック420では、UIアプリケーションマネージャはマスターデータベース134からデータの読み取りを試みるかどうかを判定する。言い換えると、UIアプリケーションマネージャは、ローカルの読み取り専用データべースからデータの読み取りを試みるのか(すなわち、ローカルの読み取り専用データベースで別の読み取り動作を開始させる)、マスターデータベース134からデータを取得するのか(すなわち、マスターデータベース134にデータ読み取り要求を送信する)を判定する。UIアプリケーションマネージャがブロック420で別の読み取り動作をローカルの読み取り専用データベースから開始させるように判定した場合、方法400はブロック410に戻って、ローカルの読み取り専用データベースから、更新されたローカルデータベースシーケンスIDを取得する。
【0061】
いくつかの実施形態では、方法400は、ローカルの読み取り専用データベースでの続く読み取り動作を開始する前に、閾値基準を満たすまでブロック420を繰り返してもよい。例えば、閾値基準は持続時間(すなわち、閾値持続時間)に対応してもよく、UIアプリケーションマネージャは、別のデータ読み取り動作を試みる前に持続時間が経過したかどうかを判定してもよい。このような実施形態では、持続時間閾値は、データの同期が完了する予想持続時間に対応してもよい。別の例では、閾値基準はいくつかの試用(すなわち、最大試用数)に対応してもよい。このような実施形態では、UIアプリケーションマネージャは、ローカルの読み取り専用データベースからデータを読み取るためのいくつかの試みで失敗しているか、そして最大の試用数を超過している場合には、マスターデータベース134からデータの読み取りを試みているかどうかを判定してもよい。
【0062】
UIアプリケーションマネージャが、ローカルの読み取り専用データベースから別の読み取り動作を開始しないように判定した場合、方法400はブロック422に進む。ブロック422では、UIアプリケーションマネージャはマスターデータベースサーバ130のマスターデータベース134にデータ読み取り要求を送信する。ブロック424では、UIアプリケーションマネージャは、マスターデータベース134から要求されたデータが返信されているかを判定する。もしそうであれば、方法400はブロック402に戻り、別のデータ読み取り動作を実行するかどうかを判定する。
【0063】
本開示を図面及び前述の記載にて詳細に図示及び記載しているが、これは例示的かつ特徴に限定されないように考慮されるものとし、特定の実施形態のみが示されて記載されており、本開示の範疇内の変更及び変形は全て保護されることが望まれるように理解されたい。
【国際調査報告】