特許第6793498号(P6793498)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立製作所の特許一覧

<>
  • 特許6793498-データストア装置およびデータ管理方法 図000002
  • 特許6793498-データストア装置およびデータ管理方法 図000003
  • 特許6793498-データストア装置およびデータ管理方法 図000004
  • 特許6793498-データストア装置およびデータ管理方法 図000005
  • 特許6793498-データストア装置およびデータ管理方法 図000006
  • 特許6793498-データストア装置およびデータ管理方法 図000007
  • 特許6793498-データストア装置およびデータ管理方法 図000008
  • 特許6793498-データストア装置およびデータ管理方法 図000009
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6793498
(24)【登録日】2020年11月12日
(45)【発行日】2020年12月2日
(54)【発明の名称】データストア装置およびデータ管理方法
(51)【国際特許分類】
   G06F 9/50 20060101AFI20201119BHJP
   G06F 9/54 20060101ALI20201119BHJP
【FI】
   G06F9/50 150C
   G06F9/54 B
【請求項の数】6
【全頁数】15
(21)【出願番号】特願2016-162367(P2016-162367)
(22)【出願日】2016年8月23日
(65)【公開番号】特開2018-32115(P2018-32115A)
(43)【公開日】2018年3月1日
【審査請求日】2019年7月23日
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110000279
【氏名又は名称】特許業務法人ウィルフォート国際特許事務所
(72)【発明者】
【氏名】兼子 佑樹
【審査官】 桜井 茂行
(56)【参考文献】
【文献】 特開平09−167145(JP,A)
【文献】 米国特許第5999964(US,A)
【文献】 国際公開第2012/172588(WO,A1)
【文献】 特開2000−259605(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
G06F 9/54
(57)【特許請求の範囲】
【請求項1】
複数の記憶装置と、
データを受信して前記記憶装置に格納し、データ取得要求を受けて前記記憶装置からデータを取得して送信するデータ制御部と、を有し、
前記データ制御部は、前記複数の記憶装置のそれぞれに格納されている前記データに関する格納状況情報に基づいて、前記データ取得要求にかかるデータを検索する対象の記憶装置を選択する、
データストア装置であって、
前記データにはそれぞれ優先度が付与され、
前記格納状況情報は、前記複数の記憶装置のそれぞれに格納されている優先度毎のデータのデータ数に関する優先度毎格納状況情報と、前記優先度毎格納状況情報が取得された時刻に関する時刻情報とを含み、
前記データ制御部は、前記優先度毎格納状況情報と該優先度毎格納状況情報が取得された時刻に関する時刻情報とに基づいて、現在時刻の優先度とデータ数の関係を予測し、予測結果に基づいて、前記データを検索する記憶装置として、優先度の高いデータを取得できる可能性の高い記憶装置を選択する、
データストア装置。
【請求項2】
前記データ制御部が複数あり、
前記複数のデータ制御部は、前記複数の記憶装置にデータを格納し、前記複数の記憶装置からデータを取得することが可能であり、
前記複数のデータ制御部がそれぞれに前記格納状況情報を保持し、
前記複数のデータ制御部は、前記データ取得要求を受けると、それぞれの保持する前記格納状況情報を用いて、前記データを検索する記憶装置を選択する、
請求項1に記載のデータストア装置。
【請求項3】
前記格納状況情報は、所定の時刻に取得された情報を含み、
前記複数のデータ制御部は、同じ記憶装置に格納されているデータに関し、互いに依存しない時刻の格納状況情報を用いる、
請求項に記載のデータストア装置。
【請求項4】
前記データ制御部は、現在時刻と前記時刻情報が示す時刻との差分と、単位時間に取得されるデータ数の平均値との積を、前記時刻情報が示す時刻における優先度毎のデータ数から減算して、現在時刻の優先度とデータ数の関係を予測する、請求項に記載のデータストア装置。
【請求項5】
単位時間に取得されるデータ数の平均値は、1つの前記データ制御部の単位時間に前記記憶装置から取得するデータ数の平均値と、前記データ制御部の個数との積である、請求項に記載のデータストア装置。
【請求項6】
複数の記憶装置と、データを受信して前記記憶装置に格納し、データ取得要求を受けて前記記憶装置からデータを取得して送信するデータ制御部と、を有するデータストア装置におけるデータ管理方法であって、
前記データ制御部が、前記複数の記憶装置のそれぞれに格納されている前記データに関する格納状況情報を取得し、
前記データ制御部が、前記格納状況情報に基づいて、前記データ取得要求にかかるデータを検索する対象の記憶装置を選択するものにおいて
前記データにはそれぞれ優先度が付与され、
前記格納状況情報は、前記複数の記憶装置のそれぞれに格納されている優先度毎のデータのデータ数に関する優先度毎格納状況情報と、前記優先度毎格納状況情報が取得された時刻に関する時刻情報とを含み、
前記データ制御部は、前記優先度毎格納状況情報と該優先度毎格納状況情報が取得された時刻に関する時刻情報とに基づいて、現在時刻の優先度とデータ数の関係を予測し、予測結果に基づいて、前記データを検索する記憶装置として、優先度の高いデータを取得できる可能性の高い記憶装置を選択する、
データ管理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、クライアントから受信したメッセージデータをサービス提供サーバへ転送するメッセージキューシステムに関する。
【背景技術】
【0002】
近年、インターネットや通信機器の発達に伴い、個人のスマートデバイスから送信されるメッセージデータのデータ数もデータ量も増大している。これらのメッセージデータを処理するシステムでは、システムの拡張性や可用性を向上させるために、分散データストアを利用してシステムを構築することが求められている。
【0003】
分散データストアにメッセージデータを格納し、メッセージデータを分散処理する分散処理型メッセージキューシステムは一例として複数のメッセージキューサーバで構成される。各メッセージキューサーバは、メッセージデータを格納するストレージデバイスを備え、複数のメッセージキューサーバのストレージデバイスを共有し、クライアントとサービス提供サーバの間に、ストレージデバイス毎のメッセージキューを提供する。
【0004】
複数のメッセージキューサーバが相互にストレージデバイスを共有することで大容量のストレージを実現することを可能にしている。また、メッセージキューサーバを増設することで容易にストレージの容量を増加することが可能である。また、メッセージデータをメッセージキューサーバ間で複製することにより、可用性を向上させることも可能である。
【0005】
関連する技術として特許文献1に開示されたものがある。この文献には、同一メッセージキュー内における、他のメッセージとの相互関係に基づいて処理順序を制御する技術である。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2016−18222号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
上述したような分散処理型メッセージキューシステムでは、各ストレージデバイスを均等に利用するために、メッセージデータをどのストレージデバイスに格納するか、あるいはどのストレージデバイスからメッセージデータを取得するかを決定するとき、一般的にラウンドロビン方式が用いられる。
【0008】
しかし、メッセージデータに優先度が付与される場合にも優先度と無関係にメッセージデータの格納先あるいは取得先のストレージデバイスが決定されるので、優先度の高いメッセージデータのサービス提供サーバへの配送が遅延する可能性がある。
【0009】
本発明の目的は、データを蓄積して配送するシステムにおいて良好なデータの配送を可能にする技術を提供することである。
【課題を解決するための手段】
【0010】
本発明の一態様によるデータストア装置は、複数の記憶装置と、データを受信して前記記憶装置に格納し、データ取得要求を受けて前記記憶装置からデータを取得して送信するデータ制御部と、を有し、前記データ制御部は、前記複数の記憶装置のそれぞれに格納されている前記データに関する格納状況情報に基づいて、前記データ取得要求にかかるデータを検索する対象の記憶装置を選択する。
【発明の効果】
【0011】
本発明の一態様によれば、複数の記憶装置によるデータストア装置において、各記憶装置のデータに関する格納状況に基づいて、どの記憶装置からデータを取得するかを判断するので、良好なデータの配送を行うことができる。
【図面の簡単な説明】
【0012】
図1】分散処理型メッセージキューシステムの構成例を示す図である。
図2】統計情報レジストリ317に格納される統計情報を例示する図である。
図3】メッセージデータ情報サマリレジストリ318に格納されるメッセージデータ情報サマリを例示する図である。
図4】メッセージデータ情報332aを例示する図である。
図5】メッセージキュー制御部310aが実行するメッセージデータ情報サマリの更新処理を示すシーケンス図である。
図6】メッセージキュー制御部310aが実行するメッセージデータ情報サマリレジストリ318の更新処理を示すシーケンス図である。
図7】メッセージキュー制御部310aがクライアント100aからメッセージデータ取得のリクエストを受信したときに実行する処理を示すシーケンス図である。
図8】データの取得先となるストレージデバイスの決定の具体例について説明するための図である。
【発明を実施するための形態】
【0013】
以下、本発明の実施形態について図面を参照して説明する。
【0014】
(1)構成
図1は、分散処理型メッセージキューシステムの構成例を示す図である。メッセージキューシステムは、クライアント100a、100b、ロードバランサー200、メッセージキューサーバ300a、300b、ロードバランサー400、およびサービス提供サーバ500a、500bを有している。
【0015】
サービス提供サーバ500a、500bは、クライアント100a、100bにサービスを提供するサーバである。サービス提供サーバ500aとサービス提供サーバ500bは同じ構成であり、負荷を分散している。サービス提供サーバ500aにはサービス提供プログラム510aが搭載されている。サービス提供サーバ500bにはサービス提供プログラム510bが搭載されている。
【0016】
クライアント100a、100bは、サービス提供サーバ500a、500bのサービスを利用するクライアントである。クライアント100aとクライアント100bは同じ構成である。クライアント100aは、クライアントプログラム110aが搭載されており、それを実行することで機能する。クライアント100bは、クライアントプログラム110bが搭載されており、それを実行することで機能する。
【0017】
ロードバランサー200は、クライアント100a、100bのクライアントプログラム110a、110bが送信するリクエストを複数のメッセージキューサーバ300a、300bに振り分ける。
【0018】
メッセージキューサーバ300a、300bは、クライアント100a、100bからサービス提供サーバ500a、500bへのリクエストのメッセージデータを一時的に蓄積し、メッセージキューのキュー制御を行うサーバである。メッセージキューサーバ300aとメッセージキューサーバ300bは同じ構成であり、負荷を分散している。
【0019】
メッセージキューサーバ300aは、メッセージキューシステムを構成するサーバであり、ストレージデバイス330a、分散データストア320a、およびメッセージキュー制御部310aを有している。同様に、メッセージキューサーバ300bは、メッセージキューシステムを構成するサーバであり、ストレージデバイス330b、分散データストア320b、およびメッセージキュー制御部310bを有している。メッセージキュー制御部310a、310bは、不図示のCPUでソフトウェアプログラムを実行することにより実現され、メッセージデータのキューイングを制御する。メッセージキュー制御部310a、310bの内部構成および動作については後述する。
【0020】
分散データストア320a、320bは、メッセージキューサーバ300a、300bのストレージデバイス330a、330bを共有化し、相互に利用可能にする。
【0021】
ロードバランサー400は、メッセージキューサーバ300a,300bのメッセージキュー制御部310a、310bが送信するメッセージデータをサービス提供サーバ500a、500bに振り分ける。
【0022】
サービス提供サーバ500a、500bは、クライアント100a、100bに対してサービスを提供するサーバである。サービス提供サーバ500aは、サービス提供プログラム510aが搭載されており、それを実行することで機能する。サービス提供サーバ500bは、サービス提供プログラム510bが搭載され、それを実行することで機能する。
【0023】
なお、図1ではクライアント、メッセージキューサーバ、サービス提供サーバをそれぞれ2台としているが、あくまで一例の構成であり、2台以上のクライアント、メッセージキューサーバ、サービス提供サーバが存在してもよい。
【0024】
次に、メッセージキューサーバ300a、300bの詳細について説明する。ここではメッセージキューサーバ300aを例に説明する。
【0025】
メッセージキュー制御部310aは、CPUがソフトウェアプログラムを実行し、主記憶装置および補助記憶装置といったハードウェアリソースを利用することにより機能する。メッセージキュー制御部310aは、リクエスト送受信部311、統計情報操作部312、メッセージデータ情報サマリ操作部313、レジストリ更新部315、メッセージデータ情報操作部316、メッセージデータ情報選択部319を含んでいる。
【0026】
リクエスト送受信部311は、複数のクライアント100a、100bおよびサービス提供サーバ500a、500bとリクエストのメッセージデータを送受信する。
【0027】
統計情報操作部312は、クライアント100a、100bから受信したリクエストのメッセージデータの統計情報を算出し、レジストリ更新部315を介して統計情報レジストリ317へ保存する。メッセージデータの統計情報は、ストレージデバイス330a、330bへのメッセージデータの追加、およびストレージデバイス330a、330bからのメッセージデータの取得を集計した情報である。
【0028】
図2は、統計情報レジストリ317に格納される統計情報を例示する図である。図2には、統計情報操作部312が算出するメッセージデータの統計情報の一例が示されている。統計情報には、メッセージキュー名と、そのメッセージキューに対して送信されたリクエスト種別と、単位時間内に処理されるメッセージデータのデータ数の平均値とが含まれる。クライアント100a、100bはキューを指定してリクエストを送信する。ここではQueue_AとQueue_Bという2つのメッセージキューが定義されている。メッセージキューサーバ300a、300bはメッセージキュー毎にメッセージデータの追加および取得を制御する。
【0029】
例えば、図2のQueue_Aの部分には、クライアント100a、100bのクライアントプログラム110a、110bは、Queue_Aに1秒間あたりに平均1.5件のメッセージを追加し、サービス提供サーバ500a、500bのサービス提供プログラム510a、510bは、Queue_Aから1秒間あたりに平均2.5件のメッセージを取得していることが示されている。
【0030】
図1に戻り、レジストリ更新部315は、統計情報操作部312の指示で統計情報レジストリ317に統計情報を記録する。
【0031】
メッセージデータ情報サマリ操作部313は、定期的もしくは不定期に、分散データストア320aを介してメッセージデータ情報サマリ331の取得および更新を行う。メッセージデータ情報サマリ331は、メッセージデータ情報サマリレジストリ318に格納され、そこで更新される。
【0032】
メッセージデータがストレージデバイス330a、330bに書き込まれると、そのメッセージデータの情報が記録される。メッセージデータに優先度が付与されている。メッセージの優先度には「高」と「低」の2段階がある。
【0033】
図3は、メッセージデータ情報サマリレジストリ318に格納されるメッセージデータ情報サマリを例示する図である。メッセージデータ情報サマリ331は、メッセージデータの情報を集約した情報である。
【0034】
メッセージデータ情報サマリ331には、ストレージデバイス330a、330b毎かつメッセージキュー毎に、ストレージデバイス330a、330bに記録されているメッセージデータのデータ数(メッセージ数)を優先度毎に計数した結果がまとめられている。このメッセージデータ情報サマリ331は、定期的あるいは不定期に更新される。図3に示すように、メッセージデータ情報サマリ331には、ストレージデバイス330a、330bに対応するメッセージデータ情報名と、情報更新時刻と、メッセージキュー名と、優先度と、メッセージ数とが含まれている。
【0035】
図3の例では、ストレージデバイス330a、330bにそれぞれ対応するメッセージデータ情報332a、332bについてのサマリ情報が含まれている。メッセージデータ情報332aの部分を見ると、ストレージデバイス330aには、全部で5件のメッセージデータが格納されている。そのうち1件がメッセージキューQueue_Aに格納された低優先度のメッセージであり、1件がQueue_Bに格納された高優先度のメッセージである。2件がメッセージキューQueue_Bに格納された低優先度のメッセージであり、1件がQueue_Bに格納された高優先度のメッセージである。
【0036】
図1に戻り、メッセージデータ情報操作部316は、クライアント100a、100Bからのメッセージデータの追加(ストレージデバイスへの格納)あるいは取得(ストレージデバイスから読み出し)のリクエストに応じて、メッセージデータ情報332a、332bを更新する。
【0037】
図4は、メッセージデータ情報332aを例示する図である。図4に示すように、メッセージデータ情報332aには、各メッセージについて、そのメッセージデータを一意に特定するための識別子と、そのメッセージデータが登録されたメッセージキュー名、そのメッセージデータの優先度、およびメッセージデータ自体が含まれる。図4の例は、メッセージキューQueue_Aには、低優度のメッセージデータ”ABC”と高優先度のメッセージデータ”DEF”が格納されている。Queue_Bには、低優度のメッセージデータ”EFG”と高優先度のメッセージデータ”HIJ”が格納されている。
【0038】
メッセージデータ情報操作部316が、どのメッセージデータのメッセージデータ情報を更新操作の対象とするかは、メッセージデータ情報選択部319により決定される。
【0039】
メッセージデータ情報選択部319は、メッセージデータのリクエスト種別に応じた選択方法により、操作対象のメッセージデータを決定する。
【0040】
リクエストが、クライアント100a、100bが送信したメッセージデータをストレージデバイス330a、330bに格納するリクエストである場合、メッセージデータ情報選択部319は、メッセージデータを格納するストレージデバイス330a、330b(追加先)のメッセージデータ情報331をラウンドロビンで決定する。
【0041】
一方、リクエストが、サービス提供サーバ500a、500bが送信したメッセージデータをストレージデバイス330a、330bから取得するリクエストである場合、メッセージデータ情報選択部319は、統計情報レジストリ317に格納された統計情報と、メッセージデータ情報サマリレジストリ318に格納されたメッセージデータ情報サマリとに基づいて、高優先度のメッセージデータを取得できる可能性が高いストレージデバイス330a、330b(取得先)からメッセージデータを取得すると決定する。
【0042】
次に、メッセージキュー制御部310a、310bが、どのストレージデバイス330a、330b(取得先)からメッセージデータを取得するかを決定する具体的な方法について詳細に説明する。メッセージキュー制御部310a、310bは、定期的あるいは不定期にメッセージデータ情報サマリを作成し、更に、定期的あるいは不定期にメッセージデータ情報サマリをメッセージデータ情報サマリレジストリ318に保存しており、サービス提供サーバ500a、500bからのリクエストにより、ストレージデバイス330a、330bのいずれかからメッセージデータを取得してサービス提供サーバ500a、500bへ送信する。以下ではメッセージキューサーバ300aの動作を例に説明する
【0043】
(2)動作
図5は、メッセージキュー制御部310aが実行するメッセージデータ情報サマリの更新処理を示すシーケンス図である。
【0044】
メッセージデータ情報操作部316は、分散データストア320aに対して定期的もしくは不定期的にメッセージデータ情報の集計要求を送信する(ステップA1)。前記メッセージデータ情報の集計要求を受信した分散データストア320aはストレージデバイス330aのメッセージデータ情報332aにアクセスし、高優先度のメッセージデータ数と低優先度のメッセージデータ数をメッセージキューごとに集計する(ステップA2)。それらメッセージデータ数を集計した後、分散データストア320aは現在時刻を取得し(ステップA3)、前記ステップA2の集計結果と現在時刻をメッセージデータ情報操作部316へ送信する(ステップA4)。
【0045】
ステップA4にて送信された、前記ステップA2の集計結果と現在時刻を受信したメッセージデータ情報操作部316は、メッセージデータ情報332aについてメッセージデータ情報サマリを作成する。(ステップA5)
前記ステップA5で前記メッセージデータ情報サマリを作成したメッセージデータ情報操作部316は、作成したメッセージデータ情報サマリを含んだメッセージデータ情報サマリ更新要求を分散データストア320aへ送信する(ステップA6)。
【0046】
前記ステップA6で当該メッセージデータ情報サマリ更新要求を受信した分散データストア320aは、受信したメッセージデータ情報サマリ更新要求に含まれるメッセージデータ情報サマリの内容を、メッセージデータ情報サマリ331に反映する(ステップA7)。
【0047】
前記ステップA1〜ステップA7と同様の処理を各メッセージキューサーバ300a、300bのメッセージキュー制御部310a、310bがそれぞれ実施することで、全てのメッセージデータのメッセージデータ情報の集計結果がメッセージデータ情報サマリ331に反映される。
【0048】
図6は、メッセージキュー制御部310aが実行するメッセージデータ情報サマリレジストリ318の更新処理を示すシーケンス図である。
【0049】
メッセージキュー制御部310aのメッセージデータ情報サマリ操作部313は、定期的もしくは不定期的に分散データストア320aに対し、メッセージデータ情報サマリの取得要求を送信する(ステップB1)。
【0050】
前記取得要求を受信した分散データストア320aは、ストレージデバイス330a、330bからメッセージデータ情報サマリ331を取得し(ステップB2)、メッセージデータ情報サマリ操作部313へ送信する(ステップB3)。メッセージデータ情報サマリ操作部313は取得した前記メッセージデータ情報サマリ331を、レジストリ更新部315にメッセージデータ情報サマリ331の保存を要求する(ステップB4)。レジストリ更新部315は、メッセージデータ情報サマリ331をメッセージデータ情報サマリレジストリ318に保存する(ステップB5)。
【0051】
図7は、メッセージキュー制御部310aがクライアント100aからメッセージデータ取得のリクエストを受信したときに実行する処理を示すシーケンス図である。
【0052】
まず、クライアント100aは、メッセージキュー制御部310aのリクエスト送受信部311に対して、メッセージデータ取得のリクエスト(メッセージデータ取得要求)を送信する(ステップC1)。前記メッセージデータ取得要求には、そのリクエストでメッセージデータを取得するメッセージキューが指定される。その際、クライアント100aは、指定するメッセージキューのメッセージキュー名称をリクエストに記載する。
【0053】
図4に例示したように、メッセージキュー名称で指定される1つのメッセージキューには複数のメッセージデータが登録されうる。すわなち、メッセージデータ取得要求は、例えば、指定したメッセージキュー名称「Queue_A」のメッセージキューに属するいずれかのメッセージデータを要求するものである。メッセージキューに高優先のメッセージデータと低優先のメッセージデータが登録されていれば、高優先のメッセージデータが優先的に取得されることとなる。メッセージデータ取得要求には、更に、メッセージ取得数など様々な情報を含んで良いのはもちろんである。
【0054】
前記メッセージデータ取得要求を受信したリクエスト送受信部311は、メッセージデータ情報操作部316に、受信したメッセージデータ取得要求を送信する(ステップC2)。
【0055】
メッセージデータ情報操作部316は、メッセージデータの取得先となるストレージデバイス330a、330bを決定するために、メッセージデータ情報選択部319に取得先決定要求を送信する(ステップC3)。
【0056】
取得先決定要求を受信したメッセージデータ情報選択部319は、統計情報レジストリ317、メッセージデータ情報サマリレジストリ318、およびメッセージキュー設定レジストリ314にアクセスし、平均取得メッセージデータ数、メッセージデータ情報サマリ、メッセージキュー制御主体数を取得する(ステップC4〜C6)。
【0057】
なお、平均取得メッセージデータ数は、図2に例示した統計情報における、リクエスト種別が取得である平均処理メッセージデータ数である。
【0058】
また、メッセージキュー設定レジストリ314には、メッセージキューに関する各種設定情報が予め登録されている。設定情報のひとつとして、メッセージキュー制御主体数が登録されている。メッセージキュー制御主体数は、メッセージキューを制御する主体の個数を示す情報である。メッセージキュー制御の主体となるのは、メッセージキュー制御部310a、310bであり、言い換えれば、メッセージキューサーバ300a、300bにてCPUにより実行されるメッセージキュー制御プログラムと言っても良い。
【0059】
次に、メッセージデータ情報選択部319は、取得した統計情報、メッセージデータ情報サマリ、およびメッセージキュー制御主体数に加えて更にOS標準の機能で取得される現在時刻を用いて、現在時刻において、高優先のメッセージデータを取得できる可能性が最も高いストレージデバイスを予測する(ステップC7)。ここでは一例として、予測された当該ストレージデバイス330a、330bに対応するメッセージデータ情報332a、332bを、優先すべきメッセージデータ情報332a、332bとして出力する。
【0060】
具体的には、まず、メッセージデータ情報選択部319は、式(1)を適用し、メッセージデータ情報サマリの情報更新時刻から現在時刻までに取得されたであろうメッセージデータのデータ数(取得メッセージデータ数)を求める。
【0061】
取得メッセージデータ数=(現在時刻−情報取得時刻)×平均取得メッセージデータ数×メッセージキュー制御主体数・・・(1)
取得メッセージデータ数が予測できると、当該取得メッセージデータ数と、メッセージデータ情報サマリのメッセージ数とに基づいて、現在時刻において各ストレージデバイス330a、330bに格納されているメッセージデータの個数(現在時刻メッセージデータ数)を予測することができる。そして、当該現在時刻メッセージ数から、高優先のメッセージデータを取得できる可能性が最も高いストレージデバイス330a、330bを予測することができる。予測方法としては様々なポリシによる様々な方法が採用可能である。
【0062】
ここで、情報取得時刻とは、図5のステップA3で取得されるメッセージデータ情報サマリの更新時刻である。平均取得メッセージデータ数とは、単位時間当たりにストレージデバイス330a、330bから取得されたメッセージデータの個数の平均値である。平均取得メッセージデータ数は、メッセージ取得実績を基に平均値を算出すればよく、例えば、ストレージデータ情報毎に、あるいはメッセージキュー制御部310a、310b毎に、あるいはメッセージキューシステム全体について、のいずれかの単位で算出すればよい。
【0063】
なお、ここでは一例として、メッセージデータの取得先となるストレージデバイス330a、330bを決定するのに、時刻情報を用いたが、本発明がこれに限定されることは無い。他の例として、時刻情報を用いず、取得した統計情報、メッセージデータ情報サマリ、およびメッセージキュー制御主体数に基づいて判断してもよい。
【0064】
また、ここでは一例として、情報更新時刻から現在時刻までに取得されたであろうメッセージデータのデータ数を用いて、メッセージデータの取得先となるストレージデバイス330a、330bを決定したが、本発明がこれに限定されることはない。他の例として、情報更新時刻から現在時刻までに取得されるメッセージデータだけでなく、さらに、追加されるメッセージデータをも考慮した演算により、メッセージデータの取得先となるストレージデバイス330a、330bを決定してもよい。その場合、統計情報に含まれる、リクエスト種別が追加である平均処理メッセージデータ数(平均追加メッセージデータ数)を、現在時刻におけるメッセージデータ数を予想するのに用いればよい。
【0065】
高優先のメッセージデータを取得できる可能性が最も高いストレージデバイスを予測する手法について、図8を用いて具体的に説明する。高優先のメッセージデータを取得できる可能性が最も高いストレージデバイスを予測することは、すなわち、メッセージデータの取得先とするストレージデバイスを決定することである。
【0066】
図8は、データの取得先となるストレージデバイスの決定の具体例について説明するための図である。上述したように、メッセージデータ情報サマリレジストリ318には、ある時刻に取得されたメッセージデータ情報サマリが格納されている。図8には、具体例の説明に用いるメッセージデータ情報サマリが示されている。ここではメッセージキューQueue_Aを例に説明を行うので、図8にはメッセージキューQueue_Aに関する情報だけを示している。さらに、具体例の説明では、現在時刻が10:20:30.75であり、平均取得メッセージデータ数が10msg/secであり、メッセージキュー制御主体数が2台であるとする。
【0067】
まず、メッセージキュー制御部310aがサービス提供サーバ500aからメッセージキューQueue_Aを対象としたメッセージデータ取得要求を受信したと仮定する。
【0068】
メッセージキュー制御部310aは、図8に示したメッセージデータ情報サマリに上述した式(1)を適用し、メッセージデータ情報サマリの情報更新時刻から現在時刻までに既に取得されたであろうメッセージデータのデータ数を予測する。ストレージデバイス330aに対応するメッセージデータ情報332aについて、既に取得されたであろうメッセージデータのデータ数は5件(0.25[sec]×10[msg/sec]×2[台])となる。ここでは高優先度のメッセージデータを優先的に取得するものと考えるので、ストレージデバイス330aに保持されている高優先度のメッセージデータ数は最大(最多)で12件、最小(最少)で7件であり、低優先度のメッセージデータは2件であると予測される。
【0069】
同様に、ストレージデバイス330bに対応するメッセージデータ情報332bについて、既に取得されたであろうメッセージデータのデータ数は15件(0.75[sec]×10[msg/sec]×2[台])となる。よって、ストレージデバイス330bに保持されている高優先度のメッセージデータ数が最大(最多)16件、最小(最少)で1件であり、低優先度のメッセージデータ数は5件であると予測される。
【0070】
次に、メッセージキュー制御部310aは、高優先のメッセージデータを取得できる可能性についてストレージデバイス330a、330b間の相対的な順位を求める。メッセージキュー制御部310aは、これに、式(1)により予測したメッセージデータのデータ数を用いる。具体的な順位付けの方法は任意であるが、例えば、現在時刻において格納されている高優先度のメッセージデータのデータ数の最小値(最小数)が大きい順に順位付けしてもよい。あるいは、現在時刻において格納されている高優先度のメッセージデータのデータ数の最大値(最多数)と最小値(最小数)の平均値が大きい順に順位付けしてもよい。
【0071】
現在時刻において格納されている高優先度のメッセージデータのデータ数の最小値(最小数)が大きい順に順位付けした場合、図8の例では、ストレージデバイス330aが一位となり、ストレージデバイス330bが二位となる。そのため、メッセージキュー制御部310aは、ストレージデバイス330aをメッセージデータの取得先と決定し、その対応するメッセージデータ情報332aをメッセージデータ情報操作部316に通知する(ステップC8)。
【0072】
次に、メッセージデータ情報操作部316は、通知された取得先のメッセージデータ情報332aおよびそれに対応するストレージデバイス330aを操作対象として、メッセージデータ取得要求を分散データストア320aへ送信する。(ステップC9)。メッセージデータ取得要求を受信した分散データストア320aは、メッセージデータ情報332aからメッセージキュー名称Queue_Aに該当するメッセージデータのうち優先度の高いメッセージデータを検索し、該当するメッセージデータを含むメッセージデータ情報をストレージデバイス330aから取得する(ステップC10)。
【0073】
サービス提供サーバ500aが要求したデータ数のメッセージデータがストレージデバイス330aに格納されていなかった場合、分散データストア320aは、次の順位のストレージデバイス330bのメッセージデータ情報332bからメッセージキュー名称Queue_Aに該当するメッセージデータのうち優先度の高いメッセージデータを検索し、該当するメッセージデータを含むメッセージデータ情報をストレージデバイス330bから取得する。
【0074】
そして、分散データストア320aは、取得したメッセージデータ情報をメッセージデータ情報操作部316へ送信する(ステップC11)。前記メッセージデータ情報を受信したメッセージデータ情報操作部316は、識別子などの不要な制御情報を削除し(ステップC12)、リクエスト送受信部311へメッセージデータを送信する(ステップC13)。メッセージデータを受信したリクエスト送受信部311は前記メッセージデータをサービス提供サーバ500aへ送信する(ステップC14)。
【0075】
メッセージデータ取得要求を受信したメッセージキュー制御部310a、310bがそれぞれ上記処理を実行することで、優先度の高いメッセージデータの配送の遅延を短縮することができる。
【0076】
従来はラウンドロビンによりリクエストが複数のストレージデバイスに分散されていたところ、本実施形態では、上述した処理方式を全てのメッセージキュー制御部310a、310bに適用するので、それだけでは特定のストレージデバイス(特定のメッセージデータ情報)にリクエストが集中することも考えられる。しかしながら、本実施形態では、各メッセージキュー制御部310a、310bgメッセージデータ情報サマリを取得する時刻が異なる。そのため、同じストレージデバイスのメッセージデータ情報であっても各メッセージキュー制御部310a、310bの間で異なる情報となる。さらに、本実施形態の式(1)では、取得されるメッセージデータのみを考慮し、追加されるデータは考慮せずに、ストレージデバイス330a、330bの順位を決定している。本実施形態の手法では、メッセージデータ情報サマリの取得時刻が古いほど、高優先度メッセージデータを取得できる確率が小さくなる。これにおり、特定のストレージデバイスにリクエストが集中するのを抑制することが可能となっている。すなわち、情報取得時刻のばらつきを利用してリクエストの集中を抑制している。
【0077】
以上説明した本実施形態は以下のように整理することができる。
【0078】
本実施形態によるデータストア装置(メッセージキューサーバ300a、300b)は、複数の記憶装置(ストレージデバイス330a、330b)と、データを受信して記憶装置に格納し、データ取得要求を受けて記憶装置からデータを取得して送信するデータ制御部(メッセージキュー制御部310a、310b)と、を有している。データ制御部は、複数の記憶装置のそれぞれに格納されているデータに関する格納状況情報(メッセージデータ情報サマリ)に基づいて、データ取得要求にかかるデータを検索する対象の記憶装置を選択する。複数の記憶装置によるデータストア装置において、各記憶装置のデータに関する格納状況に基づいて、どの記憶装置からデータを取得するかを判断するので、良好なデータの配送を行うことができる。
【0079】
また、そのデータにはそれぞれ優先度が付与され、格納状況情報は、複数の記憶装置のそれぞれに格納されている優先度毎のデータのデータ数に関する優先度毎格納状況情報を含み、データ制御部は、優先度の高いデータを取得できる可能性の高い記憶装置を選択する。優先度毎にどれだけデータが格納されているかを考慮し、優先度の高いデータを取得できる記憶装置を選択するので、優先度を考慮して良好なデータ配信を行うことができる。
【0080】
また、データ制御部が複数あり、複数のデータ制御部は、複数の記憶装置にデータを格納し、複数の記憶装置からデータを取得することが可能であり、複数のデータ制御部がそれぞれに格納状況情報を保持し、複数のデータ制御部は、データ取得要求を受けると、それぞれの保持する格納状況情報を用いて、データを検索する記憶装置を選択する。複数のデータ制御部が複数の記憶装置を共有する構成において、格納状況情報に基づく適切な判断で良好なデータの配信を実現することができる。
【0081】
また、格状況情報は、所定の時刻に取得された情報を含み、複数のデータ制御部は、同じ記憶装置に格納されているデータに関し、互いに依存しない時刻の格納状況情報を用いる。各データ制御部が異なる時刻の格納状況情報を用いることになるので、特定の記憶装置にデータの検索が集中するのを緩和することができる。
【0082】
また、格納状況情報には、優先度毎格納状況情報が取得された時刻に関する時刻情報が含まれており、データ制御部は、優先度毎格納状況情報とその優先度毎格納状況情報が取得された時刻に関する時刻情報とに基づいて、データを検索する記憶装置を選択する。時刻の情報を含む優先度とデータ数との関係に基づいて、データを検索する記憶装置を選択するので、時間の経過も考慮して良好なデータの配送を行うことができる。
【0083】
また、データ制御部は、時刻情報に基づいて、現在時刻の優先度とデータ数の関係を予測し、予測結果に基づいて、データを検索する記憶装置を選択する。現在時刻のデータの状態を予測してデータを検索する記憶装置を選択するので、高い精度で良好なデータの配信を行うことができる。
【0084】
また、データ制御部は、現在時刻と時刻情報が示す時刻との差分と、単位時間に取得されるデータ数の平均値との積を、時刻情報が示す時刻における優先度毎のデータ数から減算して、現在時刻の優先度とデータ数の関係を予測する。現在時刻と時刻情報が示す時刻との差分と、単位時間に取得されるデータ数の平均値との積を用いることにより、現在時刻の優先度とデータ数の関係を予測できるので、現在時刻の状態を良好に予測し、高い精度で良好なデータの配信を行うことができる。
【0085】
また、単位時間に取得されるデータ数の平均値は、1つのデータ制御部の単位時間に記憶装置から取得するデータ数の平均値と、データ制御部の個数との積である。単位時間に取得されるデータ数の平均値を算出し、それを予測に用いるので、より精度の高いデータを配信する。
【0086】
上述した本発明の実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
【符号の説明】
【0087】
100a…クライアント、100b…クライアント、110a…クライアントプログラム、110b…クライアントプログラム、200…ロードバランサー、300a…メッセージキューサーバ、300b…メッセージキューサーバ、310a…メッセージキュー制御部、310b…メッセージキュー制御部、311…リクエスト送受信部、312…統計情報操作部、313…メッセージデータ情報サマリ操作部、314…メッセージキュー設定レジストリ、315…レジストリ更新部、316…メッセージデータ情報操作部、317…統計情報レジストリ、318…メッセージデータ情報サマリレジストリ、319…メッセージデータ情報選択部、320a…分散データストア、320b…分散データストア、330a…ストレージデバイス、330b…ストレージデバイス、331…メッセージデータ情報サマリ、332a…メッセージデータ情報、332b…メッセージデータ情報、400…ロードバランサー、500a…サービス提供サーバ、500b…サービス提供サーバ、510a…サービス提供プログラム、510b…サービス提供プログラム
図1
図2
図3
図4
図5
図6
図7
図8