JP2017111581A - 情報処理システム、制御方法 - Google Patents

情報処理システム、制御方法 Download PDF

Info

Publication number
JP2017111581A
JP2017111581A JP2015244645A JP2015244645A JP2017111581A JP 2017111581 A JP2017111581 A JP 2017111581A JP 2015244645 A JP2015244645 A JP 2015244645A JP 2015244645 A JP2015244645 A JP 2015244645A JP 2017111581 A JP2017111581 A JP 2017111581A
Authority
JP
Japan
Prior art keywords
message
queue
processing
acquired
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.)
Pending
Application number
JP2015244645A
Other languages
English (en)
Inventor
峻輔 太田
Shunsuke Ota
峻輔 太田
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2015244645A priority Critical patent/JP2017111581A/ja
Priority to US15/375,658 priority patent/US20170168867A1/en
Publication of JP2017111581A publication Critical patent/JP2017111581A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】 メッセージの処理が失敗であった場合に、キューに格納されている、このメッセージに関連するメッセージの処理を完了させずにキューから削除するための仕組みを提供することを目的とする。
【解決手段】 情報処理システムに含まれる、1以上の仮想マシンのそれぞれは、複数のメッセージが格納されているキューから取得されたメッセージに含まれる該メッセージの識別情報と関連付けられた処理エラーを示すステータスがストレージに保存されていた場合に、該メッセージの内容で指定されるデータの処理を完了させずに、前記キューから該メッセージを削除するための指示を行うことを特徴とする。
【選択図】 図6

Description

本発明は、メッセージキューを利用したデータ処理の技術に関する。
近年、インターネット上にあるサーバーで動作する各種アプリケーションを利用することができるサービスとして、クラウドサービスがある。IaaSやPaaSなどのクラウドサービスでは、クラウドサービスベンダーが、ネットワークを介して、仮想マシンやストレージなどのリソースをシステム管理者に提供する。仮想マシンとは、仮想化技術によって、サーバーを物理的な構成にとらわれずに論理的な単位で分割し、分割されたそれぞれで独立したオペレーティングシステムをもって動作する論理的なコンピューターである。システム管理者は、クラウドサービスベンダーによって提供される仮想マシンやストレージなどのリソースを用いて、独自のサービスを提供するためのシステムを構築することができる。
クラウドサービスを用いて構築されるシステムは、データを並列的に処理するためにメッセージキュー(以降、キューと呼ぶ)が利用されることがある。キューには、処理対象のデータに対応するメッセージが格納される。このメッセージを処理する機能を備える仮想マシンは、キューに格納されるメッセージを取得し、メッセージに記述された処理内容に従って処理を実行する。このように、複数の仮想マシンが、キューから取得したメッセージを処理することで、データの並列処理が可能となる。
ここで、前述のクラウドサービスを用いて構築されるシステムにおいて、ある期間内に生成される複数のデータを処理し、一つのファイルにまとめる場合がある。この時、このような複数のデータのそれぞれに対応するメッセージがキューに格納されて、複数の仮想マシンによってそれら一連のメッセージが並列的に処理されることとなる。ここで、その一連のメッセージの処理においては、対応するすべてのメッセージの処理が成功することが必要となる場合がある。1つでもメッセージの処理でエラーが発生すると、生成されるファイルの中にデータの間違いや欠損が生じるからである。
特許文献1には、複数のデータベースに対するデータベースの更新処理において、1つのグローバルトランザクションを実現するための方法が記載されている。具体的には、データベースへの更新要求がキュー要素として、処理待ちキューに格納される。その後、キューに格納されるデータベース更新要求が順次処理され、そのうち1つでもデータベース更新要求の処理に失敗した場合は、成功した更新処理を含めた全ての更新処理の結果を取り消すようにする。
特開2015−60285号公報
上述したような一連のメッセージの処理においては、すべてのメッセージの処理に成功する必要がある。一連のメッセージのうち一つでも処理に失敗した際には、当該一連のメッセージの処理エラーとして扱われるため、残りのメッセージは処理される必要がなくなる。つまり、一連のメッセージのうちの残りのメッセージを処理することは、リソースの無駄使いとなる。
そこで、一連のメッセージのうち処理されていない残りのメッセージを削除するために、キューに格納されているメッセージを全て削除するという方法が考えられる。しかしながら、一連のメッセージとそれ以外のメッセージが同一のキューの中に混在して格納されている場合があるため、キューに格納されているメッセージを全て削除すると、それ以外のメッセージも削除してしまうおそれがある。
そこで本発明は、メッセージの処理が失敗であった場合に、キューに格納されている、このメッセージに関連するメッセージの処理を完了させずにキューから削除するための仕組みを提供することを目的とする。
上記課題を解決するために、本発明の情報処理システムは、処理対象となるメッセージが格納されるキューからメッセージを取得し、該取得されたメッセージに基づく処理を実行する1以上の仮想マシンと、該仮想マシンによるデータの保存が可能なストレージとを備える情報処理システムであって、前記1以上の仮想マシンのそれぞれは、複数のメッセージが格納されている前記キューから、メッセージを取得する取得手段と、前記取得されたメッセージの内容で指定されるデータの処理を実行する実行手段と、前記実行手段により実行された前記処理が失敗であった場合に、前記取得されたメッセージの識別情報と関連付けて、処理エラーを示すステータスを前記ストレージに保存する保存手段と、前記取得されたメッセージを前記キューから削除する指示を行う指示手段と、を有し、前記指示手段は、前記取得されたメッセージに含まれる該メッセージの識別情報と関連付けられた前記ステータスが前記ストレージに保存されていた場合に、該メッセージについての前記実行手段による前記処理を完了させずに、前記キューから該メッセージを削除するための指示を行うことを特徴とする。
本発明によれば、メッセージの処理が失敗であった場合に、キューに格納されている、このメッセージに関連するメッセージの処理を完了させずにキューから削除することができる。
本発明の実施形態に係るシステム構成例を示す図である。 情報処理装置のハードウェア構成例を示す図である。 情報処理システムのソフトウェア機能の一例を示す図である。 メッセージの一例を示す図 指示サーバー104による処理の流れの例を示すフローチャートである。 処理サーバー106による処理の流れの例を示すフローチャートである。 実施例2におけるメッセージの一例を示す図である。 実施例2における指示サーバー104による処理の流れの例を示すフローチャートである。 実施例2における処理サーバー106による処理の流れの例を示すフローチャートである。
以下、本発明を実施するための最良の形態について図面を用いて説明する。
(実施例1)
図1は、本発明の実施形態に係るシステム構成例を示す図である。
本システムでは、情報処理システム101、および外部システム103が、インターネット102を介して接続されている。また、情報処理システム101には、指示サーバー104、キュー105、処理サーバー106、ストレージ107が存在し、それぞれがネットワークを介して接続されている。本実施例では、外部システム103から取得したデータに対して処理を加え、ストレージ107に処理結果を保存する場合を例示するが、処理対象のデータは、あらかじめストレージ107に保存されていてもよい。その場合、データの取得対象がストレージ107に代わる。
指示サーバー104は、処理サーバー106による処理の対象となるメッセージをキュー105に格納する機能を備える仮想マシンである。ここで、仮想マシンとは、仮想化技術によって、サーバーを物理的な構成にとらわれずに論理的な単位で分割し、分割されたそれぞれで独立したオペレーティングシステムをもって動作する論理的なコンピューターである。指示サーバー104は、設定されたスケジュールに従って一定時間のみ起動してもよいし、常時起動していてもよい。
処理サーバー106は、キュー105からメッセージを取得して、取得したメッセージに基づく処理を実行する機能を備える1以上の仮想マシンである。キュー105に格納されているメッセージの数に基づく自動的なリソース量の調整が実行されて、処理サーバー106は追加または削除される。処理サーバー106に対する調整の内容および調整が実行される条件は、システム管理者によって予め設定される。
ここでのリソース量の調整とは、具体的には、仮想マシンの台数を増やすスケールアウト、および、仮想マシンの台数を減らすスケールインを指す。なお、リソース量の調整は、仮想マシンに対するハードウェア資源の割り当てを増やすスケールアップ、および、仮想マシンに対するハードウェア資源の割り当てを減らすスケールダウンであってもよい。ハードウェア資源は、CPUやメモリ、ストレージなどである。
また、処理サーバー106による処理の具体的な内容としては、処理対象のデータのフォーマット変換処理や、データの圧縮または解凍の処理などがあげられる。各サーバーやキュー間の通信は、HTTPや、HTTPS、SOAPなどのプロトコロルに従うものとする。
図2は、情報処理装置のハードウェアの構成例を示す図である。本実施例における情報処理装置としては、情報処理システム101を構築するためのデータセンター上に存在するサーバコンピューター、および外部システム103の機能を備えるコンピューターなどがある。
CPU201は、ROM203内のプログラム用ROMに記憶されたプログラムや、外部メモリ210からRAM202にロードされたOS(オペレーティングシステム)やアプリケーション等のプログラムを実行する。すなわち、CPU201が、読み取り可能な記憶媒体に格納された該プログラムを実行することにより、後述する各フローチャートの処理を実行する各処理部として機能する。RAM202は、CPU201のメインメモリであり、ワークエリア等として機能する。
キーボードコントローラ204は、キーボード208や図示しないポインティングデバイス(マウス、タッチパッド、タッチパネル、トラックボールなど)からの操作入力を制御する。ディスプレイコントローラ205は、ディスプレイ209の表示を制御する。ディスクコントローラ206は、各種データを記憶するハードディスク(HD)やフレキシブルディスク(FD)等の外部メモリ210へのデータアクセスを制御する。ネットワークコントローラ(NC)207はネットワークに接続されて、ネットワークに接続された他の機器との通信制御処理を実行する。
図3は、実施例1、2における情報処理システム101の各機能を示す機能ブロック図である。なお、基準値計算部304および処理時間測定部328は、実施例2に関する処理部であるため、本実施例での説明を省略する。
まず、指示サーバー104についての説明を行う。指示サーバー104は、キューにデータ処理のメッセージを格納する。データ処理の例としては、データのフォーマット変換処理などが挙げられる。データリスト取得部302は、外部システム103にリクエストを発行して、処理対象のデータの一覧を取得する。メッセージ格納部301は、データリスト取得部302が取得した一覧に含まれる各々のデータを、一つのメッセージとして、キュー105のリクエスト受信部311に送信する。メッセージの内容に関する説明は、図4を用いて後述する。処理状態確認部303は、後述するストレージ107にキュー105に保存されているメッセージが存在するか否かを確認し、存在しない場合には、後述するストレージ107に、処理エラーを示すステータスが存在するか否かを確認する。ステータスが存在する場合には、処理状態確認部303は、一連のメッセージについての処理が失敗であると判断する。
なお、キュー105に格納されるメッセージは、キューから取得されるだけではキューから削除されたことはならない。キューから取得されたメッセージは、他の処理サーバーから取得されないように一時的に不可視状態となる。その後、一般的には、処理サーバーによるメッセージの処理が完了した後、キューに対して該メッセージを削除するための指示が行われる。なお、処理サーバーがキューからメッセージを削除した後の一定時間の間に、キューに対して該メッセージの削除指示が行われない場合には、該メッセージは不可視状態が解除され、いずれの処理サーバーによっても取得可能な状態となる。
次に、キュー105についての説明を行う。リクエスト受信部311は、キュー内に保持されるメッセージに関するリクエストを受信し実行する。例えば、メッセージ格納部301から発行されたリクエストを受信した場合は、メッセージ保存部312に、メッセージを保存する。また、後述するメッセージ取得部321からメッセージ取得に関するリクエストを受信した場合には、メッセージ保存部312に保存されるメッセージを返却する。さらに、後述するメッセージ削除部324からメッセージ削除に関するリクエストを受信した場合には、指定されたメッセージを削除する。メッセージ保存部312は、受信したメッセージを、例えばファイルやデータベースなどの永続的な媒体に保存する。
さらに、処理サーバー106についての説明を行う。メッセージ取得部321は、キュー105からメッセージを取得する。データ取得部322は、メッセージ取得部321が取得したメッセージに記載されたデータの取得先からデータを取得する。データ処理部323は、取得したデータに対して何らかの処理を行い、処理結果のデータを、データ保存部326を介して、ストレージ107に保存する。ステータス保存部325は、データ処理部323の処理が失敗した場合に、ストレージ107に処理エラーを示すステータスをメッセージの識別情報と関連付けて保存する。処理失敗の例としては、例えば、ファイルのフォーマット変換処理において、フォーマット異常により変換できない場合や、ファイルの保存時にエラーが発生した場合などが挙げられる。なお、この時、保存先のパスの一部に、後述する図4で示すメッセージに含まれるメッセージの識別情報を含める。ステータス確認部327は、データ処理部323による処理の前に、前述したステータス保存部325が、ステータスが存在するか否かを確認する。確認の結果、ステータスが存在する、つまり処理が失敗した場合には、メッセージで示されるデータの処理が行われずに、メッセージ削除部324の処理に移る。
指示サーバー104、キュー105、処理サーバー106の組は、複数存在しても構わない。例えば、データの取得元となる外部システムごとに、各サービスに対応するための指示サーバー104、キュー105、処理サーバー106の組が用意される。なお、処理サーバー106は、いずれのサービスについての処理も実行可能な機能を備える。
ストレージ107についての説明を行う。リクエスト受信部331は、データ保存部326や、ステータス保存部325、ステータス確認部327からのリクエストを受信し、データの保存や、存在の有無の確認などを実行する。実際のデータは、データ保存部332に保存されており、データ保存部332は、ファイルシステムや、データベースなどの永続的な媒体に構成される。
最後に、外部システム103の説明を行う。リクエスト受信部341は、情報処理システム101からのリクエストを受信し、データリスト送信部342や、データ送信部343を介して、データの一覧やデータを、返送する。実際のデータは、データ保存部344に保存されており、データ保存部332は、ファイルシステムや、データベースなどの永続的な媒体に構成される。なお、本実施例では、メッセージに記載されるデータの保存先から処理対象のデータが取得されるが、処理対象のデータがメッセージに含まれていてもよい。
次に、図4を用いて、キュー105に保存されるメッセージの例について説明する。メッセージは、図に示すように4つの項目から構成される。filepath401は、データが保存されるパスを表し、guid402は、一連のデータを表すキーを示す。このキーは、互いに関連する一連のメッセージに対して付与される識別子である。処理に失敗した場合には、失敗したデータに対応するguidが同じメッセージのすべてを削除する必要がある。なお、各メッセージにそれぞれの識別子が付与され、一連のメッセージとなるメッセージの識別子をストレージ107で管理するようにしてもよい。処理パターン403は、取得したデータに対して実施する処理のパターンを表し、Storepath404は、処理結果のデータを保存するパスを表す。filepath401は、前述したデータリスト取得部302が外部システム103から取得したデータの一覧を用いて設定する。guid402は、データリスト取得部302が、処理対象のデータの一覧を取得した際に、動的に発行する。処理パターン403は、1つのキューの中に、異なるデータ処理方法で処理を行わなければならないデータが存在する可能性があるため、本項目を用いて、実施すべき処理を識別するためのIDを、処理サーバー106に伝える。処理サーバー106のデータ処理部323は、本値に応じて処理を変更する。最後に、データ保存部326が、Storepath404に処理結果のデータを送信することで、ストレージ107へのデータの保存が完了する。
以下、図5を用いて、指示サーバー104による処理の流れについて説明する。
S501では、データリスト取得部302は、外部システム103から、処理対象のデータの一覧を取得する。
S502では、メッセージ格納部301は、図4で説明したguidを生成する。
S503では、メッセージ格納部301は、S501で取得したデータの一覧のそれぞれと、S502で生成したguid、およびデータの保存先や処理パターンなどの情報を、図4にて説明したメッセージのような形に整形し、リクエスト受信部311に送信する。
S504では、処理状態確認部303は、キュー105に、メッセージが存在するか否かを確認し、存在する場合には、再度S504に遷移する。
S505では、処理状態確認部303は、ストレージ107に保存されたステータスが存在するか否かを確認し、存在する場合には、S506に遷移し、存在しない場合には終了する。
S506では、処理状態確認部303は、処理失敗を表すアラートを上げ、終了する。アラートはメールでも、ログでも手段は問わない。
次に、図6(a)、図6(b)を用いて、処理サーバー106による処理の流れについて説明する。
S601では、メッセージ取得部321は、キュー105からメッセージを取得する。メッセージが取得できない場合は、指示サーバーが登録したメッセージの全てが処理されたものとみなし、終了する。メッセージが取得できた場合には、S602に遷移する。
S602では、ステータス確認部327は、メッセージに含まれるGUIDに関連付けられたステータスがストレージ107に保存されているか否かを確認する。ステータスが存在しない場合には、処理が失敗していないと判定され、S603に遷移する。ステータスが存在する場合には、S604に遷移する。
S603では、データに対して処理が実施される。詳細は、図6(b)にて説明する。
S604では、メッセージ削除部324が、処理に完了したメッセージをキュー105から削除するよう指示する。
次に、図6(b)を用いて、データの処理に関するフローの説明をする。
S621では、データ取得部322が、S601で取得したメッセージに記載されたfilepathから、データを取得する。
S622では、データ処理部323が、S621で取得したデータに対して、S601で取得したメッセージに記載された処理パターンに応じて処理を実施する。処理の過程で、エラーが発生した場合には、S623に遷移し、処理が成功した場合にはS624に遷移する。
S623では、ステータス保存部325は、ストレージ107に、ステータスを保存する。この時、メッセージに含まれるGUIDをファイルパスに含める。
S624では、処理されたデータがストレージ107に保存される。
図6(a)、(b)に示すフローに従って処理を進めることで、処理の失敗時に、キューからのメッセージを並列で削除することが可能となり、キューのメッセージがなくなることで、自動で処理サーバーがスケールインする。
以上説明したように本実施例では、メッセージの処理が失敗であった場合に、ストレージにこのメッセージの識別情報と関連付けて処理エラーを示すステータスを保存する。その後のメッセージの処理において、このメッセージと関連するメッセージについては処理を完了させずにキューから削除する。これによって、仮想マシンは、キューに格納されている他のメッセージを早く処理でき、リソースの有効活用につながる。また、リソースの利用時間に基づいて利用料金が定められることが一般的なクラウドサービスにおいて、リソースの有効活用やそれに従う上述したスケールインなどにより、クラウドサービスの利用料金の節約にもつながる場合がある。
(実施例1の応用例)
ストレージ107に前述したステータスが存在する場合に、指示サーバー104、または、いずれかの処理サーバーが、キュー105に格納された複数のメッセージから、該ステータスに対応する一連の複数メッセージを選択的に削除するようにしてもよい。このような場合には、指示サーバー104は定期的に、処理サーバーは1つのメッセージをキュー105から取得した際に、ストレージ107にステータスが存在するかを確認する。
(実施例2)
本発明に係る第2の実施形態について説明する。以下構成に関しては実施例1と異なる点を中心に説明する。
一般的なクラウドサービスでは、リソースの利用に関する単位時間に基づいて、特定のクラウドサービス利用者により、仮想マシンなどのリソースが占有される。さらに、その単位時間に基づいて、リソースの利用に対する従量課金の金額が定められる。例えば、単位時間が1時間である場合には、1分使用した場合も59分使用した場合も同様に、1時間分の利用料金が発生する。本実施例では、仮想マシンが追加されてから経過した時間を管理して、メッセージの処理に失敗した場合にその経過時間に基づいて仮想マシンの処理を切り替えるようにする。これにより、リソースの有効活用ができる。
本実施例におけるシステムのソフトウェア機能として図3に示すように、指示サーバー104には、基準値計算部304が追加され、処理サーバー106には処理時間測定部328が追加される。処理サーバー106は、処理時間測定部328で自身が起動してからの経過時間を管理する。基準値計算部304が、処理対象のデータの数等を鑑み、基準値を決定する。この基準値は、キューへ格納されるメッセージに含まれ、後述する処理時間測定部328にて利用される。例えば、1つのメッセージの削除に0.1秒、総メッセージ数が10000個であった場合、総メッセージの削除に1000秒(約17分)かかることになる。ここで、リソースの利用に関する単位時間が60分の場合、(17×α)/60で計算される値を基準値として定める。αはバッファ用の係数として、例えば、1.5などの、定数でかまわない。処理時間測定部328で管理される処理サーバーの追加されてからの経過時間をリソースの利用に関する単位時間で割った値の小数部分で示される0以上1未満の値が、前述した基準値を超えているか否かが判定される。例えば、リソースの占有時間の単位時間が60分だとし、追加されてから経過した時間が65分だとすると、65/60=1.08であるため、小数点以下の値は、0.08となる。基準値を、0.5とすると、基準値を超えていないと判定される。基準値を超えていない場合には、リソースの無駄が発生することになるため、処理サーバー106は、キューからのメッセージ削除ではなく別の処理を実行する。
上述したように、経過時間および単位時間から求められる値と基準値とを比較した結果に基づく所定の条件を満たす場合に、仮想マシンに別の処理を実施させるようにする。処理時間測定部328により基準値を超えていると判定された場合には、メッセージ取得部321が取得済みのメッセージに含まれる別のキューのアドレスから、メッセージ取得部321がメッセージを取得する。本実施例におけるメッセージの例を、図7を用いて後述する。
また、データ処理部323は、特定の処理のみ可能なわけではなく、複数のキューから取得したメッセージに含まれる処理パターンに応じて処理が可能なモジュールが動作するものとする。その後データ処理部323が、メッセージ取得部321が別のキューから取得したメッセージに記載された情報に従って処理を実施する。処理を実施した後、再度元のキューからメッセージを取得し、処理時間測定部328により管理される起動してからの経過時間に基づいて、基準値を超えているか否かが判定される。このような処理を繰り返し、基準値を超えたタイミングで、元のキューからのメッセージ削除処理を実施し始める。このようにすることで、リソースの占有時間の単位時間を最大限有効に活用することが可能となる。
次に、図7を用いて、本実施例における、キューに格納されるメッセージ例について説明する。図4で説明したメッセージに加えて、基準値701、および別のキューのアドレス702が追加される。基準値701は、前述したとおり、基準値計算部304が求めた値が設定される。処理サーバー106は、一連のメッセージのいずれかの処理に失敗していることが確認された場合には、別のキューのアドレス702から、メッセージを取得する。なお、別のキューから取得されるメッセージも、図7にて説明したフォーマットと同じであり、処理パターン403や、Storepath404等、各項目に設定される値が異なるだけである。
次に、図8を用いて、基準値の計算処理も含めた、指示サーバー104による処理の流れの例について説明する。図5で説明したフローチャートにS801が追加されているため、S801の説明のみ行う。
S801では、基準値計算部304は、S501で取得したデータの一覧に含まれるデータの数や、キューに格納されるメッセージ1つあたりの削除時間、およびリソースの利用に関する単位時間などから、基準値を求める。基準値計算部304は、求めた基準値をメッセージに記載する。なお、基準値計算部304は、基準値を計算して求めるのではなく、データの数や、キューに格納されるメッセージ1つあたりの削除時間、およびリソースの利用に関する単位時間などと、上述した基準値とを対応付けて管理する表を参照してもよい。
最後に、図9(a)、図9(b)を用いて、処理サーバー106による処理の流れの例について説明する。これらの処理は、起動中の1以上処理サーバー106のそれぞれで実施される処理である。なお、実施例2において追加された処理に関してのみ説明する。
S901では、処理時間測定部328は、処理サーバー106の起動時刻を取得し、処理サーバー106内に保持して管理する。
S902では、処理時間測定部328は、S901で取得した起動時刻から経過した時間などを基にして所定の条件を満たすか否かを判定する。所定の条件とは、経過時間および単位時間に基づき算出される値が、メッセージに含まれる基準値701以下であるという条件である。基準値以下である場合には、S903に遷移して、後述する別のキューのメッセージに基づくデータ処理が行われる。また基準値以下でない場合には、S604に遷移して、実施例1と同様にメッセージの削除処理が行われる。
S903では、処理サーバー106は、別のキューから取得したデータの処理を実施する。ここで実施される第2のデータ処理については、図9(b)を用いて説明する。なお、対象となる別キューは、メッセージ内で指定された1以上のキューのいずれかである。処理サーバー106によるメッセージの取得先となるキューは、ランダムに決定されてもよいし、優先順位に従って決定されてもよい。
図9(b)のS921では、メッセージ取得部321は、S601でメッセージを取得したキューとは異なる別のキューからメッセージを取得する。ここで、図7を用いて前述した702で示す別のキューのアドレスが用いられる。メッセージ取得部は、S601で取得したメッセージに含まれる別のキューのアドレスに基づいて、当該別のキューからメッセージを取得する。
S921でメッセージを取得できた場合にはS922に処理が進められ、S921でメッセージを取得できなかった場合には、図9(b)のフローチャートの処理を終了して図9(a)のフローチャートに戻る。
S922では、ステータス確認部327は、S921で別のキューから取得したメッセージの識別情報と関連するステータスがストレージに保存されているかを確認する。
S923では、データ処理部323は、S921で取得したメッセージに基づく処理を実行する。このように、処理サーバー106は、別のキューに格納されるメッセージを処理することで、処理サーバー106の起動時間を有効活用することができる。
S924では、メッセージ削除部324は、S921でメッセージを取得したキューから該メッセージを削除するための指示を行う。
なお、S922でYESのときも、S902と同様の判断が行われる。ここで用いられる単位時間や基準値は、S902で用いられるものと同じである。各キューに対応する処理サーバーの経過時間を求めるためには、処理サーバー106が、処理エラーを示すステータスを書き込む際に、ステータスと共に自身の起動時刻(S901)をストレージ107に記録しておく。
また、S903の第2のデータ処理が行われた場合には、S601で取得されたメッセージ削除処理が行われない。
なお、別のキューのアドレスは、メッセージ取得部321が取得したメッセージに含まれずに、ストレージ107に保存されていてもよい。
以上説明したように、本実施例では、処理サーバー106の起動時間が所定の条件を満たす場合に、処理サーバー106は、別のキューからメッセージを取得して、その取得したメッセージに基づく処理を実行する。これによって、リソースの有効活用やそれに従う上述したスケールインなどにより、クラウドサービスの利用料金の節約にもつながる場合がある。
(他の実施例)
本発明は、上述した実施形態を適宜組み合わせることにより構成された装置あるいはシステムやその方法も含まれるものとする。
ここで、本発明は、上述した実施形態の機能を実現する1つ以上のソフトウェア(プログラム)を実行する主体となる装置あるいはシステムである。また、その装置あるいはシステムで実行される上述した実施形態を実現するための方法も本発明の1つである。また、そのプログラムは、ネットワークまたは各種記憶媒体を介してシステムあるいは装置に供給され、そのシステムあるいは装置の1つ以上のコンピューター(CPUやMPU等)によりそのプログラムが読み出され、実行される。つまり、本発明の1つとして、さらにそのプログラム自体、あるいは当該プログラムを格納したコンピューターにより読み取り可能な各種記憶媒体も含むものとする。また、上述した実施形態の機能を実現する回路(例えば、ASIC)によっても、本発明は実現可能である。
101 情報処理システム
106 処理サーバー
321 メッセージ取得部
323 データ処理部
324 メッセージ削除部
325 ステータス保存部

Claims (8)

  1. 処理対象となるメッセージが格納されるキューからメッセージを取得し、該取得されたメッセージに基づく処理を実行する1以上の仮想マシンと、該仮想マシンによるデータの保存が可能なストレージとを備える情報処理システムであって、
    前記1以上の仮想マシンのそれぞれは、
    複数のメッセージが格納されている前記キューから、メッセージを取得する取得手段と、
    前記取得されたメッセージの内容で指定されるデータの処理を実行する実行手段と、
    前記実行手段により実行された前記処理が失敗であった場合に、前記取得されたメッセージの識別情報と関連付けて、処理エラーを示すステータスを前記ストレージに保存する保存手段と、
    前記取得されたメッセージを前記キューから削除する指示を行う指示手段と、を有し、
    前記指示手段は、前記取得されたメッセージに含まれる該メッセージの識別情報と関連付けられた前記ステータスが前記ストレージに保存されていた場合に、該メッセージについての前記実行手段による前記処理を完了させずに、前記キューから該メッセージを削除するための指示を行うことを特徴とする情報処理システム。
  2. 前記実行手段は、前記取得されたメッセージに含まれる該メッセージの識別情報と関連付けられた前記ステータスが前記ストレージに保存されていなかった場合に、前記取得されたメッセージの内容で指定されるデータの処理を実行し、
    前記指示手段は、前記実行手段による前記処理が完了したことに応じて、前記キューから該メッセージを削除するための指示を行うことを特徴とする請求項1に記載の情報処理システム。
  3. 前記仮想マシンは、前記キューに格納されているメッセージの数に基づいて追加または削除されることを特徴とする請求項1または2に記載の情報処理システム。
  4. 前記1以上の仮想マシンのそれぞれは、自身が追加されてからの経過時間を管理する管理手段を更に有し、
    前記取得手段は、前記取得されたメッセージに含まれる該メッセージの識別情報と関連付けられた前記ステータスが前記ストレージに保存されていた場合であって、前記管理手段により管理される前記経過時間に基づいて所定の条件を満たすと判定された際に、前記取得されたメッセージが格納されていたキューとは異なる、前記情報処理システムが備える別のキューからメッセージを取得し、
    前記実行手段は、前記別のキューから取得されたメッセージに基づく処理を実行することを特徴とする請求項1乃至3のいずれか1項に記載の情報処理システム。
  5. 前記管理手段は、前記仮想マシンが追加されてからの経過時間に対する従量課金の際に用いられる単位時間と、前記取得手段が前記別のキューからメッセージを取得するか否かを決定するための基準値とを更に管理し、
    前記取得手段は、前記経過時間および前記単位時間から求められる値と前記基準値とを比較した結果に基づき、前記取得手段により前記別のキューからメッセージを取得することが決定される際に、前記所定の条件を満たすと判定されることを特徴とする請求項4に記載の情報処理システム。
  6. 前記取得手段は、前記取得されたメッセージで指定される別のキューの情報に基づいて、該別のキューからメッセージを取得することを特徴とする請求項4または5に記載の情報処理システム。
  7. 前記指示手段は、前記取得されたメッセージに含まれる該メッセージの識別情報と関連付けられた前記ステータスが前記ストレージに保存されていた場合であって、前記管理手段により管理される前記経過時間に基づいて前記所定の条件を満たすと判定されなかった際に、前記取得されたメッセージが格納されるキューから該メッセージを削除するための指示を行うことを特徴とする請求項4乃至6のいずれか1項に記載の情報処理システム。
  8. 処理対象となるメッセージが格納されるキューからメッセージを取得し、該取得されたメッセージに基づく処理を実行する1以上の仮想マシンと、該仮想マシンによるデータの保存が可能なストレージとを備える情報処理システムの制御方法であって、
    前記1以上の仮想マシンのそれぞれでは、
    複数のメッセージが格納されている前記キューから、メッセージを取得する取得工程と、
    前記取得されたメッセージの内容で指定されるデータの処理を実行する実行工程と、
    前記実行工程で実行された前記処理が失敗であった場合に、前記取得されたメッセージの識別情報と関連付けて、処理エラーを示すステータスを前記ストレージに保存する保存工程と、
    前記取得されたメッセージを前記キューから削除する指示を行う指示工程と、が実行され、
    前記指示工程では、前記取得されたメッセージに含まれる該メッセージの識別情報と関連付けられた前記ステータスが前記ストレージに保存されていた場合に、該メッセージについての前記実行工程での前記処理を完了させずに、前記キューから該メッセージを削除するための指示が行われることを特徴とする制御方法。
JP2015244645A 2015-12-15 2015-12-15 情報処理システム、制御方法 Pending JP2017111581A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015244645A JP2017111581A (ja) 2015-12-15 2015-12-15 情報処理システム、制御方法
US15/375,658 US20170168867A1 (en) 2015-12-15 2016-12-12 Information processing system and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015244645A JP2017111581A (ja) 2015-12-15 2015-12-15 情報処理システム、制御方法

Publications (1)

Publication Number Publication Date
JP2017111581A true JP2017111581A (ja) 2017-06-22

Family

ID=59020741

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015244645A Pending JP2017111581A (ja) 2015-12-15 2015-12-15 情報処理システム、制御方法

Country Status (2)

Country Link
US (1) US20170168867A1 (ja)
JP (1) JP2017111581A (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10838845B2 (en) * 2017-06-14 2020-11-17 International Business Machines Corporation Processing failed events on an application server
CN110618881B (zh) * 2019-09-19 2022-04-12 中国银行股份有限公司 一种模拟消息队列的方法及系统
JP2021196704A (ja) * 2020-06-10 2021-12-27 キヤノン株式会社 情報処理システム、および制御方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6058426A (en) * 1997-07-14 2000-05-02 International Business Machines Corporation System and method for automatically managing computing resources in a distributed computing environment
US8015541B1 (en) * 2002-10-24 2011-09-06 Rage Frameworks, Inc. Business process technology for the enterprise
US7673302B1 (en) * 2004-08-26 2010-03-02 Sprint Communications Company L.P. System and method for managing messages in a queuing system
US8336049B2 (en) * 2009-02-05 2012-12-18 Vmware, Inc. Virtual machine utility computing method and system
JP5623139B2 (ja) * 2010-06-02 2014-11-12 キヤノン株式会社 クラウドコンピューティングシステム、文書処理方法、及びコンピュータプログラム
JP5653151B2 (ja) * 2010-09-17 2015-01-14 キヤノン株式会社 クラウドコンピューティングシステム、クラウドコンピューティングシステムの制御方法、および管理アプリケーション
JP6114829B2 (ja) * 2012-09-28 2017-04-12 サイクルコンピューティング エルエルシー 仮想環境における演算インフラストラクチャのリアルタイム最適化
US9298484B2 (en) * 2013-03-14 2016-03-29 International Business Machines Corporation Encapsulation of an application for virtualization
US9286106B1 (en) * 2013-04-16 2016-03-15 Ca, Inc. Scheduling periodic tasks with dependencies and determining improper loop dependencies between tasks placed in a waiting tasks set and in a unfinished dependent tasks set
CN104516773B (zh) * 2013-09-29 2018-04-20 国际商业机器公司 用于物理机的数据分配方法和数据分配装置
US9652631B2 (en) * 2014-05-05 2017-05-16 Microsoft Technology Licensing, Llc Secure transport of encrypted virtual machines with continuous owner access

Also Published As

Publication number Publication date
US20170168867A1 (en) 2017-06-15

Similar Documents

Publication Publication Date Title
JP7566000B2 (ja) マルチテナントapiゲートウェイにおいてテナント分離を提供するためのマイクロサービスコンテナの活用
US10324754B2 (en) Managing virtual machine patterns
JP6404911B2 (ja) ネットワーク通信環境における仲介主体のための信頼できるメッセージングのための手法
CN103744734A (zh) 一种任务作业处理方法、装置及系统
JP2014520346A5 (ja)
US20150254102A1 (en) Computer-readable recording medium, task assignment device, task execution device, and task assignment method
US9864706B2 (en) Management of allocation for alias devices
JP5503678B2 (ja) ホスト提供システム及びホスト提供方法
US20210149726A1 (en) Scheduling device, scheduling system, scheduling method, and non-transitory computer-readable medium
JP2017068480A (ja) ジョブ管理方法、ジョブ管理装置及びプログラム
CN106534227B (zh) 用于扩展分布式一致性服务的方法和设备
CN105718304A (zh) 虚拟机管理方法及系统
JP2017111581A (ja) 情報処理システム、制御方法
US10374893B1 (en) Reactive non-blocking input and output for target device communication
JP7030412B2 (ja) 情報処理システム、及び制御方法
CN106657195B (zh) 任务处理方法和中继设备
US9270742B2 (en) Computer system and control method of computer system
CN114003328A (zh) 数据共享方法、装置、终端设备和桌面云系统
JP2016184274A (ja) 管理装置、管理装置の制御方法、及びプログラム
CN111045778A (zh) 一种虚拟机的创建方法、装置、服务器及存储介质
JP7836871B6 (ja) マルチテナントapiゲートウェイにおいてテナント分離を提供するためのマイクロサービスコンテナの活用
JP6349786B2 (ja) 仮想計算機管理装置、仮想計算機管理方法、及び仮想計算機管理プログラム
CN105824704A (zh) 一种使用图形工作站的方法、装置及系统
JP2017004467A (ja) マイグレーション制御装置、マイグレーション制御方法及びマイグレーション制御プログラム
CN121753004A (zh) 用于云计算平台的StatefulSet优雅终止