JP6100384B2 - 情報処理システム、サーバ装置、情報処理方法及びプログラム - Google Patents

情報処理システム、サーバ装置、情報処理方法及びプログラム Download PDF

Info

Publication number
JP6100384B2
JP6100384B2 JP2015535209A JP2015535209A JP6100384B2 JP 6100384 B2 JP6100384 B2 JP 6100384B2 JP 2015535209 A JP2015535209 A JP 2015535209A JP 2015535209 A JP2015535209 A JP 2015535209A JP 6100384 B2 JP6100384 B2 JP 6100384B2
Authority
JP
Japan
Prior art keywords
candidate data
request
server device
data
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015535209A
Other languages
English (en)
Other versions
JPWO2015033410A1 (ja
Inventor
浩太郎 遠藤
浩太郎 遠藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Toshiba Digital Solutions Corp
Original Assignee
Toshiba Corp
Toshiba Solutions Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp, Toshiba Solutions Corp filed Critical Toshiba Corp
Publication of JPWO2015033410A1 publication Critical patent/JPWO2015033410A1/ja
Application granted granted Critical
Publication of JP6100384B2 publication Critical patent/JP6100384B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements

Description

本発明の実施形態は、情報処理システム、サーバ装置、情報処理方法及びプログラムに関する。
複数のコンピュータにより構成される分散システムが、さまざまな分野で広く利用されている。分散システムにはさまざまな形態があるが、一例として、全体で1台のコンピュータであるかのように振舞うクラスタシステムが挙げられる。また近年、急速に普及しているクラウドサービスも、分散システムによって提供されている。例えば、値(バリュー)に名前(キー)を付けて情報を格納する分散キーバリューストアが、クラウドサービスで利用されている。
耐障害性を向上させるため、同一の情報を複数のコンピュータで保持すれば、一部のコンピュータでデータが消失しても、その情報は失われない。情報の多重化での技術的課題は、情報が変更されるとき、いかにして多重化された情報の一貫性を維持するかという点にある。一貫性の維持は、変更の内容又は結果を各コンピュータに通知して、各コンピュータでその変更を適用することにより実現できる。
この方法の注意点は、可換(commutative)でない変更が同時並行的に行われたとき、各コンピュータでの変更の順序が同一でなければならないという点である。例えば、預金残高に1000円を加えるという変更Aと、預金残高の1%を加えるという変更Bがほぼ同時に発生したとき、その適用順序が変わると最終的な結果は同一でない。つまり、変更A及び変更Bの順序を決定し、多重化された各コンピュータはすべて同じ順序で変更を行わなければならない。同様に、変更の結果を各コンピュータに通知する方式においても、各コンピュータでの変更の順序が同一でなければならない。
変更の順序を同一に保つためには、すべての変更に順序番号を付けることができればよい。仮に、変更の要求元が一元的であれば、要求元で順序番号を付けることができるが、しかしながら一般的には、変更の要求元が一元的であるとはかぎらない。変更の要求元が一元的でない場合に、変更の順序を決定するため、非特許文献1には、リーダ(又はマスタ)とよばれるコンピュータにいったん変更要求をすべて集めて順序を決定するという方法が開示されている。
ZooKeeper: A Distributed Coordination Service for Distributed Applications <URL:http://zookeeper.apache.org/doc/current/zookeeperOver.html>
しかしながら、マスタコンピュータに変更要求をすべて集めて順序を決定する方法では、マスタコンピュータが故障して停止した場合に、他のコンピュータをマスタコンピュータとして選出するまでは、変更要求の順序が決定できず、多重化の処理を中断しなければならなかった。
実施形態の情報処理システムは、1以上のクライアント装置と、データを記憶するN以上(Nは3以上の整数)のサーバ装置とを備える。前記クライアント装置は、前記データの変更内容を示すリクエストを前記サーバ装置に送信する送信部を備える。前記サーバ装置は、第1記憶部と、受信部と、生成部と、選択部と、送信部と、変更部とを備える。第1記憶部は、前記リクエストと、前記リクエストの変更内容に基づいて前記データを変更する順序を示す順序番号とを関連付けた履歴データと、前記データとを記憶する。受信部は、前記リクエストを前記クライアント装置から受信し、まだ使用されていない前記順序番号を示す現順序番号と、前記現順序番号を使用して履歴データに登録する候補となる前記リクエストと、前記リクエストの状態とを含む候補データを他の前記サーバ装置から受信する。生成部は、前記クライアント装置から受信した前記リクエストの状態を第1状態に決定し、前記第1状態のリクエストと、前記現順序番号とを含む候補データを生成する。選択部は、前記候補データの前記リクエストのうち前記変更内容が同一の前記リクエストの数が第1閾値より大きい場合、前記変更内容が同一のリクエストのうち一の前記リクエストを選択し、選択された前記リクエストの状態を第2状態に決定する。送信部は、選択された前記リクエストを含む前記候補データを他の前記サーバ装置に送信する。変更部は、前記候補データの前記リクエストのうち、状態が前記第2状態の前記リクエストの数が第2閾値より大きい場合、前記第2状態の前記リクエストを含む前記候補データのうち一の前記候補データを使用して前記履歴データを更新するとともに前記データを変更する。
図1は、実施形態の情報処理システムの構成の一例を示す図である。 図2は、実施形態のサーバ装置の構成の一例を示す図である。 図3は、実施形態の履歴データの一例を示す図である。 図4は、実施形態のサーバ装置がリクエストを受信したときの処理を示すフローチャートである。 図5は、実施形態のサーバ装置が候補データを受信したときの処理を示すフローチャートである。 図6は、実施形態のサーバ装置の選択部の処理を示すフローチャートである。 図7は、実施形態のサーバ装置の変更部の処理を示すフローチャートである。 図8は、実施形態のサーバ装置が現順序番号を受信したときの処理を示すフローチャートである。 図9は、実施形態の情報処理方法を具体的に説明するための図である。 図10は、実施形態の情報処理方法を具体的に説明するための図である。 図11は、実施形態の情報処理方法を具体的に説明するための図である。 図12は、実施形態の情報処理方法を具体的に説明するための図である。 図13は、実施形態の情報処理方法を具体的に説明するための図である。 図14は、実施形態の情報処理方法を具体的に説明するための図である。 図15は、実施形態の情報処理方法を具体的に説明するための図である。 図16は、実施形態の情報処理方法の性能を示す図である。 図17は、実施形態のサーバ装置及びクライアント装置のハードウェアの構成の一例を示す図である。
以下、添付図面を参照して実施形態の情報処理システム、サーバ装置、情報処理方法及びプログラムについて説明する。
図1は、実施形態の情報処理システムの構成の一例を示す図である。本実施形態の情報処理システム100は、サーバ装置10−1、・・・、サーバ装置10−n(nは3以上の整数)と、クライアント装置20−1、・・・、クライアント装置20−m(mは1以上の整数)と、ネットワーク30とを備える。以下、サーバ装置10−1、・・・、及びサーバ装置10−nを区別する必要がない場合は単にサーバ装置10という。同様に、クライアント装置20−1、・・・、及びクライアント装置20−mを区別する必要がない場合は、単にクライアント装置20という。
サーバ装置10及びクライアント装置20は、互いに通信できるようにネットワーク30を介して接続されている。なお、サーバ装置10及びクライアント装置20との間の通信手段は、有線であっても無線であってよく、また、両方を組み合わせてもよい。サーバ装置10−1、・・・、及びサーバ装置10−nは、データを記憶する。クライアント装置20は、送信部21を備える。送信部21は、サーバ装置10のデータの変更内容を示すリクエストを任意のサーバ装置10に送信する。
図2は、実施形態のサーバ装置10の構成の一例を示す図である。本実施形態のサーバ装置10は、第1記憶部11、第2記憶部12、受信部13、生成部14、選択部15、変更部16、同期部17及び送信部18を備える。
第1記憶部11は、データ及び履歴データを記憶する。データは、例えばデータベースのデータである。履歴データは、例えば当該データベースのジャーナルである。サーバ装置10が第1記憶部11に記憶するデータは任意でよい。
図3は、実施形態の履歴データの一例を示す図である。履歴データは、順序番号とリクエストとを関連付けた情報である。順序番号は、当該リクエストの変更内容に基づいて第1記憶部11のデータを変更する順序を示す。本実施形態の順序番号の初期値は1である。以下、まだリクエストが関連付けられていない未使用の順序番号を現順序番号という。図3の例では、順序番号Sが現順序番号である。
図2に戻り、第2記憶部12は、各サーバ装置10の候補データ及び現ラウンド番号を一時的に記憶する。候補データは、現順序番号と、当該現順序番号を使用して履歴データに登録する候補となるリクエストと、リクエストの状態と、ラウンド番号と、サーバ識別子とを含む。候補データに含まれるリクエストの状態は、第1状態及び第2状態がある。リクエストの状態は、現順序番号に関連付けるリクエストを決定する処理に使用される情報である。また、ラウンド番号は、現順序番号に関連付けるリクエストを決定する処理に使用される番号である。現順序番号に関連付けるリクエストを決定する処理の詳細な説明は図4〜8のフローチャートを参照して後述する。サーバ識別子は、各サーバ装置10を識別する識別情報である。例えば、サーバ識別子は、各サーバ装置10に割り当てられた1〜Nのサーバ番号である。候補データに含まれるサーバ識別子により、当該候補データを送信したサーバ装置10を識別することができる。
現ラウンド番号は、ラウンド番号の最新の値である。本実施形態の現ラウンド番号の初期値は1である。第2記憶部12の現ラウンド番号及び候補データは、選択部15及び変更部16によって更新される。
受信部13は、クライアント装置20からリクエストを受信し、他のサーバ装置10から候補データを受信する。受信部13は、現ラウンド番号が1のときに、クライアント装置20から受信したリクエストを生成部14に送信する。
また、受信部13は、受信した候補データを第2記憶部12に一時的に記憶する。このとき、現ラウンドの自身の候補データが決定していない場合には、受信した候補データを当該ラウンドの自身の候補データとし、第2記憶部12に記憶する。受信部13は、第2記憶部12から現ラウンド番号を読み出し、当該現ラウンド番号に応じて、他のサーバ装置10から候補データを受信した旨を示す候補データ受信通知を選択部15又は変更部16に送信する。具体的には、受信部13は、現ラウンド番号が奇数のときに、候補データ受信通知を選択部15に送信する。受信部13は、現ラウンド番号が偶数のときに、候補データ受信通知を変更部16に送信する。
また、受信部13は、他のサーバ装置10が履歴データを更新したときに他のサーバ装置10から現順序番号を受信し、当該現順序番号を同期部17に送信し、現順序番号受信契機の履歴データ同期処理を同期部17に依頼する。現順序番号受信契機の履歴データ同期処理については後述する。
また、受信部13は、受信した候補データの現順序番号が履歴データの現順序番号よりも大きい場合、候補データ受信契機の履歴データ同期処理を同期部17に依頼する。また、受信部13は、受信した候補データのラウンド番号が現ラウンド番号より大きい場合、段落0019の処理に先だって、同期部17に現ラウンド番号同期処理を依頼する。これらの同期処理により、第2記憶部12に含まれる候補データの順序番号とラウンド番号はすべて同一となる。候補データ受信契機の履歴データ同期処理、及びラウンド番号の同期処理については後述する。
受信部13及び後述の同期部17の処理により、サーバ装置10は、他のサーバ装置10よりも、現順序番号に関連付けるリクエストを決定する処理が遅れている場合を判定し、当該処理が遅れている場合は、他のサーバ装置10の処理に合わせる。詳細な説明は、図5のフローチャートを参照して後述する。
生成部14は、現ラウンド番号が1(初期値)のとき、受信部13を介してクライアント装置20から受信したリクエストの状態を第1状態に決定する。生成部14は、第1状態のリクエストと、履歴データの現順序番号と、値が1であるラウンド番号とを含む候補データを生成する。生成部14は、当該候補データを選択部15に送信する。
選択部15は、現ラウンド番号が1(初期値)のとき、生成部14から候補データを受信する。また、選択部15は、現ラウンド番号が奇数のとき、候補データ受信通知を受信部13から受信する。選択部15は、候補データ受信通知を受信すると、第2記憶部12から候補データを読み出す。
選択部15は、第2記憶部12から読み出した候補データのリクエストのうち変更内容が同一のリクエストの数が閾値より大きい場合、変更内容が同一のリクエストのうち一のリクエストを選択する。なお、本実施形態では、当該閾値をn/2とする。すなわち、当該閾値を情報処理システム100内のサーバ装置10の台数の半分の値とする。しかしながら、当該閾値は、n/2に限られずそれより大きい任意の値でもよい。選択部15は、選択されたリクエストの状態を第2状態にし、選択されたリクエストを含む候補データのラウンド番号を1増やす。選択部15は、選択されなかったリクエストを含む候補データを第2記憶部12から削除し、選択されたリクエストを含む候補データを、送信部18を介して他のサーバ装置10に送信する。選択部15は、第2記憶部12の現ラウンド番号を1増やす。
また、選択部15は、第2記憶部12から読み出した候補データのリクエストのうち変更内容が相異なるリクエストがある場合、一の候補データを選択する。具体的には、選択部15は、第2記憶部12から候補データを読み出し、ランダムに一の候補データを選択する。なお、選択部15が一の候補データを選択する方法は、ランダムに一の候補データを選択する方法に限られず、その他の方法でもよい。選択部15は、選択された候補データのラウンド番号を1増やす。選択部15は、選択されなかった候補データを第2記憶部12から削除し、選択された候補データを当該ラウンドの自身の候補データとして決定して第2記憶部12に記憶し、送信部18を介して他のサーバ装置10に送信する。選択部15は、第2記憶部12の現ラウンド番号を1増やす。
なお、選択部15が候補データを送信するサーバ装置10は、所定の方法により決定する。当該所定の方法は、例えば、送信先のサーバ装置10をランダムに所定の数だけ選択する方法や、送信先のサーバ装置10を他のサーバ装置10の全てにする等である。
変更部16は、現ラウンド番号が偶数のとき、候補データ受信通知を受信部13から受信する。変更部16は、候補データ受信通知を受信すると、第2記憶部12から候補データを読み出す。
変更部16は、第2記憶部12から読み出した候補データのリクエストのうち状態が第2状態のリクエストの数が閾値より大きい場合、第2状態のリクエストを含む候補データのうち一の候補データを使用して履歴データを更新するとともにデータを変更する。変更部16は、第2記憶部12の現ラウンド番号を1(初期値)に戻す。また、変更部16は、第1記憶部11の現順序番号を1増やす。また、変更部16は、1増やした後の現順序番号を他のサーバ装置10に送信する。これにより、新たに使用された順序番号を他のサーバ装置10に通知する。
また、変更部16は第2記憶部12から読み出した候補データのうち、第1状態のリクエストを含む候補データがあり、かつ、第2状態のリクエストを含む候補データがある場合、第2状態のリクエストを含む候補データのうち一の候補データを選択し、選択された候補データのリクエストの状態を第1状態に決定する。変更部16は、選択された候補データのラウンド番号を1増やす。変更部16は、選択されなかった候補データを第2記憶部12から削除し、選択された候補データを当該ラウンドの自身の候補データとして決定して第2記憶部12に記憶し、送信部18を介して他のサーバ装置10に送信する。選択部15は、第2記憶部12の現ラウンド番号を1増やす。
また、変更部16は、第2記憶部12から読み出した候補データのリクエストのうち、状態が第1状態のリクエストの数が閾値より大きい場合、一の候補データを選択する。例えば、変更部16は、ランダムに一の候補データを選択する。なお、変更部16が一の候補データを選択する方法は、ランダムに一の候補データを選択する方法に限られず、その他の方法でもよい。変更部16は、選択された候補データのラウンド番号を1増やす。変更部16は、選択されなかった候補データを第2記憶部12から削除し、選択された候補データを当該ラウンドの自身の候補データとして決定して第2記憶部12に記憶し、送信部18を介して他のサーバ装置10に送信する。選択部15は、第2記憶部12の現ラウンド番号を1増やす。
同期部17は、受信部13が他のサーバ装置10から受信した候補データの現順序番号が、履歴データの現順序番号よりも大きい場合、第2記憶部12の候補データを削除し、現順序番号を送信した他の前記サーバ装置10に、履歴データの送信依頼を、送信部18を介して送信する(候補データ受信契機の履歴データ同期処理)。
また、同期部17は、受信部13が候補データを受信したときに、受信した候補データのラウンド番号が、第2記憶部12の現ラウンド番号よりも大きい場合、第2記憶部12の候補データを削除し、受信した候補データを第2記憶部12に記憶するとともに、現ラウンド番号を受信した候補データのラウンド番号にする(ラウンド番号の同期処理)。
また、同期部17は、受信部13を介して他のサーバ装置10から現順序番号を受信したときに、他のサーバ装置10から受信した現順序番号が、履歴データの現順序番号よりも大きい場合、第2記憶部12の候補データを削除し、現順序番号を送信した他のサーバ装置10に、履歴データの送信依頼を、送信部18を介して送信する(現順序番号受信契機の履歴データ同期処理)。
同期部17の履歴データ同期処理により、サーバ装置10は、他のサーバ装置10から最新の履歴データを受信して、自身の履歴データを最新の状態に更新することができる。
送信部18は、選択部15又は変更部16から受信した候補データに、自身のサーバ装置10を識別するサーバ識別子を含め、当該候補データを他のサーバ装置10に送信する。また、順序番号を変更部16から受信したときに、当該順序番号を他のサーバ装置10の全てに送信する。また、送信部18は、履歴データの送信依頼を同期部17から受信すると、依頼先のサーバ装置10に履歴データの送信依頼を送信する。
次に、本実施形態の情報処理システム100の情報処理方法についてフローチャートを参照して説明する。図4は、実施形態のサーバ装置10がリクエストを受信したときの処理を示すフローチャートである。受信部13がクライアント装置20からリクエストを受信する(ステップS1)。受信部13は、第2記憶部12から現ラウンド番号を読み出し、現ラウンド番号が1(初期値)であるか否かを判定する(ステップS2)。現ラウンド番号が1である場合(ステップS2、Yes)、受信部13の処理は、ステップS3に進む。現ラウンド番号が1でない場合(ステップS2、No)、受信部13は、処理を終了する。
受信部13は、第一ラウンドの自身の候補データが決定しているか否かを判定する(ステップS3)。第一ラウンドの自身の候補データが決定している場合(ステップS3、Yes)、受信部13は、処理を終了する。第一ラウンドの自身の候補データがまだ決定していない場合(ステップS3、No)、受信したリクエストを生成部14に送信する。生成部14は、受信部13から受信したリクエストの状態を第1状態にする。生成部14は、当該第1状態のリクエスト、第1記憶部11の現順序番号、及び値が1(初期値)のラウンド番号を含む候補データを生成する(ステップS4)。生成部14は、生成した候補データを選択部15に送信する。選択部15は、生成部14から受信した候補データを第一ラウンドの自身の候補データとして決定して第2記憶部12に記憶する(ステップS5)。選択部15は、当該候補データを送信部18を介して他のサーバ装置10に送信する(ステップS6)。なお、送信部18は、候補データに自身のサーバ装置10を識別するサーバ識別子を含め、当該候補データを他のサーバ装置10に送信する。
図5は、実施形態のサーバ装置10が候補データを受信したときの処理を示すフローチャートである。受信部13は、候補データを他のサーバ装置10から受信する(ステップS11)。受信部13は、当該候補データに含まれる現順序番号が履歴データの現順序番号よりも大きいか否かを判定する(ステップS12)。
当該候補データに含まれる現順序番号が履歴データの現順序番号よりも大きい場合(ステップS12、Yes)、受信部13は、同期部17に履歴データの同期処理を依頼する。同期部17は、受信部13から履歴データの同期処理の依頼を受信すると、第2記憶部12の全ての候補データを削除し(ステップS13)、当該現順序番号を含む候補データを送信したサーバ装置10に履歴データの送信を依頼し(ステップS14)、候補データの受信処理を終了する。
当該候補データに含まれる現順序番号が履歴データの現順序番号以下である場合(ステップS12、No)、受信部13の処理はステップS15に進む。
受信部13は、受信した候補データの現順序番号と履歴データの現順序番号が一致するか否かを判定する(ステップS15)。一致する場合(ステップS15、Yes)、受信部13の処理はステップS16に進む。一致しない場合(ステップS15、No)、受信部13の処理を終了する。
受信部13は、受信した候補データのラウンド番号が第2記憶部12の現ラウンド番号より大きいか否かを判定する(ステップS16)。受信した候補データのラウンド番号が第2記憶部12の現ラウンド番号より大きい場合(ステップS16、Yes)、受信部13は、同期部17にラウンド番号の同期処理を依頼する。同期部17は、受信部13からラウンド番号の同期処理の依頼を受信すると、第2記憶部12の全ての候補データを削除し(ステップS17)、現ラウンド番号を受信部13が受信した候補データのラウンド番号にする(ステップS18)。次に、受信部13の処理はステップS20に進む。
受信した候補データのラウンド番号が第2記憶部12の現ラウンド番号以下である場合(ステップS16、No)、受信部13の処理はステップS19に進む。
受信部13は、受信した候補データのラウンド番号と第2記憶部12の現ラウンド番号とが一致するか否かを判定する(ステップS19)。一致する場合(ステップS19、Yes)、受信部13の処理はステップS20に進む。一致しない場合(ステップS19、No)、処理を終了する。
受信部13は、受信した候補データを第2記憶部12に記憶する(ステップS20)。次に、現ラウンドの自身の候補データが決定しているか否かを判定する(ステップS21)。決定している場合(ステップS21、Yes)、受信した候補データを自身の候補データとして決定して第2記憶部12に記憶する(ステップS22)。次に、受信部13は、現ラウンド番号が奇数であるか否かを判定する(ステップS23)。現ラウンド番号が奇数である場合(ステップS23、Yes)、受信部13は、候補データ受信通知を選択部15に送信し、選択部15による処理に移行する(ステップS24)。現ラウンド番号が偶数である場合(ステップS23、No)、受信部13は、候補データ受信通知を変更部16に送信し、変更部16による処理に移行する(ステップS25)。
図6は、実施形態のサーバ装置10の選択部15の処理を示すフローチャートである。選択部15は、候補データ受信通知を受信部13から受信すると、第2記憶部12から候補データを読み出す(ステップS31)。なお、選択部15は、候補データ受信通知を受信する度に、第2記憶部12から候補データを読み出してもよいし、複数の候補データ受信通知に対して候補データの読み出しを1度にしてもよい。選択部15は、第2記憶部12の候補データの読み出し処理を終了すると、ステップS32の処理に進む。なお、読み出し処理の終了を判定する方法は任意でよい。例えば、最初の候補データ受信通知を受信してから、所定の期間待つ間に受信した候補データ受信通知の分だけ候補データを読み出す方法や、情報処理システム100内のサーバ装置10の数に基づいて定められた数だけ候補データを読み出したら読み出し処理を終了する等の方法がある。
選択部15は、第2記憶部12から読み出した候補データのリクエストのうち変更内容が同一のリクエストの数が閾値より大きいか否かを判定する(ステップS32)。閾値より大きい場合(ステップS32、Yes)、選択部15は、ステップS32の条件を満たす候補データから一の候補データを選択し(ステップS33)、選択された候補データのリクエストの状態を第2状態に決定する(ステップS34)。次に、選択部15の処理はステップS37に進む。
閾値以下である場合(ステップS32、No)、第2記憶部12から読み出した候補データのリクエストのうち変更内容が相異なるリクエストがあるか否かを判定する(ステップS35)。変更内容が相異なるリクエストが無い場合(ステップS35、No)、ステップS31に戻る。変更内容が相異なるリクエストがある場合(ステップS35、Yes)、選択部15は、第2記憶部12から読み出した候補データのうち一の候補データを選択し(ステップS36)、ステップS37に進む。
選択部15は、選択されなかった候補データを第2記憶部12から削除する(ステップS37)。選択部15は、選択した候補データのラウンド番号を1増やすとともに、第2記憶部12の現ラウンド番号を1増やす(ステップS38)。選択部15は、選択した候補データを当該ラウンドの自身の候補データとして決定して第2記憶部12に記憶し、送信部18を介して他のサーバ装置10に送信する(ステップS39)。なお、送信部18は、候補データに自身のサーバ装置10を識別するサーバ識別子を含め、当該候補データを他のサーバ装置10に送信する。
図7は、実施形態のサーバ装置10の変更部16の処理を示すフローチャートである。 変更部16は、候補データ受信通知を受信部13から受信すると、第2記憶部12から候補データを読み出す(ステップS41)。なお、ステップS41の読み出し処理の詳細は、ステップS31と同様なので説明を省略する。
変更部16は、リクエストの状態が第2状態である候補データの数が閾値より大きいか否かを判定する(ステップS42)。閾値以下である場合(ステップS42、No)、変更部16の処理はステップS49に進む。
閾値より大きい場合(ステップS42、Yes)、変更部16は、ステップS42の条件を満たす候補データから一の候補データを選択する(ステップS43)。次に、変更部16は、選択された候補データを使用して第1記憶部11の履歴データを更新し、第1記憶部11のデータを変更する(ステップS44)。次に、変更部16は、第2記憶部12の全ての候補データを削除する(ステップS45)。次に、変更部16は、第2記憶部12の現ラウンド番号を1(初期値)に戻す(ステップS46)。次に、変更部16は、第1記憶部11の履歴データの現順序番号を1増やす(ステップS47)。次に、変更部16は、現順序番号を他のサーバ装置10に送信し(ステップS48)、処理を終了する。
変更部16は、第2記憶部12から読み出した候補データに、第1状態のリクエストを含む候補データと、第2状態のリクエストを含む候補データとが共にあるか否かを判定する(ステップS49)。共にある場合(ステップS49、Yes)、変更部16は、第2状態のリクエストを含む候補データから一の候補データを選択し(ステップS50)、選択された候補データのリクエストの状態を第1状態にする(ステップS51)。次に、変更部16の処理はステップS54に進む。
共にない場合(ステップS49、No)、リクエストの状態が第1状態である候補データの数が閾値より大きいか否かを判定する(ステップS52)。閾値以下である場合(ステップS52、No)、変更部16の処理はステップS41に戻る。閾値より大きい場合(ステップS52、Yes)、変更部16の処理はステップS53に進む。変更部16は、第2記憶部12から読み出した候補データのうち一の候補データを選択する(ステップS53)。次に、変更部16の処理はステップS54に進む。
変更部16は、選択されなかった候補データを第2記憶部12から削除する(ステップS54)。変更部16は、選択した候補データのラウンド番号を1増やすとともに、第2記憶部12の現ラウンド番号を1増やす(ステップS55)。変更部16は、選択した候補データを送信部18を介して他のサーバ装置10に送信する(ステップS56)。なお、送信部18は、候補データに自身のサーバ装置10を識別するサーバ識別子を含め、当該候補データを他のサーバ装置10に送信する。
図8は、実施形態のサーバ装置10が現順序番号を受信したときの処理を示すフローチャートである。受信部13は、他の前記サーバ装置10が履歴データを更新したときに、他のサーバ装置10から現順序番号を受信する(ステップS61)。受信部13は、受信した現順序番号が第1記憶部11の履歴データの現順序番号よりも大きいか否かを判定する(ステップS62)。受信した現順序番号が第1記憶部11の履歴データの現順序番号以下である場合(ステップS62、Yes)、処理を終了する。
受信した現順序番号が第1記憶部11の履歴データの現順序番号よりも大きい場合(ステップS62、Yes)、同期部17に履歴データの同期処理を依頼する。同期部17は、受信部13から履歴データの同期処理の依頼を受信すると、第2記憶部12の全ての候補データを削除し(ステップS63)、当該現順序番号を含む候補データを送信したサーバ装置10に履歴データの送信を依頼する(ステップS64)。これにより、サーバ装置10は、他のサーバ装置10から最新の履歴データを受信して、自身の履歴データを最新の状態に更新することができる。
次に、上述の情報処理方法について具体例を参照して説明する。図9〜図14は、実施形態の情報処理方法を具体的に説明するための図である。図9〜図14は、サーバ装置の数nが5の例である。自候補は、サーバ装置10自身の候補データ(以下、「自候補データ」という。)を示す。他候補は、他のサーバ装置10から受信した候補データ(以下、「他候補データ」という。)を示す。なお、本例では、他候補データに含まれる現順序番号は、サーバ装置10自身の現順序番号と一致しているものとして説明する。また、本例では、サーバ装置10の送信部18は、自候補データの送信先、及び当該送信先の数をランダムに決定するものとして説明する。すなわち、自候補データと他候補データとを合わせた候補データが、全てのサーバ装置10で同じになるとは限らない。なお、サーバ装置10の送信部18が、自候補データの送信先、及び当該送信先の数を常に同じにしている場合であっても、ネットワーク30の遅延や障害などの影響により、候補データは、全てのサーバ装置10で同じになるとは限らない。また、本例では、上述の閾値を5/2(=2.5)とする。
図9上段の図は、サーバ装置10−1〜サーバ装置10−5の第2記憶部12の初期状態である。すなわち、サーバ装置10−1〜サーバ装置10−5の現ラウンド番号が1であり、本実施形態の情報処理方法を開始するときの第2記憶部12の状態を示す。図9下段の図は、サーバ装置10−1の受信部13がクライアント装置20からリクエストAを受信し、サーバ装置10−1の生成部14が当該リクエストAの状態を第1状態にして自候補データを生成したことを示す。また、サーバ装置10−3の受信部13がクライアント装置20からリクエストBを受信し、サーバ装置10−3の生成部14が当該リクエストBの状態を第1状態にして自候補データを生成したことを示す。サーバ装置10−5の受信部13がクライアント装置20からリクエストCを受信し、サーバ装置10−5の生成部14が当該リクエストCの状態を第1状態にして自候補データを生成したことを示す。サーバ装置10−2及びサーバ装置10−4は、クライアント装置20からリクエストを受信していないことを示す。
図10上段の図は、サーバ装置10−1〜サーバ装置10−5の第2記憶部12が図9下段の状態であるときに、他のサーバ装置10から他候補データを受信した後の第2記憶部12の状態を示す。サーバ装置10−1の第2記憶部12の状態は、他のサーバ装置10から他候補データとして、第1状態のリクエストB、及び第1状態のリクエストCを受信したことにより更新されている。サーバ装置10−3の第2記憶部12の状態は、他のサーバ装置10から他候補データとして、第1状態のリクエストAを受信したことにより更新されている。サーバ装置10−5の第2記憶部12の状態は、他のサーバ装置10から他候補データとして、第1状態のリクエストAを受信したことにより更新されている。サーバ装置10−2の第2記憶部12の状態は、サーバ装置10−3から他候補データとして、第1状態のリクエストBを受信したことにより更新されている。特に、サーバ装置10−2は、自候補データを決定していなかったので、リクエストBを自候補データに決定している。サーバ装置10−4の第2記憶部12の状態は、サーバ装置10−1から他候補データとして、第1状態のリクエストAを受信したことにより更新されている。特に、サーバ装置10−4は、自候補データを決定していなかったので、リクエストAを自候補データに決定している。
図10下段の図は、選択部15による処理の後の状態を示す図である。サーバ装置10−1の選択部15は、候補データのリクエスト(A、B,C)は変更内容が相異なるため、一の候補データ(A)をランダムに選択する(自候補データにする)。次に、サーバ装置10−1の選択部15は、選択されなかった候補データ(B,C)を削除する。次に、サーバ装置10−1の選択部15は、自候補データのラウンド番号を1増やすとともに、現ラウンド番号を1増やす。サーバ装置10−1の選択部15は、当該自候補データを、送信部18を介して他のサーバ装置10に送信する。なお、サーバ装置10−3、サーバ装置10−5の動作もサーバ装置10−1と同様である。サーバ装置10−2及びサーバ装置10−4は、変更内容が相異なる候補データがないため、候補データを選択する処理に進まずに、候補データの受信を待つ(候補データの読み出し処理に戻る)。
図11上段の図は、サーバ装置10−1〜サーバ装置10−5の第2記憶部12が図10下段の状態であるときに、他のサーバ装置10から他候補データを受信した後の第2記憶部12の状態を示す。サーバ装置10−2の第2記憶部12の状態は、他のサーバ装置10から他候補データとして、第1状態のリクエストB及びCを受信(図10下段の図の状態から更にリクエストCを受信)したことにより、現ラウンド番号が1から2に更新されている。これは、サーバ装置10−2の受信部13が、第2記憶部12の現ラウンド番号1と、他候補データに含まれるラウンド番号2とを比較し、他候補データに含まれるラウンド番号2>現ラウンド番号1であるため、現ラウンド番号を2に更新したためである。自候補データが決定していなかったので、先に受信したリクエストBに自候補データが決定している。なお、サーバ装置10−4についても同様である。
図11下段の図は、変更部16による処理の後の状態を示す図である。サーバ装置10−1の変更部16は、候補データのリクエスト(A、B,C)の状態はすべて第1状態で閾値(2.5)より多くあるので、一の候補データ(A)をランダムに選択する(自候補データにする)。次に、サーバ装置10−1の変更部16は、選択されなかった候補データ(B,C)を削除する。次に、サーバ装置10−1の変更部16は、自候補データのラウンド番号を1増やすとともに、現ラウンド番号を1増やす。サーバ装置10−1の変更部16は、当該自候補データを、送信部18を介して他のサーバ装置10に送信する。なお、サーバ装置10−2〜サーバ装置10−5の動作もサーバ装置10−1と同様である。
図12上段の図は、サーバ装置10−1〜サーバ装置10−5の第2記憶部12が図11下段の状態であるときに、他のサーバ装置10から他候補データを受信した後の第2記憶部12の状態を示す。サーバ装置10−1の第2記憶部12の状態は、他のサーバ装置10から他候補データとして、第1状態のリクエストB、第1状態のリクエストB、第1状態のリクエストA、及び第1状態のリクエストCを受信したことにより更新されている。サーバ装置10−2〜サーバ装置10−5についても、他のサーバ装置10から他候補データを受信したことにより更新されている。
図12下段の図は、選択部15による処理の後の状態を示す図である。サーバ装置10−1の選択部15は、候補データのリクエスト(A,B,B,A,C)のうち変更内容が同一のリクエストの数が閾値(2.5)以下であり、変更内容が相異なるため、一の候補データ(A)をランダムに選択する(自候補データにする)。次に、サーバ装置10−1の選択部15は、選択されなかった候補データ(B,B,A,C)を削除する。次に、サーバ装置10−1の選択部15は、自候補データのラウンド番号を1増やすとともに、現ラウンド番号を1増やす。サーバ装置10−1の選択部15は、当該自候補データを、送信部18を介して他のサーバ装置10に送信する。なお、サーバ装置10−2〜サーバ装置10−5の動作もサーバ装置10−1と同様である。
図13上段の図は、サーバ装置10−1〜サーバ装置10−5の第2記憶部12が図12下段の状態であるときに、他のサーバ装置10から他候補データを受信した後の第2記憶部12の状態を示す。サーバ装置10−1の第2記憶部12の状態は、他のサーバ装置10から他候補データとして、第1状態のリクエストB、第1状態のリクエストB、及び第1状態のリクエストAを受信したことにより更新されている。サーバ装置10−2〜サーバ装置10−5についても、他のサーバ装置10から他候補データを受信したことにより更新されている。
図13下段の図は、変更部16による処理の後の状態を示す図である。サーバ装置10−1の変更部16は、候補データのリクエスト(A、B,B,A)の状態はすべて第1状態で閾値(2.5)より多くあるので、一の候補データ(A)をランダムに選択する(自候補データにする)。次に、サーバ装置10−1の変更部16は、選択されなかった候補データ(B,B,A)を削除する。次に、サーバ装置10−1の変更部16は、自候補データのラウンド番号を1増やすとともに、現ラウンド番号を1増やす。サーバ装置10−1の変更部16は、当該自候補データを、送信部18を介して他のサーバ装置10に送信する。なお、サーバ装置10−2〜サーバ装置10−5の動作もサーバ装置10−1と同様である。
図14上段の図は、サーバ装置10−1〜サーバ装置10−5の第2記憶部12が図13下段の状態であるときに、他のサーバ装置10から他候補データを受信した後の第2記憶部12の状態を示す。サーバ装置10−1の第2記憶部12の状態は、他のサーバ装置10から他候補データとして、第1状態のリクエストA、第1状態のリクエストA、第1状態のリクエストB、及び第1状態のリクエストAを受信したことにより更新されている。サーバ装置10−2〜サーバ装置10−5についても、他のサーバ装置10から他候補データを受信したことにより更新されている。
図14下段の図は、選択部15による処理の後の状態を示す図である。サーバ装置10−1の選択部15は、候補データのリクエスト(A,A,A,B,A)のうち変更内容が同一のリクエスト(A,A,A,A)の数が閾値(2.5)より大きいため、変更内容が同一のリクエスト(A,A,A,A)のうち一のリクエスト(A)を選択し(自候補データにし)、選択されたリクエストの状態を第2状態に決定する。次に、サーバ装置10−1の選択部15は、選択されなかった候補データ(A,A,B,A)を削除する。次に、サーバ装置10−1の選択部15は、自候補データのラウンド番号を1増やすとともに、現ラウンド番号を1増やす。サーバ装置10−1の選択部15は、当該自候補データを、送信部18を介して他のサーバ装置10に送信する。なお、サーバ装置10−2及びサーバ装置10−5の動作もサーバ装置10−1と同様である。
サーバ装置10−3の選択部15は、候補データのリクエスト(A,A,B)のうち変更内容が同一のリクエストの数が閾値(2.5)以下であり、変更内容が相異なるため、一の候補データ(A)をランダムに選択する(自候補データにする)。次に、サーバ装置10−1の選択部15は、選択されなかった候補データ(A,B)を削除する。次に、サーバ装置10−1の選択部15は、自候補データのラウンド番号を1増やすとともに、現ラウンド番号を1増やす。サーバ装置10−1の選択部15は、当該自候補データを、送信部18を介して他のサーバ装置10に送信する。なお、サーバ装置10−4の動作もサーバ装置10−3と同様である。
図15上段の図は、サーバ装置10−1〜サーバ装置10−5の第2記憶部12が図14下段の状態であるときに、他のサーバ装置10から他候補データを受信した後の第2記憶部12の状態を示す。サーバ装置10−1の第2記憶部12の状態は、他のサーバ装置10から他候補データとして、第2状態のリクエストA、第1状態のリクエストA、第1状態のリクエストB、及び第2状態のリクエストAを受信したことにより更新されている。サーバ装置10−2〜サーバ装置10−5についても、他のサーバ装置10から他候補データを受信したことにより更新されている。
図15下段の図は、変更部16による処理の後の状態を示す図である。サーバ装置10−1の変更部16は、候補データのリクエスト(A,A,A,B,A)のうち状態が第2状態のリクエスト(A,A,A)の数が閾値(2.5)より大きいため、第2状態のリクエスト(A,A,A)を含む候補データのうち一の候補データ(A)を使用して第1記憶部11の履歴データを更新するとともに第1記憶部11のデータを変更する。次に、サーバ装置10−1の変更部16は、全ての候補データ(A,A,A,B,A)を削除する。次に、サーバ装置10−1の変更部16は、現ラウンド番号を1に戻すともに、現順序番号を1増やす。次に、当該現順序番号を他のサーバ装置10に送信する。なお、サーバ装置10−2〜サーバ装置10−4の動作もサーバ装置10−1と同様である。
サーバ装置10−5の変更部16は、候補データのリクエストのうち、状態が第2状態のリクエストの数が閾値(2.5)以下であり、かつ、第1状態のリクエストを含む候補データと、第2状態のリクエストを含む候補データとが共にあるため、第2状態のリクエスト(A,A)を含む候補データのうち一の候補データを選択し、選択された候補データのリクエスト(A)の状態を第1状態に決定する。
サーバ装置10−5の第1記憶部11の履歴データ及びデータは、図9〜図15で説明した情報処理方法では更新されていないが、他のサーバ装置10から現順序番号を受信した契機で更新される。すなわち、サーバ装置10−5の受信部13が、他のサーバ装置10から現順序番号を受信すると、サーバ装置10−5の同期部17が上述の図8のフローチャートの処理を行うことにより、第1記憶部11の履歴データ及びデータが更新される。
次に、本実施形態の情報処理方法の正当性について説明する。本実施形態の情報処理方法は、各サーバ装置10で独立して実行される。つまり、各ラウンドの処理結果はサーバ装置10間で異なるかもしれないことに注意する。現順序番号のリクエストが確定するラウンドも同一であるとは限らない。また、各サーバ装置10は非同期的に動作するため、ある時点で実行している処理の順序番号やラウンド番号は、各サーバ装置10で異なるかもしれない。受信部13及び同期部17の処理は、順序番号やラウンド番号が進んでいるサーバ装置10から通知を受け取ったとき、進んでいる番号にキャッチアップする処理を含む。
本実施形態の情報処理方法(アルゴリズム)の正当性は、以下のValidity条件、Agreement条件、及びTermination条件を満たしていることを証明して示すことができる。
(Validity条件)各順序番号で確定したリクエストは、クライアント装置20から受け付けられたリクエストのいずれかである。
(Agreement条件)各順序番号で確定したリクエストは、サーバ装置10間で異ならない。
(Termination条件)過半数のサーバ装置10が正常な時、正常なサーバ装置10では各順序番号のリクエストが確定する。
まず、Validity条件について説明する。本実施形態の情報処理方法は、ラウンド番号=1のときにクライアント装置20から受け付けたアクセスを自候補データとし、それ以降のラウンドでは、前のラウンドで決定した自候補データ、及び他のサーバ装置10から受信した他候補データから、自候補データが決定される。いずれのラウンドでも元々クライアント装置20から受け付けたリクエスト以外が現れることはない。つまりValidity条件が成立する。
次に、Agreement条件について説明する。これには、一連のラウンドによって、現順序番号に関連付けるリクエストを決定したサーバ装置10があるとき、他のサーバ装置10においても、次の変更部16の処理までには、当該現順序番号に同じリクエストが関連付けられることが証明できればよい。まず、変更部16の処理で第2状態の候補データがあるとしたら、それは唯一であることに注意する。なぜなら、変更部16の第2状態の候補データは、選択部15の処理で過半数あったため、第2状態に決定されるからである(選択部15の処理で過半数を得られる候補データが唯一であることは、各サーバ装置10が候補データを翻さないことから従う)。
あるサーバ装置10が、ラウンドrで現順序番号に関連付けるリクエストを、リクエストVで最初に決着したとする。これは、そのサーバ装置10は、ラウンドrの変更部16の処理を行う前に、第2状態のリクエストVを含む候補データを過半数のサーバ装置10から受信したということである。
つまり、リクエストVは、過半数のサーバ装置10で第2状態のリクエストに決定されている。すると、他のサーバ装置10においても、どのような組み合わせの過半数のサーバ装置10からラウンドrの変更部16の処理に使用する候補データを受け取ったとしても、最低でも一つはリクエストVが通知されることになる。したがって、すべてのサーバ装置10において、ラウンドrで決着するとすればリクエストVしかありえないし、決着しないとしても、次のラウンドの選択部15の処理に使用する自候補データがリクエストVとなる。選択部15の自候補データがすべてリクエストVとなることから、前述したとおり、その次の変更部16の処理で決着する。
ここで、受信部13及び同期部17のキャッチアップ動作の正当性について説明する。キャッチアップの基本的な考え方は、自身のサーバ装置10抜きで過半数の候補データが揃ったラウンドの処理については、自候補データを立てる必要がないため、自候補データを立てずに他のサーバ装置10での処理結果をそのまま流用するということである。本実施形態の情報処理方法の各ラウンドの処理は、必ずしも自身のサーバ装置10の候補データを含んでいる必要はないため、他のサーバ装置10の処理結果を流用したとき、これをあたかも自身のサーバ装置10で各ラウンドの処理を実施したかのようにみなすことができる。したがって、キャッチアップ動作は本実施形態の情報処理方法の正当性に影響を与えない。
最後にTermination条件について説明する。本実施形態の情報処理方法は乱数等を利用するアルゴリズムであるため、確率的Terminationを満たすことを証明する。すなわち、過半数のサーバ装置10が正常な時、各順序番号のリクエストが永遠に決着しない確率は、限りなく0に近いことを証明する。
まず、過半数のサーバ装置10が正常な時には、各ラウンドの処理において、候補データを過半数以上集めることができる。したがって、決着に至るまでラウンド番号は増加し続けることになる。逆に、過半数のサーバ装置10が故障により停止した場合には、候補データを過半数集めることができなくなるため決着に至らなくなる(キャッチアップ動作を除く)。
Vrをそのラウンドの選択部15の処理の候補データとして現れたリクエストの種類の総数とする。ラウンドが進むにつれてVrは単調減少である(つまり、r<sのときVr≧Vs)。Vrが1となった場合、前述した通り次の変更部16の処理で決着する。そこで、Vrが1となるまでは、Vrが一定以上の確率で真に減少していくことが示せれば、確率的Termination条件が成立することが判る。実際、Vr>1のとき、選択部15の処理で候補データの過半数を占めないリクエストVが必ずある。リクエストVは変更部16の処理の開始時に、第2状態の候補データにはなり得ず、選択部15の処理で第1状態の候補データに選ばれない確率は各サーバ装置10で(1/N)以上である。したがって、すべてのサーバ装置10でリクエストVが変更部16の候補データに選ばれない確率は((1/N)^N)以上ある。すべてのサーバ装置10で変更部16の候補データに選ばれないと、次の選択部15の候補データに現れることはないため、その場合Vrは真に減少する。これで、確率的Termination条件が成立することが証明された。
ここで、本実施形態の選択部15及び変更部16の処理について補足する。選択部15の処理は、予備選挙に例えることができ、変更部16の処理は、信任選挙に例えることができる。これは、変更部16が、選択部15が第2状態にしたリクエストを含む候補データ(予備選挙で当選した候補データ)から、現順序番号に関連付けるリクエストを含む候補データを決定(信任選挙で決定)するためである。
次に、本実施形態の情報処理方法の性能について説明する。図16は、実施形態の情報処理方法の性能を示す図である。なお、図16では、参考までにBen’orの合意アルゴリズムによる結果についても示している。
図16は、Ben’orの合意アルゴリズムと、本実施形態の情報処理方法の性能の比較として、初期値が異なる場合に、同意を得るまでに要するラウンド数をシミュレーションした結果を示す。なお、シミュレーションは、非同期ネットワークモデルでのシミュレーションで行い、1000回のシミュレーション結果の平均値をとる。多重化するサーバ装置10の数を3〜29までについて評価した。
なお、本実施形態の情報処理方法と比較して、Ben’orの合意アルゴリズムには、下記の特徴がある。
・同意する値は、0か1のどちらかしかない。
・第2状態にできるリクエストがない場合、第2状態にできないことを他のサーバ装置10に通知する。
・乱拓は、任意の候補データの中から選ぶ。
・各サーバ装置10で順に各ラウンドを計算する(スキップしない)。
一方、本実施形態の情報処理方法には下記の特徴がある。
・同意する値として、2値ではなく多値が扱える。
・第2状態にできるリクエストがない場合、ランダムに選んだ第1状態の候補データを他のサーバ装置10に通知する。
・乱拓は、前のラウンドの第1状態の候補データの中からしか選ばない。
・現ラウンド番号より大きいラウンド番号を受信したとき、ラウンド番号を進める。
・自候補データが未決定の時、受信した候補データを自候補データとする。
非同期ネットワークモデルでは、各サーバ装置10は必ずしも一様に処理を実行するわけではない。例えば、サーバ装置10−1とサーバ装置10−2の実行の速度の比が100:1かもしれない。またあるときには、その比が1:100に逆転するかもしれない。また、ネットワーク30内で遅延が発生する可能性がある。シミュレーションでは、ある時点で各サーバ装置10の処理が進む確率をランダムに設定している。また、各サーバ装置10へのパケットの配送が進む確率もランダムに設定している。
Ben’orの合意アルゴリズムの場合、初期値は0か1しか選べないため、各サーバ装置10でランダムに与えるようにした。本実施形態の情報処理方法は、多値を扱えるため、初期値はすべてのサーバ装置10で異なる値とした。シミュレーション結果を比較すると、多重度が大きくなるにつれて、本実施形態の情報処理方法の優位性が明らかになる。また、Ben’orの合意アルゴリズムの場合、同意する値が0か1しかないが、本実施形態の情報処理方法では多値を扱えるという優位性がもともとある。
最後に、本実施形態のサーバ装置10及びクライアント装置20のハードウェア構成の一例について説明する。図17は、実施形態のサーバ装置10及びクライアント装置20のハードウェアの構成の一例を示す図である。
本実施形態のサーバ装置10及びクライアント装置20は、制御装置31、主記憶装置32、補助記憶装置33、表示装置34、入力装置35及び通信装置36を備える。制御装置31、主記憶装置32、補助記憶装置33、表示装置34、入力装置35及び通信装置36は、バス37を介して互いに接続されている。
制御装置31は、補助記憶装置33から主記憶装置32に読み出されたプログラムを実行する。主記憶装置32は、ROM(Read Only Memory)やRAM(Random Access Memory)等のメモリである。補助記憶装置33は、例えば、ハードディスクやメモリカード等である。表示装置34は、サーバ装置10及びクライアント装置20の状態等を表示する画面である。表示装置34は、例えば、液晶ディスプレイ等である。入力装置35は、サーバ装置10及びクライアント装置20を操作するためのインタフェースである。入力装置35は、例えば、キーボードやマウス等である。通信装置36は、ネットワークに接続するためのインタフェースである。
本実施形態のサーバ装置10及びクライアント装置20で実行されるプログラムを、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、メモリカード、CD−R及びDVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録し、コンピュータ・プログラム・プロダクトとして提供してもよい。また、本実施形態のサーバ装置10及びクライアント装置20で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供してもよい。また、本実施形態のサーバ装置10及びクライアント装置20で実行されるプログラムをダウンロードさせずに、インターネット等のネットワーク経由で提供、又は配布してもよい。また、本実施形態のサーバ装置10及びクライアント装置20のプログラムを、ROM等に予め組み込んで提供してもよい。
本実施形態のサーバ装置10で実行されるプログラムは、上述したサーバ装置10の各機能ブロックのうち、プログラムとしても実現可能な機能ブロック(受信部13、生成部14、選択部15、変更部16、同期部17及び送信部18)を含むモジュール構成となっている。
また、本実施形態のクライアント装置20で実行されるプログラムは、上述したクライアント装置20の送信部21を含むモジュール構成となっている。
当該モジュールは、実際のハードウェアとしては、制御装置31が上記記憶媒体からプログラムを読み出して実行することにより、上記各モジュールが主記憶装置32上にロードされる。すなわち、上記各モジュールは、主記憶装置32上に生成される。なお、サーバ装置10及びクライアント装置20の各機能ブロックの一部、又は全部を、プログラムにより実現せずに、IC(Integrated Circuit)等のハードウェアにより実現してもよい。
本実施形態の情報処理システム100によれば、各サーバ装置10が選択部15及び変更部16を備え、選択部15及び変更部16の処理を交互に繰り返すことにより、履歴データの現順序番号に関連付けるリクエストを決定することができる。これにより、どのような組み合わせの障害(サーバ装置の処理の遅延や停止、及びネットワークの輻輳やパケットロス等)があったとしても、サーバ装置10間のデータの一貫性が保証され、過半数のサーバ装置10が正常に動作する条件下であれば、現順序番号に関連付けるリクエストを一意に決定することができる。
本実施形態の情報処理システム100では、どのような組み合わせの障害があったとしても、履歴データの一貫性が失われないため、複数のサーバ装置10により多重化される情報の一貫性が失われない。また、本実施形態の情報処理システム100では、どのような組み合わせの障害があったとしても、サーバ装置10の情報処理方法(アルゴリズム)は対称であるため、単一故障点(Single Point of Failure)となるサーバ装置10がない。そのため、クライアント装置20は、任意のサーバ装置10にリクエストを送信することができる。
なお、本実施形態の情報処理方法の説明では、複数のサーバ装置10の間で履歴データの現順序番号に関連付けるリクエストを一意に決定する場合について説明した。しかしながら、本実施形態の情報処理方法は、サーバ装置10に限らず、パーソナルコンピュータ、仮想マシン、OS(Operating System)上のプロセスなどにも適用可能である。同様に、クライアント装置20を、パーソナルコンピュータ、仮想マシン、OS(Operating System)上のプロセスなどにすることも可能である。また、ネットワーク30は、LANの他に、インターネットなどの広域ネットワーク(WAN)であってもよいし、仮想ネットワークやプロセス間通信(IPC)などでもよい。
また、本実施形態の情報処理方法の説明では、選択部15及び変更部16の閾値を同一としたが、選択部15の閾値を第1閾値とし、変更部16の閾値を第2閾値として、選択部15と変更部16とで値の異なる閾値を設定してもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
10 サーバ装置
11 第1記憶部
12 第2記憶部
13 受信部
14 生成部
15 選択部
16 変更部
17 同期部
18 送信部
20 クライアント装置
30 ネットワーク
31 制御装置
32 主記憶装置
33 補助記憶装置
34 表示装置
35 入力装置
36 通信装置
37 バス

Claims (13)

  1. 1以上のクライアント装置と、データを記憶するN以上(Nは3以上の整数)のサーバ装置とを備える情報処理システムであって、
    前記クライアント装置は、
    前記データの変更内容を示すリクエストを前記サーバ装置に送信する送信部を備え、
    前記サーバ装置は、
    前記リクエストと、前記リクエストの変更内容に基づいて前記データを変更する順序を示す順序番号とを関連付けた履歴データと、前記データとを記憶する第1記憶部と、
    前記リクエストを前記クライアント装置から受信し、まだ使用されていない前記順序番号を示す現順序番号と、前記現順序番号を使用して履歴データに登録する候補となる前記リクエストと、前記リクエストの状態とを含む候補データを他の前記サーバ装置から受信する受信部と、
    前記クライアント装置から受信した前記リクエストの状態を第1状態に決定し、前記第1状態のリクエストと、前記現順序番号とを含む候補データを生成する生成部と、
    前記候補データの前記リクエストのうち前記変更内容が同一の前記リクエストの数が第1閾値より大きい場合、前記変更内容が同一のリクエストのうち一の前記リクエストを選択し、選択された前記リクエストの状態を第2状態に決定する選択部と、
    選択された前記リクエストを含む前記候補データを他の前記サーバ装置に送信する送信部と、
    前記候補データの前記リクエストのうち、状態が前記第2状態の前記リクエストの数が第2閾値より大きい場合、前記第2状態の前記リクエストを含む前記候補データのうち一の前記候補データを使用して前記履歴データを更新するとともに前記データを変更する変更部と、
    を備える情報処理システム。
  2. 前記第1閾値と前記第2閾値とは、N/2である
    請求項1に記載の情報処理システム。
  3. 前記選択部は、
    前記候補データの前記リクエストのうち前記変更内容が相異なるものがある場合、一の前記候補データを選択し、
    前記送信部は、
    選択された前記候補データを他の前記サーバ装置に送信する
    請求項1又は2に記載の情報処理システム。
  4. 前記変更部は、
    前記候補データの前記リクエストのうち、前記第1状態の前記リクエストを含む前記候補データと、前記第2状態の前記リクエストを含む前記候補データとが共にある場合、前記第2状態の前記リクエストを含む前記候補データのうち一の前記候補データを選択し、選択された前記候補データの前記リクエストの状態を第1状態に決定し、
    前記送信部は、
    選択された前記リクエストを含む前記候補データを他の前記サーバ装置に送信する
    請求項1乃至3のいずれか1項に記載の情報処理システム。
  5. 前記変更部は、
    前記候補データの前記リクエストのうち、状態が前記第1状態の前記リクエストの数が第2閾値より大きい場合、一の前記候補データを選択し、
    前記送信部は、
    選択された前記候補データを他の前記サーバ装置に送信する
    請求項1乃至4のいずれか1項に記載の情報処理システム。
  6. 前記受信部は、
    自身の前記サーバ装置で前記候補データを決定していない場合、他の前記サーバ装置から受信した前記候補データに含まれるリクエストの状態を第1状態に決定し、自身の前記サーバ装置の前記候補データにする
    請求項1乃至5のいずれか1項に記載の情報処理システム。
  7. 前記サーバ装置は、
    前記候補データを一時的に記憶する第2記憶部を更に備え、
    前記受信部は、
    他の前記サーバ装置から受信した前記候補データを前記第2記憶部に記憶し、
    前記選択部は、
    前記選択部が選択しなかった前記リクエストを含む候補データを前記第2記憶部から削除し、
    前記変更部は、
    前記変更部が選択しなかった前記候補データを前記第2記憶部から削除する
    請求項1乃至6のいずれか1項に記載の情報処理システム。
  8. 前記受信部が他の前記サーバ装置から受信した前記候補データの前記現順序番号が、前記履歴データの現順序番号よりも大きい場合、前記第2記憶部の前記候補データを削除し、前記現順序番号を送信した他の前記サーバ装置に、前記履歴データの送信を依頼する同期部を
    更に備える請求項7に記載の情報処理システム。
  9. 前記受信部は、
    他の前記サーバ装置が前記履歴データを更新したときに、他の前記サーバ装置から前記現順序番号を受信し、
    前記同期部は、
    他の前記サーバ装置から受信した前記現順序番号が、前記履歴データの現順序番号よりも大きい場合、前記第2記憶部の前記候補データを削除し、前記現順序番号を送信した他の前記サーバ装置に、前記履歴データの送信を依頼し、
    前記変更部は、
    前記履歴データを更新したときに、前記現順序番号を1増やし、1増やした後の前記順序番号を他の前記サーバ装置に送信する
    請求項8に記載の情報処理システム。
  10. 前記生成部は、
    初期値を設定したラウンド番号を更に含めて前記候補データを生成し、
    前記第2記憶部は、
    最新のラウンド番号を現ラウンド番号として更に記憶し、
    前記選択部は、
    選択した前記候補データの前記ラウンド番号を1増やすとともに、1増やした後の前記ラウンド番号を前記現ラウンド番号として第2記憶部に記憶し、
    前記変更部は、
    選択した前記候補データの前記ラウンド番号を1増やすとともに、1増やした後の前記ラウンド番号を前記現ラウンド番号として第2記憶部に記憶し、選択した前記候補データを使用して前記履歴データを更新するときに前記現ラウンド番号を初期値に戻し、
    前記同期部は、
    前記受信部が前記候補データを受信したときに、受信した前記候補データの前記ラウンド番号が、前記現ラウンド番号よりも大きい場合、前記第2記憶部の前記候補データを削除し、受信した前記候補データを前記第2記憶部に記憶するとともに、前記現ラウンド番号を受信した前記候補データの前記ラウンド番号にする
    請求項8又は9に記載の情報処理システム。
  11. クライアント装置からデータの変更内容を示すリクエストを受信するサーバ装置であって、
    前記リクエストと、前記リクエストの変更内容に基づいて前記データを変更する順序を示す順序番号とを関連付けた履歴データと、前記データとを記憶する第1記憶部と、
    前記リクエストを前記クライアント装置から受信し、まだ使用されていない前記順序番号を示す現順序番号と、前記現順序番号を使用して履歴データに登録する候補となる前記リクエストと、前記リクエストの状態とを含む候補データを他の前記サーバ装置から受信する受信部と、
    前記クライアント装置から受信した前記リクエストの状態を第1状態に決定し、前記第1状態のリクエストと、前記現順序番号とを含む候補データを生成する生成部と、
    前記候補データの前記リクエストのうち前記変更内容が同一の前記リクエストの数が第1閾値より大きい場合、前記変更内容が同一のリクエストのうち一の前記リクエストを選択し、選択された前記リクエストの状態を第2状態に決定する選択部と、
    選択された前記リクエストを含む前記候補データを他の前記サーバ装置に送信する送信部と、
    前記候補データの前記リクエストのうち、状態が前記第2状態の前記リクエストの数が第2閾値より大きい場合、前記第2状態の前記リクエストを含む前記候補データのうち一の前記候補データを使用して前記履歴データを更新するとともに前記データを変更する変更部と、
    を備えるサーバ装置。
  12. 1以上のクライアント装置と、データを記憶するN以上(Nは3以上の整数)のサーバ装置とを備える情報処理システムの情報処理方法であって、
    クライアント装置が、前記データの変更内容を示すリクエストを前記サーバ装置に送信するステップと、
    サーバ装置が、前記リクエストと、前記リクエストの変更内容に基づいて前記データを変更する順序を示す順序番号とを関連付けた履歴データと、前記データとを記憶するステップと、
    サーバ装置が、前記リクエストを前記クライアント装置から受信し、まだ使用されていない前記順序番号を示す現順序番号と、前記現順序番号を使用して履歴データに登録する候補となる前記リクエストと、前記リクエストの状態とを含む候補データを他の前記サーバ装置から受信するステップと、
    サーバ装置が、前記クライアント装置から受信した前記リクエストの状態を第1状態に決定し、前記第1状態のリクエストと、前記現順序番号とを含む候補データを生成するステップと、
    サーバ装置が、前記候補データの前記リクエストのうち前記変更内容が同一の前記リクエストの数が第1閾値より大きい場合、前記変更内容が同一のリクエストのうち一の前記リクエストを選択し、選択された前記リクエストの状態を第2状態に決定するステップと、
    サーバ装置が、選択された前記リクエストを含む前記候補データを他の前記サーバ装置に送信するステップと、
    サーバ装置が、前記候補データの前記リクエストのうち、状態が前記第2状態の前記リクエストの数が第2閾値より大きい場合、前記第2状態の前記リクエストを含む前記候補データのうち一の前記候補データを使用して前記履歴データを更新するとともに前記データを変更するステップと、
    を含む情報処理方法。
  13. データの変更内容を示すリクエストと、前記リクエストを記憶する順序を示す順序番号とを関連付けた履歴データを記憶する第1記憶部を備え、クライアント装置から前記リクエストを受信するサーバ装置を、
    前記リクエストを前記クライアント装置から受信し、まだ使用されていない前記順序番号を示す現順序番号と、前記現順序番号を使用して履歴データに登録する候補となる前記リクエストと、前記リクエストの状態とを含む候補データを他の前記サーバ装置から受信する受信部と、
    前記クライアント装置から受信した前記リクエストの状態を第1状態に決定し、前記第1状態のリクエストと、前記現順序番号とを含む候補データを生成する生成部と、
    前記候補データの前記リクエストのうち前記変更内容が同一の前記リクエストの数が第1閾値より大きい場合、前記変更内容が同一のリクエストのうち一の前記リクエストを選択し、選択された前記リクエストの状態を第2状態に決定する選択部と、
    選択された前記リクエストを含む前記候補データを他の前記サーバ装置に送信する送信部と、
    前記候補データの前記リクエストのうち、状態が前記第2状態の前記リクエストの数が第2閾値より大きい場合、前記第2状態の前記リクエストを含む前記候補データのうち一の前記候補データを使用して前記履歴データを更新するとともに前記データを変更する変更部
    として機能させるためのプログラム。
JP2015535209A 2013-09-04 2013-09-04 情報処理システム、サーバ装置、情報処理方法及びプログラム Active JP6100384B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/073847 WO2015033410A1 (ja) 2013-09-04 2013-09-04 情報処理システム、サーバ装置、情報処理方法及びプログラム

Publications (2)

Publication Number Publication Date
JPWO2015033410A1 JPWO2015033410A1 (ja) 2017-03-02
JP6100384B2 true JP6100384B2 (ja) 2017-03-22

Family

ID=52627919

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015535209A Active JP6100384B2 (ja) 2013-09-04 2013-09-04 情報処理システム、サーバ装置、情報処理方法及びプログラム

Country Status (3)

Country Link
US (1) US10165086B2 (ja)
JP (1) JP6100384B2 (ja)
WO (1) WO2015033410A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015140942A1 (ja) 2014-03-18 2015-09-24 株式会社東芝 情報処理システム、サーバ装置、情報処理方法およびプログラム
JP6203407B2 (ja) 2014-08-05 2017-09-27 株式会社東芝 整列装置、データ処理装置、プログラム、整列方法および多重化システム
CN105657473A (zh) * 2015-11-25 2016-06-08 乐视云计算有限公司 数据处理的方法和装置

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2534430B2 (ja) * 1992-04-15 1996-09-18 インターナショナル・ビジネス・マシーンズ・コーポレイション フォ―ルト・トレランスのあるコンピュ―タ・システム出力の合致を達成するための方法
US6178522B1 (en) 1998-06-02 2001-01-23 Alliedsignal Inc. Method and apparatus for managing redundant computer-based systems for fault tolerant computing
DE19921179C2 (de) 1999-05-07 2002-04-25 Astrium Gmbh Logikeinheit nach byzantinem Algorithmus, Rechnereinheit mit solcher Logikeinheit, Verbund aus Logik- oder Rechnereinheiten und Verfahren zum Betreiben eines solchen Verbunds
JP3831154B2 (ja) 1999-08-13 2006-10-11 株式会社東芝 プログラム多重化拡大方法
JP4060522B2 (ja) 2000-09-29 2008-03-12 株式会社東芝 分散コンピュータシステム及び同システムにおけるコンピュータ状態の多重化記憶方法
JP3655263B2 (ja) 2001-06-15 2005-06-02 株式会社東芝 分散システムおよび同システムの多重化制御方法
US7272632B2 (en) * 2001-06-15 2007-09-18 Kabushiki Kaisha Toshiba Distributed system and multiplexing control method for the system
JP4278434B2 (ja) * 2003-05-19 2009-06-17 パナソニック株式会社 通信装置、情報共有システムおよび情報共有方法
DE102004046292A1 (de) 2004-09-24 2006-03-30 Robert Bosch Gmbh Verfahren zur Durchführung eines Votings von redundanten Informationen
JP2007219598A (ja) 2006-02-14 2007-08-30 Nippon Telegr & Teleph Corp <Ntt> 多重化データベースシステム及びその同期化方法、データベースサーバ、並びに、データベースサーバプログラム
JP4612714B2 (ja) * 2008-08-12 2011-01-12 株式会社日立製作所 データ処理方法、クラスタシステム、及びデータ処理プログラム
JP4818349B2 (ja) * 2008-12-24 2011-11-16 株式会社東芝 分散システムおよび同システムの多重化制御方法
JP4956603B2 (ja) 2009-12-04 2012-06-20 株式会社東芝 分散システムおよび論理時間調整方法
JP4981951B2 (ja) * 2010-06-02 2012-07-25 株式会社トライテック 分散コンピューティングシステム
JP5613119B2 (ja) 2011-07-26 2014-10-22 日本電信電話株式会社 マスター/スレーブシステム、制御装置、マスター/スレーブ切替方法、および、マスター/スレーブ切替プログラム
WO2015140942A1 (ja) 2014-03-18 2015-09-24 株式会社東芝 情報処理システム、サーバ装置、情報処理方法およびプログラム
JP6203407B2 (ja) 2014-08-05 2017-09-27 株式会社東芝 整列装置、データ処理装置、プログラム、整列方法および多重化システム

Also Published As

Publication number Publication date
WO2015033410A1 (ja) 2015-03-12
US20160191676A1 (en) 2016-06-30
JPWO2015033410A1 (ja) 2017-03-02
US10165086B2 (en) 2018-12-25

Similar Documents

Publication Publication Date Title
US10225145B2 (en) Method and device for updating client
Zhang et al. BFTCloud: A byzantine fault tolerance framework for voluntary-resource cloud computing
CN108173774B (zh) 一种客户端的升级方法及系统
US10572285B2 (en) Method and apparatus for elastically scaling virtual machine cluster
CN104052803A (zh) 一种去中心化的分布式渲染方法及渲染系统
EP3629522B1 (en) Systems and methods for testing resilience of a distributed network
CN104866339A (zh) Fota数据的分布式持久化管理方法、系统和装置
CN108810125B (zh) 物理节点的服务发现方法及系统
JP6100384B2 (ja) 情報処理システム、サーバ装置、情報処理方法及びプログラム
JP6405255B2 (ja) 通信システム、キュー管理サーバ、及び、通信方法
CN109445827A (zh) 一种游戏更新的方法及装置、电子设备、存储介质
US10216593B2 (en) Distributed processing system for use in application migration
CN111147605B (zh) 服务注册方法、装置和设备
US10817512B2 (en) Standing queries in memory
CN112040015B (zh) 一种共识节点列表生成方法及相关装置
CN104333614B (zh) 终端识别的方法、装置及系统
WO2022018808A1 (ja) 負荷分散方法、負荷分散装置、負荷分散システムおよびプログラム
CN113032188B (zh) 确定主服务器的方法、装置、服务器及存储介质
JP6063882B2 (ja) 仮想マシン配置システム及び方法
JP6151365B2 (ja) 情報処理システム、情報処理方法及びプログラム
CN109962963B (zh) 消息处理方法及装置
Jeevarani et al. Improved consistency model in cloud computing databases
CN110784518A (zh) 一种静态资源获取方法与装置
JP6572574B2 (ja) ストレージ制御システム、ストレージ制御システムのノード、およびストレージ制御方法
JP6088452B2 (ja) データベースシステムおよびデータ更新方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161202

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170124

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170222

R150 Certificate of patent or registration of utility model

Ref document number: 6100384

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350