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

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

▶ 日本電気株式会社の特許一覧

特許6032199分散処理システム、分散処理装置、ルーティングテーブル作成方法及びプログラム記録媒体
<>
  • 特許6032199-分散処理システム、分散処理装置、ルーティングテーブル作成方法及びプログラム記録媒体 図000002
  • 特許6032199-分散処理システム、分散処理装置、ルーティングテーブル作成方法及びプログラム記録媒体 図000003
  • 特許6032199-分散処理システム、分散処理装置、ルーティングテーブル作成方法及びプログラム記録媒体 図000004
  • 特許6032199-分散処理システム、分散処理装置、ルーティングテーブル作成方法及びプログラム記録媒体 図000005
  • 特許6032199-分散処理システム、分散処理装置、ルーティングテーブル作成方法及びプログラム記録媒体 図000006
  • 特許6032199-分散処理システム、分散処理装置、ルーティングテーブル作成方法及びプログラム記録媒体 図000007
  • 特許6032199-分散処理システム、分散処理装置、ルーティングテーブル作成方法及びプログラム記録媒体 図000008
  • 特許6032199-分散処理システム、分散処理装置、ルーティングテーブル作成方法及びプログラム記録媒体 図000009
  • 特許6032199-分散処理システム、分散処理装置、ルーティングテーブル作成方法及びプログラム記録媒体 図000010
  • 特許6032199-分散処理システム、分散処理装置、ルーティングテーブル作成方法及びプログラム記録媒体 図000011
  • 特許6032199-分散処理システム、分散処理装置、ルーティングテーブル作成方法及びプログラム記録媒体 図000012
  • 特許6032199-分散処理システム、分散処理装置、ルーティングテーブル作成方法及びプログラム記録媒体 図000013
  • 特許6032199-分散処理システム、分散処理装置、ルーティングテーブル作成方法及びプログラム記録媒体 図000014
  • 特許6032199-分散処理システム、分散処理装置、ルーティングテーブル作成方法及びプログラム記録媒体 図000015
  • 特許6032199-分散処理システム、分散処理装置、ルーティングテーブル作成方法及びプログラム記録媒体 図000016
  • 特許6032199-分散処理システム、分散処理装置、ルーティングテーブル作成方法及びプログラム記録媒体 図000017
  • 特許6032199-分散処理システム、分散処理装置、ルーティングテーブル作成方法及びプログラム記録媒体 図000018
  • 特許6032199-分散処理システム、分散処理装置、ルーティングテーブル作成方法及びプログラム記録媒体 図000019
  • 特許6032199-分散処理システム、分散処理装置、ルーティングテーブル作成方法及びプログラム記録媒体 図000020
  • 特許6032199-分散処理システム、分散処理装置、ルーティングテーブル作成方法及びプログラム記録媒体 図000021
  • 特許6032199-分散処理システム、分散処理装置、ルーティングテーブル作成方法及びプログラム記録媒体 図000022
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6032199
(24)【登録日】2016年11月4日
(45)【発行日】2016年11月24日
(54)【発明の名称】分散処理システム、分散処理装置、ルーティングテーブル作成方法及びプログラム記録媒体
(51)【国際特許分類】
   G06F 9/50 20060101AFI20161114BHJP
   G06F 13/00 20060101ALI20161114BHJP
【FI】
   G06F9/46 465D
   G06F13/00 351A
【請求項の数】12
【全頁数】25
(21)【出願番号】特願2013-506052(P2013-506052)
(86)(22)【出願日】2012年3月21日
(86)【国際出願番号】JP2012058031
(87)【国際公開番号】WO2012128387
(87)【国際公開日】20120927
【審査請求日】2015年2月16日
(31)【優先権主張番号】特願2011-66204(P2011-66204)
(32)【優先日】2011年3月24日
(33)【優先権主張国】JP
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成22年度 総務省「ユビキタス・プラットフォーム技術の研究開発(ユビキタスサービスプラットフォーム技術)」委託研究、産業技術力強化法第19条の適用を受ける特許出願
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100109313
【弁理士】
【氏名又は名称】机 昌彦
(74)【代理人】
【識別番号】100124154
【弁理士】
【氏名又は名称】下坂 直樹
(72)【発明者】
【氏名】佐藤 正
【審査官】 井上 宏一
(56)【参考文献】
【文献】 特開2008−299586(JP,A)
【文献】 Ion STOICA,et al.,"Chord: A Scalable Peer-to-Peer Lookup Protocol for Internet Applications",Journal of IEEE/ACM Transactions on Networking(TON),IEEE,2003年 2月,Volume11, Issue 1,pp.17-32,URL,<http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1180543>
【文献】 David R. KARGER and Matthias RUHL,"Simple Efficient Load Balancing Algorithms for Peer-to-Peer Systems",SPAA'04 Proceedings of the Sixteenth annual ACM symposium on parallelism in algorithms and architectures,ACM,2004年,pp.36-43,URL,<http://delivery.acm.org/10.1145/1010000/1007919/p36-karger.pdf>
【文献】 Gurmeet S. MANKU, et al.,"Symphony: Distributed Hashing In A Small World",USITS'03 Proceedings of the 4th conference on USENIX Symposium on Internet Technologies and Systems,USENIX Association,2003年,Volume 4,URL,<https://www.usenix.org/legacy/event/usits03/tech/full_papers/manku/manku.pdf>
【文献】 上田 清志,外3名,「物理ネットワーク負荷に適応したP2Pネットワークトポロジー制御」,電子情報通信学会論文誌,社団法人電子情報通信学会,2009年11月 1日,第J92-B巻,第11号,pp.1750-1763
【文献】 佐藤 文明,「参加脱退率を考慮した階層的DHTシステムの構成方式」,情報処理学会論文誌 論文誌ジャーナル[CD−ROM],社団法人情報処理学会,2010年 2月15日,第51巻,第2号,pp.418-428
【文献】 前橋 孝広,大原 重樹,「大規模データ処理のための分散システムの実装とその応用」,電子情報通信学会論文誌,社団法人電子情報通信学会,2010年 7月 1日,第J93-D巻,第7号,pp.1072-1081
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/46 −9/54
G06F 13/00
(57)【特許請求の範囲】
【請求項1】
構造化P2Pネットワークにおいて1つ以上の分散処理装置を含む分散処理システムであって、
前記分散処理装置は、
互いに順序関係が定義されるキーであってデータのルーティングに用いられるルーティングキーのうち、自装置に対応付けられた該ルーティングキーと、前記ルーティングキーの各々と対応付けられ、前記ルーティングキーの前記順序関係に応じた順序関係が定義されるキーであってデータの管理に用いられるイベントキーのうち、自装置に対応付けられた該イベントキーと、を保持するキー保持手段と、
自装置の前記ルーティングキーの値から所定の関係にある値である初期値と、前記初期値に基づいて定められる他の分散処理装置のルーティングキーと、前記他の分散処理装置に対応付けられたイベントキーと、前記分散処理装置の各々を識別するアドレスと、を含むタプルをルーティングテーブルに登録する分散処理装置初期化手段と、
前記タプルを保持するルーティングテーブルを格納するルーティングテーブル格納手段と、
外部からイベントキーが入力されたときに、ルーティングテーブルに記憶されている各タプルのイベントキーから、外部から入力されたイベントキーまでの距離が最も小さいイベントキーである転送先イベントキーを求め、転送先イベントキーに対応するタプルのアドレスに外部イベントキーを送信するデータ転送手段と、
を含む分散処理システム。
【請求項2】
前記他の分散処理装置は、任意のキーkからの距離がdであるキーを(k+d) mod 2^mと定義した場合における、前記ルーティングキーからの距離が2^(j−1)(j=1,2,...,m)のいずれかであるルーティングキーを開始値として、該開始値からの距離が最も小さいルーティングキーを保持する分散処理装置である、
請求項1に記載の分散処理システム。
【請求項3】
前記分散処理装置は、さらに、
外部からイベントキーが入力されたときに、プレディセッサ記憶手段に記憶されているイベントキーであるプレディセッサイベントキーから、
前記外部から入力されたイベントキーである外部イベントキーまでの距離が、プレディセッサイベントキーから自装置のイベントキーである自イベントキーまでの距離よりも小さい場合に、自装置のアプリケーションに外部イベントキーを入力し、
プレディセッサイベントキーから外部イベントキーまでの距離が、プレディセッサイベントキーから自イベントキーまでの距離よりも大きい場合に、ルーティングテーブルに記憶されている各タプルのイベントキーと、自イベントキーとから、外部イベントキーまでの距離が最も小さいイベントキーである転送先イベントキーを求め、
転送先イベントキーが自イベントキーと一致していれば、自装置のサクセッサに外部イベントキーを送信し、
転送先イベントキーが自イベントキーと一致していなければ、転送先イベントキーに対応するタプルのアドレスに外部イベントキーを送信する、
データ転送手段を含む、
請求項2に記載の分散処理システム。
【請求項4】
前記分散処理装置は、さらにプレディセッサ記憶手段とルーティングテーブル更新手段とを含み、
前記プレディセッサ記憶手段は、
自装置のルーティングキーからの距離が最も大きいルーティングキーを保持する分散処理装置(プレディセッサ)のイベントキーと、アドレスと、を記憶し、
前記ルーティングテーブル更新手段は、
自装置のルーティングキーからの距離が1である値を開始値として、該開始値と、自装置のサクセッサのイベントキーと、アドレスと、を含むタプルをルーティングテーブルに登録し、
前記自装置のサクセッサのプレディセッサ記憶手段に記憶されるイベントキーと、アドレスと、を自装置のプレディセッサ記憶手段に記憶し、
前記サクセッサのプレディセッサ記憶手段に自装置のイベントキーと、アドレスと、を記憶し、
前記プレディセッサのルーティングテーブルから、該プレディセッサのルーティングキーからの距離が1である値を開始値とするタプルを求め、該タプルのイベントキーと、アドレスと、を自装置のイベントキーと、アドレスと、に更新する、
請求項1に記載の分散処理システム。
【請求項5】
前記分散処理装置は、
自装置のサクセッサとイベントデータ被通知数を通知しあうことで、サクセッサとの間でイベントデータ被通知数が均一になるように自装置のルーティングキーを更新し、前記キー保持手段が該更新後のルーティングキーを保持する、
請求項1〜4のいずれか1項に記載の分散処理システム。
【請求項6】
前記分散処理装置は、
自装置のサクセッサとイベントデータ転送数を通知しあうことで、サクセッサとの間でイベントデータ転送数が均一になるように自装置のイベントキーを更新し、前記キー保持手段が該更新後のイベントキーを保持する、
請求項1〜4のいずれか1項に記載の分散処理システム。
【請求項7】
前記分散処理装置は、
所定時間ごとに自装置のサクセッサに、自装置のイベントデータ被通知数を送信し、
イベントデータ被通知数を受信したサクセッサから、
該サクセッサが算出した該サクセッサと自装置のイベントデータ被通知数が同数になるような自装置のイベントキーと、
自装置が現在保持するイベントキーを、前記算出したイベントキーに更新することを求めるイベントキー更新要求と、
を受信した際に、前記イベントキー更新要求に基づいて自装置が保持するイベントキーを更新する、
請求項5に記載の分散処理システム。
【請求項8】
前記分散処理装置は、
所定時間ごとに、自装置のサクセッサに、自装置のイベントデータ転送数を送信し、
イベントデータ転送数を受信したサクセッサから、
該サクセッサが算出した該サクセッサと自装置のイベントデータ転送数が同数になるような自装置のルーティングキーと、
自装置が現在保持するルーティングキーを、前記算出したルーティングキーに更新することを求めるルーティングキー更新要求と、
を受信した際に、前記ルーティングキー更新要求に基づいて自装置が保持するルーティングキーを更新する、
請求項6に記載の分散処理システム。
【請求項9】
構造化P2Pネットワーク上の分散処理装置であって、
互いに順序関係が定義されるキーであってデータのルーティングに用いられるルーティングキーのうち、自装置に対応付けられた該ルーティングキーと、前記ルーティングキーの各々と対応付けられ、前記ルーティングキーの前記順序関係に応じた順序関係が定義されるキーであってデータの管理に用いられるイベントキーのうち、自装置に対応付けられた該イベントキーと、を保持するキー保持手段と、
自装置の前記ルーティングキーの値から所定の関係にある値である初期値と、前記初期値に基づいて定められる他の分散処理装置のルーティングキーと、前記他の分散処理装置に対応付けられたイベントキーと、前記分散処理装置の各々を識別するアドレスと、を含むタプルをルーティングテーブルに登録する分散処理装置初期化手段と、
前記タプルを保持するルーティングテーブルを格納するルーティングテーブル格納手段と、
外部からイベントキーが入力されたときに、ルーティングテーブルに記憶されている各タプルのイベントキーから、外部から入力されたイベントキーまでの距離が最も小さいイベントキーである転送先イベントキーを求め、転送先イベントキーに対応するタプルのアドレスに外部イベントキーを送信する、データ転送手段と
を含む分散処理装置。
【請求項10】
前記他の分散処理装置は、任意のキーkからの距離がdであるキーを(k+d) mod 2^mと定義した場合における、前記ルーティングキーからの距離が2^(j−1)(j=1,2,...,m)のいずれかであるルーティングキーを開始値として、該開始値からの距離が最も小さいルーティングキーを保持する分散処理装置である、
請求項9に記載の分散処理装置。
【請求項11】
構造化P2Pネットワークにおいて1つ以上の分散処理装置を含む分散処理システムにおけるルーティングテーブル作成方法であって、
互いに順序関係が定義されるキーであってデータのルーティングに用いられるルーティングキーのうち、自装置に対応付けられた該ルーティングキーと、前記ルーティングキーの各々と対応付けられ、前記ルーティングキーの前記順序関係に応じた順序関係が定義されるキーであってデータの管理に用いられるイベントキーのうち、自装置に対応付けられた該イベントキーと、を保持し、
自装置の前記ルーティングキーの値から所定の関係にある値である初期値と、前記初期値に基づいて定められる他の分散処理装置のルーティングキーと、前記他の分散処理装置に対応付けられたイベントキーと、前記分散処理装置の各々を識別するアドレスと、を含むタプルをルーティングテーブルに登録し、
前記タプルを保持するルーティングテーブルを格納し、
外部からイベントキーが入力されたときに、ルーティングテーブルに記憶されている各タプルのイベントキーから、外部から入力されたイベントキーまでの距離が最も小さいイベントキーである転送先イベントキーを求め、転送先イベントキーに対応するタプルのアドレスに外部イベントキーを送信する、
ルーティングテーブル作成方法。
【請求項12】
構造化P2Pネットワーク上の分散処理装置に、
互いに順序関係が定義されるキーであってデータのルーティングに用いられるルーティングキーのうち、自装置に対応付けられた該ルーティングキーと、前記ルーティングキーの各々と対応付けられ、前記ルーティングキーの前記順序関係に応じた順序関係が定義されるキーであってデータの管理に用いられるイベントキーのうち、自装置に対応付けられた該イベントキーと、を保持し、
自装置の前記ルーティングキーの値から所定の関係にある値である初期値と、前記初期値に基づいて定められる他の分散処理装置のルーティングキーと、前記他の分散処理装置に対応付けられたイベントキーと、前記分散処理装置の各々を識別するアドレスと、を含むタプルをルーティングテーブルに登録し、
前記タプルを保持するルーティングテーブルを格納し、
外部からイベントキーが入力されたときに、ルーティングテーブルに記憶されている各タプルのイベントキーから、外部から入力されたイベントキーまでの距離が最も小さいイベントキーである転送先イベントキーを求め、転送先イベントキーに対応するタプルのアドレスに外部イベントキーを送信する、
処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、大量のイベントデータを高速に処理するために、複数の分散処理装置が相互に連携して分散処理する分散処理システムに関する。
【背景技術】
【0002】
図1は、LANケーブルなどの伝送媒体をもって接続されるネットワークを介して、他の分散処理装置と通信する分散処理システムの概要を示す図である。図1では例として、分散処理装置100と分散処理装置200と分散処理装置300と分散処理装置400との、4つの分散処理装置が接続されている。
図1に示す分散処理システムでは、分散処理装置同士が連携して、イベントデータを、そのイベントデータを処理すべき分散処理装置へ送信する。送信先の分散処理装置は、送信されたイベントデータを処理する。他の分散処理装置に送信するために、分散処理装置は、他のいくつかの分散処理装置のアドレスを記憶している。分散処理装置は、イベントデータを転送するときには、最終的に該イベントデータを処理すべき分散処理装置に到達するように、所定の手順に従って、記憶しているアドレス群の中から該イベントデータの送信先となるアドレスを決定する。
なお、イベントデータとは、分散処理システムの外部システムで刻一刻と生成され、分散処理システム上に構築されたアプリケーションで処理されるデータである。具体的には、イベントデータとは、非接触型ICカードを含むRFID(Radio Frequency IDentification)やセンサなどのデバイスから大量に発生するデータであり、例えば、携帯電話から定期的に発信される位置情報等である。
非特許文献1は、構造化P2P(Peer−to−Peer)ネットワークにおいて効率的にルーティングを行うための手法を開示する。非特許文献1に記載のルーティングアルゴリズム(以下「Chord」という。)では、分散処理装置はmビット長の値(キー)をその識別子(分散処理装置ID)とする。イベントデータは、そのハッシュ値(キー)のサクセッサ(successor)で処理される。キーkのサクセッサとは、分散処理システムを構成する分散処理装置のうち、キーkからの距離が最も小さい値を識別子とする分散処理装置のことである。なお、サクセッサとは逆に、キーkからの距離が最も大きい値を識別子とする分散処理装置をキーkのプレディセッサと呼ぶ。
分散処理システムで処理されるイベントデータについて、その値に偏りがあるのが一般的である。例えば、人が携帯する携帯端末から位置情報をイベントデータとして定期的に発信する場合、人が密集している地域の位置情報は、そうでない地域の位置情報に比べて多くなる。イベントデータの値の偏りによって、そこから生成されるキーについても偏りが発生する。
分散処理装置におけるイベントデータの処理負荷(CPU負荷)は、処理すべきイベントデータの数に比例する。一方、分散処理装置とネットワークの間の伝送媒体が運んでいるデータ量(ネットワーク負荷)は転送すべきイベントデータの数と処理すべきイベントデータの数の和に比例する。
CPU負荷又はネットワーク負荷を均等にするためのアルゴリズムを、非特許文献2は“3.ITEM BALANCING”で開示している。非特許文献2の方式は、各分散処理装置の負荷が均等になるように分散処理装置IDを変更する。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Chord−A Scalable Peer−to−Peer Lookup Service for Internet Applications
【非特許文献2】Simple Efficient Load Balancing Algorithms for Peer−to−Peer Systems
【発明の概要】
【発明が解決しようとする課題】
【0004】
非特許文献2の方式は、例えばChordなどの、ルーティングアルゴリズムに対して、分散処理装置IDを調整することで、CPU負荷又はネットワーク負荷のいずれかを分散処理装置間で均一にする。しかしながら一方の負荷を均一にすることが、他方の負荷のバランスに影響を与えてしまう。そのため、Chordなどのルーティングアルゴリズムに対して、非特許文献2の方式を適用する場合には、CPU負荷とネットワーク負荷の両方を同時にバランスさせることができない。
以上より本発明の目的は、CPU負荷とネットワーク負荷を独立にバランスさせることが可能な技術を提供することである。
【課題を解決するための手段】
【0005】
上記目的を達成するために、本発明の分散処理システムは、構造化P2Pネットワークにおいて1つ以上の分散処理装置を含む分散処理システムであって、前記分散処理装置は、順序関係が定義されているキー(値)であってデータのルーティングに用いられるルーティングキーと、該ルーティングキーとの関係で順序関係が定義されているキー(値)であってデータの管理に用いられるイベントキーと、を保持するキー保持手段と、前記ルーティングキーと所定の関係にあるルーティングキーを保持する分散処理装置のイベントキーと、アドレスと、を含むタプルをルーティングテーブルに登録する分散処理装置初期化手段と、前記タプルを保持するルーティングテーブルを格納するルーティングテーブル格納手段と、を含む。
上記目的を達成するために、本発明の分散処理装置は、構造化P2Pネットワーク上の分散処理装置であって、順序関係が定義されているキー(値)であってデータのルーティングに用いられるルーティングキーと、該ルーティングキーとの関係で順序関係が定義されているキー(値)であってデータの管理に用いられるイベントキーと、を保持するキー保持手段と、前記ルーティングキーと所定の関係にあるルーティングキーを保持する分散処理装置のイベントキーと、アドレスと、を含むタプルをルーティングテーブルに登録する分散処理装置初期化手段と、前記タプルを保持するルーティングテーブルを格納するルーティングテーブル格納手段と、を含む。
上記目的を達成するために、本発明のルーティングテーブル作成方法は、構造化P2Pネットワークにおいて1つ以上の分散処理装置を含む分散処理システムにおけるルーティングテーブル作成方法であって、順序関係が定義されているキー(値)であってデータのルーティングに用いられるルーティングキーと、該ルーティングキーとの関係で順序関係が定義されているキー(値)であってデータの管理に用いられるイベントキーと、を保持し、前記ルーティングキーと所定の関係にあるルーティングキーを保持する分散処理装置のイベントキーと、アドレスと、を含むタプルをルーティングテーブルに登録し、前記タプルを保持するルーティングテーブルを格納する。
上記目的を達成するために、本発明の記録媒体が格納するプログラムは、構造化P2Pネットワーク上の分散処理装置に、順序関係が定義されているキー(値)であってデータのルーティングに用いられるルーティングキーと、該ルーティングキーとの関係で順序関係が定義されているキー(値)であってデータの管理に用いられるイベントキーと、を保持し、前記ルーティングキーと所定の関係にあるルーティングキーを保持する分散処理装置のイベントキーと、アドレスと、を含むタプルをルーティングテーブルに登録し、前記タプルを保持するルーティングテーブルを格納する、処理を実行させる。
【発明の効果】
【0006】
本発明によればCPU負荷とネットワーク負荷を独立にバランスさせることが可能となる。その理由は、これまで一つのキーが担っていた、イベントデータの送信のための役割と、イベントデータの管理区間を区切るための役割を、二つの各キーの役割として分けたからである。
【図面の簡単な説明】
【0007】
図1】分散処理システムの概要を示す図である。
図2】Chordにおけるキーの概念を説明するための図である。
図3】分散処理システムにおける各分散処理装置が記憶する識別子の例を示す図である。
図4】各キーの発生頻度の例を示す図である。
図5図4に示すキー分布となる場合における図3の各分散処理装置の、イベントデータ転送数とイベントデータ被通知数を示す図である。
図6】非特許文献2の方式によって分散処理装置IDが変更された状態を示す図である。
図7】本発明の効果を説明するための図である。
図8】第1実施形態における分散処理装置100の構成例を示す図である。
図9】ルーティングテーブル格納部113が格納するルーティングテーブルの構造例を示す図である。
図10】分散処理装置初期化部111が行う分散処理装置初期化処理のフローチャート図である。
図11】分散処理装置初期化部111が行うルーティングテーブル初期化処理のフローチャート図である。
図12】分散処理装置初期化部111が行うサクセッサ・プレディセッサ初期化処理のフローチャート図である。
図13】分散処理装置初期化部111が行う他分散処理装置更新処理のフローチャート図である。
図14】更新対象分散処理装置が行うルーティングテーブル更新処理のフローチャート図である。
図15図15は、データ転送部115がイベントデータを転送する動作を表したフローチャート図である。
図16】データ転送部115がプレディセッサ送信機能により、データを送信する動作を表したフローチャート図である。
図17】本発明の第2実施形態の構成例を示す図である。
図18】本発明を適用した分散処理システムの例を示す図である。
図19】分散処理装置と、その分散処理装置のサクセッサとの間で行われるCPU負荷均一処理のフローチャート図である。
図20】分散処理装置と、その分散処理装置のサクセッサとの間で行われるネットワーク負荷均一処理のフローチャート図である。
図21】第2実施形態に係る分散処理装置500のハードウェア構成の一例を示すブロック図である。
【発明を実施するための形態】
【0008】
まず、本発明の実施形態の理解を容易にするために、本発明の背景を説明する。
Chordなどのルーティングアルゴリズムに対して、非特許文献2の方式を適用する場合には、CPU負荷とネットワーク負荷の両方を同時にバランスさせることができない。以下、その理由を、構造化P2P(Peer−to−Peer)ネットワークのルーティングアルゴリズムについてChordを例にとって説明する。
Chordでは、分散処理装置は、イベントデータを他の分散処理装置に転送するために、他のいくつかの分散処理装置のアドレスを保持する。それらのアドレスは、該分散処理装置の識別子からの距離が2^(i−1)(i=1,2,...,m)であるキーs(開始値)のサクセッサのアドレスである。ここで開始値とは、ルーティングテーブルに登録する分散処理装置を決定するための基点となる値である。
図2は、Chordにおけるキーの概念を説明するための図である。図2に示すようにキーはモジュロ2^mの環状で表される。ここでモジュロとは、除算により余りを求める整数演算のことである。例えば、整数aを整数nで割ったとき、その余りをa mod nと表す。任意のキーkからの距離がdであるキーは、(k+d)mod 2^mとなる。
図2の例では、m=3であり、キー7から距離が2であるキーは、(7+2)mod 2^3=1となる。図2に示すように、Chordにおいて距離は、ノード間の『時計回り距離』と定義できる。
イベントデータは、そのハッシュ値(キー)のサクセッサ(successor)で処理される。キーkのサクセッサとは、分散処理システムを構成する分散処理装置のうち、キーkからの距離が最も小さい値を識別子とする分散処理装置のことである。
上述したように、イベントデータは、そのハッシュ値であるキーkからの距離が最も小さい値である値を識別子とする分散処理装置(サクセッサ)で処理される。図2は具体例を示しており、キーkのサクセッサが、キーkから時計回りに数えて一番近い距離にある分散処理装置であることを示している。
図2においては、分散処理装置が、分散処理装置IDが0と1と3の3つである場合が示されている。図2は、キー2のサクセッサが、分散処理装置IDが3の分散処理装置であることを表している。また、図2は、キー6のサクセッサが、分散処理装置IDが0の分散処理装置であることを表している。
図3は、分散処理システムにおける各分散処理装置が記憶する識別子の例を示す図である。図3は、m=8の例を示す。図3における分散処理装置のブロックの中に記述されている値は、該分散処理装置の識別子(分散処理装置ID)であり、8ビットのキーを符合なし整数で表したものである。各分散処理装置の上部にある表は、その下の分散処理装置が記憶している開始値とそのサクセッサの識別子である。各サクセッサのアドレスは、その識別子と1対1で対応付けられるので、記述を省略している。
例えば、識別子が191の分散処理装置について、i=1の場合の開始値は191+2^(1−1)=192(mod 2^8)となる。i=8の場合の開始値は191+2^(8−1)=63(mod 2^8)となる。
図4は、各キーの発生頻度の例を示す図である。図4は、例えばキー0から7についてそれぞれ1秒間に16回、そのキーをハッシュ値として算出するイベントデータを発生する例を示している。図4では、キーが104,105,110,111となるイベントデータの発生頻度が最も高い。なお図4は、偏りがある頻度で発生したイベントデータを、関連技術によって予め意図的に分類した図である。
図3の各分散処理装置が、図4に示すキー分布となるようなイベントデータを外部システムから受信した場合を考える。図4より、各分散処理装置が受信するイベントデータ数は、8×16+32×4+64×2+2×64+4×32+2×64+16×8+128×1=1024イベントデータ/秒となる。よって、8つの分散処理装置から構成される分散処理システムでは、受信するイベントデータの総数は、1024×8=8192イベントデータ/秒となる。
図5は、図4に示すキー分布となる場合における図3の各分散処理装置の、イベントデータ転送数とイベントデータ被通知数を示す図である。分散処理装置のイベントデータ転送数とは、該分散処理装置が外部システム、あるいは、別の分散処理装置からイベントデータを受信して、それを別の分散処理装置へ転送した数である。また、分散処理装置のイベントデータ被通知数とは、該分散処理装置が、最終的な到達先としてイベントを受信した数である。
分散処理装置が外部システムから受信するイベントは、それぞれ1つの到達先の分散処理装置が存在するので、図5のイベントデータ被通知数の合計値1792+640+512+4224+256+256+256+256=8192は全分散処理装置が受信するイベントの総数と一致する。
分散処理装置におけるイベントデータの処理負荷(CPU負荷)は、図5のイベントデータ被通知数に比例する。ただし、分散処理装置は、送信されたイベントデータを基にアプリケーションを実行するが、各イベントデータに対するアプリケーション実行負荷は同じとする。また、一般的にイベントデータの転送するための処理負荷は、アプリケーション実行の負荷に比べて十分小さい。そのため、イベントデータ被通知数の偏りが、分散処理装置のCPU負荷の偏りを表す。
分散処理装置とネットワークの間の伝送媒体が運んでいるデータ量(ネットワーク負荷)は、イベントデータ転送数とイベントデータ被通知数の和に比例する。イベントデータの転送や被通知は、分散処理装置とネットワークの間の伝送媒体を介して行われるためである。よって、それらの和の偏りが、分散処理装置のネットワーク負荷の偏りを表す。
ここで、イベントデータのハッシュ値が図4に示す分布のときに、非特許文献2の方式によりCPU負荷を均一にすることを考える。この場合、非特許文献2の方式は、イベントデータ被通知数を均一にするために、分散処理装置IDを変更する。
図6は、非特許文献2の方式によって分散処理装置IDが変更された状態を示す図である。図6に示すように、8つの分散処理装置のアプリケーションが受信するイベントの総数は8192イベントデータ/秒であるため、1つの分散処理装置あたり、8192/8=1024イベントデータ/秒とすることでCPU負荷が均一となる。
例えば、図6において分散処理装置IDが39である分散処理装置(以下、分散処理装置(39)という。)は、8から39までのキーを担当する。分散処理装置(39)のアプリケーションが処理するイベントデータ数は、該分散処理装置が担当するキーの数に、分散処理装置の台数と発生頻度を乗算することで計算でき、(39−8+1)×8=1024である。ただし、ここでは、全ての分散処理装置が同等の性能のCPUを備えているものとする。
ネットワーク負荷を均一にする場合には、非特許文献2の方式は、イベントデータ転送数とイベントデータ被通知数の和が分散処理装置間で均一になるように、各分散処理装置のIDを変更する。
しかしながら、非特許文献2の方式を適用する場合には、CPU負荷とネットワーク負荷の両方を同時にバランスさせることができない。例えば、図6では、イベントデータ被通知数は、全ての分散処理装置で同じである。しかし、イベントデータ転送数は分散処理装置ごとに異なるため、ネットワーク負荷は分散処理装置ごとに異なる。図6の例では、IDが103、255である分散処理装置に、他の分散処理装置と比べて、特に大きなネットワーク負荷がかかることがわかる。
このように、Chordにおいて非特許文献2の方式を適用した場合でも、一方の負荷を均一にすることはできても、他方の負荷について、特定の分散処理装置に負荷が集中してしまう可能性がある。特定の分散処理装置に負荷が集中した場合、その分散処理装置がボトルネックとなり、分散処理システムとしてのパフォーマンスが低下する。
以下に説明される本発明の実施形態によれば、キーを役割(管理区間を区切ることとルーティングの指針になること)毎に二つにわけることで、図7に示すようにCPU負荷とネットワーク負荷を独立にバランスすることが可能となる。なお、以下の説明では、全ての分散処理装置が同等の性能のCPUを備え、また、同等の伝送性能の伝送媒体を介してネットワークに接続しているものとする。
<第1実施形態>
第1実施形態における分散処理システムは、図1に示されるように1つ以上の分散処理装置から構成される。分散処理装置は、順序関係が定義されている所定数(m)ビットの値であるルーティングキーとイベントキーを保持する。
ここで、ルーティングキーとは、イベントデータの送信(ルーティング)のために用いられるキーである。イベントキーとは、イベントデータの管理区間を区切るためのキーである。本実施形態では、イベントキーをmビット長としているが、順序関係が定義されていればよく、固定長である必要はない。ルーティングキーとイベントキーについて、Chordの場合と同じように距離を定義する。
イベントデータを処理すべき分散処理装置は、該イベントデータと各分散処理装置のイベントキーによって決まる。具体的には、イベントデータを処理すべき分散処理装置は、イベントデータに対して演算を行うことにより得られるイベントキーからの距離が最も小さい値をイベントキーとして保持する分散処理装置(サクセッサ)である。イベントキーは、ハッシュ関数を用いてイベントデータから得たハッシュ値などで良いが、これに限定されない。
ここで、本実施形態において、ルーティングキーとイベントキーは所定の関係で順序関係が定義されている。説明のために、分散処理装置x、y、zのルーティングキーをxr、yr、zrとする。また、イベントキーをxe、ye、zeとする。この場合、本実施形態では(xrからyrまでの距離)<(xrからzrまでの距離)ならば、(xeからyeまでの距離)<(xeからzeまでの距離)とならなければならない。この条件を満たすことにより、分散処理システムは、イベントデータを処理すべき分散処理装置に徐々に効率的に近づけることができる。具体的には、分散処理システムは、log_2(分散処理装置の数)のオーダの転送回数で処理すべき分散処理装置へイベントデータを送信できる。
ここで、サクセッサとプレディセッサを以下のように定義する。
・任意のルーティングキーのサクセッサ:該ルーティングキーからの距離が最も小さい(最も近い)値をルーティングキーとする分散処理装置。
・任意のルーティングキーのプレディセッサ:該ルーティングキーからの距離が最も大きい(最も遠い)値をルーティングキーとする分散処理装置。
・任意のイベントキーのサクセッサ:該イベントキーからの距離が最も小さい(最も近い)値をイベントキーとする分散処理装置。
・任意のイベントキーのプレディセッサ:該イベントキーからの距離が最も大きい(最も遠い)値をイベントキーとする分散処理装置。
・任意の分散処理装置のサクセッサ:該分散処理装置のルーティングキーからの距離が1であるルーティングキーのサクセッサ。
・任意の分散処理装置のプレディセッサ:該分散処理装置のルーティングキーのプレディセッサ。
図8は、第1実施形態における分散処理装置100の構成例を示す図である。図8において、分散処理装置100は、他の分散処理装置200とデータ転送部111及びデータ転送部215を介してイベントデータの送受信を行う。
分散処理装置100は、分散連携部110と、イベントデータに対して所定の処理を行うアプリケーション120と、自装置である分散処理装置100のルーティングキーとイベントキーを保持するキー保持部130と、を含む。
キー保持部130は、ルーティングキーとイベントキーとを保持する。ルーティングキーは、順序関係が定義されているキー(値)であってデータのルーティングに用いられるキーである。イベントキーは、ルーティングキーとの関係で順序関係が定義されているキー(値)であってデータの管理に用いられるキーである。
分散連携部110は、分散処理装置初期化部111と、ルーティングテーブル更新部112と、ルーティングテーブル格納部113と、プレディセッサ記憶部114と、データ転送部115とを含む。
分散処理装置初期化部111は、新たな分散処理装置(以下、新規分散処理装置という。)を分散処理システムに追加するときに動作する。分散処理装置初期化部111は、新規分散処理装置が追加されたとき、分散処理装置100内の、ルーティングテーブル格納部113が格納するルーティングテーブルと、プレディセッサ記憶部114の記憶内容を初期化する。また、分散処理装置初期化部111は、他の分散処理装置(例えば分散処理装置200)に対して、ルーティングテーブルの更新要求(以下、ルーティングテーブル更新要求という。)を行う。
ルーティングテーブル更新部112は、他の分散処理装置から受信したルーティングテーブル更新要求を基に、ルーティングテーブル格納部113が格納するルーティングテーブルを更新する。
ルーティングテーブル格納部113は、ルーティングキーとイベントキーとアドレスを含むタプル(レコードと呼んでも良い。)を0以上保持し、データの転送先を決定するために使用されるルーティングテーブルを格納する。
プレディセッサ記憶部114は、プレディセッサのルーティングキーとイベントキーとアドレスを記憶する。
データ転送部115は、受信したイベントデータが、該分散処理装置が処理すべきものであれば、アプリケーションにイベントデータを通知する。該分散処理装置が処理すべきものでなければ、データ転送部115は、ルーティングテーブルを参照し、データの次の転送先となる分散処理装置を決定し、該分散処理装置に対して該イベントデータを送信する。
図9は、ルーティングテーブル格納部113が格納するルーティングテーブルの構造例を示す図である。ルーティングテーブルは、開始値、ルーティングキー、イベントキー及びアドレスからなるタプルを0以上保持する。開始値は、分散処理装置100のルーティングキーからの距離が2^(i−1)(i=1,2,...,m)である値である。ルーティングキーとイベントキーとアドレスは、それぞれ、該開始値のサクセッサのルーティングキーとイベントキーとアドレスである。ルーティングキーとイベントキーの値の決め方は、適切なルーティングとイベントデータの管理が可能であれば特に限定されない。
次に、分散処理装置100を新規分散処理装置として、新たに分散処理システムに追加するときの各部の動作について説明する。
図10は、分散処理装置初期化部111が行う分散処理装置初期化処理のフローチャート図である。図10に示すように、分散処理装置100が新規分散処理装置として分散処理システムに追加されるとき、分散処理装置初期化部111は外部システムからルーティングキーr、イベントキーe、最初の分散処理装置かどうかを示す情報が入力される(ステップS1)。ここで、rは、ルーティングキーとして外部システムから実際に入力された具体的な値である。eは、イベントキーとして外部システムから実際に入力された具体的な値である。ここで入力とは、外部システムの操作入力によるデータ設定、又は外部システムからのデータ受信を意味する。
本実施形態においては、ルーティングキーとイベントキーは、適切な値が外部システムから入力されることによって設定されるものとする。適切な値は、例えば値を入力するユーザがシステム全体の負荷状況を予め知っていることで設定することができる。又は、統計データ等を参考に設定する等の方法が考えられるが、ルーティングキーとイベントキーの設定方法はこれに限定されるものではない。
例えば、ルーティングキーは、新規分散処理装置が記憶するIPアドレスなど、分散処理装置の個有のデータのハッシュ値としても良い。また、イベントデータが一様ランダムに発生することが分かっている場合には、ルーティングキーは、隣り合う分散処理装置同士の距離がほぼ同じになるように設定されても良い。
イベントキーは、例えば、新規分散処理装置が追加されるときに、CPU負荷が、新規分散処理装置のサクセッサのCPU負荷と同じになるように設定されても良い。
ルーティングキーとイベントキーは、分散処理装置同士がCPU負荷状況とネットワーク負荷状況を通知しあうことで設定されても良い。
次に、新規分散処理装置は、自装置が分散処理システムにおける最初の分散処理装置であるか否かを、最初の分散処理装置かどうかを示す情報から判断する(ステップS2)。
最初の分散処理装置か否かを示す情報が、新規分散処理装置が分散処理システムにおける最初の分散処理装置であることを示している場合、プレディセッサ及びあらゆるルーティングキーのサクセッサが新規分散処理装置自身である。よって、その場合には、分散処理装置初期化部111はまず、プレディセッサ記憶部114にルーティングキーrとイベントキーeと自装置のアドレスaを記憶する(ステップS3)。
次に、分散処理装置初期化部111は、i=1からmについて、開始値、ルーティングキー、イベントキー、アドレスをそれぞれ、rからの距離が2^(i−1)である値、r、e、aに設定したタプルをルーティングテーブルに登録する(ステップS4)。
最初の分散処理装置か否かを示す情報が、新規分散処理装置が最初の分散処理装置であることを示していなければ、分散処理装置初期化部111は、分散処理システムを構成する少なくとも1つの分散処理装置のアドレスeaを取得する(ステップS5)。この少なくとも1つの分散処理装置は、例えばLAN(Local Area Network)でいうところの、予め登録されたデフォルトゲートウェイでも良い。
次に、分散処理装置初期化部111は、アドレスeaの分散処理装置を介して新規分散処理装置のルーティングテーブル格納部113が格納するルーティングテーブルを初期化する処理(ルーティングテーブル初期化処理)を行う(ステップS6)。
次に、分散処理装置初期化部111は、データ転送部115を介して他の分散処理装置のルーティングテーブル格納部113が格納するルーティングテーブルを更新する処理(他分散処理装置更新処理)を行う(ステップS7)。
図11は、分散処理装置初期化部111が図10のステップS6において行うルーティングテーブル初期化処理のフローチャート図である。図11に示すように、分散処理装置初期化部111は、ルーティングテーブル初期化処理において、まずサクセッサとプレディセッサを初期化する処理(サクセッサ・プレディセッサ初期化処理)を行う(ステップS61)。
サクセッサ・プレディセッサ初期化処理により、新規分散処理装置のルーティングキーrからの距離が1である値を開始値として、該開始値と、該開始値のサクセッサのルーティングキーとイベントキーとアドレスから成るタプルがルーティングテーブルに記憶される。また、プレディセッサ記憶部114に、ルーティングキーrのプレディセッサのルーティングキーとイベントキーとアドレスが記憶される。
サクセッサ・プレディセッサ初期化処理の詳細については後述する。
分散処理装置初期化部111は、ルーティングテーブル初期化処理において、次に、i=2からmについて、iに対応するタプルをルーティングテーブルに登録する。具体的には、分散処理装置初期化部111は、まず、ルーティングキーrからの距離が2^(i−1)である値を開始値sとする(ステップS62)。
分散処理装置初期化部111は、開始値sのサクセッサに、開始値sのサクセッサのルーティングキーdr、イベントキーde及びアドレスdaを要求する(ステップS63)。分散処理装置初期化部111は、該要求を、データ転送部115に、開始値s(対象のサクセッサを示すため)と、開始値sのサクセッサのルーティングキーdr、イベントキーde及びアドレスdaを要求するメッセージを入力することで行う。以下、単にメッセージというときは、所定の情報を要求するメッセージを意味する。
分散処理装置初期化部111は、データ転送部115を介して、開始値sのサクセッサから上記要求に対する応答を受信する(ステップS64)。
分散処理装置初期化部111は、開始値、ルーティングキー、イベントキー及びアドレスをそれぞれ、s、dr、de及びdaに設定したタプルをルーティングテーブルに登録する(ステップS65)。
図12は、分散処理装置初期化部111が図11のステップS61において行うサクセッサ・プレディセッサ初期化処理のフローチャート図である。図12に示すように、まず、新規分散処理装置は、ステップS511とステップS512においてサクセッサ登録処理を行う。
すなわち、分散処理装置初期化部111は、最初に取得したアドレスeaの分散処理装置に対して、ルーティングキーrのサクセッサのルーティングキーsrとイベントキーseとアドレスsaを要求する(ステップS511)。アドレスeaの分散処理装置は、自装置が格納するルーティングテーブルに基づくアルゴリズムにより、該当する分散処理装置から上記の情報を取得し、該情報を応答として新規分散処理装置に送信する。
前記要求に対する応答を受信すると、分散処理装置初期化部111は、開始値、ルーティングキー、イベントキー及びアドレスをそれぞれ、rからの距離が1である値、sr、se、saに設定したタプルをルーティングテーブルに登録する(ステップS512)。
次に、新規分散処理装置は、ステップS513とステップS514においてプレディセッサ登録処理を行う。
すなわち、分散処理装置初期化部111は、アドレスsaの分散処理装置に対して、アドレスsaの分散処理装置のプレディセッサのルーティングキーpr、イベントキーpe及びアドレスpaを要求する(ステップS513)。
前記要求に対する応答を受信すると、分散処理装置初期化部111は、プレディセッサ記憶部114にpr、pe及びpaを記憶する(ステップS514)。
その後、新規分散処理装置は、サクセッサのプレディセッサ更新処理を行う。すなわち、分散処理装置初期化部111は、アドレスがsaの分散処理装置に対して、該分散処理装置のプレディセッサ記憶部のルーティングキーとイベントキーとアドレスをそれぞれ、rとeとaに更新するように要求する(ステップS515)。
最後に、新規分散処理装置は、プレディセッサのサクセッサ更新処理を行う。すなわち、分散処理装置初期化部111は、アドレスがpaの分散処理装置に対して、該分散処理装置のルーティングキーからの距離が1である値を開始値とするタプルのルーティングキーとイベントキーとアドレスをそれぞれrとeとaに更新するように要求する(ステップS516)。
図13は、分散処理装置初期化部111が図10のステップS7において行う他分散処理装置更新処理のフローチャート図である。まず、新規分散処理装置の分散処理装置初期化部111は、i=2からmについて、他の分散処理装置のうち、ルーティングキーからの距離が2^(i−1)である値のサクセッサが該新規分散処理装置である分散処理装置のルーティングテーブルを更新する。
具体的には、まず、分散処理装置初期化部111は、ルーティングキーrまでの距離がd−1(=2^(i−1)−1)であるルーティングキーtrを算出する(ステップS71)。
次に、分散処理装置初期化部111は、ステップS71で算出したルーティングキーtrのプレディセッサに、ルーティングテーブル更新処理を要求する(ステップS72)。具体的には、分散処理装置初期化部111は、データ転送部115に、ルーティングキーtrとルーティングテーブル更新要求を入力する。
データ転送部115は、ルーティングテーブル更新要求が入力されると、プレディセッサ送信機能を呼び出す。プレディセッサ送信機能の詳細については、後述する。データ転送部115は、プレディセッサ送信機能により、ルーティングキーtrのプレディセッサに該ルーティングテーブル更新要求を送信する(ステップS73)。ルーティングテーブル更新要求は、ルーティングキーr、イベントキーe、アドレスa、rのプレディセッサのルーティングキーpr及び距離dの情報を含む。
前記ルーティングテーブル更新処理の対象の分散処理装置(以下、更新対象分散処理装置という。)のルーティングテーブル更新部はデータ転送部を介してルーティングテーブル更新要求を受信する。
更新対象分散処理装置のルーティングテーブル更新部は、他の分散処理装置から受信したルーティングテーブル更新要求を基に、ルーティングテーブル格納部が格納するルーティングテーブルを更新する。
図14は、更新対象分散処理装置が行うルーティングテーブル更新処理のフローチャート図である。図14に示すように、まず、更新対象分散処理装置のデータ転送部は、データ転送部115からルーティングテーブル更新要求を受信する(ステップS81)。更新対象分散処理装置のデータ転送部は、ルーティングテーブル更新要求をルーティングテーブル更新部に出力する。
次に、ルーティングテーブル更新要求が入力されたルーティングテーブル更新部は、該更新対象分散処理装置のルーティングキーorからの距離がdである値を開始値とするタプルを取得する(ステップS82)。
ルーティングテーブル更新部は、orから該タプルのルーティングキーまでの距離が、orからrまでの距離よりも大きいか否かを判断する(ステップS83)。
orから該タプルのルーティングキーまでの距離が、orからrまでの距離よりも大きいと判断した場合、ルーティングテーブル更新部は、該タプルのルーティングキーとイベントキーとアドレスをそれぞれ、rとeとaに更新する(ステップS84)。この更新は、開始値からの距離がより小さいrをルーティングキーに持つ分散処理装置が、該開始値のサクセッサとなるために行われる。
orから該タプルのルーティングキーまでの距離が、orからrまでの距離よりも小さいと判断した場合、ルーティングテーブル更新部は、ルーティングテーブル更新処理を終了する。
ステップS84の後、ルーティングテーブル更新部は、該更新対象分散処理装置のプレディセッサのルーティングキーからprまでの距離よりもdが大きいか否かを判断する(ステップS85)。
更新対象分散処理装置のプレディセッサのルーティングキーからprまでの距離よりもdが大きいと判断した場合、ルーティングテーブル更新部は、データ転送部を介してルーティングテーブル更新要求を該更新対象分散処理装置のプレディセッサに送信する(ステップS86)。
更新対象分散処理装置のプレディセッサのルーティングキーからprまでの距離よりもdが小さいと判断した場合、ルーティングテーブル更新部は、ルーティングテーブル更新処理を終了する。
ルーティングテーブル格納部は、上記ルーティングテーブル更新処理により更新されたルーティングテーブルを格納する。
ここで、データ転送部115がイベントデータを受信した際に、そのイベントデータを転送する動作について詳細に説明する。イベントデータからは、ハッシュ関数によりイベントキーdが得られているものとする。
図15は、データ転送部115がイベントデータを転送する動作を表したフローチャート図である。図15に示すように、まず、分散処理装置100のデータ転送部115はイベントキーdとメッセージを受信する(ステップS91)。
データ転送部115は、プレディセッサ記憶部114を参照して、dが該分散処理装置100のプレディセッサのイベントキーpよりも大きく、分散処理装置100のイベントキーs以下であるか否かを判断する(ステップS92)。
dが分散処理装置100のプレディセッサのイベントキーpよりも大きく、分散処理装置100のイベントキーs以下であると判断した場合、データ転送部115は、分散処理装置100がdのサクセッサであると判断する。この場合、データ転送部115は、分散処理装置100のアプリケーションにdとメッセージを入力する(ステップS93)。
dが分散処理装置100のプレディセッサのイベントキーpよりも大きく、分散処理装置100のイベントキーs以下でないと判断した場合、データ転送部115は、分散処理装置100がdのサクセッサでないと判断する。
この場合、データ転送部115は、ルーティングテーブルに登録されているタプルのイベントキーのうち、分散処理装置100のイベントキーkからの距離が、kからdまでの距離よりも小さいイベントキーの集合を求める(ステップS94)。
次に、データ転送部115は、求めた集合の中で、kからの距離が最も大きいイベントキーiが存在するか否かを判断する(ステップS95)。
データ転送部115は、イベントキーi(kからの距離が最も大きいイベントキー)が存在しないと判断すると、分散処理装置100がdのプレディセッサであると判断する(ステップS96)。この場合、データ転送部115は、分散処理装置100のサクセッサのアドレスをルーティングテーブルから取得し、該アドレス宛にイベントキーdとメッセージを送信する(ステップS96)。
データ転送部115は、イベントキーiが存在すると判断すると、他の分散処理装置がdのプレディセッサであると判断する。この場合、データ転送部115は、求めたイベントキーiに対応するアドレス宛にイベントキーdとメッセージを送信する(ステップS97)。
分散処理装置100のデータ転送部115は、また、ルーティングテーブル更新要求を転送するために、指定されたイベントキーのプレディセッサへデータを送信する機能(プレディセッサ送信機能)を有する。
図16は、データ転送部115がプレディセッサ送信機能により、データを送信する動作を表したフローチャート図である。図16に示すように、プレディセッサ送信機能は、図15のフローチャート図におけるステップS93とステップS96が、ステップS93’とステップS96’である点のみ異なる。
ステップS93’において、データ転送部115は、分散処理装置100のプレディセッサへイベントキーdとメッセージを送信する。
ステップS96’において、データ転送部115は、ルーティングテーブル更新部112にイベントキーdとメッセージを入力する。
以上説明したように、第1実施形態に係る分散処理システムによれば、CPU負荷とネットワーク負荷を独立にバランスさせることが可能となる。その理由は、これまで一つのキーが担っていた、イベントデータの送信のための役割と、イベントデータの管理区間を区切るための役割を、二つの各キー(ルーティングキーとイベントキー)の役割として分けたからである。
図7は、本実施形態における分散処理システムの効果を説明するための図である。図7は、8つの分散処理装置から成る分散処理システムで、ハッシュ値の分布が図4のようになるイベントデータを仮定して、CPU負荷とネットワーク負荷をバランスさせた場合の効果を示している。図7には、各分散処理装置のルーティングキー、イベントキー、イベントデータ転送数及びイベントデータ被通知数が示されている。
図7では、イベントキーを、図6に示す分散処理装置IDと同じにすることで、イベントデータ被通知数を各分散処理装置間で均一にしている。図6に示す分散処理装置IDと同じにすることでCPU負荷を均一にしている。
また、図7では、ルーティングキーを、図5に示す分散処理装置IDのように等間隔にしている。図5に示す分散処理装置IDと同じにすることで、該ルーティングキーを基に生成されるルーティングテーブルが参照する他の分散処理装置の数と、他の分散処理装置から参照されている数を、全ての分散処理装置で均一にしている。よって、外部システムから発生するイベントデータを受信する分散処理装置が一様ランダムに決定する場合には、図7に示すように、イベントデータ転送数は均一となる。
このように、これまで一つのキーが担っていた、イベントデータの送信のための役割と、イベントデータの管理区間を区切るための役割を、二つの各キーの役割として分けることで、イベントデータ被通知数とイベントデータ転送数の両方が均一となる。すなわち、CPU負荷とネットワーク負荷が均一となる。
<第2実施形態>
図17は、本発明の第2実施形態の構成例を示す図である。図17に示すように、本発明の第2実施形態は、分散処理装置初期化部511とルーティングテーブル格納部513とを含む分散処理装置500である。
分散処理装置500は、分散連携部510とキー保持部530とを含む。分散連携部510は、分散処理装置初期化部511とルーティングテーブル格納部513とを含む。
キー保持部530は、順序関係が定義されているキー(値)であってデータのルーティングに用いられるルーティングキーと、該ルーティングキーとの関係で順序関係が定義されているキー(値)であってデータの管理に用いられるイベントキーと、を保持する。
分散処理装置初期化部511は、ルーティングキーと所定の関係にあるルーティングキーを保持する分散処理装置のイベントキーと、アドレスと、を含むタプルをルーティングテーブルに登録する。
ルーティングテーブル格納部は、タプルを0以上保持するルーティングテーブルを格納する。
本発明の第2実施形態に係る分散処理装置によってシステムを構築することにより、CPU負荷とネットワーク負荷を独立にバランスさせることが可能となる。その理由は、これまで一つのキーが担っていた、イベントデータの送信のための役割と、イベントデータの管理区間を区切るための役割を、二つの各キーの役割として分けたからである。
【実施例】
【0009】
以降、本発明の実施例を示す。本実施例は、8つの分散処理装置から成る分散処理システムであり、イベントデータのハッシュ値の分布が、図4のようになると仮定する。
図18は、本発明を適用した分散処理システムの例を示す図である。図18は、本発明を適用した分散処理システムにおいて、CPU負荷とネットワーク負荷をバランスさせた場合の、各分散処理装置のルーティングキー、イベントキー及びルーティングテーブルを示す。
図18における分散処理装置のブロックの中に記述されている値がルーティングキーであり、さらに括弧で与えられている値がイベントキーである。ルーティングキー及びイベントキーは、それぞれの分散処理装置のキー保持部が保持している。また、各分散処理装置の上部にある表が、ルーティングテーブルである。ルーティングテーブルのサクセッサの項目は、サクセッサのイベントキーを表す。なお、サクセッサのアドレスは、イベントキーと1対1で対応するため、記述を省略している。
ルーティングキーがaである分散処理装置を分散処理装置aと表記すると、例えば、分散処理装置31において、開始値32のサクセッサは分散処理装置63である。分散処理装置63のイベントキー39が、開始値32とのペアで分散処理装置31のルーティングテーブルに登録されている。
本実施例では、まず分散処理装置がCPU負荷とネットワーク負荷を均一にするために、ルーティングキーとイベントキーを変更する手順の例を示す。
図19は、分散処理装置と、その分散処理装置のサクセッサとの間で行われるCPU負荷均一処理のフローチャート図である。CPU負荷均一処理とは、CPU負荷を均一にするため、該分散処理装置のサクセッサとイベントデータ被通知数が等しくなるように、該分散処理装置のイベントキーを変更する処理である。
具体的には、まず、分散処理装置(d)は、分散処理装置(d)のサクセッサへイベントデータ被通知数を送信する(ステップS101)。
イベントデータ被通知数を受信したサクセッサは、該サクセッサと分散処理装置(d)のイベントデータ被通知数が同数になるような分散処理装置(d)のイベントキーを算出する(ステップS102)。
次に、サクセッサは、分散処理装置(d)のイベントキーを算出したイベントキーに更新するように、分散処理装置(d)へイベントキー更新要求を送信する(ステップS103)。
イベントキー更新要求を受信した分散処理装置(d)は、イベントキー更新要求に基づいて自装置が保持するイベントキーを更新する(ステップS104)。
本実施例では、各分散処理装置は、過去所定時間以内の自装置のイベントデータ被通知数を計測しているものとする。上述した処理を、各分散処理装置が、定期的に実施することにより、各分散処理装置のイベントデータ被通知数は同数に収束することとなる。
図20は、分散処理装置と、その分散処理装置のサクセッサとの間で行われるネットワーク負荷均一処理のフローチャート図である。ネットワーク負荷均一処理とは、ネットワーク負荷を均一にするための処理である。
具体的には、まず、分散処理装置(d)は、分散処理装置(d)のサクセッサへイベントデータ転送数を送信する(ステップS201)。
イベントデータ転送数を受信したサクセッサは、該サクセッサと分散処理装置(d)のイベントデータ転送数が同数になるような分散処理装置(d)のルーティングキーを算出する(ステップS202)。
次に、サクセッサは、分散処理装置(d)のルーティングキーを、算出したルーティングキーに更新するように、分散処理装置(d)へルーティングキー更新要求を送信する(ステップS203)。
ルーティングキー更新要求を受信した分散処理装置(d)は、ルーティングキー更新要求に基づいて自装置が保持するルーティングキーを更新する(ステップS204)。
例えば、各分散処理装置は適宜イベントデータ転送数を計測しておく。分散処理装置(d)のイベントデータ転送数が、分散処理装置(d)のサクセッサのイベントデータ転送数よりも多ければ、分散処理装置(d)は、ルーティングキーをより小さい値に更新する。
この更新によって、分散処理装置(d)は、より少ない他の分散処理装置に参照されるようになるため、イベントデータの転送数は少なくなる。なお、ここで、分散処理装置(d)が他の分散処理装置に参照されるとは、他の分散処理装置のルーティングテーブルに分散処理装置(d)のキーやアドレスが登録されている状態を意味している。
一方、上記の更新によって、分散処理装置(d)のサクセッサは、より多くの他の分散処理装置に参照されることとなるため、イベントデータの転送数は多くなる。上述した処理を、各分散処理装置が、定期的に実施することにより、各分散処理装置のイベントデータ転送数は同数に収束することとなる。
CPU負荷やネットワーク負荷を均一にするために、分散処理装置がイベントキーやルーティングキーを算出する方法は、CPU負荷やネットワーク負荷を均一にすることができれば、どのような方法でも良い。
例えば、分散処理装置は、CPU負荷又はイベントデータ転送数(以下、CPU負荷等という。)を計測しながら、イベントキー又はルーティングキー(以下、イベントキー等という。)の値を1ずつ減算して適切な値を見つけ出しても良い。
または、例えばCPU負荷等を半分にしたい場合は、分散処理装置は、単純に分散処理装置のイベントキー等の値を、現在のイベントキー等との値とプレディセッサのイベントキー等の値との間の値にしても良い。
または、例えば分散処理装置のCPU負荷を2割減らしたいとすると、分散処理装置は、自装置がイベント通知を受けているキーの中で、全体の内の2割を算出してその分が減らせるように、更新するイベントキーを算出しても良い。
さらに、分散処理装置は、CPU負荷とネットワーク負荷の両負荷状況を考慮して、更新するイベントキー等を算出しても良い。例えば、分散処理装置は、CPU負荷とネットワーク負荷とが反比例の関係になるように、両負荷の比を考慮してイベントキー等を算出しても良い。こうすることで、システム全体のトータルパフォーマンスを向上させることができる。
次にイベントデータを処理すべき分散処理装置に送信する具体的な動作を説明する。
例えば、分散処理装置31が、イベントキーが107であるイベントデータを受信したとする。この場合、分散処理装置31は、格納しているルーティングテーブルのサクセッサの項目を参照し、107までの距離が最も小さいイベントキー103に対応する分散処理装置95宛てに該イベントデータを送信する。分散処理装置95は、分散処理装置31から該イベントデータを受信する。
次に、分散処理装置95が、格納しているルーティングテーブルのサクセッサの項目を参照し、107までの距離が最も小さいイベントキー105に対応する分散処理装置127宛てに該イベントデータを送信する。
その後、分散処理装置127は格納しているルーティングテーブルを参照する。分散処理装置127は、イベントデータ107が分散処理装置127のルーティングテーブルのどのイベントキーよりも、自装置のイベントキーである105に最も近いと判断する。つまり、分散処理装置127は、自装置がイベントキー107のプレディセッサであると判断する。
分散処理装置127は、自装置127のサクセッサである分散処理装置159にイベントデータを送信する。その後、分散処理装置159が、受信したイベントデータを自装置のアプリケーションに通知することで、イベントデータの送信を完了する。
以上、実施形態及び実施例を参照して本発明を説明したが、本発明は以上の実施形態及び実施例に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で同業者が理解し得る様々な変更をすることができる。
図21は、上述した第2実施形態に係る分散処理装置500のハードウェア構成の一例を示すブロック図である。
図21に示すように、分散処理装置500を構成する各部は、CPU(Central Processing Unit)1と、ネットワーク接続用の通信IF2(通信インターフェース2)と、メモリ3と、プログラムを格納するハードディスク等の記憶装置4とを含む、コンピュータ装置によって実現される。ただし、分散処理装置500の構成は、図21に示すコンピュータ装置に限定されない。
CPU1は、オペレーティングシステムを動作させて分散処理装置500の全体を制御する。また、CPUは1、例えばドライブ装置などに装着された記録媒体からメモリ3にプログラムやデータを読み出し、これにしたがって各種の処理を実行する。
記録装置4は、例えば光ディスク、フレキシブルディスク、磁気光ディスク、外付けハードディスク、半導体メモリ等であって、コンピュータプログラムをコンピュータ読み取り可能に記録する。記憶装置4は、例えば、ルーティングテーブルを格納するルーティンテーブル格納部でも良い。また、コンピュータプログラムは、通信網に接続されている図示しない外部コンピュータからダウンロードされても良い。
入力装置5は、例えばマウスやキーボード等であって、例えばイベントデータを入力するための装置である。
出力装置6は、例えばディスプレイ等である。
なお、これまでに説明した各実施形態において利用するブロック図は、ハードウェア単位の構成ではなく、機能単位のブロックを示している。これらの機能ブロックはハードウェア及びソフトウェアの任意の組み合わせによって実現される。また、分散処理装置500の構成部の実現手段は特に限定されない。すなわち、分散処理装置500は、物理的に結合した一つの装置により実現されても良いし、物理的に分離した二つ以上の装置を有線又は無線で接続し、これら複数の装置により実現されても良い。
本発明のプログラムは、上記の各実施形態で説明した各動作を、コンピュータに実行させるプログラムであれば良い。
以上、各実施の形態および実施例を参照して本発明を説明したが、本発明は上記実施の形態および実施例に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解しえる様々な変更をすることができる。
この出願は、2011年3月24日に出願された日本出願特願2011−066204を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【0010】
1 CPU
2 通信IF
3 メモリ
4 記憶装置
5 入力装置
6 出力装置
100、200、300、400、500 分散処理装置
110 分散連携部
111 分散処理装置初期化部
112 ルーティングテーブル更新部
113 ルーティングテーブル格納部
114 プレディセッサ記憶部
115、215 データ転送部
120 アプリケーション
130 キー保持部
511 分散処理装置初期化部
513 ルーティングテーブル格納部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21