JP6792409B2 - プログラム、システム及び情報処理方法 - Google Patents

プログラム、システム及び情報処理方法 Download PDF

Info

Publication number
JP6792409B2
JP6792409B2 JP2016208846A JP2016208846A JP6792409B2 JP 6792409 B2 JP6792409 B2 JP 6792409B2 JP 2016208846 A JP2016208846 A JP 2016208846A JP 2016208846 A JP2016208846 A JP 2016208846A JP 6792409 B2 JP6792409 B2 JP 6792409B2
Authority
JP
Japan
Prior art keywords
file
asynchronous processing
processing code
data
event
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
JP2016208846A
Other languages
English (en)
Other versions
JP2018072943A5 (ja
JP2018072943A (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.)
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 JP2016208846A priority Critical patent/JP6792409B2/ja
Priority to US15/783,050 priority patent/US10725975B2/en
Publication of JP2018072943A publication Critical patent/JP2018072943A/ja
Publication of JP2018072943A5 publication Critical patent/JP2018072943A5/ja
Application granted granted Critical
Publication of JP6792409B2 publication Critical patent/JP6792409B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/004Error avoidance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • 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/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Description

本発明は、情報処理装置と情報処理システムおよびその制御方法とプログラムに関し、特にクラウドサービスにおけるイベント駆動型コンピューティングサービスに関する。
近年、各種のクラウドコンピューティングサービスが存在する。たとえば、Amazon web service(以下「AWS」と略す)や、Google Cloud Platform、Microsoft Azureなどである。これらは、仮想サーバやストレージなどのコンピューティングリソースを、性能や容量に応じて時間単位で課金する形態でサービス提供することで普及してきている。利用者は、これらのサービスを利用することで、自ら物理的な設備を持たなくても、Webシステムなどの情報処理システムを低コストで柔軟に構築することができる。クラウドコンピューティングサービスの利用例として、ネットワークに接続された各種デバイスやモバイル端末、コンピュータ端末から、デバイスやアプリケーションのログ情報や稼働情報を収集してストレージに置き、データベースで管理するものがある。ここでは、情報(ファイル等)がアップロードされるごとにレコードが作成され、ファイル名や置き場所等が管理される。
ここで、例えば特許文献1には、イベントドリブン型スクリプトといった技術が開示されている。この技術に依れば、特定のデータに対する更新があった場合、その更新イベントに従い、予め登録されているスクリプトが起動される。クラウドコンピューティングサービスでも、「ファイルのアップロード」のようなイベントの発生に応じて、軽量な処理ができるサービス(以後「イベント駆動型コンピューティングサービス」と呼ぶ)を提供している。たとえば、Amazon Lambda、Google Cloud Functions、Azure Functionsなどである。これらは、クラウドコンピューティングサービスに対して所望の処理を実現するためのプログラムコードを登録しておくことで、ファイルの着信、DBテーブルの更新、アプリケーションやデバイスにより生成されたカスタムイベントなどのイベント発生時に、登録したプログラムコードに従って処理を実行させることができるサービスである。
従来、このような処理を実現するためには、クラウドコンピューティングサービスの利用者により、イベントを検知するためのポーリングや所望の処理を実行するためのアプリケーションと該アプリケーションが稼働するためのインフラの構築や管理が必要だった。しかしながら、前述のイベント駆動型コンピューティングサービスは、クラウドコンピューティングサービス側でイベントを検知するためのポーリング処理を実行し、所望の処理を実現するプログラムコードを実行するためのインフラを用意する。そのため、クラウドコンピューティングサービスの利用者は、イベント処理の実現が容易となった。
特開2004−38759号公報
ここで、たとえば現状のAmazon Lambdaでは、同一アカウントに対して同時に処理できるイベント数(イベント駆動型コンピューティングサービスの同時起動数)に制限がある。処理されているイベントの数がこの上限に達している間、次のイベント発生に対してクラウドコンピューティングサービスによるイベント駆動型コンピューティングサービスが起動されない、という問題があった。すなわち、情報のアップロードが集中し、イベントが多数発生すると、処理の不履行が起きるリスクがある。たとえば、ログ情報や稼働情報のアップロードでは、一度の送信でひとつの端末から複数のログファイルを送るものがある。このアップロードをトリガとするイベント駆動型コンピューティングサービスが登録されているとき、アップロードされるファイル数が非常に多い場合や、更には複数端末からの送信が重複した場合に、上記の処理不履行が発生しやすくなる。
本発明は上記従来例に鑑みて成されたもので、イベントの数が上限を超えたことに起因する、イベント駆動型コンピューティングサービスによる処理の不履行のリスクを低減することを目的とする。
上記目的を達成するために、本発明は、以下の構成を有する。
本発明の第1の側面によれば、システムを構成するコンピュータによって、該システムへの登録時に指定されたシステムイベント及びコンピューティングリソースに従い実行されるプログラムであって、
互いに関連する複数のデータの受信に応じて発生する複数のシステムイベントのそれぞれに応答して該プログラムが実行される際に、
該プログラムによる処理対象のデータが所定のデータであれば、該処理対象のデータ以外の前記複数のデータの少なくともいずれかのデータに対する処理の制御を行う手段と、
処理対象のデータが所定のデータでなければ、該処理対象のデータに対する処理の完了を待たずに、前記プログラムによる処理を完了させる手段として前記コンピュータを機能させる。
本発明の第2の側面によれば、コンピューティングリソースを指定して予め登録されたスクリプトをシステムイベントに応答して自動で実行するサービスを提供するシステムであって、
システムイベントを検出する検出手段と、
検出されたシステムイベントに応答して前記スクリプトを実行する実行手段と、
互いに関連する複数のデータの受信に応じて発生する複数のシステムイベントのそれぞれに応答して前記スクリプトがそれぞれ実行される際に、前記スクリプトによる処理対象のデータが所定のデータであれば、該処理対象のデータ以外の前記複数のデータの少なくともいずれかのデータに対する処理の制御を行う制御手段と
を有し、
前記処理対象のデータが前記所定のデータでなければ、前記処理対象のデータに対する処理の完了を待たずに、前記スクリプトによる処理が完了する。
本発明の第3の側面によれば、コンピュータによって第1の種類のイベントに応じて起動され、同時に実行される数に上限が設けられたプログラムであって、
前記第1の種類のイベントに関連するデータから、処理対象となるデータの数を取得する取得手段と、
前記プログラムの実行中に生じた、前記処理対象となるデータに関連した第2の種類のイベントに応じて、前記取得手段により取得した前記データの数に達するまで、前記処理対象となるデータに対して所定の処理を遂行する処理手段として機能させる。
本発明により、イベントの数が上限を超えたことに起因する、イベント駆動型コンピューティングサービスによる処理不履行のリスクを低減する。
システム全体構成図 クライアント装置101のハードウェア構成図 サーバ102、103、104のハードウェア構成図 クライアント装置101のソフトウェア構成図 ファイルサーバ102のソフトウェア構成図 ファイル情報サーバ103のソフトウェア構成図 イベント情報管理サーバ104のソフトウェア構成図 ファイル格納場所管理サーバ105のソフトウェア構成図 管理者装置106のソフトウェア構成図 非同期処理コードを登録する一連の処理を示したシーケンス図 非同期処理コードが実行される一連の処理を示したシーケンス図 非同期処理コードの監視処理のフローチャート 第1実施形態のシーケンス図 ファイル格納場所管理アプリケーション800のフローチャート 非同期処理コード"FuncA"のフローチャート ステップS1117のフローチャート 第2実施形態のシーケンス図 非同期処理コード"FuncB"のフローチャート 第3実施形態のシーケンス図 非同期処理コード"FuncC"のフローチャート 第4実施形態のシーケンス図 非同期処理コード"FuncD"のフローチャート 非同期処理コード"FuncE"のフローチャート
[第1実施形態]
●システム構成
以下、本発明を実施するための形態について図面を用いて説明する。図1は、本発明に係るシステムの全体構成を示すブロック図である。ネットワーク100は、図1に示すブロック図の各構成要素のうちクライアント装置101、ファイルサーバ102、ファイル情報管理サーバ103、イベント情報管理サーバ104、ファイル格納場所管理サーバ105、管理者装置106を接続するネットワークである。クライアント装置や各サーバ、管理者装置等を情報処理装置あるいはコンピュータと呼ぶこともある。また図1のシステムをクラウドシステムあるいは情報処理システムと呼ぶことがある。
ネットワーク100は、各構成要素間で通信を行うための基盤である。本実施形態においてはクライアント装置101とそれ以外の構成要素との間はインターネットによって接続されるものとして説明する。それ以外の構成要素間においては、イントラネット、インターネットもしくはその他のネットワークシステムであっても構わない。クライアント装置101は、図1に示すブロック図の各構成要素のうち、ネットワーク100を介してファイルサーバ102と相互に接続する。本実施例においては、クライアント装置101はPC(パーソナルコンピュータ。以降、PCと呼称する。)を前提に説明を進めるが、ネットワーク100を介した通信機能を有する端末であれば、携帯端末や複写機等、何であっても種別は問わない。ファイルサーバ102は、クライアント装置101から送信されるファイルの実体を受信し、保存するサーバ装置である。ファイルサーバ102は、クライアント装置101から送信される様々なフォーマットのファイルを保存する機能を有する。ファイル情報管理サーバ103は、クライアント装置101から送信されるファイルの属性情報とファイルサーバ102上の保存場所情報(URL)を関連付けて保存するサーバ装置である。
イベント情報管理サーバ104は、イベント駆動型コンピューティングサービスにおけるプログラムコードの管理及び実行を行うサーバ装置である。イベント駆動型コンピューティングサービスの利用者は事前にイベント情報管理サーバ104にプログラムコードとそれを実行するためのファイルサーバ102で発生するイベントを関連付けて登録する。ここで言うイベントとは、具体的には「ファイルサーバ102の所定のパスにファイルがアップロードされたとき」や「ファイルサーバ102の所定のパスに保存されるファイルが更新されたとき」など、ファイルサーバ102で保存されるファイルに対してクライアント装置101あるいは、図1に示すその他の構成要素が行う操作を指す。また、プログラムコードを実行する仮想マシンの環境情報も関連付けて登録する。具体的には仮想マシンで稼働するCPUやRAMの性能を指定する。そうすることで、イベント情報管理サーバ104は、ファイルサーバ102でイベントが発生したタイミングで、ファイルサーバ102で実行される処理とは非同期で、イベントに関連付けられた所定のプログラムコードを実行する。以降、イベント情報管理サーバ104が、ファイルサーバ102で発生するイベントに応じて実行するプログラムコードを非同期処理コードと呼称する。また本実施形態に係るイベントのことをシステムイベントとも呼ぶ。イベントは、例えばその種類と非同期処理コードとがイベント情報の登録時に指定され、関連付けられている。非同期処理コードはそれを実行するイベント情報管理サーバ104のコンピューティングリソースを用いて実行される。非同期処理コードはたとえばJAVA(登録商標)スクリプトなどのスクリプトにより実現できる。
なお、この非同期処理コードを実行する環境には制限がある。ここでは2つの制限を挙げる。ひとつは、同時に実行可能な非同期処理コード数には上限があることである。従って、多数のイベントがほぼ同時に発生した場合、上限である実行許容数までのイベントに対しては非同期処理コードの実行により処理が履行されるが、実行許容数を超えた場合には、それ以降のイベントに対する処理は不履行が発生し得る。もうひとつは、非同期処理コードの処理時間に上限があることである。従って、イベントに対する処理が許容される処理時間内に完了しなかった場合、その非同期処理コードはタイムアウトエラーとなり中断される。
ファイル格納場所管理サーバ105は、クライアント装置101からのリクエストに応じて、ファイルサーバ102上でのファイルの格納場所を確定し、返信するサーバである。ファイルの格納場所は、送信元のクライアント装置の識別子、ファイルの種類、ファイル名称等から判断する。なお、クライアント装置101は、ファイルをファイルサーバ102にアップロードする際に、格納場所をファイル格納場所管理サーバ105に問い合わせることもできるが、予めアプリケーション毎に固定で決められた格納場所を用いても良い。管理者装置106は、イベント情報管理サーバ104に接続されたPCであって、イベント情報管理サーバ104に対して非同期処理コードの登録要求を行うことができる。
●端末及びサーバのハードウェア構成
図2は、図1に示すクライアント装置101、管理者装置106のハードウェア構成の一例を示すブロック図である。システムバス200はクライアント装置101を構成する各ハードウェアを相互に接続するバスである。本実施例においては特に言及しない限り、システムバス200はCPU201からの制御命令をシステムバス200に接続された各ハードウェアに伝播させるものとする。CPU201は、RAM202及び記憶装置203から読み込んだプログラムを実行し、本実施形態に係る発明を実現するためにシステムステムバス200で接続されたクライアント装置の各ハードウェアを直接的あるいは間接的に制御する。RAM202は、CPU201が動作するためのワーク領域として利用される一時メモリ領域である。記憶装置203は、基本ソフトウェアであるOSやその他ソフトウェアモジュールが記憶されているHDDに代表されるような外部記憶装置である。ネットワーク装置204は、ネットワーク100に接続して他の装置と通信を行うハードウェアである。入出力インターフェース205は、入出力装置206と接続するためのインターフェースである。入出力インターフェース205は例えばPS2やUniversal Serial Bus(USB)、アナログやデジタルのディスプレイインターフェースを備える。入出力装置206は、入出力インターフェース205を介してクライアント装置と接続し、情報のインプットおよびアウトプットを行う装置である。入出力装置206は例えばディスプレイ、キーボード、マウスなどがある。
図3は、図1に示すファイルサーバ102、ファイル情報管理サーバ103、イベント情報管理サーバ104、ファイル格納場所管理サーバ105のハードウェア構成の一例を示すブロック図である。システムバス300は、ファイルサーバ102、ファイル情報管理サーバ103、イベント情報管理サーバ104を構成する各ハードウェアを相互に接続するバスである。本実施例においては特に言及しない限り、システムバス300はCPU301からの制御命令を、システムバスに接続された各ハードウェアに伝播させるものとする。CPU301は、RAM302および記憶装置303から読み込んだプログラムを実行し、本実施形態に係る発明を実現するためにシステムバス300で接続されたクライアント装置の各ハードウェアを直接的あるいは間接的に制御する。RAM302は、CPU301が動作するためのワーク領域として利用される一時メモリ領域である。記憶装置303は、基本ソフトウェアであるOSやその他ソフトウェアモジュールが記憶されているHDDに代表されるような外部記憶装置である。ネットワーク装置304は、ネットワーク100に接続して他の装置と通信を行うハードウェアである。なお、図1に示すファイルサーバ102、ファイル情報管理サーバ103、イベント情報管理サーバ104、ファイル格納場所管理サーバ105はクラウドコンピューティングサービスとして提供されるものであり、図3に示した各ハードウェア要素が仮想マシンソフトウェアによって、アプリケーションソフトウェアとしてそれぞれ実現され、物理ハードウェア要素と同様の挙動をとるものとする。
●クライアントのソフトウェア
図4は、本実施例におけるクライアント装置101で稼働するクライアント装置情報送信アプリケーション400のソフトウェア構成の一例を示すブロック図である。クライアント装置情報送信アプリケーション400は、クライアント装置101の記憶装置203に格納され、CPU201によって実行される。クライアント装置情報送信アプリケーション400は、通信部401、情報収集部402から構成される。通信部401は、ネットワーク装置204を介してファイルサーバ102と通信を行う。情報収集部402は、クライアント装置101が生成するクライアント装置情報を収集して、ファイルとして記憶装置203に保存する。具体的にはクライアント装置101が出力するハードウェアのログ情報などを逐次ファイルとして記憶装置203に保存する。クライアント装置情報送信アプリケーション400は、通信部401を介してファイルサーバ102にクライアント装置情報を送信する。
●ファイルサーバのソフトウェア
図5は、本実施例におけるファイルサーバ102で稼働するファイル管理アプリケーション500のソフトウェア構成の一例を示すブロック図である。ファイル管理アプリケーション500は、ファイルサーバ102の記憶装置303に格納されCPU301によって実行される。ファイル管理アプリケーション500は、通信部501、ファイル管理部502、ファイル保存部503から構成される。通信部501は、ネットワーク装置304を介してクライアント装置101およびイベント情報管理サーバ104と通信を行う。ファイル管理部502は、通信部501を介してクライアント装置101およびイベント情報管理サーバ104からのリクエストを受信する。また、ファイル管理部502は、通信部501を介してイベント情報管理サーバ104へイベントを送信する。ファイル保存部503は、ファイル管理部502からの指示に従って、クライアント装置101から受信したファイルの実体を保存する。またファイル保存部503は、ファイル管理部502からの指示にしたがって図1に示す本実施形態に係る発明の各構成要素からリクエストに応じたファイルの実体を送信する。ファイル保存部503がファイルの実体を管理するデータの一例を表1のファイル管理テーブルに示す。
[表1]ファイル管理テーブル
ID 保存パス ファイル名 ファイルサイズ ファイルデータ
1 logdata/client1 201601.log 1024KB <バイナリデータ>
2 logdata/client1 201602.log 2048KB <バイナリデータ>
3 logdata/client2 201605.log 512KB <バイナリデータ>。
表1において、IDカラムは、ファイルサーバ102において保存するファイルをファイル管理アプリケーション500が一意に識別するための値を格納するカラムである。保存パスカラムは、ファイルサーバ102におけるファイルの格納場所のパス情報を格納するカラムである。ファイル名カラムは、ファイルサーバ102において保存するファイルの名称の値を格納するカラムである。ファイルサイズカラムは、ファイルサーバ102において保存するファイルのサイズの値を格納するカラムである。ファイルデータカラムは、ファイルサーバ102において保存するファイルの実体となるバイナリデータを保存するカラムである。
●ファイル情報管理サーバのソフトウェア
図6は、本実施例におけるファイル情報管理サーバ103で稼働するファイル情報管理アプリケーション600のソフトウェア構成の一例を示すブロック図である。ファイル情報管理アプリケーション600は、ファイル情報管理サーバ103の記憶装置303に格納されCPU301によって実行される。ファイル情報管理アプリケーション600は、通信部601、ファイル情報管理部602、ファイル情報保存部603から構成される。通信部601は、ネットワーク装置304を介して、イベント情報管理サーバ104と通信を行う。ファイル情報管理部602は、通信部601を介して、イベント情報管理サーバ104からのリクエストを受信する。ファイル情報保存部603は、ファイル情報管理部602からの指示に従って、ファイルサーバ102から受信したファイルの実体から抽出した各属性情報を保存する。後述するイベント情報管理サーバ104が実行する非同期処理コードの実行結果として、各属性情報がファイル情報保存部603に保存される。ファイル情報保存部603がファイルの属性情報を管理するデータの一例を表2のファイル情報管理テーブルに示す。
[表2]ファイル情報管理テーブル
ID ファイルサーバID ・・・ 属性
A 1 ・・・ <テキストデータ>
B 2 <テキストデータ>
C 3 <テキストデータ>。
表2において、IDカラムは、ファイル情報管理サーバ103において保存するファイルの属性情報をファイル情報管理アプリケーション600が一意に識別するための値を格納するカラムである。ファイルサーバIDカラムは、属性情報を抽出したファイルの実体に対応するファイル管理テーブル(表1)のIDカラムの値を格納するカラムである。属性カラムは、ファイルの実体から抽出した属性情報をそれぞれ格納するカラムである。属性カラムに格納する具体的な値としては、アプリケーションの用途として様々な情報が挙げられる。例えば、ファイルから抽出した全文検索用のインデックステキストデータ等が挙げられる。なお、本実施例においては、抽出する属性情報の値については特に限定するものではない。
●イベント情報管理サーバのソフトウェア
図7は、本実施例におけるイベント情報管理サーバ104で稼働する各アプリケーションのソフトウェア構成の一例を示すブロック図である。イベント情報管理サーバ104では、非同期処理コード管理アプリケーション700、非同期処理コード実行管理アプリケーション710、非同期処理コード実行環境720が記憶装置303に格納され、CPU301によって実行される。非同期処理コード管理アプリケーション700は、イベント情報管理サーバ104で実行する非同期処理コードの保存と非同期処理コードの実行設定の管理を行うものである。非同期処理コード管理アプリケーション700は、通信部701、非同期処理コード管理部702、非同期処理コード保存部703、非同期処理コード設定保存部704から構成される。通信部701は、ネットワーク装置304を介して管理者装置106、非同期処理コード実行管理アプリケーション710と通信を行う。非同期処理コード管理部702は、通信部701を介して管理者装置106からの非同期処理コード登録リクエストを受信する。また、非同期処理コード実行管理アプリケーション710からの非同期処理コード要求リクエストを受信する。非同期処理コード保存部703は、非同期処理コード管理部702からの指示に従って、管理者装置106から受信した非同期処理コードを保存する。また、非同期処理コード保存部703は、非同期処理コード管理部702からの指示に従って、非同期処理コード実行管理アプリケーション710に非同期処理コードを送信する。非同期処理コード保存部703が非同期処理コードを管理するデータの一例を表3の非同期処理コード管理テーブルに示す。
[表3]非同期処理コード管理テーブル
ID ファイル名 ファイルデータ
1 asyncproc1.zip <バイナリデータ>
2 asyncproc2.zip <バイナリデータ>。
表3においてIDカラムは、非同期処理コード管理アプリケーション700において、保存する非同期処理コードを一意に識別するための値を格納するカラムである。ファイル名カラムは、非同期処理コード管理アプリケーション700において、保存する非同期処理コードのファイル名称の値を格納するカラムである。ファイルデータカラムは、非同期処理コード管理アプリケーション700において、保存する非同期処理コードのバイナリデータを保存するカラムである。
非同期処理コード設定保存部704は、非同期処理コード管理部702からの指示に従って、クライアント装置101から受信した非同期処理コードの実行設定を非同期処理コードの実体と関連付けて保存する。また、非同期処理コード保存部703は、非同期処理コード管理部702からの指示に従って、非同期処理コード実行管理アプリケーション710に非同期処理コードの実行設定を非同期処理コードと合わせて送信する。非同期処理コード設定保存部704が非同期処理コードの実行設定を管理するデータの一例を表4の実行環境設定テーブル、表5のイベント設定テーブルに示す。
[表4]実行環境設定テーブル
ID 実行環境タイプ CPU RAM HDD
1 LOW 1GHz 2GB 500MB
2 NORMAL 2GHz 4GB 1GB
3 MIDDLE 3GHz 6GB 5GB
4 HIGH 3GHz 8GB 10GB。
表4においてIDカラムは、非同期処理コード管理アプリケーション700において。非同期処理コードを実行する仮想マシン環境の設定を一意に識別するための値を格納するカラムである。実行環境タイプカラムは、非同期処理コードを実行する仮想マシン環境の特徴を示す名称を格納するカラムである。CPUカラムは、非同期処理コードを実行する仮想マシン環境のCPUの指標値(たとえばクロック周波数等)を格納するカラムである。RAMカラムは、非同期処理コードを実行する仮想マシン環境のRAMの指標値(たとえばバンド幅や容量等)を格納するカラムである。HDDカラムは、非同期処理コードを実行する仮想マシン環境のHDDのサイズを格納するカラムである。
[表5]イベント設定テーブル
ID 対象ファイルパス 対象イベント 非同期処理コードID 実行環境ID
1 logdata/client1/ 追加 1 2
2 1 3
3 1 4
4 logdata/client2/ 更新 2 3。
表5においてIDカラムは、非同期処理コード管理アプリケーション700において。非同期処理コードの実行対象となるイベントを一意に識別するための値を格納するカラムである。対象ファイルパスカラムは、非同期処理コードを実行する対象のファイルパスを格納するカラムである。対象イベントカラムは、非同期処理コードを実行する条件となる対象ファイルパスカラムに格納されたファイルパスに該当するファイルに対して実行された操作の内容を格納するカラムである。非同期処理コードIDカラムは、実行する非同期処理コードに該当する非同期処理コード管理テーブルのIDカラムの値を格納するカラムである。実行環境IDカラムは非同期処理コードを実行する環境に該当する実行環境設定テーブルのIDカラムの値を格納するカラムである。
例えばイベント設定テーブルのIDカラムの値が「1」のレコードの場合、「logdata/client1」以下の格納場所にファイルが「追加」された場合に、非同期処理コード管理テーブル(表3)に従って非同期処理コードIDが1である「asyncproc1.zip」の非同期処理コードを、実行環境設定テーブル(表4)に従って実行環境IDが1である環境即ちCPU 2GHz、RAM 4GB、HDD1GBの仮想マシン環境で実行することを意味している。
非同期処理コード実行管理アプリケーション710は、ファイルサーバ102から受信したイベントに応じた非同期処理コードとその実行設定を非同期処理コード管理アプリケーション700から取得し、それを実行するための非同期処理コード実行環境720を作成するものである。非同期処理コード実行管理アプリケーション710は、通信部711、非同期処理コード実行管理部712、非同期処理コード実行部713、非同期処理コード実行環境管理部714から構成される。通信部711は、ネットワーク装置304を介しファイルサーバ102、非同期処理コード管理アプリケーション700、非同期処理コード実行環境720と通信を行う。非同期処理コード実行管理部712は、通信部711を介してファイルサーバ102からイベントを、非同期処理コード管理アプリケーション700から非同期処理コードおよび実行設定を受信する。非同期処理コード実行部713は、非同期処理コード実行管理部712から非同期処理コードおよび実行設定を受信する。また、非同期処理コード実行部713は、非同期処理コード実行管理部712から受信した実行設定に基づき、非同期処理コード実行環境720を生成し、イベントに対応する非同期処理コードの実行を指示する。非同期処理コード実行環境管理部714は、非同期処理コード実行環境720で実行する非同期処理コードの実行状況を管理する。非同期処理コード実行環境管理部714が管理する非同期処理コード実行環境720の稼働条件の一例を表6の実行環境監視項目テーブルに示す。
[表6]実行環境監視項目テーブル
ID 監視項目 監視項目値
1 リトライ回数 5
2 実行時間 60
3 非同期処理コードの同時起動数 100。
表6においてIDカラムは、非同期処理コード実行管理アプリケーション710において、非同期処理コード実行環境720の稼働状況を管理する項目を一意に識別するための値を格納するカラムである。監視項目カラムは、非同期処理コード実行環境720で実行中の非同期処理コードの実行状況を監視するための項目を格納するカラムである。監視項目値カラムは、監視項目カラムに格納された項目に対する閾値を格納するカラムである。例えば実行環境監視項目テーブル(表6)のIDカラムの値が「1」のレコードの場合、非同期処理コード実行環境720で実行される非同期処理コードのリトライを5回まで許容することを意味する。5回実行しても非同期処理コードがイベントの処理を完了できなかった場合は、エラーとなり非同期処理コード実行管理アプリケーション710は非同期処理コードの実行を中断する。また実行環境監視項目テーブルのIDカラムの値が「2」のレコードの場合、非同期処理コード実行環境720で実行される非同期処理コードがイベントの処理に要する時間を60秒までと制限することを意味する。60秒を越えても非同期処理コードが非同期処理コード実行管理アプリケーション710に対して処理完了の通知を送信しない場合は、非同期処理コード実行管理アプリケーション710は非同期処理コード実行環境720に非同期処理コード終了指示を送信し、処理を中断させる。実行環境監視項目テーブルのIDカラムの値が「3」のレコードの場合、非同期処理コード実行環境720で同時に実行される非同期処理コードの上限が100個までであることを意味する。起動中の非同期処理コードを記憶する起動数カウンタは、非同期処理コードをひとつ起動するごとにインクリメントし、ひとつ終了するごとにデクリメントする。前述した非同期処理コード実行部713が非同期処理コード実行環境720を生成しようとする前に、起動数カウンタを確認し、100個に達していなければ生成し、達していた場合は生成せずに終了する。このように実行環境監視項目テーブルには、イベント駆動型コンピューティングサービスの様々な制約を定義できる。
非同期処理コード実行環境720は、ファイルサーバ102が非同期処理コード実行管理アプリケーション710に送信したイベントを対応する非同期処理コードを実行して処理するための仮想マシン環境である。非同期処理コード実行環境720は、クラウドコンピューティングサービスとして提供されるものであり、図3に示した各ハードウェア要素が仮想マシンソフトウェアによって、アプリケーションソフトウェアとしてそれぞれ実現され、物理ハードウェア要素と同様の挙動をとるものとする。非同期処理コード実行環境720は、通信部721、実行部722で構成される。
通信部721は、ネットワーク装置304を介しファイルサーバ102、ファイル情報管理サーバ103、非同期処理コード実行管理アプリケーション710と通信を行う。実行部722は、通信部721を介して非同期処理コード実行管理アプリケーション710から受信した非同期処理コードを実行し、非同期処理コード実行管理アプリケーション710が受信したイベントを処理する。また、実行部722は、実行中の非同期処理コードに対する監視リクエストを非同期処理コード実行管理アプリケーション710から受信し、非同期処理コードの実行を制御する。
●ファイル格納場所管理サーバのソフトウェア
図8は、本実施例におけるファイル格納場所管理サーバ105で稼働するファイル格納場所管理アプリケーション800のソフトウェア構成の一例を示すブロック図である。ファイル格納場所管理アプリケーション800は、ファイル格納場所管理サーバ105の記憶装置303に格納されCPU301によって実行される。ファイル格納場所管理アプリケーション800は、通信部801、ファイル格納場所確定部802から構成される。通信部801は、ネットワーク装置304を介してクライアント装置101と通信を行う。ファイル格納場所確定部802は、通信部801を介してクライアント装置101からのリクエストを受信する。ファイル格納場所確定部802は、リクエストによって、送信元のクライアント装置の識別子、ファイルの種類、ファイル名称等を取得し、格納場所を確定する。ファイル格納場所確定部802が格納場所を確定するテーブルの一例を、表7のファイル格納場所管理テーブルに示す。
[表7]ファイル格納場所管理テーブル
ID 条件 保存パス
1 クライアント識別子:client1
ファイルの種類:ログ情報 logdata/client1
ファイル名:任意
2 クライアント識別子:client2
ファイルの種類:ログ情報 logdata/client2
ファイル名:任意。
表7においてIDカラムは、ファイル格納場所管理アプリケーション800において、ファイル格納場所確定条件を管理する項目を一意に識別するための値を格納するカラムである。条件カラムは、格納場所を確定するための条件あるいは条件群を格納するカラムである。保存パスカラムは、格納場所を示す情報を格納するカラムである。
●管理者装置のソフトウェア
図9は、本実施例における管理者装置106で稼働する管理アプリケーション900のソフトウェア構成の一例を示すブロック図である。管理アプリケーション900は、管理者装置106の記憶装置203に格納され、CPU201によって実行される。管理アプリケーション900は、通信部901、管理部902から構成される。通信部901は、ネットワーク装置204を介してイベント情報管理サーバ104と通信を行う。管理部902は、非同期処理コードの生成と管理を行い、通信部901を介してイベント情報管理サーバ104に対して非同期処理コード登録リクエストを送信する。
●非同期処理コードの登録
図10は、管理者装置106がイベント情報管理サーバ104の非同期処理コード管理アプリケーション700に非同期処理コードを登録する一連の処理を示したシーケンス図である。
ステップS1001において、管理者装置106は、通信部901を介して非同期処理コード管理アプリケーション700に非同期処理コード登録リクエストを送信する。非同期処理コード登録リクエストとして非同期処理コード管理アプリケーション700に送信されるレコードの一例を、表8の非同期処理コード登録リクエストレコードに示す。
[表8]非同期処理コード登録リクエストレコード
非同期処理コード 非同期処理コード 実行対象 実行対象イベント 実行環境ID
ファイル名 ファイルパス
<バイナリデータ> asyncproc1.zip logdata/client1 追加 2。
非同期処理コードカラムは、非同期処理コードの実体をバイナリデータで格納するカラムである。非同期処理コードファイル名カラムは、非同期処理コードのファイル名を格納するカラムである。実行対象ファイルパスカラムは、非同期処理コードを実行する対象となるファイルサーバ102上のファイルパスを格納するカラムである。非同期処理コード実行管理アプリケーション710はファイルサーバ102から受信するイベントに含まれるファイルパスを参照し、このカラムに格納されたパスと一致した場合に非同期処理コードを実行すべきイベントであると判別することになる。実行対象イベントカラムは、ファイルサーバ102上の実行対象ファイルパスに格納されたファイルに対して、非同期処理コードを実行する対象とする操作を格納するカラムである。実行環境IDカラムは、非同期処理コードを実行する実行環境に該当する実行環境設定テーブルのIDカラムの値を格納するカラムである。例えば、表7に示す非同期処理コード登録リクエストレコードの場合、ファイルサーバ102のlogdata/client1以下の格納場所にファイルが追加された場合に、IDが2で示される実行環境で実行される非同期処理コードファイルasyncproc1.zipを登録するためのリクエストという意味となる。
ステップS1002において、非同期処理コード実行管理アプリケーション710は、通信部701が受信した非同期処理コード登録リクエストレコードから非同期処理コード管理レコードを生成して、非同期処理保存部703の非同期処理コード管理テーブル(表3)に格納する。非同期処理コード管理レコードのファイル名カラムには非同期処理コード登録リクエストレコードの非同期処理コードファイル名カラムの値が格納される。非同期処理コード管理レコードのファイルデータカラムには非同期処理コード登録リクエストレコードの非同期処理コードカラムのバイナリデータが格納される。
ステップS1003において、非同期処理コード実行管理アプリケーション710は、イベント設定レコードを生成して、非同期処理設定保存部704のイベント設定テーブル(表5)に格納する。イベント設定レコードの対象ファイルパスカラムには、非同期処理コード登録リクエストレコードの実行対象ファイルパスカラムの値が格納される。イベント設定レコードの対象イベントカラムには、非同期処理コード登録リクエストレコードの実行対象イベントカラムの値が格納される。イベント設定レコードの非同期処理コードIDカラムには、ステップS1002で非同期処理保存部703の非同期処理コード管理テーブルに格納された非同期処理コード管理レコードのIDカラムの値が格納される。イベント設定レコードの実行環境IDカラムには、非同期処理コード登録リクエストレコードの実行環境IDカラムの値が格納される。以上の一連の処理によって、非同期処理コード実行管理アプリケーション710に非同期処理コードが登録されることになる。
●非同期処理コードの実行
次に、ファイルサーバ102で発生するイベントに応じて、図7で説明したイベント情報管理サーバ104上の非同期処理コードが処理を実行する一連の流れを説明する。
図11A、図11Bは、本実施例において非同期処理コードが起動して、完了するまでの一連の処理を示したシーケンス図である。図11Aと図11Bは併せてひとつのシーケンスを表している。図11A、図11Bで説明する非同期処理コードは、クライアント装置101がファイルサーバ102へのファイルの新規登録操作を行うと、それをイベントとして自動で起動され、新規登録されたファイルの属性情報を抽出してファイル情報管理サーバ103のファイル情報保存部603に登録する処理を実行するものとする。もちろんこれはトリガやイベント駆動型コンピューティングサービスの一例であって、他のイベントをトリガとし、他の処理をサービスとしてもよいことはもちろんである。
ステップS1101において、クライアント装置101は通信部401を介して、ファイル格納場所リクエストをファイル格納場所管理サーバ105に送信する。ステップS1102では、ファイル格納場所確定部802が、受信したリクエストを元に保存先パスを確定し、クライアント装置101に返信する。ここでは、表7のIDが「1」のファイル格納場所管理テーブルレコードの保存パス"logdata/client1"に確定したものとする。
ステップS1111において、クライアント装置101は通信部401を介して情報収集部402がファイルとして出力したログ情報を登録するファイルアップロードリクエストを、ファイルサーバ102に送信する。ファイルアップロードリクエストとして、ファイルサーバ102に送信されるレコードの一例をファイルアップロードリクエストレコードに示す。
[表9]ファイルアップロードリクエスト
ファイルデータ ファイル名 保存先パス
<バイナリデータ> 201601.log logdata/client1
<バイナリデータ> 201602.log logdata/client1
<バイナリデータ> 201603.log logdata/client1。
表9においてファイルデータカラムは、送信対象のファイルのバイナリデータを格納するカラムである。ファイル名カラムは、送信対象のファイルの名称を格納するカラムである。保存先パスカラムは、ファイルのアップロード先となるファイルサーバ102に存在する格納場所を格納するカラムである。保存先パスはステップS1101のリクエストに対する応答により与えられる。
ステップS1112において、ファイルサーバ102は、通信部501が受信したファイルアップロードリクエストに含まれる各データをファイル保存部503のファイル管理テーブル(表1)に追加する。ファイルサーバ102はファイル保存部503への各データの追加が完了すると、通信部501を介してクライアント装置101にファイルアップロードが完了したことを通知するレスポンスを送信する。
ステップS1113において、ファイルサーバ102はファイルのアップロードが完了したことを示すイベントを生成し、通信部501を介して非同期処理コード実行管理アプリケーション710に通知する。ファイルアップロード完了イベントとして、非同期処理コード実行管理アプリケーション710に送信されるレコードの一例をファイルアップロード完了イベントに示す。
[表10]ファイルアップロード完了イベント
ファイルパス イベント種別
logdata/client1/201601.log 追加。
表10においてファイルパスカラムは、イベントを生成するきっかけとなったファイルのファイルサーバ102でのファイルパスを格納するカラムである。イベント種別カラムは、ファイルパスカラムに格納されたファイルパスに保存されているファイルサーバ102のファイルに対して行われた操作内容を格納するカラムである。ファイルサーバ102は、ステップS1111でクライアント装置101からファイルを新規にアップロードされたため、この場合には「追加」の値が入る。
ステップS1114において、非同期処理コード実行管理アプリケーション710は、通信部711を介して受信したファイルアップロード完了イベントの内容を非同期処理コード実行管理部712で確認する。非同期処理コード実行管理部712は、まずファイルアップロード完了イベントのファイルパスカラムの値からファイル名を除いたパス名と、イベント種別カラムの値を取得する。次に非同期処理コード実行管理部712は通信部711を介して、非同期処理コード管理アプリケーション700の非同期処理コード設定保存部704のイベント設定テーブル(表5)を参照し、対象ファイルパスカラムの値と対象イベントカラムの値の組み合わせと、パス名とイベント種別カラムの値の組み合わせと一致するレコードを検索し、該当するレコードがあればそれを取得する。該当するレコードが無ければ、通知されたイベントをトリガとする非同期処理は設定されていないと判断できる。その場合にはステップS1114を最後に、本シーケンスを終了させてよい。
該当するレコードがあれば、ステップS1115において、非同期処理コード実行管理部712は、ステップS1114で確認したイベントに対応する非同期処理コードを非同期処理コード管理アプリケーション700から取得する。非同期処理コード実行管理部712は、イベント設定レコードの非同期処理コードIDカラムの値が一致するレコードを非同期処理コード保存部703の非同期処理コード管理テーブル(表3)から検索し、ファイルデータカラムに格納された非同期処理コードのバイナリデータを取得する。
ステップS1116において、非同期処理コード実行管理部712はステップS1115で取得した非同期処理コードを実行するための設定を非同期処理コード管理アプリケーション700から取得する。非同期処理コード実行管理部712は、イベント設定レコードの実行環境IDカラムの値が一致するレコードを非同期処理コード保存部703の実行環境設定テーブル(表4)から検索し、取得する。
ステップS1117において、非同期処理コード実行管理部712は非同期処理コード実行環境管理部714に対し、実行中の非同期処理コードの数が許容範囲内であるかを確認する。図16を用いてその処理の流れを説明する。ステップS1601にて、実行中の非同期処理コードの数が、最大許容数(表6のIDの「3」に示した上限値)より小さいかを確認する。Yes(上限値に達していない)と判断された場合には、ステップS1602に進み、起動数カウンタをインクリメントする、すなわち1を加算する。このときには新たな非同期処理コードの実行を許可する。一方ステップS1601の判断でNo(上限値に達している)と判断された場合には、ステップS1603に進み、新たな非同期処理コードの実行は不許可とする。あるいは現在のイベントに対する処理を中断する。以上で、図16の説明を終了する。なお図16の処理は、実行中の非同期処理コードの数を非同期処理コード実行環境管理部714から取得した非同期処理コード実行管理部712が行ってもよいし、非同期処理コード実行環境管理部714が行ってその結果を非同期処理コード実行管理部712に返してもよい。なお、非同期処理コードの実行が終了した場合には、起動数カウンタから1を減算する。この減算処理はたとえば非同期処理コード実行管理部712が行ってよい。また新たな非同期処理コードの実行が不許可となった場合には、その時点で処理シーケンスを終了してもよいし、あるいは一定の時間あるいは一定の回数ステップS1117を繰り返してリトライしてもよい。一定の時間あるいは一定の回数のリトライで実行できなければ、その時点で処理シーケンスを終了してもよい。
新たな非同期処理コードの実行が許可となった場合には、ステップS1118において、非同期処理コード実行管理部712は、非同期処理コード実行管理部712はステップS1116で取得した実行環境設定レコードに基づく性能の非同期処理実行環境720の仮想マシンを作成し、起動する。
ステップS1119において、非同期処理コード実行管理部712は通信部711を介して非同期処理実行環境720の記憶装置303にステップS1115で取得した非同期処理コードを配備する。
ステップS1120において、非同期処理コード実行部713は通信部711を介して非同期処理実行環境720の実行部722に非同期処理コード実行リクエストを送信する。実行部722は非同期処理コード実行リクエストを受信するとステップS1119で受信した非同期処理コードをRAM302に読み込み非同期処理コードの実行を開始する。非同期処理コード実行リクエストとして、実行部722に送信されるレコードの一例を非同期処理コード実行リクエストレコードに示す。
[表11]非同期処理コード実行リクエストレコード
ファイルパス イベント設定ID
logdata/client1/201601.log 1
logdata/client1/201602.log 1
logdata/client1/201603.log 1。
表11においてファイルパスカラムは、非同期処理コードの処理対象であるファイルのファイルサーバ102上でのパスを格納するカラムである。ステップS1113で受信したファイルアップロード完了イベントレコードのファイルパスカラムの値が格納される。イベント設定IDカラムは、非同期処理コード実行管理アプリケーション710が、ステップS1113で取得したイベント設定レコード(表5)のIDカラムの値が格納される。
実行部722は、非同期処理コードの実行中は実行状況を管理する。実行部722が管理する実行状況レコードの一例を実行状況レコードに示す。
[表12]実行状況レコード
ID ステータス 実行回数 経過時間
1 実行中 1 40
2 実行中 1 45
3 実行中 1 50。
表12においてIDカラムは、実行部722が実行している非同期処理コードを一意に識別するための値を格納するカラムである。ステータスカラムは、実行部722が実行している非同期処理コードそれぞれの実行状況の値を確認するカラムである。ステータスとして取り得る値は非同期処理コードの処理内容によって値の数の増減が考慮される。本実施例においては、非同期処理コードが起動して、終了するまでの間は「実行中」の値をとる。正常に処理が終了した場合には「正常終了」、エラーが発生して終了した場合には「エラー終了」の値をとる。実行回数カラムは、実行部722がファイルサーバ102で発生したイベントに対して非同期処理コードを実行した回数を格納するカラムである。実行した回数とはたとえばリトライの回数である。経過時間カラムは、実行部722が非同期処理コードの実行を開始してから経過した時間を例えば秒単位で格納するカラムである。経過時間カラムの値はステータスカラムの値が「実行中」の間加算され続け、ステータスカラムの値が「正常終了」「エラー終了」となった場合には加算が中断される。また、ステータスカラムの値が「実行中」に再び変化した場合には経過時間カラムの値はリセットされ「0」となる。
ステップS1121において、非同期処理コード実行環境管理部714は、ステップS1120で開始した非同期処理の実行状況を確認する監視処理を実行する。図12に、ステップS1121において非同期処理コード実行環境管理部714が実行する監視処理の詳細なフローチャートを示す。なお本処理はステップS1120で開始した非同期処理と並行して実行され、非同期処理が終了するまで、もしくは非同期処理コード実行環境管理部714の実行環境監視項目テーブル(表6)に登録された監視項目を越えるまで、非同期処理コード実行環境管理部714によって実行される。
ステップS1201において、非同期処理コード実行環境管理部714は、実行環境監視項目テーブルから各実行環境監視項目レコードを取得する。
ステップS1202において、非同期処理コード実行管理部714は、非同期処理コード実行環境720の実行状況レコードを取得する。
ステップS1203において、非同期処理コード実行管理部714は、ステップ1002で取得した実行状況レコードの経過時間カラムの値とステップS1201で取得した実行環境監視項目レコードの監視項目カラムの値が「実行時間」のレコードの監視項目値カラムの値と比較する。経過時間カラムの値が監視項目値カラムの値よりも小さかった場合には、ステップS1202に戻り、監視を継続する。経過時間カラムの値が監視項目値カラムの値よりも大きかった場合にはステップS1204に進む。
ステップS1204において、非同期処理コード実行管理部714は、非同期処理コード実行環境720で実行されている処理を中断する。
ステップS1205において、非同期処理コード実行管理部714は、ステップS1202で取得した実行状況レコードの実行回数カラムの値とステップS1201で取得した実行環境監視項目レコードの監視項目カラムの値が「リトライ回数」のレコードの監視項目値カラムの値と比較する。実行回数カラムの値が監視項目値カラムの値よりも小さかった場合にはステップS1206に進む。実行回数カラムの値が監視項目値カラムの値と一致した場合には監視処理を終了する。
ステップS1206において、非同期処理コード実行管理部714は、非同期処理コード実行環境720の実行状況レコードの実行回数カラムの値を1加算する。
ステップS1207において、非同期処理コード実行管理部714は、非同期処理コードを再実行する。
以上の一連の処理によって、非同期処理コード実行環境720において非同期処理コードが、非同期処理コード実行管理アプリケーション710が定めた制限値を超えることなく実行されるように監視される。ステップS1205でリトライ回数が制限値に達していると判定した場合には、それ以上のリトライを行わず、その時点で処理シーケンスを通史してよい。なお本ステップに限らず、非同期処理コードを実行することなく、あるいは中断した状態で図11A,図11Bのシーケンスを中止する場合には、その旨を実行履歴に記録してもよい。なお図11BにおいてはステップS1121の後でステップS1131、S1132が実行されるように記載されているが、これは記載上の便宜のためである。ステップS1131およびステップS1132は、非同期処理コードを実行することで遂行されるステップであり、非同期処理コードの内容に応じた処理となる。またステップS1121による監視は、非同期処理コードの実行中にたとえば定期的に繰り返される。
ステップS1131において、実行部722はファイルサーバ102からステップS1120で受信した非同期処理コード実行リクエストレコードのファイルパスに該当するファイルを取得する。
ステップS1132において、実行部722はステップS1131で取得したファイルから各属性情報を抽出し、ファイル属性情報レコードを生成して、ファイルサーバ102のファイル情報保存部603のファイル情報管理テーブルに登録する。実行部722は、非同期処理コードが正常終了すると非同期処理コード実行管理部712に終了通知を送信する。
非同期処理コードの実行が終了すると、ステップS1141において、非同期処理コード実行管理部712は、非同期処理実行環境720の仮想マシンをシャットダウンし、破棄する。また、非同期処理コード実行環境管理部714は、監視している起動中の非同期処理コードの数(表6のIDの「3」として管理)を、ひとつデクリメントする。なお非同期処理コードの実行が終了は、たとえばステップS1121による実行状況の監視により判定できる。あるいは実行部722が処理の完了を非同期処理コード実行部713に通知してもよい。
●非同期処理コードに対する制約による不履行の回避
図10、図11、図12、図16で示した一連の処理によって、ファイルサーバ102でイベントが発生するたびに、イベント情報管理サーバ104において、イベントに対応した非同期処理コードが適宜実行されることを示した。しかし、前述したように、同時に実行可能な非同期処理コード数には上限があるため、すべての処理が履行できないケースがある。たとえば、クライアント装置情報送信アプリケーション400は、ログ情報をファイルとしてファイルサーバ101に送信するが、保持された期間や情報量等に応じて複数のファイルを保持し、それらをまとめて送信する場合がある。そのファイル数が非常に多い場合や更に他のクライアント装置101からの送信が重なった場合に、短時間に大量のファイル着信イベントが発生し、起動した非同期処理コード数が許容上限に達して、それ以降のイベント処理が不履行になるケースがある。ここからは、非同期処理コードの実行を抑えることで前記課題を解決する方法について説明する。なお、本実施例でのクライアント装置情報送信アプリケーション400は、複数のログファイルに加えて、送信した一連のログファイルの総数情報が記された統計情報ファイル(stat.txt)を最後に送信するものとする。受信側は、統計情報ファイルを受信することで、一連のログファイルがすべて着信しているかを判断することができる。以後、本実施例では、下記の設定や条件で処理が進められるものとする。
[表13]ファイル格納場所管理テーブル
ID 条件 保存パス
1 クライアント識別子:client1 logdata/client1
ファイルの種類:ログ情報
ファイル名:*.log
2 クライアント識別子:client1 logdata/client1-NUM
ファイルの種類:ログ情報
ファイル名:stat.txt。
ファイル格納場所管理サーバ105は、クライアント装置101(client1)がログファイル(*.log)を送信する際はID「1」の保存パスを、統計情報ファイル(stat.txt)を送信する際はID「2」の保存パスを、それぞれ返信する。また非同期処理管理テーブルの内容は表14のようなものであるとする。
[表14]非同期処理コード管理テーブル
ID ファイル名 ファイルデータ
1 FuncA.zip <バイナリデータ>。
すなわち"FuncA"という非同期処理コードが、IDの「1」に登録されているものとする。FuncAの処理の流れは、後述する図15で説明する。また、イベント設定テーブルの内容は表15のようなものである。
[表15]イベント設定テーブル
ID 対象ファイルパス 対称イベント 非同期処理コードID 実行環境ID
1 logdata/client1-NUM 追加 1 1。
すなわちファイルパス"logdata/client1−NUM"上にファイルが「追加」で置かれるとイベントが発生し、非同期処理コードIDが「1」の非同期処理コードが、実行環境ID「1」上で実行される設定である。すなわち、ファイルサーバ102が"stat.txt"を受信した場合のみ、"FuncA"の非同期処理コードが実行されることを意味する。
●本実施形態における非同期処理コードの実行
以下、図13を用いて処理の説明を行う。ステップS1301にて、クライアント装置101は、ファイル格納場所管理サーバ105に、ログファイルの格納場所を問い合わせる(ステップS1101と同じ)。
ステップS1302では、ファイル格納場所管理サーバ105は、格納場所を確定する(ステップS1102と同じ)。ここでステップS1302の詳細について、図14を用いて説明する。ステップS1401にて、リクエスト対象が統計情報ファイル(ファイル名:stat.txt)であるかどうか判断する。ステップS1401でYesの場合はステップS1402へ、Noの場合はステップS1403へ進む。ステップS1402では、格納場所として統計情報用のストレージ(logdata/client1−NUM)をセットする。ステップS1403では、格納場所としてログファイル用のストレージ(logdata/client1)をセットする。ステップS1404にて、格納場所を返信する。ステップS1302では、ログファイルであるため、ログファイル用のストレージ(logdata/client1)が返信されたものとする。
ステップS1303にて、クライアント101は、ファイルサーバ102へファイルのアップロードを行う(ステップS1111と同じ)。今回はログファイルであるため、保存パスはログファイル用のストレージとなる。
ステップS1304にて、ファイルサーバ102は、イベント情報をイベント情報管理サーバ104に送信する(ステップS1113と同じ)。表16は、ステップS1304で発行されるイベント情報の例である。
[表16]ファイルアップロード完了イベント
ファイルパス イベント種別
logdata/client1/201601.log 追加。
ステップS1305にて、非同期処理コード実行管理アプリケーション710は、イベント内容の確認を行う(ステップS1114と同じ)。ここでは、表15で示すイベント設定テーブルに、表16で示すイベントに該当するレコードが無いため、非同期処理コードの実行は行われない。以後、クライアント装置101からログファイルが送信された場合は、ステップS1301からステップS1305の処理が繰り返される。
次に、クライアント101から統計情報ファイルが送信されたものとする。なお、統計情報ファイルは、すべてのログファイルが送信された後、最後に送信されることを前提としているが、各ファイルサイズやトラフィックの関係で、ファイルサーバ102には逆転して到着するケースもある。そこで、ここではすべてのログファイルが揃う前に、統計情報ファイルが処理されるケースを考慮した例を示す。
ステップS1311では、ステップ1301と同様にファイル格納場所のリクエストが発行される。
ステップS1312では、図14の処理により、統計情報ファイルであることから統計情報用のストレージ(logdata/client1−NUM)が返信される。
ステップS1313からステップS1314では、ステップS1303およびステップS1304と同様に、イベント情報が送信される。表17は、ステップS1314で発行されるイベント情報の例である。
[表17]ファイルアップロード完了イベント
ファイルパス イベント種別
logdata/client1−NUM/stat.txt 追加。
ステップS1315にて、非同期処理コード実行管理アプリケーション710は、イベント内容の確認を行う(ステップS1305と同じ)。ここでは、表15で示すイベント設定テーブルに、表17で示すイベントに該当するレコードが存在するため、非同期処理コードの実行は行われる。
ステップS1315からステップS1318は、ステップS1114からステップS1121の処理と同じである。記載を省略しているが、ステップS1115、S1116、S1117、S1118も実行される。すなわち、非同期処理コードの実行数が許容範囲内であるか否かが判定され、許容範囲内であると判定された場合に非同期処理コードが実行される。
ステップS1331からステップS1334は、登録された非同期処理コードが実行部722上で実行されるものである。この処理フローは、図15を用いて詳細説明を行う。
非同期処理コードが実行されると、ステップS1502にて、ファイルサーバ102に、統計情報ファイルの取得を要求し、取得した情報からログファイルの総数を読み出す(ステップS1331も同処理を指す)。
ステップS1504にて、ファイルサーバ102に、ログファイルの着信数を問い合わせる(ステップS1332も同処理を指す)。なお、ここでは、クライアント装置101が今回送信している一連のログファイルだけを確認対象とする。たとえば、保存パスの途中に更に日付のパスを追加することでその格納場所には一連のログファイルだけが入るようにする方法、ファイルに属性情報を付けてそれを確認する方法、stat.txtにファイル名を記載して確認する方法等が考えられるが、それらに限定するものではない。
ステップ1505にて、全ファイルが揃っていると判断した場合はステップS1506へ、揃っていないと判断した場合にはステップS1508へ進む。
ステップS1508に進んだ場合、一定時間ウェイト(待機)し、再びステップS1504へ進んでチェックを繰り返す。
ステップS1506に進んだ場合、ファイルサーバ102にファイル取得を要求する(ステップS1334と同処理を指す。ステップS1131と同じ)。ここでは、一連のログ情報に係るすべてのファイルの情報取得を行う。
また、ステップS1507にて、ファイル情報管理サーバ103に、属性情報の保存を要求する(ステップS1335と同処理を指す。ステップS1132と同じ)。同様に、統計ファイルに基づいて収集した一連のログ情報に係るすべてのファイルの属性情報の一括保存を行う。以上で図15の処理を終了する。ここでは、アップロードされたログファイルの数に関わらず、その属性情報を保存するための非同期処理コードはひとつである。
図13に戻ると、ステップS1332のチェックでは、ログファイルがまだ揃っていないため、ステップS1505ではNoと判断される。その後、クライアント装置101からの最後のログファイルが届き、ステップS1321からステップS1325の処理がなされたものとする。よって、次のステップS1333のチェックでは、ステップS1505でYesと判断される。
その後、ステップS1341により、非同期処理の実行環境が破棄される(ステップS1141と同じ)。
以上のように、本実施形態では、ログファイルなどのファイルのアップロードという、本来イベント駆動処理行うべき第1の種類のイベントを検出しても処理を行わず、ログファイルの統計情報のアップロードという第2の種類のイベントを検出するとそれに応答してイベント駆動処理を行う。そして、その処理において、統計情報のアップロードというイベントに係る統計情報というデータ以外の、本来の処理対象であるログファイルを対象として、その属性等の情報を保存する。
以上により、複数ファイルの格納によるイベントが多数発生し得る環境であっても、代表するひとつの非同期処理コードで一括処理を行うことで、他のイベントに対する非同期処理コードの実行を抑えることができる。それにより、イベント対応の取りこぼしリスクを低減することができる。
[第2実施形態]
第1実施形態では、ファイル格納場所管理サーバ105の利用により、ログファイルと統計情報ファイルとで異なる格納場所を設定し、統計情報ファイルに対してのみイベント処理を行う形態を示した。しかし、クライアントアプリケーション400は予め決められた格納場所を持っている場合もあるし、ファイル格納場所管理サーバ105へ問い合わせたとしても同一の格納場所を指定される場合もある。そこで、本実施形態では、ファイル格納場所が同一の場合においても、非同期処理コードの重複実行を極力抑止する処理方法について説明する。以後、本実施例では、下記の設定や条件で処理が進められるものとする。表18に本実施形態に係るファイル格納場所管理テーブルの一例を示す。
[表18]ファイル格納場所管理テーブル
ID 条件 保存パス
1 クライアント識別子:client1 logdata/client1
ファイルの種類:ログ情報
ファイル名:(制限なし)。
表18のように、本実施例では、クライアント装置101から送信されるすべてのファイルが、"logdata/client1"に格納される例を示す。クライアント装置情報送信アプリケーション400は、ファイル格納場所管理サーバ105に問い合わせるのではなく、保存パスを自分で持っていても良い。表19に本実施形態に係る非同期処理コード管理テーブルの一例を示す。
[表19]非同期処理コード管理テーブル
ID ファイル名 ファイルデータ
1 FuncB.zip <バイナリデータ>。
表19では、"FuncB"という非同期処理コードが、IDの「1」に登録されているものとする。FuncBの処理の流れは、後述する図18で説明する。表20に本実施形態に係るイベント設定テーブルの一例を示す。
[表20]イベント設定テーブル
ID 対象ファイルパス 対称イベント 非同期処理コードID 実行環境ID
1 logdata/client1 追加 1 1。
表20のイベント設定テーブルは、ファイルパス"logdata/client1"上にファイルが「追加」で置かれるとイベントが発生し、非同期処理コードIDが「1」の非同期処理コードが、実行環境ID「1」上で実行される設定である。すなわち、ファイルサーバ102がクライアント装置101からのログ情報のファイルを受信すると、"FuncB"の非同期処理コードが実行されることを意味する。以下、図17A、図17Bを用いてログファイルのアップロードから始まるイベント駆動処理の説明を行う。なお図13と同じステップ番号の処理は、図13と同じ処理を行っていることを意味する。
ステップS1701にて、クライアント装置101は、ファイルサーバ102にログファイルを送信する。
ステップS1702にて、ファイルサーバ102は、イベント情報をイベント情報管理サーバ104に送信する。表21は、ステップS1702で発行されるイベント情報の例である。表21のイベント情報には、ログファイルのファイルパスと、イベント種別が「追加」であることが示されている。
[表21]ファイルアップロード完了イベント
ファイルパス イベント種別
logdata/client1/201601.log 追加。
ステップS1703にて、非同期処理コード実行管理アプリケーション710は、イベント内容の確認を行う。ここでは、表20で示すイベント設定テーブルに、表21で示すイベントに該当するレコードが存在するため、対応する非同期処理コード"FuncB"が実行される。そのためステップS1704において、実行部722に対してFuncBのコードを送信し、その実行を要求する。ステップS1731において非同期処理コード"FuncB"が実行される。なおステップS1703からステップS1704は、ステップS1114からステップS1120の処理と同じである。記載を省略しているが、ステップS1115、S1116、S1117、S1118、S1119も実行され、さらにステップS1120の後にはステップS1121も実行される。すなわち、非同期処理コードの実行数が許容範囲内であるか否かが判定され、許容範囲内であると判定された場合に非同期処理コードが実行される。また、非同期処理コードの実行状況も監視される。これは他のファイルのアップロード時においても同様である。
非同期処理コード"FuncB"の処理の詳細を、図18を用いて説明する。ステップS1801にて、受信したイベントの対象ファイルが、統計情報ファイルであるかどうかを判断する。Yesと判断された場合、S1502へ進み、それ以降は図15で説明した処理を行う(図15とステップ番号が同じものは、図15の処理と同じであることを意味する)。ステップS1801でNoと判断された場合、統計情報ファイルではない(ログファイルである)ことから、ステップS1731においては非同期処理コード"FuncB"をただちに終了する。終了と判断した場合、実行部722は、非同期処理コード実行管理アプリケーション710にレスポンスを返す。
ステップS1705にて、非同期処理コード実行管理アプリケーション710は、実行部722に対して、非同期処理実行環境の破棄を行う。これにより、非同期処理コード"FuncB"が実行されても、対象がログファイルだった場合には短時間で破棄される。
次に、ステップS1711にて、クライアント装置101が統計情報ファイルを送信したとする。ステップS1712からステップS1714は、ステップS1702からステップS1704と同じ処理を行う。ここでは、また新たに実行環境が構築され、非同期処理コード"FuncB"が起動される。図18のステップS1801では、統計情報ファイルであることからYesと判断され、以後、第1実施例の図15と同様の処理が実行される。すなわち、ステップS1332の着信チェックでは、未着信があるためウェイトして(S1505→S1508)再チェック処理に回る。ステップS1721によってすべてのログファイルが揃うため、ステップS1333の着信チェックにより、ステップS1335でファイル情報管理サーバ103に登録情報が格納される。
以上の処理により、統計情報ファイルとログファイルとで格納場所が同じであっても、ログファイルに対応する非同期処理コードの実行時間は非常に短いものにすることができる。よって、非同期処理コードの起動数が許容上限に達することによるイベント処理の不履行リスクを低減することができる。
[第3実施形態]
図12に示したように、非同期処理コード実行環境管理部714は、非同期処理コード実行環境720で実行されるそれぞれの非同期処理コードの実行時間を監視し、設定された時間内に処理が完了しない場合はタイムアウトエラーとなり、非同期処理コードの実行が中断される。第1または第2の実施形態では、非同期処理コード"FuncA"または"FuncB"がタイムアウトする前に関連するすべてのログファイルの着信を確認できないと、ファイル情報管理サーバ103への情報更新処理が不履行となってしまう、という問題があった。本実施形態は、上記課題を解決するものであって、非同期処理コードのトータル処理時間を任意の時間に伸ばす方法について説明する。以後、本実施例では、下記の設定や条件で処理が進められるものとする。
まず、ファイル格納場所に関しては、第1実施例のようにファイル名等に応じて分離して統計情報ファイルのみイベント処理されても良いし、第2実施例のようにすべてがイベント処理されても良い。少なくとも、統計情報ファイルがイベント処理対象であるものとする。表22に本実施形態の自同期処理コード管理テーブルの例を示す。
[表22]非同期処理コード管理テーブル
ID ファイル名 ファイルデータ
1 FuncC1.zip <バイナリデータ>
2 FuncC2.zip <バイナリデータ>
3 FuncC3.zip <バイナリデータ>

X FuncCx.zip <バイナリデータ>。
このように本実施形態では、イベント駆動されるスクリプトは、複数の手順(ここではルーチンと呼ぶことにする)に分割されており、"FuncCn"という非同期処理コードが登録されているものとする。ファイル着信のイベントではID「1」のFuncC1のみ実行され、ID「2」以降に登録されている非同期処理コードは、別の非同期処理コードから実行されることになる。FuncCnの処理の流れは、後述する図20で説明する。表23に本例のイベント設定テーブルを示す。
[表23]イベント設定テーブル
ID 対象ファイルパス 対称イベント 非同期処理コードID 実行環境ID
1 logdata/client1 追加 1 1。
このイベント設定テーブルによれば、ファイルパス"logdata/client1"上にファイルが「追加」で置かれるとイベントが発生し、非同期処理コードIDが「1」の非同期処理コードが、実行環境ID「1」上で実行される設定である。すなわち、ファイルサーバ102は、クライアント装置101からログファイルや統計情報ファイルを受信すると、"FuncC1"の非同期処理コードが実行されることを意味する。以下、図19A、図19Bを用いて処理の説明を行う。なお図13A、図13Bや図17A、図17Bと同じステップ番号の処理は、それらと同じ処理を行っていることを意味する。また図17A、図17Bで省略した、実行中の非同期処理コードが上限値を超えるか否かのチェックを行うステップS1116、S1117もまた省略している。
ステップS1901にて、クライアント装置101からログファイルが送信される。ログファイルのアップロードに応じて非同期処理コード"FuncC1"は実行されるが、実行されてもすぐに終了して廃棄される。これは図20Aを参照して説明する。なお非同期処理コードの終了及び廃棄の手順は省略した。
ステップS1911にて、クライアント装置101から統計情報ファイルが送信される。ステップS1912からステップS1914を経て、非同期処理コード"FuncC1"が実行される。非同期処理コード"FuncC1"の詳細な処理を、図20Aを用いて説明する。なお、図15や図18と同じステップ番号の処理は、それらと同じ処理を行っていることを意味する。ステップS1801にて、ログファイルと判断された場合はすぐに終了する。ステップS2001にて、所定の満了時間をセットしたタイマーをスタートする。これは、非同期処理コード"FunC1"自身がタイムアウトまでの時間を計測するために使われる。ここで測定する経過時間は、たとえば図12のステップS1203でチェックされる実行時間を超えない値に設定されるのが望ましい。もしも超えてしまうと、実行中の非同期処理コードは強制的に終了されてしまうためである。
ステップS1505でNoと判断された場合、すなわち、ファイルが揃っていないと判断された場合、ステップS2002に進む。ステップS2002では、ステップS2001でスタートしたタイマーを確認し、タイムアウトまでまだ時間があるかどうかを判断する。ここではたとえば、図20Aの実行を開始してから経過した実行時間が所定時間に達したかを判定すればよい。ここで、ステップS1508によるウェイトと、ステップS1504によるファイルチェックと、ステップS1507によるファイル情報更新の時間が残っていればYes、残っていなければNoとなる。ステップS2002でYesと判断された場合、すなわち、実行中の非同期処理コード"FuncC1"が完了する可能性があると判定された場合にはS1508に進み、一定時間のウェイト後、ファイルチェックを繰り返す。ステップS2002でNoと判断された場合、すなわち非同期処理コード"FuncC1"が完了する見込みがないと判定された場合にはステップS2003に進み、非同期処理コード"FuncC2"を起動する。ここでは、非同期処理コード"FuncC1"は、実行部722を介して、非同期処理コード実行管理アプリケーション710に実行環境起動リクエストを送信する。表24は、実行環境起動リクエストの一例である。
[表24]実行環境起動リクエスト
非同期処理コードID 実行環境ID ファイルパス
2 1 logdata/client1/stat.txt。
表24において、非同期処理コードIDカラムは、表22に示す非同期処理コード管理テーブルで管理される非同期処理コードを指定するためのIDである。ID「2」は、"FuncC2"の起動リクエストとなる。実行環境IDカラムは、表4に示す実行環境から利用したい実行環境を指定するためのIDである。ファイルパスカラムは、起動する非同期処理コードに渡すファイルパスである。非同期処理コード実行管理アプリケーション710は、受信したリクエストを元に、実行部722に要求して新しい実行環境を構築し、要求された非同期処理コードを実行する。非同期処理コード"FuncC1"から非同期処理コード"FuncC2"を起動する処理は、図19AのステップS1931を指す。以上で図20Aの処理を終了する。
非同期処理コード"FuncC1"が終了した際は、S1941にて、非同期処理コード実行管理アプリケーション710から実行部722に対して、非同期処理実行環境の破棄を行う。
図20Bは、非同期処理コード"FuncC2"の処理の流れを表した図である。図20Aと同じステップ番号の処理は、それらと同じ処理を行っていることを意味する。異なる点は、ステップS1801、S1502、S1503が含まれない点、およびステップS2003に代えてステップS2011を実行することである。ステップS2002にて、タイムアウトまでに本非同期処理コード"FuncC2"を完了できないと判断された場合は、次の"FuncC3"を起動し、自身は終了する(図19のステップS1933を指す)。以後、必要な回数だけ"FuncC4"、"FuncC5"とリレーすることができる。各非同期処理コードが60秒のタイムアウト時間を持っていたとすると、5回リレーすれば、約5分の継続処理ができることを意味する。
図20Cは、一連の処理を行うための最後の非同期処理コード"FuncCx"の手順を指す。図20Bと同じステップ番号の処理は、それらと同じ処理を行っていることを意味する。異なる点は、ステップS2011に代えてステップS2021が実行される点のみである。ステップS2021では、"FuncCx"においてもタイムアウトと判断された際に、自身で失敗情報を記録しておく(図19のステップS1934を指す)。これにより、システムに任すのではなく、自身によるリトライ処理に活かすことができる。
それぞれの非同期処理コードが終了した際は、環境の破棄が行われる(ステップS1341、S1942)。
以上のように、ある非同期処理コードから別の非同期処理コードを実行することで、タイムアウトの存在するイベント駆動型コンピューティングサービスであっても任意の時間にタイムアウトを伸ばすことができる。また、最後の非同期処理コードでエラー情報を書き込むことで、最終的なタイムアウトがあっても、ベンダー独自のリカバリ処理がコントロールしやすくなる。
なお上記説明は第2の実施形態をベースにして行ったが、第1実施形態をベースにしても良い。その場合には非同期処理コードのトリガとなるイベントは統計情報ファイルのアップロードのみとなる。したがって、図20AのステップS1801は省略できる(あってもよい)。
[第4実施形態]
第3実施形態では、タイムアウト内にすべてのログファイルの着信が確認できない場合の対策方法について説明した。しかし、タイムアウト内にすべてのログファイルのファイルサーバ102への着信(アップロード)が確認できたとしても、その時の残り時間が不十分であれば、その後の処理中にタイムアウトが起きる可能性がある。その場合、ファイル情報管理サーバ103への情報更新処理が不履行となってしまう、という問題があった。本実施形態は、上記課題を解決するものであって、特定の処理(ここではファイル情報管理サーバ103への情報更新)を行う非同期処理コードに処理をリレーする方法について説明する。以後、本実施例では、下記の設定や条件で処理が進められるものとする。まず、ファイル格納場所に関しては、第3実施例と同様であるものとする。表25には非同期処理コード管理テーブルを示す。
[表25]非同期処理コード管理テーブル
ID ファイル名 ファイルデータ
1 FuncD.zip <バイナリデータ>
2 FuncE.zip <バイナリデータ>。
表25のように"FuncD"と"FuncE"という非同期処理コードが登録されているものとする。ファイル着信のイベントではID「1」のFuncDのみ実行され、ID「2」に登録されている非同期処理コードは、"FuncD"から実行されることになる。"FuncD"及び"FuncE"の処理の流れは、後述する図22、図23で説明する。表26にイベント設定テーブルを示す。
[表26]イベント設定テーブル
ID 対象ファイルパス 対称イベント 非同期処理コードID 実行環境ID
1 logdata/client1 追加 1 1。
表26によれば、ファイルパス"logdata/client1"上にファイルが「追加」で置かれるとイベントが発生し、非同期処理コードIDが「1」の非同期処理コードが、実行環境ID「1」上で実行される設定である。すなわち、ファイルサーバ102は、クライアント装置101からファイルたとえばログファイルあるいは統計情報ファイルを受信すると、"FuncD"の非同期処理コードが実行されることを意味する。以下、図21を用いて処理の説明を行う。なお図17と同じステップ番号の処理は、それらと同じ処理を行っていることを意味する。また図17と同じく、実行中の非同期処理コードの数のチェックに関しては省略した。
以下、図17と異なる点のみ説明する。ステップS1714によって起動される非同期処理コードは、表25により、"FuncD"となる。"FuncD"の処理の詳細について、図22を用いて説明する。なお図18と同じステップ番号の処理は、それらと同じ処理を行っていることを意味する。差分は、ステップS1506−S1507に代えてステップS2201が行われる点である。ステップS1505で全ファイルが揃ったと判断された場合、ステップS2201にて、非同期処理コード"FuncE"を起動する。起動方法は、第3実施例と同様に、実行環境起動リクエストを送信する。表27は、実行環境起動リクエストの一例である。
[表27]実行環境起動リクエスト
非同期処理コードID 実行環境ID ファイルパス
2 1 logdata/client1/stat.txt。
上記リクエストにより、表25のID「2」に該当する"FuncE"が起動する。図21のステップS2101は、"FuncE"の起動を指す。"FuncE"を起動後、ステップS2102にて、非同期処理コード"FuncD"の環境は破棄される。
図23は、"FuncE"の処理の詳細を表した図である。ここでは、図15のステップS1506、S1507で行っていた処理を行う。図21のステップS1334、S1335がそれらを指す。
以上のように、一連の関連ファイルに対する一括処理を分離することで、タイムアウトエラーによる処理不履行のリスクが低減する。それは、ステップS1506、S1507で行っていたログファイルの情報取得とその保存とを、改めて起動した別の非同期処理コード"FuncE"により行うためである。
[その他の実施例]
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
101:クライアント装置、102:ファイルサーバ、103:ファイル情報管理サーバ、104:イベント情報管理サーバ、105:格納場所管理サーバ、106:管理者装置

Claims (8)

  1. システムを構成するコンピュータによって、該システムへの登録時に指定されたシステムイベント及びコンピューティングリソースに従い実行されるプログラムであって、
    互いに関連する複数のデータの受信に応じて発生する複数のシステムイベントのそれぞれに応答して該プログラムが実行される際に、
    該プログラムによる処理対象のデータが所定のデータであれば、該処理対象のデータ以外の前記複数のデータの少なくともいずれかのデータに対する処理の制御を行う手段と、
    処理対象のデータが所定のデータでなければ、該処理対象のデータに対する処理の完了を待たずに、前記プログラムによる処理を完了させる手段と
    して前記コンピュータを機能させるためのプログラム。
  2. 前記複数のデータの少なくともいずれかのデータに対する処理の制御は、前記システムに対して前記複数のデータの少なくともいずれかのデータに対する処理するための別のプログラムを起動させることであることを特徴とする請求項1に記載のプログラム。
  3. 前記所定のデータは、前記複数のデータに関する統計情報を含み、前記複数のデータの少なくともいずれかのデータに対する前記処理の制御は、前記統計情報に基づくことを特徴とする請求項1または2に記載のプログラム。
  4. 前記システムイベントは、前記システムへのデータのアップロードを含むことを特徴とする請求項1乃至3のいずれか一項に記載のプログラム。
  5. コンピューティングリソースを指定して予め登録されたスクリプトをシステムイベントに応答して自動で実行するサービスを提供するシステムであって、
    システムイベントを検出する検出手段と、
    検出されたシステムイベントに応答して前記スクリプトを実行する実行手段と、
    互いに関連する複数のデータの受信に応じて発生する複数のシステムイベントのそれぞれに応答して前記スクリプトがそれぞれ実行される際に、前記スクリプトによる処理対象のデータが所定のデータであれば、該処理対象のデータ以外の前記複数のデータの少なくともいずれかのデータに対する処理の制御を行う制御手段と
    を有し、
    前記処理対象のデータが前記所定のデータでなければ、前記処理対象のデータに対する処理の完了を待たずに、前記スクリプトによる処理が完了することを特徴とするシステム。
  6. 前記複数のデータの少なくともいずれかのデータに対する処理の制御は、前記システムに対して前記複数のデータの少なくともいずれかのデータに対する処理するための別のスクリプトを起動させることであることを特徴とする請求項5に記載のシステム。
  7. 前記スクリプトの実行時間が所定時間に達したなら、前記スクリプトを終了させることを特徴とする請求項5または6に記載のシステム。
  8. コンピューティングリソースを指定して予め登録されたスクリプトをシステムイベントに応答して自動で実行するサービスを提供するシステムにおける情報処理方法であって、
    システムイベントを検出し、
    検出されたシステムイベントに応答して前記スクリプトを実行し、
    互いに関連する複数のデータの受信に応じて発生する複数のシステムイベントのそれぞれに応答して前記スクリプトがそれぞれ実行される際に、前記スクリプトによる処理対象のデータが所定のデータであれば、該処理対象のデータ以外の前記複数のデータの少なくともいずれかのデータに対する処理の制御を行い、
    前記処理対象のデータが前記所定のデータでなければ、前記処理対象のデータに対する処理の完了を待たずに、前記スクリプトによる処理を完了させる
    ことを特徴とする情報処理方法。
JP2016208846A 2016-10-25 2016-10-25 プログラム、システム及び情報処理方法 Active JP6792409B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016208846A JP6792409B2 (ja) 2016-10-25 2016-10-25 プログラム、システム及び情報処理方法
US15/783,050 US10725975B2 (en) 2016-10-25 2017-10-13 Non-transitory computer-readable medium, system, and information processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016208846A JP6792409B2 (ja) 2016-10-25 2016-10-25 プログラム、システム及び情報処理方法

Publications (3)

Publication Number Publication Date
JP2018072943A JP2018072943A (ja) 2018-05-10
JP2018072943A5 JP2018072943A5 (ja) 2019-12-05
JP6792409B2 true JP6792409B2 (ja) 2020-11-25

Family

ID=61969712

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016208846A Active JP6792409B2 (ja) 2016-10-25 2016-10-25 プログラム、システム及び情報処理方法

Country Status (2)

Country Link
US (1) US10725975B2 (ja)
JP (1) JP6792409B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7118833B2 (ja) * 2018-09-19 2022-08-16 キヤノン株式会社 システム及び方法
CN114760530B (zh) * 2020-12-25 2023-08-01 深圳Tcl新技术有限公司 事件处理方法、装置、电视机及计算机可读存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4115083B2 (ja) 2000-12-05 2008-07-09 キヤノン株式会社 プログラムを格納した記憶媒体及び情報処理装置並びに情報処理方法
JP2004038759A (ja) 2002-07-05 2004-02-05 Mitsubishi Electric Corp アプリケーション連携システム、アプリケーション連携方法およびその方法を実行するためのプログラム
US7024580B2 (en) 2002-11-15 2006-04-04 Microsoft Corporation Markov model of availability for clustered systems
US7559060B2 (en) * 2003-06-10 2009-07-07 National Instruments Corporation Time-bounded program execution
JP2007115293A (ja) * 2005-10-17 2007-05-10 Toshiba Corp 情報記憶媒体、プログラム、情報再生方法、情報再生装置、データ転送方法、及びデータ処理方法
JP2007207328A (ja) * 2006-01-31 2007-08-16 Toshiba Corp 情報記憶媒体、プログラム、情報再生方法、情報再生装置、データ転送方法、及びデータ処理方法
JP4912139B2 (ja) 2006-12-22 2012-04-11 キヤノン株式会社 情報処理装置
CN101599027B (zh) 2009-06-30 2013-02-13 中兴通讯股份有限公司 一种线程池管理方法及其系统
US8365009B2 (en) 2010-09-10 2013-01-29 Microsoft Corporation Controlled automatic healing of data-center services
US8880591B2 (en) * 2011-03-31 2014-11-04 Savigent Software, Inc. Workflow management in distributed systems
US8949653B1 (en) 2012-08-03 2015-02-03 Symantec Corporation Evaluating high-availability configuration

Also Published As

Publication number Publication date
US10725975B2 (en) 2020-07-28
US20180113879A1 (en) 2018-04-26
JP2018072943A (ja) 2018-05-10

Similar Documents

Publication Publication Date Title
JP5664098B2 (ja) 複合イベント分散装置、複合イベント分散方法および複合イベント分散プログラム
US20150347548A1 (en) Management of data replication and storage apparatuses, methods and systems
JP2011248683A (ja) クラウドコンピューティングシステム、サーバーコンピュータ、デバイス接続方法及びプログラム
CN108121511B (zh) 一种分布式边缘存储系统中的数据处理方法、装置及设备
JP6942458B2 (ja) プログラム、システム及び情報処理方法
CN105760240A (zh) 分布式任务处理方法及装置
JP6792409B2 (ja) プログラム、システム及び情報処理方法
JP2005251048A (ja) システムモニタリング方法
CN105138691A (zh) 分析用户业务量的方法和系统
WO2013093960A1 (en) Storage system and method for controlling storage system
US9641600B2 (en) System, method, computer-readable medium and apparatus
CN110347659B (zh) 数据处理方法和装置、交易数据处理方法和装置
WO2023244491A1 (en) Techniques for replication checkpointing during disaster recovery
US8751643B2 (en) Correlating event streams from independent processes in a complex business system using metadata associated with the transport interconnections
US20120054751A1 (en) Disposition determination technique
JP5494915B2 (ja) レプリケーションシステム、マスタサーバ、レプリカサーバ、レプリケーション方法、及びプログラム
JP2018097822A (ja) プログラム、システム、およびシステムの制御方法
US20230409442A1 (en) Techniques for maintaining data consistency during disaster recovery
US11150947B2 (en) Determining a deletion deadline for a staging environment
CN112732413B (zh) 异常处理方法、装置、计算机设备和计算机可读存储介质
US20240061814A1 (en) Techniques for maintaining snapshot key consistency involving garbage collection during file system cross-region replication
US20240086417A1 (en) Techniques for replication-aware resource management and task management of file systems
Sinha et al. Termination detection in cloud
JP2018142165A (ja) プログラム、システム、及び方法
Yang et al. Efficient algorithms for fault tolerant mobile agent execution

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191025

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191025

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200928

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: 20201009

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201106

R151 Written notification of patent or utility model registration

Ref document number: 6792409

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151