(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0012】
以下、本発明の実施形態を添付図面に基づいて説明する。
【実施例1】
【0013】
図1は、本発明の実施例1を示し、分散処理システムの構成の一例を示すブロック図である。分散処理システムは、複数のクライアント装置3−1〜3−Nからのデータを受け付けて、データに対する処理を実行する複数のサーバ1−1〜1−Nと、サーバ1−1〜1−Nへデータの分割情報を送信する分割制御装置2と、各装置及びサーバを接続するネットワーク4を有する。
【0014】
なお、以下の説明では、サーバを個々に特定しない場合には、「−」以降を省略した符号「1」を用いる。他の、構成要素の符号についても同様である。また、サーバ1−1〜1−Nは同様の構成である。また、クライアント装置3−1〜3−Nは、同様の構成である。
【0015】
クライアント装置3は、プロセッサ31と、メモリ32と、インターフェース33を有する計算機である。メモリ32には、アプリケーション34と、送受信部35がプログラムとしてロードされてプロセッサ31によって実行される。
【0016】
アプリケーション34は、サーバ1に処理させるデータを生成し、送受信部35がデータをサーバ1に送信する。
【0017】
サーバ1は、プロセッサ11と、メモリ12と、インターフェース10を有する計算機である。メモリ12には、送受信部13と、半順序配信部100と、処理部19と、出力集合200と、可換性判定テーブル300が格納される。
【0018】
半順序配信部100は、可換性判定部14と、提案集積部15と、合意判定部16と、競合解決部17と、分割点管理部18から構成される。半順序配信部100は、送受信部13から受け付けたデータを、半順序配信技術により他のサーバ1との間で、データの一貫性を保証して、処理部19へ出力する。処理部19は、半順序配信部100から出力されたデータの順序で所定の処理を実施する。なお、半順序配信技術における一貫性は、受け付けたデータが順序を交換可能(可換)であれば、サーバ1ごとに処理部へ異なる順序で前記データを出力しても、出力された前記データを処理部が処理した最終的な結果が、すべてのサーバ1の処理部で同じとなることであり、例えば、前記特許文献1の実施例2、実施例3の記載と同様である。
【0019】
送受信部13と、可換性判定部14と、提案集積部15と、合意判定部16と、競合解決部17と、分割点管理部18と、処理部19は、プログラムとしてメモリ12へロードされてプロセッサ11によって実行される。
【0020】
プロセッサ11は、各機能部のプログラムに従って処理を実行することによって、所定の機能を提供する機能部として稼働する。例えば、プロセッサ11は、合意判定プログラムを実行することで合意判定部16として機能する。他のプログラムについても同様である。さらに、プロセッサ11は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
【0021】
半順序配信部100の各機能を実現するプログラム、テーブル等の情報は、図示しないストレージサブシステムや不揮発性半導体メモリ、ハードディスクドライブ、SSD(Solid State Drive)等の記憶デバイス、又は、ICカード、SDカード、DVD等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
【0022】
半順序配信部100は、クライアント装置3又は分割制御装置2から受信したデータの可換性を判定し(可換性判定部14)、可換性の判定結果とデータを他のサーバ1間で交換して提案集積部15に集める。
【0023】
そして、半順序配信部100は、集積した可換性判定結果とデータが合意可能かを判定し(合意判定部16)、可換性判定結果の中に競合が含まれている場合には、他のサーバ1間で競合するデータの出力順序を解決し(競合解決部17)、出力データの部分集合に出力集合200内の集合番号を付与し(分割点管理部18)、出力データを合意値として処理部19へ出力する。また、半順序配信部100は、出力データの履歴を出力集合200へ格納して、集合番号でデータの管理を行う。
【0024】
図2は、出力集合200の一例を示す図である。図示の例では、サーバ1−1の出力集合200−1と、サーバ1−2の出力集合200−2を比較する例を示す。
【0025】
出力集合200は、出力順序201と、集合番号202と、データ203から構成される。出力順序201は、分割点管理部18が出力データに付与する番号を格納する。この番号としては、例えば、シリアル番号等を用いることができる。データ203は、受信したデータの内容を格納する。
【0026】
集合番号202は、分割点管理部18が付与する出力データの集合の識別子で、サーバ1内でユニークな値である。本実施例では、集合番号202としてシリアル番号を採用する例を示す。分割点管理部18は、分割制御装置2から分割命令を受信すると、現在の集合番号202に「1」を加算して、次の出力データを新たな集合番号202の部分集合に所属させる。
【0027】
したがって、集合番号202が付与されたひとつの部分集合は、前回の分割命令の次に出力された出力データから、次の分割命令までの出力データが含まれる。
【0028】
本実施例では、分割点管理部18が分割命令を受け付けると、分割点(分割情報)として「/」のデータを出力集合200へ格納する例を示す。なお、出力集合200では、集合番号202で出力データの集合を管理できるので、データ203としての分割点は省略してもよい。
【0029】
図示の例では、サーバ1−1は、データ203を「A」、「B」、「C」の順序で出力し、出力順序201=「4」で分割点が格納される。サーバ1−2では、データ203を「B」、「A」、「C」の順序で出力し、出力順序201=「4」で分割点が格納される。
【0030】
そして、図示の例では、可換性判定部14は、データ「A」と「B」は「可換」と判定し、「A」と「C」および「B」と「C」は「競合」と判定したため、半順序配信部100は、サーバ1間で可換なもの同士の順序は揃えることなく出力するが、競合する者同士の順序は揃えて出力する。
【0031】
各サーバ1の集合番号202内のデータは半順序であるが、当該集合番号202内のデータを処理部19で処理した結果は、全てのサーバ1間でデータの順序を揃えた全順序と等価となる。したがって、本実施例の半順序配信部100から出力される集合番号202ごとのデータ集合は全順序として扱うことが可能である。
【0032】
図3は、可換性判定テーブル300の一例を示す図である。可換性判定テーブル300は、比較対象データ301と、これまでに受け付けたデータの内、未出力のデータ302について、各カラムに「可換」又は「競合」のいずれかが予め設定される。
【0033】
可換性判定部14は、例えば、現在受け付けた比較対象データ301が「データB」、これまでに受け付けたデータの内、未出力のデータ302が「データA」の場合、可換性判定テーブル300を参照して「データB」は可換と判定する。また、可換性判定部14は、分割命令を受信した場合は、いずれの組み合わせでも「競合」と判定する。
【0034】
すなわち、分割制御装置2が出力した分割命令は、全てのデータに対して非可換なデータとして定義される。また、分割命令は半順序配信内の制御用のデータであるため、半順序配信部100は分割命令を処理部19へ出力しない。あるいは、処理部19が分割命令を受信しても無視又は破棄するようにしてもよい。
【0035】
図4は、分割制御装置2で行われる処理の一例を示すフローチャートである。このフローチャートは、所定のタイミングで実行される。なお、所定のタイミングとしては、例えば、所定の周期や、他の計算機からの要求を受け付けた場合などである。
【0036】
分割制御部400は、所定のタイミングになると予め定義された分割命令を生成する(S15)。次に、送受信部23は、分割制御部400で生成された分割命令を各サーバ1へ送信する。
【0037】
分割制御装置2が分割命令を送信したタイミングで、クライアント装置3がサーバ1へデータを送信した場合、各サーバ1は、分割命令とデータの出力順序を決定するために、後述する競合解決部17で順序を決定する。
【0038】
一方、クライアント装置3からデータが送信されていないタイミングで、分割制御装置2が分割命令を送信した場合、サーバ1は分割命令だけを受信するため、競合とは判定せず、競合解決部17を使用せずに処理することになる。
【0039】
データと分割命令の競合が発生した場合、サーバ1は競合解決部17により他のサーバ1と合意を行って、分割命令とデータの順序を全てのサーバ1で一致させる。一方、サーバ1が分割命令だけを受信した場合、他のデータが存在しないため出力順序の入れ替えは発生せず、全てのサーバ1で出力順序は一致する。これらにより、各サーバ1では、受信した分割命令の出力順序が一致することになる。
【0040】
クライアント装置3からのデータと分割命令は、出力順序の前後が非可換であるため、あるサーバ1が分割命令よりも前に出力したデータは、他のサーバ1でも必ず分割命令よりも前に出力されるという性質を有する。従って、サーバ1間では、分割命令を跨いでデータが前後することはなく、分割命令を境界として生成された出力集合200の部分集合(集合番号202)内のデータは等価となる。
【0041】
本実施例において、等価な部分集合は、データ203と出力順序201がサーバ1間で一致しなくとも、処理部19の出力結果が一致することを意味する。各サーバ1の分割点管理部18は、部分集合を識別する値としてシリアル番号の集合番号202を付与する。
【0042】
集合番号202内のデータは、全てのサーバ1間で等価なため、出力集合200に対するデータの削除や、重複出力の防止や、データの補完等は、集合番号202で管理することが可能となる。
【0043】
図5は、サーバ1で行われる制御の一例を示すフローチャートである。この処理は、サーバ1が、クライアント装置3又は分割制御装置2からデータ又は分割命令を受信すると実行される。
【0044】
サーバ1の送受信部13は、クライアント装置3又は分割制御装置2からデータ又は分割命令を受信する(S1)。可換性判定部14は、予め設定された可換性判定テーブル300を参照して、送受信部13から取得したデータが順序に関係なく処理可能であれば「可換」と判定し、データの順序をサーバ1間で揃えてから処理する必要があれば「競合」と判定する。
【0045】
競合解決部17は、受信したデータと可換性の判定結果を他のサーバ1へ送信する(S3)。次に、提案集積部15は、他のサーバ1からデータと可換性の判定結果を受け付ける(S4)。
【0046】
合意判定部16は、他のサーバ1から受信したデータ及び可換性の判定結果から合意可能か否かを判定する(S5)。合意判定部16は、合意の判定が可能な数のサーバ1からデータ及び可換性の判定結果を受信していれば合意の判定を行い、合意の判定ができない場合にはステップS4へ戻って、他のサーバ1からのデータ及び判定結果を受け付ける。なお、合意を行うサーバ1の数は、全サーバ1のうち所定数のサーバ数であればよい。
【0047】
データと判定結果の交換によってサーバ1間の合意が可能と判定すると、可換性判定部14は上記ステップS2の可換性の判定結果に基づいて、提案集積部15で受け付けたデータが可換であるか否かを判定する(S6)。受信した全データが互いに可換であれば、現在のデータを出力データとしてステップS8の処理へ進み、競合するデータが含まれている場合にはステップS7へ進む。
【0048】
ステップS7では、競合解決部17が、非可換(競合)と判定されたデータについて他のサーバ1の競合解決部17との間で順序の決定を行い、出力データを決定する。なお、競合解決部17が、順序を決定する手法としては、PAXOS合意などの周知又は公知の技術を適用すればよい。
【0049】
分割点管理部18は、ステップS6又はステップS7で決定された出力データに集合番号202と出力順序201を付与して、出力集合200へデータ203として格納する(S8)。
【0050】
次に、分割点管理部18は、現在処理中のデータが分割命令であるか否かを判定する(S9)。分割命令であればステップS10へ進み、そうでない場合にはステップS11へ進む。
【0051】
ステップS10では、分割点管理部18が、集合番号202に「1」を加算して次回のデータを格納する部分集合を新たに設定する。そして、ステップS11では、ステップS8で集合番号202を付与したデータを合意値として処理部19へ出力して処理を終了する。
【0052】
なお、本実施例では、半順序配信によるサーバ1間の通信が1回の例を示したが、これに限定されるものではなく、サーバ1間の通信が2回以上であってもよい。
【0053】
また、本実施例では、競合解決部17で競合の解決を行った場合、データの出力順序は全てのサーバ1で一致することから、分割命令と同様に出力集合200の部分集合の生成に利用することができる。例えば、競合解決部17が決定した出力順序の最後のデータを分割命令と同様に扱うことで、分割点の生成数を抑制することができる。あるいは、出力順序に一定個数ごとのデータを分割命令と同様に扱うことで、部分集合のサイズを平準化することが可能である。
【0054】
<従来例との対比>
前記従来例の半順序配信技術は、処理部間で不整合が生じない順序で、クライアント装置から送信されたデータを処理部へ出力する。サーバは、クライアント装置から受信したデータを相互に交換して、サーバ間でデータの出力順序について競合が生じないことを合意してから、データを処理部へ出力している。
【0055】
半順序配信技術では、一部のサーバに障害が発生した場合、分散処理システムが停止しないように、全てのサーバ間で合意を形成するのではなく、規定数のサーバと合意を形成した時点で、データを処理部へ出力する。サーバは、規定数に含まれないサーバから遅延してデータを受信した場合、当該遅延したデータを重複して出力するのを防止するため、過去の出力履歴を保持している。
【0056】
従来例の半順序配信技術では、出力履歴をどのように削除するかは規定されていないため、出力履歴が増大し続けるという課題があった。例えば、従来例の半順序配信技術による出力履歴を
図6に示す。
【0057】
図6はサーバA1の出力履歴210−1と、サーバA2の出力履歴210−2の例を示す。従来例のサーバA1、A2は、本実施例のサーバ1と同様にクライアント装置3からのデータを受信する。出力履歴210は、出力順序211とデータ212で構成される。
【0058】
サーバA1の出力履歴210−1では、出力順序211が「4」のデータ212=「D」となっているが、サーバA2の出力履歴210−2では、データ212=「D」の出力順序211は「6」となっており遅延してサーバA2に到着したことを示している。
【0059】
この従来例で、出力順序211=1〜4のデータ212を削除した場合、「D」のデータ212を遅延して受信するサーバA2は、出力履歴210−2に「D」は削除されて存在しないため、他のサーバへ重複して送信することになる。
【0060】
なお、従来例に対して、各サーバA間でデータの突き合わせを行って、削除可能なデータを調整することも考えられる。しかしながら、出力履歴210の要素数やサーバ数が増大するにつれて組み合わせ数が膨大なり、処理量や通信量が過大になるため、現実的ではない。
【0061】
これに対して、本実施例では半順序配信に分割命令を投入することで、出力集合200の要素を複数の部分集合に分割し、各部分集合にはシーケンシャルな集合番号202を付与することで、部分集合単位でデータの管理を実現する。
【0062】
上述したように、部分集合(集合番号202)内のデータは、全てのサーバ1間で等価なため、出力集合200に対するデータの削除や重複出力の防止等は、集合番号202で管理することが可能となる。
【0063】
これにより、一部のサーバ1に障害が発生しても処理を継続させて、かつ、出力するデータの一貫性を確保しながら、出力集合200を適切に管理することが可能となる。
【0064】
なお、上記実施例1では、サーバ1の半順序配信部100に競合解決部17を配置する例を示したが、これに限定されるものでなはい。競合解決部17は、サーバ1以外の計算機で実行されてもよい。
【実施例2】
【0065】
図7は、本発明の実施例2を示し、サーバ1で行われる処理の一例を示すフローチャートである。
図7のフローチャートは、前記実施例1の
図4のフローチャートの一部を変更したもので、ステップS1、S2、S5〜S11は前記実施例1と同様である。
【0066】
本実施例では、集合番号202をサーバ1間で交換して、削除された部分集合を検出する例を示す。なお、部分集合の削除は他の処理で所定のタイミングで実施するものとする。また、前記実施例1と同様の部分については重複する説明を省略する。
【0067】
ステップS23では、合意判定部16が、受信したデータと可換性の判定結果及び現在の集合番号202を他のサーバ1へ送信する。次に、ステップS24では、提案集積部15が、他のサーバ1からデータと可換性の判定結果及び現在の集合番号を受け付ける(S4)。
【0068】
ステップS25では、分割点管理部18が、他のサーバ1から受け付けた集合番号202が、既に削除されたか否かを判定する。分割点管理部18は、集合番号202が削除済みであれば、受け付けたデータを破棄してステップS24へ戻って他のサーバ1からのデータと判定結果及び集合番号202を受け付ける。一方、分割点管理部18は、集合番号202が出力集合200に存在する場合にはステップS6へ進んで前記実施例1に示した処理を実施する。
【0069】
サーバ1間で集合番号202を交換し、当該サーバ1の出力集合200に他のサーバ1から受け付けた集合番号202が自身の出力集合200の最小の集合番号202よりも小さい場合、分割点管理部18は、当該集合番号202が既に削除済みと判定し、当該データを破棄する。これにより、他のサーバ1から受け付けたデータが遅延していた場合、当該サーバ1が重複して出力するのを防止することが可能となる。
【0070】
なお、各サーバ1は、分割命令で部分集合に分割された出力集合200を保持し、分割数(集合番号202の値)又はデータ量の合計が所定の閾値を超えた場合、集合番号202の小さい部分集合から順番に削除する。これにより、各サーバ1が使用する計算機資源が増大するのを防ぐことが可能となり、サーバ1の構成を簡易にしてコストを低減することが可能となる。
【0071】
なお、サーバ1の分割点管理部18は、他のサーバ1から受け付けた集合番号202が、自身の出力集合200の最小の集合番号202よりも小さい場合には、受け付けた集合番号202は削除済みであると判定して、受け付けたデータを破棄する。
【0072】
一方、分割点管理部18は、他のサーバ1から受け付けた集合番号202が、自身の出力集合200の最小の集合番号202以上であった場合には、合意判定部16での処理へ移行する。
【実施例3】
【0073】
図8は、本発明の実施例3を示し、可換性判定テーブル300の一例を示す図である。クライアント装置3からのデータが、独立したグループ(又は系列)が存在する場合、本実施例ではデータの系列毎に可換性判定テーブル300を分割する。
【0074】
クライアント装置3から受け付けるデータが、相互に独立したXの系列とYの系列に分類される場合、Xの系列の可換性判定テーブル300Xと、Yの系列の可換性判定テーブル300Yに分割する。そして、異なる系列間では可換であると定義し、分割命令もデータ系列毎に配信される。すなわち、Xの系列に対しては分割命令Xが配信され、Yの系列に対しては分割命令Yが配信される。また、出力集合200では、集合番号202をデータの系列ごとに操作する。なお、その他の構成は前記実施例1と同様である。
【0075】
半順序配信技術では、半順序配信部100が出力するデータの順序によって処理部19の最終状態(処理結果)が異なる複数のデータを受け付けた場合には、競合解決部17を用いて順序の決定を行う。
【0076】
競合解決部17で競合の解決を実施している期間は、出力データが確定しないため、半順序配信部100は、データを出力することができず、競合解決部17の処理時間に応じてレイテンシが増大することになる。そして、サーバ1が分割命令と他のデータを受け付けた場合、競合解決部17にて競合を解決することになる。
【0077】
そこで、本実施例のように、データの系列(分類)ごとに可換性判定テーブル300X、300Yを分割し、データの系列ごとに分割命令X、Yを分離することで、分割命令X、Yと競合する範囲が元の可換性判定テーブル300に対して縮小されるため、競合の発生を低減して競合解決部17によるレイテンシを抑制することが可能となる。
【0078】
なお、複数の系列に跨がるデータが存在する場合には、各系列の可換性判定テーブル300X、300Yのそれぞれに当該データを定義する必要がある。また、複数の系列に跨がるデータの集合番号202は、分割点管理部18がそれぞれの集合番号202を管理して、各系列の分割命令X、Y毎に操作を行うようにすればよい。
【実施例4】
【0079】
図9は、本発明の実施例4を示し、分散処理システムの構成の一例を示すブロック図である。本実施例では、分割命令を生成する分割制御部400をクライアント装置3に配置したもので、その他の構成は前記実施例1と同様である。
【0080】
クライアント装置3−1〜3−N毎に、サーバ1へ送信するデータの系列が異なる場合、分割制御部400をクライアント装置3で稼働させることで、分割命令とデータを送信するタイミングを制御することが可能となる。
【0081】
分割制御部400をクライアント装置3とは異なる計算機で稼働させる場合、分割命令を送信するタイミングを制御するためには、クライアント装置3と協調する必要があり、協調のための通信が必要となる。
【0082】
これに対して本実施例のように、クライアント装置3で分割制御部400を稼働させることで、他の計算機(クライアント装置3や分割制御装置2)と協調することなく、分割命令とデータを送信するタイミングを制御することが可能となる。
【実施例5】
【0083】
図10は、本発明の実施例5を示し、分散処理システムの構成の一例を示すブロック図である。本実施例では、分割命令を生成する分割制御部400をサーバ1に配置したもので、その他の構成は前記実施例1と同様である。
【0084】
クライアント装置3−1〜3−N毎に、サーバ1へ送信するデータの系列が不定の場合、分割制御部400をサーバ1で稼働させることで、分割命令とデータを送信するタイミングを制御することが可能となる。
【0085】
この場合、クライアント装置3から全てのサーバ1へデータを送信するのではなく、特定の分類のデータを、特定のサーバ1へ送信する。特定の分類のデータを受信したサーバ1は、分割制御を行った後に各サーバへ当該データを配信することで、前記実施例3と同様に、分割命令とデータを送信するタイミングを制御することが可能となる。
【実施例6】
【0086】
前記実施例1、2で示したように、集合番号202ごとのデータの部分集合が、全てのサーバ1で等価であることから、部分集合を単一のデータとして扱う場合、全順序配信と出力集合200の形が一致するとみなすことができる。
【0087】
したがって、公知又は周知の全順序配信技術に対して本発明の半順序配信技術を適用することが可能となる。例えば、出力集合200の復旧や、スケールアウトや、リバランス等に半順序配信部100及び分割制御部400を利用することができる。
【0088】
ただし、スケールアウトのようにサーバ1の数を変更するような処理では、データ交換の規定数が変化するため、集合番号202=Xでサーバ1の数を変更する命令を配信した場合、即座に規定数を変えてしまうと、サーバ1間で規定数のずれが生じて配信結果の不整合につながってしまう。
【0089】
したがって集合番号202=Xでサーバ数の変更について配信した後、集合番号X+α以降にその変更を反映すると言った制御が必要となる(ただし、α≧1)。
【0090】
上記を実現するためには、以下の2点が必要になる。
【0091】
(A)分割制御部400が送信する分割命令の合計数をα未満に抑える。これは、データの分類(データの系列)ごとに分割命令を分けている場合は、分割命令数のカウントも分類ごとになる。また、分割制御部400を複数のクライアント装置3やサーバ1上に配置した場合は、全ての分割制御部400から送信される分割命令数を抑制する必要がある。単純な例では、分割命令の数を、各分割制御部400でα/台数以下になるように制御すればよい。
【0092】
(B)提案集積部15は、データ交換で受け取ったデータと可換性の判定結果に付与された集合番号202が、X+α以上だった場合、その内容を一時的に退避させ、集合番号202=Xの情報を他のサーバ1から補完してから処理を継続する。
【0093】
なお、上記実施例1〜6では、クライアント装置3がデータを送信する間に分割命令を送信する例を示したが、予め分割フラグを設定したデータを分割命令として機能させてもよく、当該分割フラグを有するデータを受信したサーバ1は、上記分割命令と同様の処理を行うことができる。
<結び>
【0094】
以上のように、上記実施例1〜6の分散処理システムは以下のような構成とすることができる。
【0095】
(1).ネットワーク(4)を介して接続された複数の計算機(サーバ1、クライアント装置3)でデータの半順序配信を行う分散処理方法であって、前記計算機(1)が、前記データを受信する受信ステップ(送受信部13)と、前記計算機(1)が、前記半順序配信によって前記データの出力順序を決定する出力順序決定ステップ(可換性判定部14、提案集積部15、合意判定部16、競合解決部17、)と、前記計算機(1)が、前記出力するデータを出力集合(200)へ格納する際に、前記計算機間で等価な複数の部分集合に分割して前記出力集合(200)に格納して管理する管理ステップ(分割点管理部18)と、を含む。
【0096】
上記構成により、サーバ1は、出力集合200の要素を複数の部分集合に分割して、各部分集合にはシーケンシャルな集合番号202を付与することで、部分集合単位でデータの管理を実現する。これにより、一部のサーバ1に障害が発生しても処理を継続させて、かつ、データの一貫性を確保しながら、出力集合200を適切に管理することが可能となる。
【0097】
(2).上記(1)に記載の分散処理方法であって、前記計算機(1)が、前記半順序配信の対象のデータと非可換なデータである分割命令を出力する分割命令出力ステップ(分割制御部400)をさらに含み、前記管理ステップ(分割点管理部18)では、前記分割命令に基づいて、当該分割命令を前記出力集合(200)へ格納する際に分割点(集合番号202)を生成し、前記分割点により前記出力集合(200)を前記部分集合の単位で分割して管理する。
【0098】
上記構成により、サーバ1は、分割命令を受け付けると出力集合200を分割点(集合番号202)で区切ることで、データを部分集合の単位で管理することができる。各サーバ1は、集合番号202内のデータは半順序であるが、当該集合番号202内のデータを処理部19で処理した結果は、全てのサーバ1間でデータの順序を揃えた全順序と等価となり、出力するデータの一貫性をサーバ1間で保証しながら、出力集合200を適切に管理することが可能となる。
【0099】
(3).上記(2)に記載の分散処理方法であって、前記管理ステップ(分割点管理部18)では、前記分割命令に基づいて生成された前記分割点により前記出力集合(200)を複数の部分集合に分割し、前記分割点の出力順に番号(集合番号202)を付与して前記部分集合を管理する。
【0100】
上記構成により、集合番号202内のデータは、全てのサーバ1間で等価なため、出力集合200に対するデータの削除や、重複出力の防止や、データの補完等は、集合番号202で管理することが可能となる。
【0101】
(4).上記(3)に記載の分散処理方法であって、前記出力順序決定ステップ(可換性判定部14)では、前記半順序配信を行うデータを可換性の関係を有するデータ同士に分類し、前記分類ごとに分割命令を予め定義した可換性判定情報(可換性判定テーブル300X、300Y)に基づいて、前記データの出力順序を決定する。
【0102】
上記構成により、データの系列(分類)ごとに可換性判定テーブル300X、300Yを分割し、データの系列ごとに分割命令X、Yを分けることで、分割命令X、Yと競合する範囲を縮小し、競合の発生を低減して競合解決部17によるレイテンシを抑制することが可能となる。
【0103】
(5).上記(2)に記載の分散処理方法であって、前記分割命令出力ステップ(分割制御部400)では、前記分割命令を所定の周期又は所定のタイミングで出力する。
【0104】
上記構成により、分割制御部400は、データの削除の頻度などを考慮して分割命令を出力する周期やタイミングを調整することが可能となる。また、分割制御部400は、アプリケーションからのリクエストが送信される時間帯を考慮して、データの衝突の可能性が低いタイミングで分割命令を出力することが可能となる。
【0105】
(6).上記(2)に記載の分散処理方法であって、前記計算機は、前記データを出力するクライアント装置(3)と、前記受信ステップ(送受信部13)と、出力順序決定ステップ(14、15、16、17)と、管理ステップ(18)を実行するサーバ(1)を含み、前記クライアント装置(3)と前記サーバ(1)のいずれか一方で、前記分割命令出力ステップ(分割制御部400)を実行する。
【0106】
上記構成により、クライアント装置3で分割制御部400を稼働させることで、他の計算機(クライアント装置3や分割制御装置2)と協調することなく、分割命令とデータを送信するタイミングを制御することが可能となる。
【0107】
また、サーバ1で分割制御部400を稼働させる場合、特定の分類のデータを受信したサーバ1は、分割制御を行った後に各サーバへ当該データを配信することで、分割命令とデータを送信するタイミングを制御することが可能となる。
【0108】
(7).上記(3)に記載の分散処理方法であって、前記計算機(1)が、前記番号(202)順に前記部分集合を削除する削除ステップをさらに含み、前記出力順序決定ステップ(14、15、16)では、前記半順序配信により前記計算機(1)間で前記データを交換する際に前記番号を含めて交換(S23)を実施し、既に削除済みデータを破棄する(S25)。
【0109】
上記構成により、サーバ1は、出力集合200の集合番号202を交換することで既に削除済みの部分集合を判定でき、データを重複して配信することを防止できる。
【0110】
(8).上記(3)に記載の分散処理方法であって、前記管理ステップ(分割点管理部18)では、前記部分集合を単一のデータとして扱うことで、前記半順序配信の出力集合を全順序配信の出力集合として扱う。
【0111】
上記構成により、全順序配信の技術に半順序配信を組み合わせることが可能となる。
【0112】
(9).上記(3)に記載の分散処理方法であって、前記出力順序決定ステップ(14、15,16,17)では、非可換なデータを受け付けた場合には他の計算機との合意に応じて出力順序を決定し、前記管理ステップ(分割点管理部18)では、前記出力順序が決定された非可換のデータを前記分割命令として扱う。
【0113】
上記構成により、分割命令の生成及び送信を省略して、分散処理システムの構成を簡易にすることが可能となる。
【0114】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。
【0115】
また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、又は、ICカード、SDカード、DVD等の記録媒体に置くことができる。
【0116】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。