(58)【調査した分野】(Int.Cl.,DB名)
1又は複数のサーバを有し、各クライアントから要求されるトランザクションを処理するトランザクション制御システムにおいて、前記トランザクション制御システムに含まれる処理装置が行うトランザクション制御方法であって、
前記トランザクションを処理する1又は複数の処理部が起動された場合、該処理部に関する第1情報を取得する取得ステップと、
前記クライアントからトランザクションとともに処理部へのルーティングに関する第2情報を受け付ける受付ステップと、
受け付けられた前記第2情報と、取得された前記第1情報とに基づいて決定した処理部に、前記トランザクションをルーティングするルーティングステップと、
を有し、
前記ルーティングステップは、
機能ごとにキューを有し、所定の機能を示す第2情報とともにトランザクションをクライアントから受け付けた場合、前記第1情報及び前記第2情報に基づいて、該第2情報が示す所定の機能に対応するキューに関連付けられた前記処理部の群の中から、ルーティングする処理部を決定する、トランザクション制御方法。
【発明を実施するための形態】
【0020】
以下、本発明の実施の形態について図面を参照しつつ詳細に説明する。なお、同一の要素には同一の符号を付し、重複する説明を省略する。また、以下の実施の形態は、本発明を説明するための例示であり、本発明をその実施の形態のみに限定する趣旨ではない。さらに、本発明は、その要旨を逸脱しない限り、さまざまな変形が可能である。
【0021】
<クラウド環境>
図1は、本発明によるトランザクション制御システム1の前提となるクラウドコンピューティング環境(クラウド環境)の概略構成を示す図である。同図に示すように、クラウドコンピューティング環境においては、ユーザ端末装置12がネットワークNを介してクラウド10に接続される。
【0022】
クラウド10は、ソフトウェアやハードウェア、データ保管領域などのコンピューティングリソースの利用を、ネットワークNを通じてサービスとして利用者に提供するシステムの総称であり、一般的には、大規模なデータセンターや、その中で運用されている複数のサーバ装置などを含む。
【0023】
ASPサービスやユーティリティコンピューティング、グリッドコンピューティング、SaaS、PaaS、又はBaaSなどを包含した、より包括的な概念であるともいえる。ユーザ端末装置12の側から見れば、クラウド10は、ネットワークNの向こう側にあり、ユーザ端末装置12に何らかのサービスを提供するコンピュータリソースの総称であるともいえる。本実施形態は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドを含む、あらゆるクラウド環境に適用可能である。
【0024】
好適には、クラウド10内のネットワーク上に分散して存在する物理的なディスクや物理的なサーバは、仮想化して論理的に管理される。さらに、仮想化して管理されるリソースのうち、稼動していないものはリソースプールに登録しておき、トランザクション制御システム1は、変動する要求を予め予測し、リソースプールから適切にリソースを割当てる。そして、トランザクション制御システム1は、タスクを割り振って、スケーラブルなサービス提供を保障する。
【0025】
ユーザ端末装置12は、利用者がクラウド10を利用するための端末装置であり、ネットワークNへの接続環境とユーザ端末装置12上で動くブラウザを含む。このようなユーザ端末装置12としては、パーソナルコンピュータ(PC)、携帯情報端末装置(PDA)、タブレット型端末装置、携帯電話機、スマートフォンなどを含む。
【0026】
ネットワークNは、クラウド10とユーザ端末装置12との間でデータ等を送受信するための通信回線である。例えば、インターネット、LAN、専用線、パケット通信網、電話回線、企業内ネットワーク、その他の通信回線、それらの組み合わせ等のいずれであってもよく、有線であるか無線であるかを問わない。
【0027】
図2は、本発明によるトランザクション制御システム1の前提となる仮想化技術及び分散化技術の概要を示す図である。同図に示すように、物理的なコンピュータ装置20の群は、分散化技術により、コンピュータ装置20の群で機能や処理を分散させながら、あたかも一台のコンピュータ22のように動作する。例えば、コンピュータ装置20の群は、ネットワーク221を通じて、仮想的な1台のハードウェア222の上でオペレーティング・システム(OS)223が動いているように動作する。
【0028】
また、仮想化技術により、一台のコンピュータ22のように動作するコンピュータ装置20の群を、仮想的に複数のコンピュータ(サーバを含む)24として利用することができる。つまり、ハードウェアのソフトウェア化である。この仮想化技術によって、仮想化されたサーバ24をコピーすれば、同じサーバのレプリケーション(複製)を作成できるため、サーバイメージをコピーすることによって、必要なサーバ数を確保することができるようになる。
【0029】
また、サーバ数を減らす場合は、サーバイメージを削除すればよい。仮想化の一例としては、
図2に示すように、KVM(Kernel−based Virtual Machine)と呼ばれる仮想化ソフト224上でOS225が動く。そのOS225の上では、Java Virtual Machine(JVM。なお、Javaは登録商標。)のような別の仮想化環境226が動き、その上でミドルウェア227があり、アプリケーション228が動く。
【0030】
<ハードウェア構成>
図3は、実施形態におけるコンピュータ装置20の概略ハードウェア構成の一例を示すブロック図である。
図3に示すように、コンピュータ装置20は、CPU(Central Processing Unit)302と、RAM(Random Access Memory)304と、ROM(Read only Memory)306と、ドライブ装置308と、ネットワークI/F(Interface)310と、入力装置312と、を有する。これら各構成は、バスを介して相互にデータ送受信可能に接続されている。
【0031】
CPU302は、コンピュータ装置の中で、各装置の制御やデータの演算、加工を行う制御部である。また、CPU302は、RAM304又はROM306に記憶されたプログラムを実行する演算装置である。
【0032】
RAM304は、例えば主記憶部などである。RAM304は、CPU302が実行する基本ソフトウェアであるOS(Operating System)やアプリケーションソフトウェアなどのプログラムやデータを記憶又は一時保存する記憶装置である。
【0033】
ROM306は、例えばアプリケーションソフトウェアなどに関連するデータを記憶する記憶装置である。
【0034】
ドライブ装置308は、記録媒体316、例えばCD−ROMやSDカードなどからプログラムやデータを読み出し、記憶装置にインストールしたりダウンロードしたりする。
【0035】
また、記録媒体316に、所定のプログラムを格納し、この記録媒体316に格納されたプログラムはドライブ装置308を介してコンピュータ装置20にインストールされる。インストールされた所定のプログラムは、コンピュータ装置20により実行可能となる。
【0036】
ネットワークI/F310は、通信機能を有する周辺機器とコンピュータ装置20とのインターフェースである。また、ネットワークI/F310は、例えば、有線及び/又は無線回線などのデータ伝送路により構築されたLAN(Local Area Network)、WAN(Wide Area Network)などのネットワークを介して接続される。
【0037】
入力装置312は、カーソルキー、数字入力及び各種機能キー等を備えたキーボード等を有する。
【0038】
以上のように、コンピュータ装置20は、コンピュータの動作や処理を制御するためのCPUなどの処理装置、データの格納や処理の作業領域として機能するメモリや記憶装置、入出力インターフェース、通信インターフェース、及びこれらを結ぶバスを含むことが好ましい。
【0039】
また、コンピュータ装置20の群は、単一のコンピュータより構成されるものであっても、ネットワーク上に分散した複数のコンピュータより構成されるものであってもよい。各コンピュータは、処理装置がメモリまたは記憶装置などに記憶された所定のプログラムを実行することにより、各種機能実現手段として各コンピュータを機能させる。
【0040】
<機能構成>
図4は、実施形態によるトランザクション制御システム1の概略機能構成の一例を示すブロック図である。
図4に示すように、トランザクション制御システム1は、ルーティン部402、認証部404、処理部406A、406B、DB408、管理部410等を有する。処理部について、それぞれの区別が必要ない場合は、符号406が用いられる。
【0041】
それぞれの機能は、各コンピュータ装置20に実装されてもよいし、複数の機能が1つのコンピュータ装置20に実装されてもよい。例えば、処理部406A、406Bは、1つのコンピュータ装置20に実装されてもよい。また、各部は、例えばコンピュータ装置20のCPU302やRAM304、ROM306などにより実現されうる。
【0042】
トランザクション制御システム1は、ユーザ端末装置(以下、クライアントとも言う。)12A〜Cのブラウザではなく、所定のアプリケーションからの要求に基づいて動作する。そのため、トランザクション制御システム1は、クライアント12A〜Cとの間において、アプリケーションに必要な情報のやり取りを行う。クライアントについて、それぞれを区別する必要がない場合は、符号12が用いられる。
【0043】
クライアント12は、例えばウェアラブル端末や、パソコンやタブレットやスマートフォンのアプリケーション、又は車載組み込み機器などである。これらのクライアント12は、インストールされたアプリケーションなどからトランザクションを要求する。このとき、クライアント12は、トランザクションのルーティングに関するルーティングキー(Routing Key)をトランザクションに付与して要求する。以下、ルーティングキーは、第2情報とも称す。
【0044】
ルーティング部402は、トランザクションルーター(Transaction Router)としての機能を有する。ルーティング部402は、クライアント12からの要求を受け付ける。このとき、ルーティング部402は、第2情報をトランザクションの要求と合わせて受け付ける。
【0045】
ルーティング部402は、所定のクライアントから第2情報を取得すると、この第2情報と、後述する管理部410により付与された第1情報とに基づいて、トランザクションが割り振られる処理部406を決定し、トランザクションをルーティングする。この制御を行うことで、トランザクション制御システム1は、稼働中の処理部に適切にルーティングすることができ、無停止状態のサービスを提供することが可能になる。
【0046】
ルーティング部402は、トランザクションの結果を、このトランザクションを要求した所定のクライアントに通知する。
【0047】
ルーティング部402は、機能ごとに対応するキュー(Queue)を有する。このキューには、そのキューに対応する機能を実行する処理部406の群が関連付けられる。この場合、ルーティング部402は、機能を示す第2情報とトランザクションとをクライアント12から取得し、機能に対応するキューにトランザクションを入れる。キューから出されるトランザクションは、そのキューに対応する処理部406にルーティングされる。このときの第2情報は、トランザクションの機能を示す情報であってもよい。
【0048】
ここで、ルーティング部402の割り振り先について具体的に説明する。例えば、ルーティング部402は、単純なクラウド系トランザクションを、直接DB408に割り振る。これにより、セーブデータの保存、検索などの単純なデータアクセスは、ノンプログラミングで実現することができるだけではなく、レイテンシを最小化させることができる。
【0049】
また、ルーティング部402は、サーバ側ロジックと連携するため、処理部406にトランザクションを割り振る。このとき、クライアント12からは、割り振って欲しい処理部を識別するために、第2情報が指定される。
【0050】
ルーティング部402は、この第2情報を基に、トランザクションを適切な処理部406に割り振る。アクセスの集中が予測される機能の場合には、事前に同じ第2情報で動作する処理部406が複数用意されることで、スループットを上げることができる。
【0051】
さらに、ルーティング部402は、クライアント間通信をサポートする。ルーティング部402は、クライアント間通信に対して、1:Nの同報通信をサポートし、チャットやMMO(Massively Multiplayer Online)などの同期型アプリケーションをサポートする。
【0052】
なお、ルーティング部402は、他のルーティング部と連携することも可能である。これにより、ルーティング部同士を複数組み合わせることで、遠隔地にあるルーティング部同士の連携や、特別な機能を持つ処理部の群やダイレクトDB機能との連携を行うことができる。
【0053】
認証部404は、ユーザ認証を行い、認証については、例えばOAuth2により行われる。また、認証部404は、ソーシャルネットワークなどとの連携を行い、ユーザ登録をすることなく、内部的にPlayerID、端末IDを自動発行するとともにPlayerIDと端末IDとの紐付登録を行うことで、異なるデバイス間でセーブデータの共有を行うことができる。また、認証部404は、なりすまし防止として、例えばX.509証明書を使い、改ざん防止を行う。
【0054】
処理部406は、ワーカー(Worker)とも呼ばれ、クライアント12が要求したトランザクションを処理する。処理部406には、ルーティングに関する第2情報が付与されている。処理部406は、トランザクション制御システム1に登録されれば実現される。この処理部406の作成は、開発者のローカル端末で行うことでき、トランザクション制御システム1に登録することができる。
【0055】
処理部406が登録された後、処理部406の数と稼働させるインスタンスが指定されると、トランザクション制御システム1と処理部406とが接続され、クライアント12からのトランザクションが流れる。処理部406には、それぞれ第2情報が与えられており、同じ第2情報を持つ処理部406に対して、ルーティング部402は、順番にトランザクションを割り振る。よって、同じソースコードの処理部406だけではなく、異なるソースコードの処理部406であっても、第2情報が同じであれば、順番にトランザクションが割り振られる。
【0056】
なお、処理部406は、SDK(Software Development Kit)が提供され、SDKには処理部406を実行するためのライブラリやトランザクション制御システム1にデプロイするためのツールが含まれる。処理部406を実行するために必要なモジュール類は、処理部406の実行環境であるコンテナにインストールしておくことで、デプロイ後すぐに処理部406が実行可能となる。
【0057】
処理部406のバージョン管理について、トランザクション制御システムにデプロイされた処理部406は、コンテナは、内部でバージョン管理される。後述するように、このバージョン切り替えは、無停止で実行することができる。
【0058】
処理部406は、それぞれ分離されたコンテナで動作するため、同じインスタンスを共有しつつ相互に隔離された環境で動作する。これにより、処理部406は、必要最低限のインスタンスで動作させることが可能になる。
【0059】
DB408は、サービスに関するデータを保持するデータベースである。DB408は、このDBに対するアクセス制御をユーザごとに指定することができる。DB408は、例えばCloud Datastore、Cloud SQL(登録商標)、BigQuery(登録商標)、MongoDB(登録商標)、redis、MySQL(登録商標)などである。
【0060】
管理部410は、処理部406の起動、停止を制御し、処理部406に関する第1情報を付与する。例えば、第1情報とは、バージョンを示すバージョン情報や、クライアントアプリケーションの審査又は本番を示す情報などである。審査とは、例えば、アプリケーション提供側が行う審査であり、市場に提供するに値するか否かの審査である。本番とは、例えば市場にアプリケーションを提供した後の処理である。
【0061】
管理部410は、処理部406のバージョン切り替えが行われる場合、旧バージョンの処理部406に停止指示を出し、これらの処理部406が全て停止したかどうかを確認する。
【0062】
管理部410は、トランザクションの割り振り停止を予測した後、旧バージョンの処理部406に関連づけられているキューの状況とルーティングキーとを使って、停止を指示するトランザクションを、キュー経由で旧バージョンの処理部406に投入する。これにより、旧バージョンの処理部406が停止する。
【0063】
次に、エンドノード間の同報通信について説明する。トランザクション制御システム1におけるエンドノードとは、処理部406とクライアント12である。このエンドノード間でPub/Sub型の効率のよい同報通信が行われる。
【0064】
同報通信は、ルーティングキーをベースにグループ化される。そのため、トランザクション制御システム1内で接続されたエンドノード同士で、仮想的に複数のチャネルを設定して通信することができる。
【0065】
ルーティング部402は、管理部410から、第2情報は同じであるがバージョン情報が異なる処理部406への切り替えと、処理部406の異なるバージョン情報が通知された場合、クライアント12からトランザクションとともに第2情報を取得すると、トランザクションを、異なるバージョン情報の処理部406に切り替えてルーティングする。
【0066】
これにより、バージョン切り替えが行われる際に、無停止状態でのバージョン切り替えが可能となる。
【0067】
また、ルーティング部402は、管理部410から、審査を示す第1情報が通知された場合、クライアント12からトランザクションとともに第2情報を取得すると、このトランザクションを、審査に対応する処理部406にルーティングする。
【0068】
また、ルーティング部402は、管理部410から、本番を示す第1情報が通知された場合、クライアント12からトランザクションとともに第2情報を取得すると、トランザクションを、本番に対応する処理部406にルーティングする。
【0069】
これにより、アプリケーションの審査用のトランザクションを処理する処理部と、実際に運用が開始された後の本番で処理される処理部とを適切に切り分けることができる。よって、アプリケーションが市場に提供された後に審査が必要になった場合でも、本番の処理は実行しつつも、審査の処理を実行することが可能となるので、無停止状態を維持することができる。
【0070】
さらに、ルーティング部402は、所定の機能におけるトランザクションをクライアント12から要求された場合、この所定の機能に対応するキューに関連付けられた処理部406の群の中から、第1情報及び第2情報に基づいてルーティングする処理部406を決定する。
【0071】
これにより、機能別の処理部406の群が適切なキューに接続されているので、同じキューに接続された処理部406は、必ずしも同じプログラムである必要がなくなる。これを利用すると、トランザクション制御システム1は、ランダムに動作するアルゴリズムを変える仕組みを提供することも可能になる。
【0072】
<動作>
次に、実施形態におけるトランザクション制御システム1の動作について説明する。
【0073】
≪トランザクションの割り振り≫
図5は、実施形態におけるトランザクションの割り振り処理の一例を示すシーケンス図である。
図5に示すステップS102で、クライアント12は、機能Aのトランザクションをルーティング部402に要求する。ルーティング部402では、機能ごとに個別のキューを有する。
【0074】
ステップS104で、ルーティング部402は、機能Aのキューにトランザクションを入れ、機能Aのキューに関連付けられた機能Aを処理する処理部406Aにトランザクションを割り振り、ルーティングする。
【0075】
ステップS106で、処理部406Aは、トランザクションの処理結果をルーティング部402に返す。
【0076】
ステップS108で、ルーティング部402は、トランザクションの処理結果をクライアント12に返す。
【0077】
ステップS110で、クライアント12は、機能Bのトランザクションをルーティング部402に要求する。
【0078】
ステップS112で、ルーティング部402は、機能Bのキューにトランザクションを入れ、機能Bのキューに関連付けられた機能Bを処理する処理部406Bにトランザクションを割り振り、ルーティングする。
【0079】
ステップS114で、処理部406Bは、トランザクションの処理結果をルーティング部402に返す。
【0080】
ステップS116で、ルーティング部402は、トランザクションの処理結果をクライアント12に返す。
【0081】
ステップS118で、クライアント12は、機能Bのトランザクションをルーティング部402に要求する。
【0082】
ステップS120で、ルーティング部402は、機能Bのキューにトランザクションを入れ、機能Bのキューに関連付けられた機能Bを処理する処理部406B’にトランザクションを割り振り、ルーティングする。このとき、機能Bのキューには複数の処理部406が関連づけられており、ステップS120では、ステップS112とは異なる処理部に割り振られる。異なる処理部に割り振る理由は、負荷分散等を考慮し、順番に各処理部に処理させるためである。
【0083】
ステップS114で、処理部406B’は、トランザクションの処理結果をルーティング部402に返す。
【0084】
ステップS116で、ルーティング部402は、トランザクションの処理結果をクライアント12に返す。
【0085】
以上より、ルーティング部402は、最終的な割り振りは、第2情報を使って処理部406の種別をさらに細かく行うことができる。また、ルーティング部402は、処理部406に関する第1情報を用いることで、ユースケースに沿ったクライアントのOS毎やさらに細かいルーティングを行うことができる。
【0086】
≪バージョン切り替え≫
図6は、実施形態におけるバージョン切り替え処理の一例を示すシーケンス図である。
図6に示すステップS202で、クライアント12は、第2情報とともにトランザクションをルーティング部402に要求する。
【0087】
ステップS204で、ルーティング部402は、管理部410から予め通知されている第1情報をもとに、処理部406Aにトランザクションを割り振る。ルーティング部402は、第1情報を第2情報に付与してルーティングしてもよい。ルーティング部402は、処理部406Aに対応する第1情報が管理部410から通知されている。
【0088】
ステップS206で、処理部406Aは、トランザクションの処理結果をルーティング部402に返す。
【0089】
ステップS208で、ルーティング部402は、トランザクションの処理結果をクライアント12に返す。
【0090】
ステップS210で、管理部410は、管理者等から指定された個数分新たな処理部406Bを起動させる。このとき、管理部410は、新たな処理部406Bにバージョン情報(v2:第1情報)を付与する。
【0091】
ステップS212で、処理部406Bは、起動が完了した旨の通知を管理部410に返す。
【0092】
ステップS214で、管理部410は、処理部の切り替えと、新たな処理部406Bに付与されたバージョン情報を、ルーティング部402に通知する。このとき、管理部410は、処理部406Bが使うべきキューを通知する。
【0093】
ステップS216で、ルーティング部402は、バージョン切り替えが完了すると、切替完了を管理部410に通知する。同時に、ルーティング部402は、旧バージョンの処理部406Aにトランザクションの割り振りを行わず、新しいバージョンに割当を行う。
【0094】
ステップS218で、クライアント12は、従前の第2情報とともにトランザクションをルーティング部402に要求する。
【0095】
ステップS220で、ルーティング部402は、従前の第2情報を有するトランザクションについて、(管理部410から通知されたキューにトランザクションを入れ、このキューに関連付けられた処理部406Bにトランザクションを割り振る。このとき、ルーティング部402は、第1情報を第2情報に付与してルーティングしてもよい。
【0096】
ステップS222で、処理部406Bは、トランザクションの処理結果をルーティング部402に返す。
【0097】
ステップS224で、ルーティング部402は、トランザクションの処理結果をクライアント12に返す。
【0098】
ステップS228で、管理部410は停止指示を処理部406Aに通知する。停止指示を受けた処理部406Aは処理中のトランザクションがあれば処理を終えた後に停止する。
【0099】
以上の処理により、クライアント12のOSごとや、クライアントプログラムのバージョンごとに割り振る処理部406を変えたり、処理部406のバージョンアップ時にクライアントプログラムを変更することなく、無停止にサーバーロジックの切り替えを行ったりすることができる。
【0100】
≪審査時の切り替え≫
図7は、実施形態における審査時の切り替え処理の一例を示すシーケンス図である。
図7に示すステップS302で、クライアントアプリケーションを審査に出す場合、管理部410は、審査用の処理部406Aのキューと、第2情報と、トランザクションの関連付けに関する情報とを含む第1情報を、ルーティング部402に指示する。
【0101】
ステップS304で、ルーティング部402は、審査対応が可能であることを管理部410に通知する。
【0102】
ステップS306で、クライアント12は、第2情報とともにトランザクションをルーティング部402に要求する。
【0103】
ステップS308で、ルーティング部402は、審査用を示す第1情報と、第2情報と基づきキューにトランザクションを入れ、このキューに関連付けられた処理部406Aにトランザクションを割り振る。
【0104】
ステップS310で、処理部406Aは、トランザクションの処理結果をルーティング部402に返す。
【0105】
ステップS312で、ルーティング部402は、トランザクションの処理結果をクライアント12に返す。
【0106】
ステップS314で、クライアントアプリケーションを本番の市場に出す場合、管理部410は、本番用の処理部406Bのキューと、トランザクションの関連付けに関する情報とを含む第1情報を、ルーティング部402に指示する。本番のキューを示す情報を第1情報とすれば、ルーティング部402は、第1情報から本番用のキューを把握することができるので、審査用から本番用に適切に切り替えることができる。
【0107】
ステップS316で、ルーティング部402は、本番対応が可能であることを管理部410に通知する。
【0108】
ステップS318で、クライアント12は、第2情報とともにトランザクションをルーティング部402に要求する。
【0109】
ステップS320で、ルーティング部402は、本番用を示す第1情報と、第2情報と基づくキューにトランザクションを入れ、このキューに関連付けられた処理部406Bにトランザクションを割り振る。
【0110】
ステップS322で、処理部406Bは、トランザクションの処理結果をルーティング部402に返す。
【0111】
ステップS324で、ルーティング部402は、トランザクションの処理結果をクライアント12に返す。
【0112】
以上の処理により、トランザクション制御システム1は、クライアントアプリケーションの審査時には審査用処理部に割り振りを行い、本番切り替え時には切替を指示することで、本番用に適切に切り替えることができる。
【0113】
なお、本発明は、上記した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において、他の様々な形で実施することができる。このため、上記実施形態はあらゆる点で単なる例示にすぎず、限定的に解釈されるものではない。例えば、上述の各処理ステップは処理内容に矛盾を生じない範囲で任意に順番を変更して又は並列に実行することができる。