(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-15
(54)【発明の名称】ハイブリッドクラウドイベント通知管理
(51)【国際特許分類】
G06F 9/50 20060101AFI20240308BHJP
H04L 67/1097 20220101ALI20240308BHJP
【FI】
G06F9/50 150C
H04L67/1097
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023557791
(86)(22)【出願日】2021-04-07
(85)【翻訳文提出日】2023-09-20
(86)【国際出願番号】 US2021026090
(87)【国際公開番号】W WO2022216280
(87)【国際公開日】2022-10-13
(81)【指定国・地域】
(71)【出願人】
【識別番号】520155228
【氏名又は名称】ヒタチ ヴァンタラ エルエルシー
(74)【代理人】
【識別番号】110000279
【氏名又は名称】弁理士法人ウィルフォート国際特許事務所
(72)【発明者】
【氏名】レブシン, バイタリー
(72)【発明者】
【氏名】ブラマンテ, リチャード
(57)【要約】
いくつかの例では計算装置は第1オブジェクトを受信してもよい。更に、計算装置はネットワークを介して第1ネットワークストレージシステムと通信可能であってもよい。計算装置は、第1オブジェクトのメタデータが少なくとも1つの通知ルールに適合するかどうかを第1オブジェクトのメタデータから判定してもよい。第1オブジェクトのメタデータが第1通知ルールのルール表現に適合すると判定することに基づいて、計算装置は第1オブジェクトに対応する第1イベント通知を生成してもよい。更に計算装置は、第1通知ルールによって指定される第1待ち行列に第1イベント通知を送信してもよい。例えば、第1待ち行列は第1ネットワークストレージシステムによって提供されてもよい。
【特許請求の範囲】
【請求項1】
システムであって、
ネットワークを介して第1ネットワークストレージシステムと通信可能である第1計算装置を備え、
前記第1計算機は、
前記第1計算装置においてクライアント装置から第1オブジェクトを受信すること、
前記第1オブジェクトのメタデータが少なくとも1つの通知ルールに適合するかどうかを前記第1オブジェクトの前記メタデータから判定すること、
前記第1オブジェクトの前記メタデータが第1通知ルールのルール表現と適合すると判定することに基づいて、前記第1オブジェクトに対応する第1イベント通知を生成すること、及び
前記第1通知ルールによって指定される第1待ち行列に前記第1イベント通知を送信することであって、前記第1待ち行列は前記第1ネットワークストレージシステムによって提供される、送信すること
を含む操作を実行するための実行可能命令によって構成される、システム。
【請求項2】
前記操作は、
前記第1オブジェクトの前記メタデータが第2通知ルールのルール表現に適合すると判定することに基づいて、前記第2通知ルールによって指定される第2待ち行列に前記第1イベント通知を送信することであって、前記第2待ち行列は前記第1待ち行列と異なる、送信すること
を更に含む、請求項1に記載のシステム。
【請求項3】
前記第2待ち行列は、前記第1ネットワークストレージシステムと異なる第2ネットワークストレージシステムによって提供される、請求項2に記載のシステム。
【請求項4】
前記第2待ち行列は前記第1ネットワークストレージシステムによって提供される、請求項2に記載のシステム。
【請求項5】
前記操作は前記第1計算装置上でポリシーエンジンプログラムを実行することを更に含み、前記ポリシーエンジンプログラムは、
前記第1オブジェクトに対応するイベントをメッセージング待ち行列から消費し、
前記第1オブジェクトの前記メタデータを、前記第1待ち行列を指定する前記第1通知ルールの前記ルール表現と比較し、
前記第1オブジェクトの前記メタデータを、前記第1待ち行列を同じく指定する第2通知ルールのルール表現と比較し、及び
前記第1オブジェクトの前記メタデータが第1通知ルール前記ルール表現及び前記第2通知ルールの前記ルール表現に適合すると判定することに応答し、前記第1イベント通知の単一のインスタンスだけを前記第1待ち行列に送信する
ように前記第1計算装置を構成する、請求項1に記載のシステム。
【請求項6】
前記操作は、
前記第1オブジェクトの前記メタデータを第3通知ルールのルール表現と比較するためにポリシーエンジンの第2インスタンスを実行すること
を更に含み、前記第3通知ルールは前記第1待ち行列と異なる第2待ち行列を指定する、
請求項5に記載のシステム。
【請求項7】
前記第1オブジェクトの前記メタデータがオンプレミスストレージシステムによって提供される第2待ち行列を指定する第2通知ルールのルール表現に適合すると判定することに基づいて判定することに基づいて、前記第1オブジェクトに対応する第2イベント通知を生成すること、及び
前記第2イベント通知を前記第2通知ルールによって指定される前記第2待ち行列に送信すること
請求項1に記載のシステム。
【請求項8】
前記操作は前記第1計算装置上でメッセージ待ち行列プログラムを実行することを更に含み、前記メッセージ待ち行列プログラムは前記システムにおいて生じるストレージイベントを列に入れるための1以上のメッセージ待ち行列を提供する、請求項1に記載のシステム。
【請求項9】
前記第1通知ルールの前記ルール表現は、前記ルール表現は前記第1オブジェクトの前記メタデータに適合するために満たすべき少なくとも1つの条件を含む、請求項1に記載のシステム。
【請求項10】
前記操作は、
前記第1オブジェクトのオブジェクトデータをローカルストレージ内に記憶し、前記第1オブジェクトの前記メタデータをメタデータデータベース内に記憶すること、及び
前記第1オブジェクトの前記メタデータを前記第1通知ルールの前記ルール表現と比較するために、前記メタデータデータベース内の前記第1オブジェクトの前記メタデータにアクセスすること
を更に含む、請求項1に記載のシステム。
【請求項11】
前記第1待ち行列は、前記第1待ち行列から前記第1イベント通知を受信するためにアプリケーション計算装置上で実行されるアプリケーションによってアクセスされるように構成される、請求項1に記載のシステム。
【請求項12】
第1計算装置によって第1オブジェクトを受信することであって、前記第1計算装置はネットワークを介して第1ネットワークストレージシステムと通信することができる、受信すること、
前記第1オブジェクトのメタデータが少なくとも1つの通知ルールに適合するかどうかを前記第1オブジェクトの前記メタデータから判定すること、
前記第1オブジェクトの前記メタデータが第1通知ルールのルール表現に適合すると判定することに基づいて、前記第1オブジェクトに対応する第1イベント通知を生成すること、及び
前記第1通知ルールによって指定される第1待ち行列に前記第1イベント通知を送信することであって、前記第1待ち行列は前記第1ネットワークストレージシステムによって提供される、送信すること
を含む、方法。
【請求項13】
前記第1オブジェクトの前記メタデータが第2通知ルールのルール表現に適合すると判定することに基づいて、前記第2通知ルールによって規定される第2待ち行列に前記第1イベント通知を送信することであって、前記第2待ち行列は前記第1待ち行列と異なる、送信すること
を更に含む、請求項13に記載の方法。
【請求項14】
第1計算装置の1以上のプロセッサによって実行されるとき、操作を実行するように前記第1計算装置を構成する命令を記憶する、1以上の非一時的コンピュータ可読媒体であって、
前記操作は、
前記第1計算装置によって第1オブジェクトを受信することであって、前記第1計算装置はネットワークを介して第1ネットワークストレージシステムと通信することができる、受信すること、
前記第1オブジェクトのメタデータが少なくとも1つの通知ルールに適合するかどうかを前記第1オブジェクトの前記メタデータから判定すること、
前記第1オブジェクトの前記メタデータが第1通知ルールのルール表現に適合すると判定することに基づいて、前記第1オブジェクトに対応する第1イベント通知を生成すること、及び
前記第1通知ルールによって指定される第1待ち行列に前記第1イベント通知を送信することであって、前記第1待ち行列は前記第1ネットワークストレージシステムによって提供される、送信すること
を含む1以上の非一時的コンピュータ可読媒体。
【請求項15】
前記操作は、
前記第1オブジェクトの前記メタデータが第2通知ルールのルール表現に適合する判定することに基づいて、前記第2通知ルールによって指定される第2待ち行列に前記第1イベント通知を送信することであって、前記第2待ち行列は前記第1待ち行列と異なる、送信すること
を更に含む、請求項14に記載の1以上の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、データ記憶及びイベント通知の技術分野に関する。
【背景技術】
【0002】
ハイブリッドクラウドシステムでは、データを記憶し同期するために様々な異なるサービス提供エンティティが採用されてもよい。データは、様々なエンティティによって構成され制御される複数の異種システムにわたって記憶され同期されてもよい。更にいくつかのエンティティは、例えば別の計算装置上で実行されるアプリケーションに対してイベント通知を生成し送信するイベント通知特徴を提供してもよい。但し、典型的にはクラウドサービスはイベント通知を管理するための限られた機能を有してもよく、どのイベント通知が重要なのかを決定するためにアプリケーションに依拠してもよい。このことはイベント通知のための大量のネットワークトラフィックを招く可能性があり、1日当たり何百万のオブジェクトを扱う場合がある大規模ストレージシステムにおいて等、アプリケーション計算装置に対して大きい負荷をかけ得る。
【発明の概要】
【課題を解決するための手段】
【0003】
いくつかの実装形態は、第1オブジェクトを受信してもよい計算装置を含む。更に、計算装置はネットワークを介して第1ネットワークストレージシステムと通信可能であってもよい。計算装置は、第1オブジェクトのメタデータが少なくとも1つの通知ルールに適合するかどうかを、第1オブジェクトのメタデータから判定してもよい。第1オブジェクトのメタデータが第1通知ルールのルール表現に適合すると判定することに基づき、計算装置は第1オブジェクトに対応する第1イベント通知を生成してもよい。更に計算装置は、第1通知ルールによって規定される第1待ち行列に第1イベント通知を送信してもよい。例えば、第1待ち行列は第1ネットワークストレージシステムによって提供されてもよい。
【図面の簡単な説明】
【0004】
添付図面に関して詳細な説明を記載する。図中、参照番号の左端の桁はその参照番号が初めて登場する図面を識別する。異なる図面内で同じ参照番号を使用することは同様の又は同一のアイテム又は特徴を示す。
【0005】
【
図1】
図1は、いくつかの実装形態に係るハイブリッドクラウドストレージシステム内でイベント通知を管理することができるシステムのアーキテクチャ例を示す。
【0006】
【
図2】
図2は、いくつかの実装形態に係るデータ操作を取り込むためのシステム100の論理構成例を示すブロック図である。
【0007】
【
図3】
図3は、いくつかの実装形態に係る複数の待ち行列に複数のイベント通知を送信することを含む論理構成例を示すブロック図である。
【0008】
【
図4】
図4は、いくつかの実装形態に係る疑似コードの一例を示す図である。
【0009】
【
図5】
図5は、いくつかの実装形態に係るイベント通知を送信するためのプロセス例を示す流れ図である。
【0010】
【
図6】
図6は、本明細書に記載のシステムの機能の少なくともいくつかを実装するために使用されてもよいサービス計算装置の選択されたコンポーネントの例を示す。
【発明を実施するための形態】
【0011】
本明細書のいくつかの実装形態は、イベント通知の対象を絞るため、及びネットワークを介して送信されるイベント通知の数を著しく減らすためにイベント通知を効果的に管理することができるハイブリッドクラウドインフラストラクチャを含む分散コンピュータシステムのための技法及び配置を対象とする。本明細書のソリューションは、イベントに対応するメタデータが存在するとことに近いイベントのメタデータ解析を行うことにより、多過ぎるイベント通知を有する上記の問題に対処する。本明細書のシステムは、何百万の重要でないイベントがイベント通知を受信するようにセットアップされたユーザ計算装置又は他の計算装置に送信されることを潜在的に防ぎ、それによりネットワーク資源及び計算資源を節約することができる。例えば本明細書のシステムは、特定のアプリケーション又は特定のユーザに対して規定されるものに限定されるイベント通知を提供してもよい。従って本明細書の実装形態はシステム性能を劇的に改善し、アプリケーションが受信し処理するナンバーイベント通知を減らすことができる。
【0012】
一例として、オブジェクトストレージシステムの計算装置は、クライアント装置等から第1オブジェクトを受信してもよい。更に、計算装置はネットワークを介して1以上のネットワークストレージシステムと通信可能であってもよい。計算装置は、第1オブジェクトのメタデータが少なくとも1つの通知ルールに適合するかどうかを、第1オブジェクトのメタデータから判定してもよい。第1オブジェクトのメタデータが少なくとも第1通知ルールのルール表現に適合すると判定することに基づき、計算装置は第1オブジェクトに対応する第1イベント通知を生成してもよい。更に計算装置は、第1通知ルールによって規定される第1待ち行列に第1イベント通知を送信してもよい。例えば、第1待ち行列は第1ネットワークストレージシステムによって提供されてもよい。加えて、いくつかの例では第1オブジェクトのメタデータが第2通知ルールのルール表現に適合と一致すると判定することに基づき、計算装置は第2通知ルールによって規定される第2待ち行列に第1イベント通知を送信してもよく、第2待ち行列は第1待ち行列と異なる。
【0013】
本明細書のいくつかの例は、分散され及び高可用性のメタデータデータ構造を有するスケーラブルなオブジェクトストレージシステムを含んでもよい。このシステムは、ハイブリッドクラウド環境におけるインテリジェントな及び効率的なイベント通知を可能にする、メタデータへの素早い及び容易なアクセスを提供する。例えばイベントを調査するための1以上の通知ルールは、アプリケーションにイベント通知を送信するかどうかを判定するために、オブジェクトストレージシステムにおいてメタデータを直接解析するための複数の条件を有するプログラミング表現として1以上のユーザによって定義されてもよい。結果として生じるイベント通知は、1以上のクラウドサービス及び/又は1以上のオンプレミスサービスに送信されてもよい。本明細書の実装形態は、重要でないイベントのイベント通知を送信するのを防ぎながら、ユーザが望むイベントの通知を可能にするリッチなイベント通知ルールをユーザが作成することを可能にする。従って、アプリケーションがシステム内で生じる全てのイベントに関するイベント通知を受信し、それらのイベントが規定の条件とマッチするかどうかを判定し得る従来のシステムと異なり、本明細書の例はオブジェクトストレージシステム自体においてイベント通知を管理することができ、それによりネットワークに対する負荷並びにイベント通知を受信するアプリケーション及び計算装置に対する負荷を減らすことができる。加えて本明細書の例は、特定のメタデータに関するオブジェクトの調査中にイベント通知をトリガするルール表現をユーザが定めることを許容し得る。
【0014】
本明細書のいくつかの例は、複数のリモートパブリッククラウド及び/又はプライベートクラウドストレージシステムと通信する専有のローカルストレージシステムを含むハイブリッドアーキテクチャを提供してもよい。更に本明細書の実装形態は、様々な異なるプロバイダからの様々な異なるソフトウェアスタックを実行するハイブリッドクラウドシステムにわたる多方向レプリケーションを行うための新規の手法を提供してもよい。説明目的で、いくつかの実装例は、データ及びメタデータのストレージ並びに関連するイベント通知を管理するための、1以上の異なるストレージプロバイダからの1以上の異なるネットワークストレージシステムと通信する1以上のサービス計算装置の環境において記載される。但し、本明細書の実装形態は、提供する特定の例に限定されず、本明細書の開示に照らして当業者に明らかになるように、他の種類の計算システムアーキテクチャ、他の種類のストレージ環境、他のストレージプロバイダ、他の種類のクライアント構成、他の種類のデータ等に拡張されてもよい。
【0015】
図1は、いくつかの実装形態に係るハイブリッドクラウドストレージシステム内でイベント通知を管理することができるシステム100のアーキテクチャ例を示す。システム100は、1以上のネットワーク106を介してサービスプロバイダ105によって提供される少なくとも1つのネットワークストレージシステム104と通信可能な、或いはネットワークストレージシステム104に接続される複数のサービス計算装置102を含む。複数の異なるサービスプロバイダ105があってもよく、それぞれの異なるネットワークストレージシステム104の各サービスプロバイダ105は他のサービスプロバイダ105に関係しない異なるエンティティであってもよい。商業的なネットワークストレージサービスプロバイダ105の例は、いくつか例を挙げるとAMAZON WEB SERVICES、MICROSOFT AZURE、GOOGLE CLOUD、IBM CLOUD、及びORACLE CLOUDを含んでもよい。ネットワークストレージシステム104は、いくつかの例では「クラウドストレージ」又は「クラウドベースストレージ」と呼んでもよく、いくつかのケースではサービス計算装置102において利用可能であり得るローカルストレージよりも1ギガバイト当たりのコストが安価なストレージソリューションを可能にし得る。加えていくつかの例では、ストレージプロバイダは、代わりに例えばサービス計算装置102に関連する特定のユーザ、エンティティ等へのアクセスだけを与える等のための、プライベートな或いは専有のストレージサービスプロバイダ105であってもよい。専有のシステムサービスプロバイダ105の一例は、HITACHI CONTENT PLATFORMの構成を含んでもよい。
【0016】
更にサービス計算装置102は、複数のユーザ計算装置108及び1以上の管理者計算装置110とネットワーク106を介して通信することができる。ユーザ装置108及び管理者装置110は、以下で更に論じるように様々な種類の計算装置の任意のものであってもよい。
【0017】
いくつか部の例では、サービス計算装置102は任意の数のやり方で具体化され得る1以上のサーバを含んでもよい。例えばサービス計算装置102のプログラム、他の機能コンポーネント、及びデータストレージの少なくとも一部は、1以上のスタンドアローンのサーバ、サーバのクラスタ、サーバファーム、データセンタ、クラウドによってホストされる計算サービス等の中の少なくとも1つのサーバ上に実装されてもよいが、他のコンピュータアーキテクチャが追加で又は代替的に使用されてもよい。サービス計算装置102の更なる詳細を
図6に関して以下で論じる。
【0018】
いくつかのケースでは、複数のサービス計算装置102は例えばサイト111において1以上のグループ、クラスタ、システム等に配列されてもよい。例えば、複数のサイト111は、データの複製、障害回復保護等を提供するために、互いに地理的に分散されてもよい。更にいくつかのケースでは、複数の異なるサイト111におけるサービス計算装置102は、複数のサイト111の連合を提供するために等、互いに安全に通信するように構成されてもよい。更に他の例では、サービス計算装置102の1以上は、サービス計算装置102の他のものから離れて位置していてもよい。
【0019】
1以上のネットワーク106は、インターネット等の広域ネットワーク、イントラネット等のローカルエリアネットワーク(LAN)、セルラネットワーク等の無線ネットワーク、Wi-Fi等のローカル無線ネットワーク、及び/又はBLUETOOTH(登録商標)等の短距離無線通信、ファイバチャネル、光ファイバ、イーサネット、又は他の任意のかかるネットワークを含む有線ネットワーク、直接有線接続、又はそれらの任意の組み合わせを含む任意の適切なネットワークを含んでもよい。従って、1以上のネットワーク106は有線通信技術及び/又は無線通信技術の両方を含んでもよい。そのような通信に使用されるコンポーネントはネットワークの種類、選択された環境、又はその両方に少なくとも部分的に依存し得る。かかるネットワークを介して通信するためのプロトコルはよく知られており、本明細書では詳しくは論じない。従って、サービス計算装置102、ネットワークストレージシステム104、ユーザ装置108、及び管理者装置110は有線接続又は無線接続及びその組み合わせを使用して1以上のネットワーク106を介して通信することができる。
【0020】
加えて、サービス計算装置102は1以上のネットワーク107を介して互いに通信することが可能であってもよい。いくつかのケースでは、1以上のネットワーク107はLAN、プライベートネットワーク等であってもよい一方、他のケースでは1以上のネットワーク107は上記で論じたネットワーク106の何れかを含んでもよい。
【0021】
サービス計算装置102は、それぞれ、ユーザ装置108を介してストレージ及びデータ管理サービスをユーザ112に提供するように構成されてもよい。いくつかの非限定的な例として、ユーザ112は会社、企業、組織、政府事業体、学問的事業体等のための、及びいくつかの例では非常に大量のデータを記憶することを含んでもよい機能を実行するユーザを含んでもよい。それでもなお本明細書の実装形態は、システム100並びに本明細書に記載の他のシステム及び構成に関する或る特定の使用法又は応用に限定されない。
【0022】
各ユーザ装置108は、デスクトップ、ラップトップ、タブレット計算装置、モバイル装置、スマートフォン、ウェアラブル装置、端末、及び/又はネットワークを介してデータを送信可能な他の任意の種類の計算装置等の任意の適切な種類の計算装置であってもよい。ユーザ112は、個々のユーザアカウント、ユーザログイン資格情報等によってユーザ装置108に関連付けられてもよい。更にユーザ装置108は、1以上のネットワーク106を介して、別個のネットワークを介して、又は他の任意の適切な種類の通信接続を介してサービス計算装置102と通信することが可能であってもよい。本明細書の開示の利益を得る当業者に数多くの他の改変形態が明らかになるであろう。
【0023】
更に各ユーザ装置108は、サービス計算装置102上で実行可能なユーザウェブアプリケーション116と通信する等のために、ユーザ装置108上で実行され得るユーザアプリケーション114の個々のインスタンスを含んでもよい。例えばユーザアプリケーション114は、ネットワークストレージシステム104の1以上に記憶するためのユーザデータ、例えばデータオブジェクトを送信するように、及び/又はデータ命令118等を介してネットワークストレージシステム104から記憶されたデータを受信するように構成されてもよい。いくつかのケースではアプリケーション114はブラウザを含んでもよく又はブラウザを介して動作してもよい一方、他のケースではアプリケーション114は1以上のネットワーク106を介してユーザウェブアプリケーション116との通信を可能にする通信機能を有する他の任意の種類のアプリケーションを含んでもよい。
【0024】
いくつかの例では、ユーザ112はかれらの個々のユーザ装置108が通信しているサービス計算装置102にデータを記憶し、及びそこからデータを受信してもよい。従って、サービス計算装置102はユーザ112及び個々のユーザ装置108にストレージを提供してもよい。定常状態動作中、サービス計算装置102と周期的に通信するユーザ108がいてもよい。
【0025】
本明細書のいくつかの例では、サービス計算装置102によって受信される非常に多数のデータ命令118があり得る。これらのデータ命令118のそれぞれについてイベント通知を生成することはネットワークトラフィックを著しく増やす可能性があり、イベント通知を受信する個々のアプリケーション120を実行する1以上のアプリケーション計算装置119に対して負荷をかけ得る。この例では、第1アプリケーション装置119(1)は第1アプリケーション120(1)を実行してもよく、第2アプリケーション装置119(2)は第2アプリケーション120(2)を実行してもよく、その後も同様に続く。いくつかのケースでは、アプリケーション装置119はユーザ装置108及び/又は管理者装置110に対応してもよい。別の例として、アプリケーション装置119の1以上は、特定のイベント通知を受信するように個々のアプリケーション120によって構成されたサーバ又は他の種類の計算装置であってもよい。例えばアプリケーション装置119上のアプリケーション120は、サービス計算装置102に関して及び/又はサービス計算装置102によって記憶されるデータに関して実行される特定の活動のログ、追跡、及び/又は管理等のために、特定のイベント通知を受信するように実行されてもよい。
【0026】
加えて管理者装置110は、デスクトップ、ラップトップ、タブレット計算装置、モバイル装置、スマートフォン、ウェアラブル装置、端末、及び/又はネットワークを介してデータを送信可能な他の任意の種類の計算装置等の任意の適切な種類の計算装置としてもよい。例えば管理者121は、個々の管理者アカウント、管理者ログイン資格情報等によって個々の管理者装置110に関連付けられてもよい。更に管理者装置110は、1以上のネットワーク106、107を介して、別個のネットワークによって、又は他の任意の適切な種類の通信接続によってサービス計算装置102と通信可能であってもよい。
【0027】
更に各管理者装置110は、システム100を管理するための管理命令を送信するために、及び/又はネットワークストレージシステム104上に記憶するための管理データを送信するために、及び/又は管理命令126等によってネットワークストレージシステム104から記憶された管理データを受信するために等、サービス計算装置102上で実行可能な管理ウェブアプリケーション124と通信等を行うための管理者装置110上で実行され得る管理者アプリケーション122の個々のインスタンスを含んでもよい。いくつかのケースでは、管理者アプリケーション122はブラウザを含んでもよく又はブラウザによって動作してもよい一方、他のケースでは管理者アプリケーション122は1以上のネットワーク106を介して上での管理ウェブアプリケーション124との通信を可能にする通信機能を有する他の任意の種類のアプリケーションを含んでもよい。
【0028】
サービス計算装置102は、ネットワークストレージシステム104に記憶されるデータを送信するために及びネットワークストレージシステム104から又はローカルストレージ132から要求されたデータを取り出すために等、ネットワークストレージシステム104へのゲートウェイを提供し得るストレージプログラム130を実行してもよい。加えてストレージプログラム130は、データ保持期間、データ保護レベル、データ複製等を管理するために等、システム100によって記憶されるデータを管理してもよい。
【0029】
サービス計算装置102は、パーティション等の複数のメタデータDB部分に分けられ、複数のサービス計算装置102にわたって分散され得る、メタデータデータベース(DB)134等のメタデータデータ構造を更に含まれてもよい。例えばメタデータDB134は、ネットワークストレージシステム104に記憶されたオブジェクトデータ136及びローカルストレージ132に記憶されたローカルオブジェクトデータ137を管理するために使用されてもよい。メタデータDB134は、個々のオブジェクトに関する情報、個々のオブジェクトにどのようにアクセスするのか、オブジェクトのストレージ保護レベル、ストレージ保持期間、オブジェクトの所有者情報、オブジェクトのサイズ、オブジェクトの種類等、オブジェクトデータ136に関する多数のメタデータを含んでもよい。更にメタデータゲートウェイプログラム138は、新たなオブジェクトが記憶されるとき、古いオブジェクトが削除されるとき、オブジェクトが移行されるとき等にメタデータDB134を更新等するために並びにデータにアクセスするための要求に応答する及びイベント通知を生成するかどうかを判定する等のためにメタデータDB134のメタデータへのアクセスを与えるために、メタデータDB134を管理し維持してもよい。
【0030】
加えてサービス計算装置102は、ネットワークストレージシステム104とのデータ同期を行うために、更には個々のアプリケーション装置119へのイベント通知を識別し転送するために実行され得るポリシーエンジンプログラム140を含んでもよい。いくつかのケースでは、ポリシーエンジンプログラム140はストレージプログラム130のモジュールであってもよく一方、他のケースでは、ポリシーエンジンプログラム140は別個のプログラムであってもよい。いくつかのケースでは、ポリシーエンジンプログラム140は、オブジェクトデータ136をネットワークストレージシステム104と同期するために、及び選択されたイベント通知を送信するために、メッセージ待ち行列プログラム142と協調して動作してもよい。本明細書の一部の例で使用され得るメッセージ待ち行列プログラムの例は、RABBITMQ及びACTIVEMQ等のオープンソースのマルチプロトコルメッセージブローカを含む。
【0031】
更にポリシーエンジンプログラム140は、オブジェクトデータ136をネットワークストレージシステム104と非同期的に同期してもよい。例えばネットワークストレージシステム104に対する特定のストレージ操作を行い、ユーザに報告を返す前に操作を完了する必要がある代わりに、ストレージプログラム130はオブジェクトデータをローカルオブジェクトデータ137としてローカルストレージ132に記憶してもよく、メタデータゲートウェイプログラム138等を介してオブジェクトのメタデータをローカルメタデータデータベース134に追加してもよく、完了メッセージを用いた要求側装置に対する私の応答等。その後ストレージプログラム130は、1以上のデータ同期操作144を介してデータをネットワークストレージシステム104の1以上と非同期的に同期するためにデータを待ち行列に送信してもよい。
【0032】
システム100において、ポリシーエンジンプログラム140によって導かれるイベント駆動型同期を使用され得、ポリシーエンジンプログラム140はデータ同期の速度を管理者によって管理可能であることを確実にするために、速度制御制限及び/又はサービス品質管理等のアクションを適用するように構成される。更にいくつかの例は、データのバージョニングを使用することができ、例えば各アップデートはネットワークストレージシステム104上でオブジェクトデータ136の順序付けを行うことを後で助け得る異なるバージョンをもたらし得る。更にいくつかの例では、データオブジェクトのバージョンごとのユーザメタデータはオブジェクトデータと共に同期させ得、そのことは更なるデータ管理に望ましい任意の特定の情報をアプリケーションが追加することを可能にし得る。一例として、この特徴はデータを生成したアプリケーション/オペレータの監査証跡を保つことを可能にする。例えばメタデータタグは、発信元ソース又は発信元アプリケーションに関する情報並びにアプリケーションがデータを作成した時間を含んでもよく、かかる情報はデータのバージョンと共に使用して、そのオブジェクトのメタデータ内に含まれるタイムスタンプに基づくバージョンの並べ替えを可能にし得る。
【0033】
本明細書の例では、ポリシーエンジンプログラム140は、各イベントに関連するメタデータの解析に少なくとも部分的に基づいてどのイベントに関してイベント通知を送信するのかを決定するために1以上の通知ルール(ポリシー)を適用してもよい。加えて、メッセージ待ち行列プログラム142は、待ち行列にイベントをパブリッシュするための高速の及び効率的なやり方を提供するために、更には待ち行列の1つからイベントをポーリングすることによってイベントを非同期的に受信するために、使用されてもよい。システム100内で受信され又は生成される各イベント(例えば書き込み、更新、削除、移動等、記憶されたオブジェクトデータ136に影響を及ぼすアクション)は、更に処理するためにメッセージング待ち行列フレームワーク内に列が作られ得る。加えてポリシーエンジンプログラム140は、非同期の及びスケジュールされたイベントを処理するためのスケーラブルなサービスを提供してもよい。以下で更に論じるように、ポリシーエンジンプログラム140はメッセージング待ち行列フレームワークからイベントをポーリングしてもよく、メタデータゲートウェイプログラム138を使用して各イベントに関する情報を明らかにするためにローカルでありサービス計算装置102によって管理されるメタデータデータベース134のメタデータにアクセスしてもよい。
【0034】
一例として、第1アプリケーション装置119(1)で実行される第1アプリケーション120(1)は、第1通知ルールのアプリケーションによって識別され得る第1種類のイベントに関するイベント通知150を受信するように構成されると仮定する。更に、第2アプリケーション装置119(2)で実行される第2アプリケーション120(2)は、第2通知ルールのアプリケーションによって識別され得る第2種類のイベントに関するイベント通知152を受信するように構成されると仮定する。いくつかの例では、以下で更に論じるように、ポリシーエンジンプログラム140は、各イベントのメタデータを受信してもよく、第1通知ルール又は第2通知ルールに対応する任意のイベントを識別してもよい。第1通知規ルールの所要の基準を満たすイベントを識別すると、ポリシーエンジンプログラム140はネットワークストレージシステム104の1つの第1待ち行列156に対応するイベント通知150を送信してもよい。同様に第2通知ルールの所要の基準を満たすイベントを識別すると、ポリシーエンジンプログラム140はネットワークストレージシステム104の1つの第2待ち行列158に対応するイベント通知152を送信してもよい。
【0035】
いくつかの例では、各ネットワークストレージシステム104は、正しいターゲットアプリケーションへのイベント通知を受信し分散するための待ち行列156、158、...を提供するために独自の待ち行列サービス160を提供してもよい。例えばこの例ではネットワークストレージシステム104は、イベント通知150を受信し分散するための第1待ち行列156と、イベント通知152を受信し分散するための第2待ち行列158とを含むと仮定する。待ち行列156、158は、メッセージを失うことなしに又は各コンポーネントが常に利用可能であることを必要とせずにシステムの分散されたコンポーネント間でデータを移動するために等、メッセージがコンピュータ間を移動するときそれらのメッセージを記憶するためのスケーラブルなホストされた待ち行列であってもよい。例えば待ち行列156、158は、アプリケーション又はサービス間でメッセージを転送するために使用されてもよい。従って、イベント通知150は待ち行列156からアプリケーション120(1)によって周期的に又はリアルタイムで取り出されてもよく、同様にイベント通知152は待ち行列158からアプリケーション120(2)によって周期的に又はリアルタイムで取り出されてもよい。
【0036】
更にシステム100は、同じイベント通知が2つ以上の異なるターゲット待ち行列に送信されることを可能にする。例えばイベント通知は、クラウドネットワークストレージ上の1以上の待ち行列及び/又はオンプレミスネットワークストレージシステムにおける1以上の待ち行列に送信され得る。従ってシステム100は、同じイベント通知を同じネットワークストレージシステム104における複数の待ち行列に、様々な位置にある、様々なエンティティによって提供される、様々なAPI又はプロトコルによってアクセス可能であるような商業的な又はパブリックのネットワークストレージシステム並びにオンプレミスの又はプライベートなネットワークストレージシステムを含み得る様々なネットワークストレージシステムにおける複数の待ち行列に送信してもよい。
【0037】
加えていくつかの例では、イベント通知150、152が他のサービス162によって受信されてもよく、他のサービス162はイベント通知150、152を正しいターゲットアプリケーション120に転送してもよい。例えば他のサービス162は、特定のイベント通知を受信することに応答して一定の規定のユーザコードを実行し得る及び/又はユーザによって前に規定された他のアクションを実行し得るイベント駆動型コード実行サービスを含んでもよい。加えて、同じイベントのイベント通知が複数のターゲット待ち行列に送信され得る一方、ポリシーエンジンプログラム140は同じイベント通知が同じターゲット待ち行列に複数回送信されることを防いでもよい。いくつかのケースでは、同じイベント通知が同じターゲット待ち行列に複数回送信されないことを確実にするために、同じ待ち行列を標的とする通知ルール(ポリシー)は同じポリシーエンジンインスタンスによって処理されてもよく、様々な待ち行列を標的とするルールは独立に処理されてもよい。
【0038】
一例として、指定された条件に適合するオブジェクトの削除時に、イベント通知を受信するためのルールをユーザ112が作成すると仮定する。例えばその条件は以下のように規定してもよい:削除されるオブジェクトのサイズが(1)Xを上回る、(2)オブジェクトの拡張がY又はZである、及び(3)オブジェクトが第1日付から第2日付までの間に作成された場合、削除イベントに関するイベント通知を送信する。
【0039】
疑似コードでは、これらの条件は以下の表現を使用してユーザによって規定されてもよい:(size>10MB &&(suffix=.mp4||suffix=.avi)&&(01/01/2018<date-created && date-created<12/31/2018))。従って、オブジェクトが削除されるイベントが検出され、オブジェクトが10MBを上回り、mp4又はaviファイルであり、2018年1月1日から2018年12月31日の間に作成されていたときは常に、イベント通知が生成され、指定のアプリケーションに送信される。例えばイベント通知は、削除の日時を示してもよく、削除されたオブジェクトの名前及びパスを識別してもよく、削除されたオブジェクトに関する他のメタデータを含んでもよい。
【0040】
別の例として、管理ユーザ121(例えばデータ保持係)が、保持中の又は正当に所有されたオブジェクトを削除し又は修正する試みが行われるときに、イベント通知を生成及び送信させるルールを作成すると仮定する。例えばユーザは、オブジェクトに関する作成日の範囲を指定すること等、いくつかの追加条件を設定してもよい。
【0041】
疑似コードでは、これらの条件は以下の表現を使用してユーザによって規定されてもよい:(tag/importance:HIGH && 01/01/2018<date-created && date-created<12/31/2018))。従って、高重要度としてタグ付けされるオブジェクトを削除する試みが行われるイベントが、及びオブジェクトが2018年1月1日から2018年12月31日の間に作成されたときは常に、イベント通知が生成され、指定されたアプリケーションに送信される。例えばイベント通知は、オブジェクトの名前及びパスを識別してもよく、オブジェクトの削除を試みたユーザのユーザ名等の他のメタデータを含んでもよい。
【0042】
別の例として、ユーザ112が、氏名、社会保障番号、電子メールアドレス等の個人識別可能情報を含むオブジェクトをシステムが検出し、オブジェクトがxmlファイル又はjsonファイルであるときに、イベント通知を生成及び送信させるルールを作成すると仮定する。疑似コードでは、これらの条件は以下の表現を使用してユーザによって指定されてもよい:(tag/project=ABC &&(suffix=.xml||suffix=.json))。従って本明細書の実装形態は、をユーザが、システム100内で行われる指定されたイベントに関するイベント通知を受信するための特定の条件を設定することを可能にする。
【0043】
図2は、いくつかの実装形態に係るデータ操作を取り込むためのシステム100の論理構成200の一例を示すブロック図である。いくつかの例では、論理構成200は、本明細書の開示の利益を得る当業者に明らかになるように、上記で論じたシステム100又は他の様々な可能な計算システムアーキテクチャの何れかに対応し得る。システム100は分散されたオブジェクトストレージを可能にできてもよく、ユーザ及び管理者のためのフロントエンドとしてウェブアプリケーションを使用することを含んでもよい。この例は、複数のネットワークストレージシステム104(1)~104(N)を示す。いくつかのケースでは、システム100は、オブジェクトA202(a)、オブジェクトB202(b)、オブジェクトC202(c)、...等のオブジェクト202を、ユーザ及び/又は管理者によって作成され得るバケットの中等、ネットワークストレージシステム104(1)~104(N)の1以上に記憶してもよい。システム100は、ローカルシステム及びクラウドシステムにわたって分散された資源を用いたデータの複雑な管理及び記憶を可能にしてもよい。
【0044】
本明細書のいくつかの例は、独立した計算エンジンとして機能することができるコンテナで実行されるマイクロサービスを実行することに少なくとも部分的に基づき得る。例えばサービス、例えばストレージプログラム130、メタデータゲートウェイプログラム138、及び/又はポリシーエンジンプログラム140それぞれの複数のインスタンス又はコンテナは、分散クラスタにわたって、例えばサービス計算装置102の複数の中で実行されてもよい。複数のマイクロサービスのインスタンスは、異種のアプリケーション負荷が原因で必要とされ得るように、分散クラスタ又は他の分散計算アーキテクチャにわってポリシーエンジンプログラム140のスケーリングを可能にしてもよい。
【0045】
一例として、アプリケーションからデータをリアルタイムで取り込むとき(例えばユーザウェブアプリケーション116又は管理ウェブアプリケーション124を介して)、2つの同期アクションが実行される。例えば、ユーザがユーザウェブアプリケーション116を介してオブジェクトA202(a)を保存したと仮定する。まず204で示すように、ストレージプログラム130は、アプリケーションによって入力されるオブジェクト名、バージョンID、タイムスタンプ、オブジェクトのサイズ、ユーザメタデータタグ、アクセス制御リスト等の情報を含む、オブジェクトAのオブジェクトメタデータ(MD)206を作成してもよい。加えて更には同期的に、208で示すように、オブジェクトA202(a)のオブジェクトデータ210はローカルオブジェクトデータ137の一部としてローカルストレージ132に記憶され、記憶されたオブジェクトのロケータIDはオブジェクト、メタデータ206に追加される。メタデータゲートウェイプログラム138は、オブジェクトA202(a)のオブジェクトメタデータ206をメタデータデータベース134(
図2には不図示)に追加してもよい。これらの2つのアクションはリアルタイムで行われるので、ストレージプログラム130はオブジェクトA202(a)を送信したユーザ装置に対してオブジェクトA202(a)の記憶が成功裏に完了したことを示す応答を返してもよい。212で示すように、メタデータゲートウェイプログラム138はその後オブジェクトA202の同期イベントを非同期的に生成してもよく、上記で論じたメッセージ待ち行列プログラム142によって提供されるメッセージ待ち行列フレームワーク216内の1以上の待ち行列214に同期イベントを追加してもよい。オブジェクト202(b)、202(c)、...等の他の受信データオブジェクト、又は記憶されたオブジェクトデータ136に影響を及ぼす他のユーザアクション若しくは命令は同様に取り込まれネットワークストレージシステム104との同期のために列が作られてもよい。
【0046】
本明細書のマイクロサービスの残りのものと同様に、待ち行列214は他のサービスと独立にスケールアップされ又はスケールダウンされてもよい。例えばメッセージ待ち行列フレームワーク216によって提供されるように、待ち行列214はステートフル及び永続的の両方であってもよい。例えば1つの待ち行列214が破損され又は使用不能になる場合、待ち行列214内のイベントの1以上の設定可能な冗長コピーが障害時の回復用に少なくとも1つの他の待ち行列214にわたって維持されてもよい。イベント駆動型メッセージング待ち行列フレームワーク216はメタデータの記憶及び取得を行うために実行されるメタデータゲートウェイプログラム138上のトラフィックを減らし、そのため同期を行うためのクエリがメタデータゲートウェイプログラム138に殺到することはない。更に待ち行列フレームワーク216は、システム内の他の全ての同期イベントからミラーリングイベントを隔離することも助け得る。
【0047】
220で示すように、ポリシーエンジンプログラム140は同期ターゲットごとに待ち行列214からのイベントをポーリングし消費するために、バックグランドで動作する1組のコンテナ化されたサービス(例えばポリシーエンジンプログラム140によって提供される別個のインスタンス)を提供するために実行されてもよい。例えばポリシーエンジンプログラム140は同期イベントを待ち行列214から非同期的に入手してもよく、待ち行列214内のイベントをネットワークストレージシステム104のそれぞれに同期してもよい。例えば各同期イベントは、ネットワークストレージシステム104の特定のものに基づく別個のターゲット及びその中の名前付きバケットを有してもよい。従って以下で更に論じる技法に基づき、ポリシーエンジンプログラム140はいくつかのケースではオブジェクトのメタデータを含む221で示すようなオブジェクトを、ネットワークストレージシステム104等の意図した同期ターゲットに同期してもよい。
【0048】
いくつかの実装形態では、同期イベントは1以上の出力待ち行列214に分けられてもよい。別個の待ち行列214を使用して通信を隔離することは、ネットワークストレージシステム104の1つが動作不良である場合又はネットワークの接続問題がある場合、適切に機能している他のネットワークストレージシステム104(1)~104(N)への通信が影響を受けないことを確実にすることを助け得る。ネットワークストレージシステム104が複数の異なるサービスプロバイダによって提供され得ることが与えられると、システム100は一時的に機能停止している又は完全に稼働していないネットワークストレージシステム104を容易に区別できない場合がある。更に、例えば資源若しくは割り当ての制限、保守中のサーバ、又はシステム内のバグによるエラー又は障害の正確な理由を提供するために特定のネットワークストレージシステム104に依拠するのは実用的ではない場合がある。
【0049】
本明細書のいくつかの例では、待ち行列フレームワーク216は別々のリモートターゲットドメインごとに別々の待ち行列214を含んでもよく、例えば待ち行列フレームワーク216はネットワークストレージシステム104(1)のための第1待ち行列214、第2プロバイダのネットワークストレージシステム104(
図2には不図示)のための第2待ち行列214、第3プロバイダのネットワークストレージシステム104(
図2には不図示)のための第3待ち行列214等を含んでもよい。従ってポリシーエンジンプログラム140は、サービス計算装置102からネットワークストレージシステム104へのデータの1対多の同期を実行してもよい。
【0050】
上記で述べたように、ポリシーエンジンプログラム140の各インスタンスは、待ち行列214の1つから同期のためのデータを入手してもよく、指定されたターゲット、例えば第1ネットワークストレージシステム104(1)における待ち行列156又は158、N番目のネットワークストレージシステム104(N)における待ち行列224等にイベント通知222を送信するかどうかを判定するために1以上のルールを適用してもよい。例えばポリシーエンジンプログラム140は、システム100内で生じ得る指定のイベントに関するイベント通知をいつ送信するかを決めることを含み得るユーザ指定ルールを適用するようにユーザによって設定可能であってもよい。ユーザ指定ルールに基づき、ポリシーエンジンプログラム140は待ち行列214の1つからの同期イベントを消費し、含まれる任意のメタデータを同期イベントの対象であるデータと比較し、メタデータがイベント通知222を生成するための指定のルールに適合する場合にのみイベント通知を生成してもよい。メタデータが1以上の特定のルールに適合することに基づき、ポリシーエンジン140は適合するルールに対応するリモート待ち行列156、158、224、...を決定してもよく、そのルールに従ってイベント通知を生成してもよい。以下で更に論じるように、複数のイベント通知222は、複数の異なるルールに適合する単一のイベントから生成されてもよく、イベント通知222は適合する個々の異なるルールの中で指定される様々な待ち行列156、158、224等に送信されてもよい。従って、特定の種類のイベント通知222はネットワークストレージシステム104(1)~104(N)上に提供される個々の指定の待ち行列156、158、224、...を介して特定のアプリケーション120に送られてもよい。
【0051】
本明細書のいくつかの例では、それぞれの別個の通知ルールはリモートネットワークストレージシステム104における様々なターゲット待ち行列に割り当てられ或いは関連付けられてもよい。通知構成は、上記で論じたようにユーザ112又は管理ユーザ121等のユーザによって指定される通知ルールを含んでもよい。例えば各通知ルールは、ターゲット待ち行列(例えば待ち行列識別子及びターゲット待ち行列をホストするホスト型ネットワークストレージシステム104の識別子)、及びイベント通知を送信すべきかどうかを判定するために判断されるルール表現(1以上の条件を含む)を少なくとも指定してもよい。
【0052】
いくつかのケースでは、ルール表現は、使用されるプログラミング言語に応じてAND、OR、GREATER、LESS、EQUAL等の構成体、又はそれらの等価物を使用して多数の条件を含んでもよい。従って、1つの通知ルールは単一のターゲット待ち行列に関する任意の条件を潜在的に記述し得る。例えば次のルール表現はイベント通知を生成するために満たすべき9個の条件を有する:「(((size>10MB)&&(suffix=.mp4||suffix=.avi)&&(01/01/2018<date-created && date-created<12/31/2018))||((x-amz-replication-status=COMPLETED)&&(tag/project=ABC && tag/deadline:2021)||tag/importance:HIGH))」。更に、イベント通知を送信するためのルール、条件、及び設定のいくつかの例を
図2に関して記載するが、他の多数の改変形態が本明細書の開示の利益を得る当業者に明らかになる。
【0053】
図3は、いくつかの実装形態に係る複数の待ち行列に複数のイベント通知を送信することを含む論理構成300の一例を示すブロック図である。例えば上記で述べたように、単一のイベントが複数の通知ルールに適合する場合があり、そのことは同じイベント通知302の複数のインスタンスがネットワークストレージシステム104における複数の異なる待ち行列にそれぞれ送信されることをもたらし得る。この例では、第1ネットワークストレージシステム104(1)が、第1アプリケーション装置119(1)上の第1アプリケーション120(1)にイベント通知を提供するように構成される第1待ち行列304を含むと仮定する。加えて第2ネットワークストレージシステム104(2)は、第2アプリケーション装置119(2)上の第2アプリケーション120(2)にイベント通知を提供するようにその両方が構成される第2待ち行列306及び第3待ち行列308を含むと仮定する。いくつかの例では、第2ネットワークストレージシステム104(2)はパブリックの又は商業的なネットワークストレージシステムであってもよい一方、他の例では、第2ネットワークストレージシステム104(2)はプライベートの、専有の、又はオンプレミスのネットワークストレージシステム等であってもよい。
【0054】
更に、各インスタンス内のプログラムポリシーエンジン140が待ち行列214の1つから同期イベントを引き、その同期イベントに関連するメタデータを調べて第1待ち行列304に対応する第1通知ルール及び第2待ち行列306に対応する第2通知ルールの適用可能性を判定すると仮定する。第1通知ルール及び第2通知ルールの両方が特定の同期イベントに適用される場合、ポリシーエンジンプログラム140(a)はイベント通知302を生成し、イベント通知302を第1待ち行列304及び第2待ち行列306の両方に送信してもよい。例えば第1アプリケーション120(1)は、第1待ち行列304からイベント通知302を受信してもよい。
【0055】
加えて、ポリシーエンジンプログラムインスタンスが待ち行列214の別のものから同期イベントを引き、第3待ち行列308に対応する第3通知ルールの適用可能性について同期イベントを調べると仮定する。第3通知ルールが特定の同期イベントに適用されると判定すると、ポリシーエンジンプログラムインスタンス140(b)は第3待ち行列308に送信されるイベント通知310を生成してもよい。この例では、第2アプリケーション120が第2待ち行列306及び第3待ち行列308の両方からイベント通知を引くように構成されると仮定する。従って、第2アプリケーション120はイベント通知302及びイベント通知310の両方を受信してもよい。
【0056】
本明細書の例では、ユーザは対応する通知ルールをセットアップすることによって自らが受信するイベント通知を指定可能であってもよい。各通知ルールは1以上の条件を記載するルール表現を含んでもよい。各通知ルールは更に、及びその通知ルールに対応するイベント通知を受信するためのターゲット待ち行列を指定してもよい。いくつかの例では、複数の通知ルールは単一の通知ポリシーへとグループ化されてもよい。例えば第1通知ポリシーが以下の2つの通知ルールを含むと仮定する:
【0057】
通知ルール1:オブジェクトのサイズがXを上回り、オブジェクトの拡張がY又はZであり、オブジェクトがMからNまでの日付に作成されている、削除された任意のオブジェクトについて待ち行列「myqueue1」にイベント通知を送信する。ルール1のための疑似コードにおけるルール表現は次の通りであってもよい:「((size>10MB)&&(suffix=.mp4||suffix=.avi)&&(01/01/2018<date-created && date-created<12/31/2018))」。
【0058】
通知ルール2:オブジェクトのサイズがXを上回り、オブジェクトが別のシステムからコピー(複製)された場合、任意の新たなオブジェクトについて待ち行列「myqueue2」にイベント通知を送信する。ルール2のための疑似コードにおけるルール表現は次の通りであり得る:「((size>1MB)&&(replica=true))」。従って、第1ルールはイベント通知が第1待ち行列「myqueue1」に送信されることをもたらし、第2ルールはイベント通知が第2待ち行列「myqueue2」に送信されることをもたらす。
【0059】
上記で述べたように、本明細書のシステムはイベント通知が2以上の異なるターゲットに送信されることを可能にしてもよい。更に、イベント通知はクラウドネットワークストレージシステム、及び/又はオンプレミスネットワークストレージシステム、及び/又は他のオンプレミスターゲットに送られてもよい。更に本システムは、1以上のパブリックネットワークストレージシステム上の1以上の待ち行列サービス、及びオブジェクトストレージシステム100と共にオンプレミスに、例えば異なる場所に位置する1以上の待ち行列サービスに同じイベント通知を送信することを可能にする。
【0060】
各イベントはポリシーエンジンプログラムの個々のインスタンスによって処理される。特定の選択されたイベントに関する全てのルール処理は、処理のためにイベントを選択した個々のポリシーエンジンインスタンスによって処理される。加えて、同じイベント通知は複数のターゲット待ち行列に送信されてもよい一方、ポリシーエンジンプログラム140は同じイベント通知が同じターゲット待ち行列に複数回送信されないことを確実にするように構成されてもよい。従っていくつかの例では、この目標を達成するために、単一のイベントについて2つの通知を同じ待ち行列に生成し得る複数の通知ルールを構成することは、ユーザがルールをセットアップするとき等、ルールの設定中に許可されなくてもよい。
【0061】
以下の通知ルールの構成は上記の記述を表す。ルール表現を有する各通知ルールは別個の待ち行列を対象とするので、例えば以下の3つの通知ルールはポリシーエンジンプログラム140のインスタンスによる処理が許可されてもよい。
【0062】
通知ルール1:表現=(E1);待ち行列=「queue1」
【0063】
通知ルール2:表現=(E1);待ち行列=「queue2」
【0064】
通知ルール3:表現=(E2);待ち行列=「queue3」
【0065】
他方で、単一のイベントに関する2つのイベント通知が同じ待ち行列に行くことを導き得る場合は以下の2つのルールは許可されなくてもよいが、表現E1及びE2が相互排他的であり、そのため任意のイベントに関して待ち行列4に対するイベント通知が1つだけ生成され得るような状況においては許可される:
【0066】
通知ルール1:表現=(E1);待ち行列=「queue4」
【0067】
通知ルール2:表現=(E2);待ち行列=「queue4」
【0068】
例えば個々のポリシーエンジンプログラムインスタンスは、内部待ち行列214から受信イベントの1つを取ってもよく、現在有効なルールのそれぞれとイベントを比較してもよく、選択されたイベントとルールを比較することに基づいて、もしある場合はイベント通知を外部待ち行列304、306、又は308のどれに送信するのかを決定してもよい。
【0069】
別の例として、与えられた任意のポリシーエンジンプログラムインスタンスがシステム名前空間(例えば「バケット」のサブセット)の部分的なビューだけを有し得るようにイベント通知の列登録を分割してもよいが、バケット構成は通知ポリシーを定めるので、本システムは特定の待ち行列(例えばバケットのサブセット)をサービスするポリシーエンジンプログラムインスタンスは各イベント通知に関する全ての適用可能ルールを決定できることを保証してもよい。
【0070】
図4は、いくつかの実装形態に係る疑似コード400の一例を示す図である。この例では、2つの通知ルールのための疑似コードが提供される。例えば第1通知ルール402の例は、
図3に関して上記で論じた第1通知ポリシーの通知ルール1のための疑似コードを提供する。例えば第1通知ルール402は待ち行列の名前、即ち「myqueue1」、ホスト名、ホストのアクセスキー、イベントの種類(オブジェクトの除去)、及びルール表現「((size>10MB)&&(suffix=.mp4||suffix=.avi)&&(01/01/2018<date-created && date-created<12/31/2018))」を規定する。
【0071】
同様に、第2通知ルール404は待ち行列の名前、即ちmyQ2、ホスト名、及びホストのアクセスキー、イベントの種類(オブジェクトの作成)、及びルール表現、即ち「((size>1MB)&&(replica=true))」を規定する。
【0072】
図5は、いくつかの実装形態に係るイベント通知を送信するためのプロセス500の一例を示す流れ図である。プロセス500は、その一部又は全てがハードウェア、ソフトウェア、又はその組み合わせによって実装され得る一連の操作を表す論理流れ図の中のブロックの集合として示される。ソフトウェアの脈絡では、ブロックは、1以上のプロセッサによって実行されるとき、列挙される操作を実行するようにプロセッサをプログラムする1以上のコンピュータ可読媒体に記憶されるコンピュータ実行可能命令を表してもよい。概してコンピュータ実行可能命令は、特定の機能を実行し又は特定のデータ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。ブロックを記載する順序は限定として解釈すべきではない。記載するブロックの任意の個数を任意の順序で及び/又は並列に組み合わせてこのプロセス又は代替的プロセスを実装することができ、ブロックの全てを実行しなければならないわけではない。本明細書の例の中で記載された環境、フレームワーク、及びシステムに関してプロセスは解説目的で説明されうが、このプロセスは多岐にわたる他の環境、フレームワーク、及びシステム内に実装されてもよい。
図5の例では、プロセス500は、ストレージプログラム130、メタデータゲートウェイプログラム138、及び/又はポリシーエンジンプログラム140を実行する1以上のサービス計算装置102又は他の適切な計算装置によって少なくとも部分的に実行されてもよい。
【0073】
502で、計算装置はクライアント装置上のアプリケーションからオブジェクトを受信してもよい。例えば計算装置は、記憶位置における少なくとも1つのバケット内に記憶するためのオブジェクトを受信してもよく、又はストレージシステムによって既に記憶されているオブジェクトに影響し得る削除要求等の他の命令を受信してもよい。
【0074】
504で、計算装置は受信オブジェクトのオブジェクトデータをローカルストレージ内に記憶してもよい。例えば計算装置は、受信オブジェクトの受信オブジェクトデータを直ちに記憶するために同期的な記憶手続きを実行してもよい。計算装置はその後、例えば
図1に関して上記で論じたように、ネットワークストレージシステムにオブジェクトデータを非同期的に記憶してもよい。例えばオブジェクトデータは、ネットワークストレージシステムにおける指定されたバケットに記憶されてもよい。
【0075】
506で、計算装置は受信オブジェクトのオブジェクトメタデータをメタデータデータベース内に記憶してもよい。例えば計算装置は、受信オブジェクトのメタデータをメタデータデータベース内に直ちに記憶するために同期的な記憶手続きを実行してもよい。上記で述べたように、同期的な記憶手続きはオブジェクトストレージシステムがユーザ装置に受領通知をリアルタイムで返すことを可能にしてもよい。
【0076】
508で、計算装置は、受信オブジェクトに対応するイベント通知がネットワークストレージシステム上のバケットに関して構成されているかどうかを判定してもよい。例えば「バケット」(例えば記憶されるオブジェクトのコンテナ)はイベント通知をルートするためのポリシーを定めてもよい。一例として、親バケットの構成はそのバケット内に含まれる個々のオブジェクトのためのイベント処理(もしある場合)を決定してもよい。構成されている場合、このプロセスは512に進む。構成されていない場合、オブジェクトの受信をネットワークストレージシステムと同期する必要がなく、イベント通知を送信する必要がなく、このプロセスは502に進んで次のオブジェクトを受信する。
【0077】
510で、計算装置は、イベント通知を生成するための1以上の指定された条件と照合するために、オブジェクトのバケットのメタデータにアクセスしてもよい。一例として、ポリシーエンジンプログラムインスタンスは、オブジェクトが記憶されるバケットのバケット設定に関係するメタデータにアクセスしてもよい。例えばポリシーエンジンプログラムインスタンスは、メタデータデータベースからメタデータを最初に得てもよく、性能を改善するためにバケット設定メタデータをメモリキャッシュ内に保ってもよい。ポリシーエンジンプログラムインスタンスは、このバケットメタデータに対する任意の変更を知らされるように、より低レベルのメタデータフレームワークを有するリスナを登録してもよい。従ってメタデータデータベースから毎回読み出す必要があるのではなく、ポリシーエンジンプログラムインスタンスは代わりに性能上の理由でキャッシュ済みメタデータから読み取ってもよく、任意の変更通知を聞いてもよい。変更通知は、ポリシーエンジンプログラムインスタンスにメタデータデータベースから陳腐化したバケットメタデータを再び読み取らせてもよい。
【0078】
512で、計算装置はオブジェクトのバケットのメタデータがイベント通知を生成するための指定された条件に適合するかどうかを判定してもよい。適合する場合、このプロセスは514に進む。適合しない場合、このプロセスは502に戻って次のオブジェクトを受信する。
【0079】
514で、計算装置は、オブジェクトのメタデータに適合する1以上の通知ルールによって指定される1以上のターゲット待ち行列に送信するイベント通知を準備してもよい。
【0080】
516で、計算装置は、適合する全ての通知ルールに対応する全てのターゲット待ち行列にイベント通知を送る試みが行われているかどうかを判定してもよい。かかる試みが行われている場合、このプロセスは502に戻って次のオブジェクトを受信する。かかる試みが行われていない場合、このプロセスは518に進む。
【0081】
518で、計算装置はターゲット待ち行列にイベント通知を送信してもよい。具体的には、計算装置はイベント通知がまだ送られていないターゲット待ち行列にイベント通知を送信してもよい。
【0082】
520で、計算装置はイベント通知がターゲット待ち行列に送られたかどうかを判定してもよい。例えば計算装置は、ターゲット待ち行列を提供するネットワークストレージシステムから受領通知が受信されたかどうかを判定してもよい。受信されている場合、このプロセスは516に戻って配達がまだ完了していない任意の追加のターゲット待ち行列を検査する。受信されていない場合、このプロセスは522に進む。
【0083】
522で、計算装置はイベント通知を送る試行回数の閾値に達しているかどうかを判定してもよい。例えばシステムはイベント通知を閾値の回数送ろうと試みてもよく、その後、システムはイベント通知が配達不能と判定してもよい。従って閾値に達していない場合、このプロセスは518に戻る。他方で閾値に達している場合、このプロセスは524に進む。
【0084】
524で、試行回数の閾値の到達後に配達の受領通知が受信されない場合、計算装置はメトリクをカウントすること、情報を監査すること等の目的でイベントを未配達として記録してもよい。上記の内容から、本明細書のシステムは高度の信頼性を実現するように構成されることが分かり得る:システムが適切に構成されるとき(十分なサービス計算装置、ストレージ容量等)、ターゲット待ち行列を提供するターゲットシステムが適切に機能し、利用可能である場合、全てのイベント通知が送られるべきである。加えてシステムは、ターゲット待ち行列が一時的に使用不能である或いは(例えば接続問題等によって)利用できない状況に対処することができる。そのような場合、本明細書のシステムは再試行メカニズムを使用して試行回数の閾値にわたってイベント通知を送ろうと試みてもよい。更に、メッセージング待ち行列サービスの容量を増加すること、ポリシーエンジンインスタンスを実行するための更なる計算装置を追加すること等により、オブジェクトストレージシステム内の資源の数を増やすことによってイベント通知の信頼性のレベルを改善することが可能であってもよい。加えて本明細書のシステムは、指定された時間間隔のうちに個々のターゲット待ち行列に送ることができなかったそれぞれのイベント通知を追跡してもよい。かかるイベント通知は可視性に関するメトリクとしてカウントしてもよく、ユーザによる更なる調査のために別々に記録されてもよい。
【0085】
本明細書に記載のプロセスの例は、解説目的で与えたプロセスの例に過ぎない。本明細書の開示に照らして他の多数の改変形態が当業者に明らかになる。更に、本明細書の開示はプロセスを実行するのに適したフレームワーク、アーキテクチャ、及び環境の幾つかの例を記載するが、本明細書の実装形態は図示し解説する特定の例に限定されない。更に、本開示は説明するような及び図示するような様々な実装例を与える。但し、当業者に知られるように又は当業者に知られることになるように、本開示は本明細書に記載し図示する実装形態に限定されず、他の実装形態に拡げ得る。
【0086】
図6は、本明細書に記載のシステムの機能の少なくとも一部を実装するために使用され得るサービス計算装置102の選ばれたコンポーネントの例を示す。サービス計算装置102は、任意の数のやり方で具体化され得る1以上のサーバ又は他の種類の計算装置を含んでもよい。例えばサーバの場合、プログラム、他の機能コンポーネント、及びデータは単一のサーバ、サーバのクラスタ、サーバファーム、又はデータセンタ、クラウドによってホストされる計算サービス等の上に実装されてもよいが、他のコンピュータアーキテクチャを追加で又は代わりに使用してもよい。複数のサービス計算装置102は一緒に又は別々に位置し、例えば仮想サーバ、サーババンク、及び/又はサーバファームとして組織化されてもよい。記載された機能は単一のエンティティ若しくは企業のサーバによって提供されてもよく、又は複数の異なるエンティティ若しくは企業のサーバ及び/又はサービスによって提供されてもよい。
【0087】
図示の例では、サービス計算装置102は、1以上のプロセッサ602、1以上のコンピュータ可読媒体604、及び1以上の通信インタフェース606を含み又はそれらに関連してもよい。各プロセッサ602は単一の処理ユニット又は幾つかの処理ユニットであってもよく、単一の若しくは複数の計算ユニット又は複数の処理コアを含んでもよい。プロセッサ602は、1以上の中央処理装置、マイクロプロセッサ、マイクロコンピュータ、マイクロコントローラ、デジタル信号プロセッサ、ステートマシーン、論理回路、及び/又は動作上の命令に基づいて信号を操作する任意の装置として実装することができる。一例としてプロセッサ602は、本明細書に記載したアルゴリズム及びプロセスを実行するように特にプログラムされ又は構成された任意の適切な種類の1以上のハードウェアプロセッサ及び/又は論理回路を含んでもよい。プロセッサ602は、本明細書に記載した機能を実行するようにプロセッサ602をプログラムし得る、コンピュータ可読媒体604内に記憶されたコンピュータ可読命令を取り出し実行するように構成されてもよい。
【0088】
コンピュータ可読媒体604は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータ等の情報を記憶するための任意の種類の技術によって実装された揮発性メモリ及び不揮発性メモリ、及び/又は取外し可能媒体及び取外し不能媒体を含んでもよい。例えばコンピュータ可読媒体604は、これだけに限定されないが、RAM、ROM、EEPROM、フラッシュメモリ又は他のメモリ技術、光学ストレージ、ソリッドステートストレージ、磁気テープ、磁気ディスクストレージ、ストレージアレイ、ネットワーク接続ストレージ、ストレージエリアネットワーク、クラウドストレージ、又は所望の情報を記憶するために使用することができ計算装置によってアクセス可能な他の任意の媒体を含んでもよい。サービス計算装置102の構成にもよるが、言及するとき非一時的コンピュータ可読媒体がエネルギ、搬送波信号、電磁波、及び/又は信号自体等の媒体を除外する限りにおいて、コンピュータ可読媒体604は有形の非一時的媒体であってもよい。いくつかのケースでは、コンピュータ可読媒体604はサービス計算装置102と同じ位置にあってもよい一方、他の例ではコンピュータ可読媒体604はサービス計算装置102と部分的に離れていてもよい。例えばいくつかのケースでは、コンピュータ可読媒体604は
図1に関して上記で論じたネットワークストレージシステム104内のストレージの一部を含んでもよい。
【0089】
コンピュータ可読媒体604は、プロセッサ602によって実行可能な任意の数の機能コンポーネントを記憶するために使用されてもよい。多くの実装形態においてこれらの機能コンポーネントは、プロセッサ602によって実行可能であり、実行時に本明細書ではサービス計算装置102によるものとするアクションを実行するようにプロセッサ602をとりわけプログラムする命令又はプログラムを含む。コンピュータ可読媒体604内に記憶される機能コンポーネントは、ユーザウェブアプリケーション116、管理ウェブアプリケーション124、ストレージプログラム130、メタデータゲートウェイプログラム138、ポリシーエンジンプログラム140、及びメッセージ待ち行列プログラム142を含んでもよく、そのそれぞれは1以上のコンピュータプログラム、アプリケーション、実行コード、又はその一部を含んでもよい。更に、この例ではこれらのプログラムを一緒に示されているが、使用中、これらのプログラムの一部又は全てが別個のサービス計算装置102上で実行されてもよい。この例では、ポリシーエンジンプログラム140は、
図1~
図5に関して上記で論じた通知ルール等の通知ルール608を含み、又はかかる通知ルール608にアクセスしてもよい。
【0090】
加えてコンピュータ可読媒体604は、本明細書に記載の機能及びサービスを実行するために使用されるデータ、データ構造、及び他の情報を記憶してもよい。例えばコンピュータ可読媒体604は、メタデータデータベース134及びローカルオブジェクトデータ137を記憶してもよい。更に、この例ではこれらのデータ構造を一緒に示すが、使用中、これらのデータ構造の一部又は全ては別個のサービス計算装置102上に又はかかるサービス計算装置102によって記憶されてもよい。サービス計算装置102は他の機能コンポーネント及びデータも含み又は保持してもよく、かかる機能コンポーネント及びデータはプログラム、ドライバ等、及び機能コンポーネントによって使用され又は生成されるデータを含んでもよい。更に、サービス計算装置102は他の多くの論理的、プログラム的、及び物理的なコンポーネントを含んでもよく、そのうち上記で記載したものは本明細書の解説に関係する例に過ぎない。
【0091】
1以上の通信インタフェース606は、1以上のネットワーク106及び107等を介しての他の様々な装置との通信を可能にするための1以上のソフトウェア及びハードウェアコンポーネントを含んでもよい。例えば通信インタフェース606は、本明細書の他の箇所で更に挙げるようにLAN、インターネット、ケーブルネットワーク、セルラネットワーク、無線ネットワーク(例えばWi-Fi)及び有線ネットワーク(例えばファイバチャネル、光ファイバ、イーサネット)、直接接続、並びにBLUETOOTH(登録商標)等の近距離通信等のうちの1以上による通信を可能にしてもよい。
【0092】
本明細書に記載した様々な命令、方法、及び技法は、コンピュータ可読媒体上に記憶され、本明細書のプロセッサによって実行されるコンピュータプログラム及びアプリケーション等のコンピュータ実行可能命令の全般的な脈絡で検討されてもよい。概して、プログラム及びアプリケーションという用語は同義で使用されてもよく、特定のタスクを実行するための又は特定のデータ型を実装するための命令、ルーチン、モジュール、オブジェクト、コンポーネント、データ構造、実行コード等を含んでもよい。これらのプログラム、アプリケーション等はネイティブコードとして実行されてもよく、又は仮想マシン若しくは他のジャストインタイムコンパイル実行環境等の中でダウンロードされて実行されてもよい。典型的には、プログラム及びアプリケーションの機能は様々な実装形態において所望の通りに組み合わせ又は分散されてもよい。これらのプログラム、アプリケーション、及び技法の実装はコンピュータ記憶媒体上に記憶されてもよく、又は何らかの形の通信媒体上で伝送されてもよい。
【0093】
本主題を構造上の特徴及び/又は方法論的な行為に固有の言語によって説明してきたが、添付の特許請求の範囲に定める主題は記載された特定の特徴又は行為に必ずしも限定されないことを理解すべきである。むしろ特定の特徴及び行為は、特許請求の範囲を実装する形態の例として開示されている。
【国際調査報告】