JP7031424B2 - 情報処理装置、情報処理システムおよび情報処理プログラム - Google Patents

情報処理装置、情報処理システムおよび情報処理プログラム Download PDF

Info

Publication number
JP7031424B2
JP7031424B2 JP2018058720A JP2018058720A JP7031424B2 JP 7031424 B2 JP7031424 B2 JP 7031424B2 JP 2018058720 A JP2018058720 A JP 2018058720A JP 2018058720 A JP2018058720 A JP 2018058720A JP 7031424 B2 JP7031424 B2 JP 7031424B2
Authority
JP
Japan
Prior art keywords
message
messages
information processing
order
processing
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.)
Expired - Fee Related
Application number
JP2018058720A
Other languages
English (en)
Other versions
JP2019169109A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2018058720A priority Critical patent/JP7031424B2/ja
Priority to US16/362,582 priority patent/US11115484B2/en
Publication of JP2019169109A publication Critical patent/JP2019169109A/ja
Application granted granted Critical
Publication of JP7031424B2 publication Critical patent/JP7031424B2/ja
Expired - Fee Related 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
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/52Network services specially adapted for the location of the user terminal

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、情報処理装置、情報処理システムおよび情報処理プログラムに関する。
主にクラウド上の分散処理システムでは、マイクロサービスアーキテクチャと呼ぶ分散型システムを構築し、マイクロサービスを分散処理する。マイクロサービスの多くは検索や認証など単機能の小さなマイクロサービスであり、複数のマイクロサービスを組合せてマイクロサービスを構築する。たとえば、Webインタフェースマイクロサービス、認証マイクロサービス、検索マイクロサービス、ショッピングカートマイクロサービス、データベースマイクロサービスの5つのマイクロサービスを組合せてネット販売マイクロサービスを構築する例がある。
マイクロサービスを組合せる方法としてメッセージングが広く用いられ、メッセージングによりマイクロサービス同士をメッセージのやり取りで連携させることができる。メッセージングでは、メッセージ送信側(上流)のマイクロサービスは、受信側(下流)のマイクロサービスでのメッセージ受信を待たずに、つぎのメッセージ処理をおこなう非同期実行に適している。
上流のマイクロサービスは、下流のマイクロサービスがメッセージ処理するか否かに関わらず、つぎのメッセージを順次送信し、下流のマイクロサービスは、メッセージをキューと呼ぶバッファに格納する。下流のマイクロサービスは、キューからメッセージを取り出し内容に応じたメッセージ処理をおこなうことを繰り返す。
従来技術として、第1の処理から第2の処理へ送信するメッセージの内容が一致するように、タイムスタンプを用いロールバックさせることで、並行処理を同期化させる技術が開示されている(たとえば、下記特許文献1参照。)。また、各応用プログラムが送受信ログを収集して半順序関係を示すタイムスタンプを付与し、応用プログラム間でロールバック可能な最新のチェックポイントを探索して、応用プログラムの回復をおこなう技術が開示されている(たとえば、下記特許文献2参照。)。
特開平6-028199号公報 特開平7-271620号公報
しかしながら、従来技術では、マイクロサービス間でおこなうメッセージ通信のメッセージ順序を補償できなかった。
メッセージングでは、様々な原因でメッセージが送信時と異なる到着順序で下流に到着する場合がある。たとえば、メッセージが後発メッセージと異なる遅いネットワーク経路で伝送され、ネットワーク上でこのメッセージがロストすると、後発メッセージ送信後にメッセージが再送される。また、メッセージサイズが大きいため分割送信されると、分割した全てが下流に到着する前に後発のより小さいメッセージが先に下流に到着してしまう。
メッセージの到着順序が送信順序と異なると正しくマイクロサービスを処理できない場合がある。たとえば、センサや端末からのデータ(メッセージ)を扱うマイクロサービスは、メッセージの到着順序が変わると間違った処理をおこなう問題が生じる。たとえば、実世界で起きる事象をメッセージとして取り扱うマイクロサービスにおいては、事象に対応したメッセージを事象が起きた際の送信順序で処理する必要がある。しかし、メッセージの到着が遅れる原因は多様であり、伝送路で保証しようとすると、専用のネットワークを持つ高価なシステムが必要になってしまう。
また、従来のロールバック技術では、マイクロサービス状態の保存(スナップショット)をどこまで(何世代)保存すればよいかを定めることができず、運用者が経験上十分と考える任意の世代数に定めている。この場合、下流では余裕を持った世代数分のスナップショットを保存するため必要以上のスナップショットを保存することになり、主に記憶資源(ハードウェア)が高コスト化する問題が生じる。
ここで、送信側(上流)と受信側(下流)が1:1接続のマイクロサービス間ではMQ(メッセージキューイング)などの順序性保証機構によりメッセージの到着順序を補償する方法がある。しかし、マイクロサービス間の一部接続がn:1のシステムでは下流でのメッセージの到着順序を補償できない。
一つの側面では、本発明は、メッセージ到着遅れが生じても複数のマイクロサービスがそれぞれ正しいメッセージ到着順序でメッセージ処理をおこなうことを目的とする。
一つの実施の形態では、複数のマイクロサービス間でメッセージ通信し、それぞれ前記マイクロサービスが到着順序でメッセージ処理する情報処置装置において、受信したメッセージを到着順序で格納するキューと、前記キューへの格納順に前記メッセージを読み出し、所定のメッセージ処理をおこなうサービス処理部と、受信した複数の前記メッセージの到着順序と複数の前記メッセージのタイムスタンプとに基づき、複数の前記メッセージのうち遅延して到着した前記メッセージがあれば正しい到着順序にして複数の前記メッセージを処理し、前記メッセージを受信する下流の情報処理装置に対し、正しい到着順序で前記メッセージを処理させる修正通知を送信するメッセージ制御部と、を有し、前記メッセージ制御部は、前記サービス処理部のメッセージ処理毎の処理状態をスナップショットとして処理順に保持する履歴記録部と、前記キューに格納された前記メッセージと、前記履歴記録部に保持された前記スナップショットに基づき、前記受信したメッセージの到着順序が正常か否かを検査し、検査結果を前記修正通知として送信する検査部と、前記修正通知の受信時に、前記キューおよび前記サービス処理部に対し、正しいメッセージの到着順序で処理をおこなわせるロールバック制御をおこなうロールバック制御部と、を有し、前記検査部は、下流の情報処理装置に対する前記修正通知として、修正対象の前記メッセージの識別子と、到着順序を正しく修正した後のメッセージ列の先頭のメッセージの識別子の情報を送信する情報処理装置、情報処理システムおよび情報処理プログラムが提供される。
本発明の一側面によれば、メッセージ到着遅れが生じても複数のマイクロサービスがそれぞれ正しいメッセージ到着順序でメッセージ処理をおこなうことができる。
図1は、実施の形態にかかるシステムの全体構成の一例を示す説明図である。 図2Aは、実施の形態にかかる情報処理装置の機能的構成の一例を示す説明図である。 図2Bは、実施の形態にかかる情報処理装置間の接続構成の一例を示す説明図である。 図3は、実施の形態にかかる情報処理装置のハードウェア構成の一例を示すブロック図である。 図4は、実施の形態にかかる情報処理装置がおこなう全体の処理の手順の一例を示すフローチャートである。 図5は、実施の形態にかかる情報処理装置の実行中処理の手順の一例を示すフローチャート(その1)である。 図6は、実施の形態にかかる情報処理装置の実行中処理の手順の一例を示すフローチャート(その2)である。 図7は、実施の形態にかかる情報処理装置の停止中処理の手順の一例を示すフローチャートである。 図8は、実施の形態にかかる情報処理装置のメッセージ処理の一例を示す説明図(その1)である。 図9は、実施の形態にかかる情報処理装置のメッセージ処理の一例を示す説明図(その2)である。 図10は、実施の形態にかかる情報処理装置のメッセージ処理の一例を示す説明図(その3)である。 図11は、実施の形態にかかる情報処理装置に必要なスナップショットのサイズを示す説明図である。 図12は、従来技術によるメッセージ通信の例を示す説明図である。 図13は、n:1のメッセージ通信で順序保証が必要な事象を示す説明図である。 図14Aは、従来技術による複数のマイクロサービスを連携させたときの問題を示す説明図(その1)である。 図14Bは、従来技術による複数のマイクロサービスを連携させたときの問題を示す説明図(その2)である。
以下に図面を参照して、開示の情報処理装置、情報処理システムおよび情報処理プログラムの実施の形態を詳細に説明する。
図1は、実施の形態にかかるシステムの全体構成の一例を示す説明図である。図1を用いて実施の形態の情報処理システムがおこなうメッセージの到着順序性の保証の概要を説明する。
実施の形態の情報処理システム100は、受信した要求マイクロサービスに対し、マイクロサービスA~E毎のマイクロサービス処理部101(101a~101e)がメッセージ(データ)に対し、それぞれ異なるメッセージ処理(データ処理)を分散しておこなう。
要求マイクロサービスとは、情報処理システム100外部のクライアント、たとえば、ユーザの端末操作による所定のマイクロサービスの要求、あるいはセンサ装置等の検出データに基づくデータ処理の要求等である。
この際、図1の矢印(→)に示すように、複数のマイクロサービス処理部101は、それぞれ上流から入力されたメッセージをメッセージ処理した後、下流のマイクロサービス処理部101に送信する。
各マイクロサービス処理部101は、たとえば、クラウド上に配置された複数のサーバがネットワーク接続により相互にメッセージを送受信することができる。以下の説明では、上流、下流は、メッセージが流れる方向を示し、送信側のマイクロサービス処理部101が上流に位置してサービス処理の結果をメッセージとして送信し、受信側のマイクロサービス処理部101が下流に位置してメッセージを受信する。
図1に示す例では、マイクロサービスA1、A2をそれぞれ並列しておこなうマイクロサービス処理部101aを有する。このような構成においては、マイクロサービスA1、A2のマイクロサービス処理部101aは、順序保証をおこなわずにメッセージを送信する。
実施の形態では、メッセージ制御部102を設け、複数のマイクロサービス処理部101(101a~101e)でのメッセージの到着順序が正しくなるよう、到着順序性の制御(ロールバック制御)をおこなう。メッセージ制御部102は、図1に示すように、マイクロサービス処理部101と独立して配置してもよい。この場合、メッセージ制御部102は、サービス処理部101と異なる他の機器、たとえば、メッセージ・ブローカー(サーバ等を用いたメッセージ制御装置)として独立して配置することができる。また、後述するが、メッセージ制御部102は、各マイクロサービス処理部101と同一の機器内(たとえばサーバ)に配置してもよい。
上記情報処理システム100には、最初の発生時を示すタイムスタンプを有するメッセージが入力される。そして、上流からメッセージを受信したマイクロサービス処理部101は、メッセージ処理毎のマイクロサービスのサービス状態のスナップショットを履歴として履歴記録部103に記録保持する。スナップショットはマイクロサービス処理終了時のタイムスタンプを含む。
メッセージ制御部102は、キュー201(図2参照)に入ったメッセージのタイムスタンプを参照し、キュー201内のメッセージのタイムスタンプ(時刻)を比較することで、メッセージの到着遅れを判断する。
また、メッセージ制御部102は、各マイクロサービス処理部101が受信したメッセージのタイムスタンプと、最新状態のスナップショットのタイムスタンプとを比較して、各マイクロサービス処理部101におけるメッセージの到着遅れの有無を判断する。
そして、メッセージ制御部102は、メッセージの到着遅れが生じたマイクロサービス処理部101および下流の全マイクロサービス処理部101に対し、遅れたメッセージ以前のメッセージ処理状態へロールバックする制御をおこなう。これにより、メッセージの到着遅れが生じたマイクロサービス処理部101および下流の全マイクロサービス処理部101は、正しいメッセージの到着順序でマイクロサービスを再実行する。これにより、要求メッセージに対して、情報処理システム100内でメッセージの到着遅れが生じても、全てのメッセージ制御部102が順序保証してメッセージ処理できるようになる。
図2Aは、実施の形態にかかる情報処理装置の機能的構成の一例を示す説明図である。図1に示した一つのマイクロサービスのマイクロサービス処理部101は、要求マイクロサービスのうち一つのマイクロサービス(データ処理)をおこなう一つの情報処理装置200に配置される。
図2Aの(a)は、一つの情報処理装置200(マイクロサービス処理部101)毎にメッセージ制御部102を配置した構成例の機能ブロック図である。また、図2Aの(b)には、情報処理装置200内で保持する情報例(メッセージ、データ等)の図表を示す。
図2Aの(a)に示すように、情報処理装置200は、上述したマイクロサービス処理部101と、メッセージ制御部102と、キュー201とを含む。また、メッセージ制御部102は、履歴記録部103と、検査部212と、ロールバック制御部213とを含む。
キュー201は、上流から受信したメッセージ(データ)を到着順に保持し、マイクロサービス処理部101に出力する。メッセージmiは、内容(データ)と、メッセージの識別子(ID)と、生成時刻(タイムスタンプ:ST)を含む(図2Aの(b)参照)。
マイクロサービス処理部101は、キュー201から出力されたメッセージ(データ)に対し、所定のマイクロサービス機能に基づくメッセージ処理(データ処理)をおこない、処理後のメッセージを下流の情報処理装置200に送信する。
履歴記録部103は、マイクロサービス処理部101によるメッセージ処理毎の処理メッセージと、スナップショットを順次記録保持する。たとえば、履歴記録部103は、メッセージ処理順にスナップショットを図2Aの(b)のように下から上に順次蓄積記録していく。スナップショットはマイクロサービス処理部101によるマイクロサービス処理終了時のタイムスタンプを含む。
検査部212は、キュー201が受信したメッセージの到着遅れの有無を検出する。検査部212は、履歴記録部103で処理したメッセージ処理時のタイムスタンプを参照し、キュー201の該当するメッセージのタイムスタンプ(生成時刻ST)が新しいか、あるいは古いかに基づき、メッセージの到着遅れの有無を検出する。
そして、検査部212は、受信したメッセージのうち、どのメッセージの到着順序が正しくないか、たとえば到着遅れあり、を示す情報を修正通知として下流の情報処理装置200に送信する。
修正通知は、修正対象メッセージIDリスト(CML)と、修正後先頭メッセージID(CTM)を含む(図2Aの(b)参照)。修正対象メッセージIDリスト(CML)は、順序変更の影響を受けるメッセージのIDをリスト化した集合である。修正後先頭メッセージID(CTM)は、到着順序を修正したメッセージ列の最初のメッセージのIDである。この修正通知は、メッセージの到着遅れを検出したメッセージ制御部102(検査部212)が生成および送信するものであり、上述したメッセージと同様に、上流の情報処理装置200から下流の情報処理装置200に向けて送信される。
また、図1のように、マイクロサービス処理部101と独立してメッセージ制御部102を集約する形で配置した場合、メッセージ制御部102は、該当する下流の複数のマイクロサービス処理部101(各サーバ等)に一斉に修正通知をブロードキャストする。
また、検査部212は、上流の情報処理装置200から修正通知を受信した場合、キュー201に対し、まだ処理中のメッセージが残っている場合、キュー201内に残っているメッセージを削除(データ消去等)する制御をおこなう。また、検査部212は、メッセージ削除に対応してキュー201内のメッセージのソートをおこなう。
ロールバック制御部213は、上流の情報処理装置200から修正通知を受信した場合、マイクロサービス処理部101に対するメッセージ処理をキャンセルし、修正対象のメッセージ処理前まで状態を戻すロールバック制御をおこなう。このロールバック制御では、修正通知の受信により、履歴記録部103が記録保持するスナップショットのうち、メッセージ到着遅れを起こしたメッセージをキュー201に戻す処理をおこなう。
図2Bは、実施の形態にかかる情報処理装置間の接続構成の一例を示す説明図である。図2Bには、複数のマイクロサービス間で接続した複数の情報処理装置200A、200Bを示す。各情報処理装置200A、200Bの内部構成は、図2A(a)と同様である。図2Bに示すように、メッセージおよび修正通知は、上流の情報処理装置200Aから下流の情報処理装置200Bに伝播される。
図3は、実施の形態にかかる情報処理装置のハードウェア構成の一例を示すブロック図である。図2Aに示した情報処理装置200は、図3に示すハードウェアを用いることができる。
たとえば、情報処理装置200は、CPU(Central Processing Unit)301、メモリ302、ネットワークインタフェース(I/F)303、記録媒体I/F304、記録媒体305、を含む。300は各部を接続するバスである。
CPU301は、情報処理装置200の全体の制御を司る制御部として機能する演算処理装置である。メモリ302は、不揮発性メモリおよび揮発性メモリを含む。不揮発性メモリは、たとえば、CPU301のプログラムを格納するROM(Read Only Memory)である。揮発性メモリは、たとえば、CPU301のワークエリアとして使用されるDRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)等である。
ネットワークI/F303は、ネットワーク330を通じて他の情報処理装置200との間で処理に必要な情報(上記メッセージや修正通知等)を送受信する。ネットワークI/F303は、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク330を介して他の情報処理装置200に通信接続される。
記録媒体I/F304は、CPU301が処理した情報を記録媒体305との間で読み書きするためのインタフェースである。記録媒体305は、メモリ302を補助する記録装置である。たとえば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、USB(Universal Serial Bus)フラッシュドライブ等を用いることができる。
メモリ302または記録媒体305に記録されたプログラムをCPU301が実行することにより、図2Aに示した情報処理装置200のマイクロサービス処理部101およびメッセージ制御部102(検査部212、ロールバック制御部213)の機能を実現する。また、メモリ302や記録媒体305を用いて、図2Aに示したキュー201、履歴記録部103の情報を保持することができる。
また、図3に示したハードウェア構成は、図1のシステム構成例の場合、各マイクロサービスを実行処理するマイクロサービス処理部101の機能を有する所定のサーバ、メッセージ制御部102の機能を有するサーバ、にそれぞれ同様に適用することができる。これらの各サーバにおいても、CPU301を用いてプログラム実行する場合、CPU301がメモリ302や記録媒体305から読み出したプログラムを実行することにより、それぞれのサーバの機能を実現することができる。
図4は、実施の形態にかかる情報処理装置がおこなう全体の処理の手順の一例を示すフローチャートである。図4の処理は、一つの情報処理装置200に設けられるメッセージ制御部102が主におこなう。
情報処理装置200において、キュー201に受信したメッセージmが時間順を有して入る(ステップS401)。キュー201は、メッセージmをタイムスタンプの順番に保持する。
そして、メッセージ制御部102は、マイクロサービス処理部101のマイクロサービスが実行状態であるか、あるいは停止状態であるかを判断する(ステップS402)。マイクロサービスが実行状態であれば(ステップS402:実行状態)、マイクロサービス実行中に対応した実行中処理を実施する(ステップS403)。一方、マイクロサービスが停止状態であれば(ステップS402:停止状態)、マイクロサービス停止中に対応した停止中処理を実施する(ステップS404)。ステップS403あるいはステップS404の処理実行により、マイクロサービス処理部101は以上の処理を終了する。
これらマイクロサービスの実行状態、および停止状態については後述する。通常は、マイクロサービス処理部101によるマイクロサービス(メッセージ処理)が継続し、実行状態となっている(後述する問題ケース1~3の処理時に相当)。一方、上流からの修正通知に基づきマイクロサービス処理部101によるマイクロサービスを停止(stop)させる場合、停止状態となる(後述する問題ケース4の処理時に相当)。
図5は、実施の形態にかかる情報処理装置の実行中処理の手順の一例を示すフローチャートである。図5の処理は、図4のステップS403の処理の詳細であり、上流に配置されてメッセージ到着遅れを検出した情報処理装置200に設けられるメッセージ制御部102がおこなう。
はじめに、メッセージ制御部102の検査部212は、履歴記録部103に記録保持されているスナップショット(履歴記録)SS[i](i=1、…、n)を調べる。そして、検査部212は、マイクロサービス処理部101がメッセージ処理したメッセージの中でキュー201の先頭メッセージmよりもタイムスタンプが後のメッセージの集合MMを求める(ステップS501)。このMMは、遅延等が生じた修正対象メッセージ集合である。
そして、検査部212は、MMが空であるか否かを判断する(ステップS502)。MMが空であれば(ステップS502:Yes)、ステップS507の処理に移行する。
一方、MMが空でなければ(ステップS502:No)、検査部212は、メッセージmが到着遅れと判定する。そして、検査部212は、下流に位置する全てのマイクロサービスに対応した各情報処理装置200のメッセージ制御部102(ロールバック制御部213)へ修正通知(CMLおよびCTM)を送信する(ステップS503)。
修正対象メッセージID集合CMLは、上記MMの要素のメッセージID集合であり、修正後先頭メッセージID(CTM)は、メッセージmのIDである。
つぎに、メッセージ制御部102のロールバック制御部213は、履歴記録部103に記録保持されているスナップショットSS[i](i=1、…、n)から、ロールバック状態SS[r]を求める(ステップS504)。ここで、mjはメッセージmのタイムスタンプよりも後のメッセージで、かつ、スナップショットSSの中で最もタイムスタンプが早いメッセージである。そして、このmjをマイクロサービス処理部101がメッセージ処理したときのスナップショットSS[r+1]を求め、SS[r+1]の直前のスナップショットSS[r]のロールバック状態を求める。
つぎに、ロールバック制御部213は、マイクロサービス処理部101のマイクロサービス状態をSS[r]に戻し、履歴記録部103が記録保持するスナップショットのうち、スナップショットSS[r+1]~SS[n]を破棄する。また、変数n=rとする(ステップS505)。
つぎに、ロールバック制御部213は、キュー201にメッセージmとMMの各メッセージを時間順(タイムスタンプ順)でセットする(ステップS506)。そして、マイクロサービス処理部101は、キュー201からメッセージmを取り出しマイクロサービスを実行する(ステップS507)。この後、履歴記録部103は、その時点のマイクロサービスの状態とメッセージmをスナップショットSS[n+1]として追加記録し(ステップS508)、以上の処理を終了する。なお、履歴記録部103のスナップショット記録にかかる記録容量(最大サイズ)については後述する。
図6は、実施の形態にかかる情報処理装置の実行中処理の手順の一例を示すフローチャートである。図6の処理は、図4のステップS403の処理の詳細であり、下流に配置され修正通知を受信した情報処理装置200に設けられるメッセージ制御部102(ロールバック制御部213)がおこなう。
ロールバック制御部213は、上流の情報処理装置200のメッセージ制御部102から修正通知を受信する(ステップS601)。この修正通知の受信時、ロールバック制御部213は、履歴記録部103に記録保持されているスナップショットSS[i](i=1、…、n)から、ロールバック状態SS[r]を求める(ステップS602)。SS[r]はマイクロサービス処理部101がメッセージ処理したメッセージIDが修正通知のCMLにあるスナップショットの中で、処理したメッセージのタイムスタンプが最も古いスナップショットSS[r+1]の直前のスナップショットSS[r]である。
つぎに、ロールバック制御部213は、履歴記録部103内のSS[r]の有無を判断する(ステップS603)。履歴記録部103にSS[r]がない場合(ステップS603:No)、以降の処理をおこなわずに処理終了する。これは、メッセージ到着遅れを起こしたメッセージよりも古いメッセージ処理しか実行していない状態であり、ロールバックは不要である。
一方、ロールバック制御部213は、履歴記録部103にSS[r]がある場合(ステップS603:Yes)、メッセージ到着遅れを起こしたメッセージの後続メッセージをマイクロサービス処理部101で先にメッセージ処理してしまった状態を意味する。この場合、ロールバック制御部213は、履歴記録部103のスナップショットSS[j](j=1、…、n)の処理メッセージの中で、修正通知のCMLにIDが含まれないメッセージを時間順(タイムスタンプ順)にキュー201へ戻す(ステップS604)。
そして、ロールバック制御部213は、マイクロサービス状態をSS[r]に戻す。また、履歴記録部103に記録保持されているSS[r]以後のスナップショットSS[r+1]~SS[n]を破棄する。また、n=rとする(ステップS605)。
この後、ロールバック制御部213は、マイクロサービスを停止状態にし(ステップS606)、以上の処理を終了する。この後、マイクロサービスが停止状態となった情報処理装置200のメッセージ制御部102は、図4に示した停止中処理(ステップS404)を実行する。
上述したように、マイクロサービス処理部101が実行するマイクロサービスには、実行状態と停止状態の2つの状態がある。実行状態では上述した図5のステップS507の処理でメッセージをキュー201から取り出して実行する。一方、ロールバック制御部213が修正通知を受信すると図6のステップS606でマイクロサービスが停止状態になる。この停止状態の期間中は、マイクロサービス処理部101のマイクロサービス(メッセージ処理)の動作は停止(stop)し、キュー201からのメッセージ取得をおこなわない。
図7は、実施の形態にかかる情報処理装置の停止中処理の手順の一例を示すフローチャートである。図7の処理は、図4のステップS404の処理の詳細であり、下流に配置され修正通知を受信した情報処理装置200に設けられるメッセージ制御部102がおこなう。
メッセージ制御部102は、マイクロサービス停止中にメッセージを受信した場合、図4に示したステップS404の停止中処理を実行する。この停止中処理では、はじめにメッセージ制御部102の検査部212がキュー201の先頭メッセージのID(IDt)と、修正通知の修正後先頭メッセージID(CTM)とを比較する(ステップS701)。
この後、検査部212は、先頭メッセージのID(IDt)と、修正通知の修正後先頭メッセージID(CTM)とが同じであるか否かを判断する(ステップS702)。判断の結果、IDtがCTMと異なっていれば(ステップS702:No)、再実行するメッセージが到着していないと判断し、以後の処理をおこなわずに処理終了する。
一方、判断の結果、IDtがCTMと同一であれば(ステップS702:Yes)、再実行するメッセージである。このため、メッセージ制御部102(検査部212)は、マイクロサービスを実行状態へ変え、マイクロサービス処理部101に対し、キュー201からメッセージを取り出し、マイクロサービスを実行させる(ステップS703)。
図8~図10は、実施の形態にかかる情報処理装置のメッセージ処理の一例を示す説明図である。これらの図を用いて情報処理装置200におけるメッセージの到着順序が異なる各問題ケースに対応した修正処理の概要を説明する。これら図8~図10には、所定のマイクロサービスを実行する一つの情報処理装置200あたり、一つのキュー201とマイクロサービス処理部101の組として記載してある。
図8には、(a)メッセージの到着順序が正常な場合の処理例、(b)問題ケース1に対する修正処理例1、(c)問題ケース2に対する修正処理例2を示す。
図8(a)メッセージの到着順序が正常な場合、(1)メッセージm1、m2の順序で受信すると、まずメッセージm1がキュー201に入る。この後、(2)マイクロサービス処理部101がメッセージm1をメッセージ処理し、この際、メッセージm2がキュー201に入る。この後、(3)マイクロサービス処理部101はメッセージ処理後のメッセージm1を送信し、メッセージm2をメッセージ処理する。この際、キュー201は空となる。
図8(b)問題ケース1は、一つの情報処理装置200内のみでメッセージの到着順序に遅れが生じた状態を示す。本来は図8(a)に示すように、メッセージm1、m2の順序に受信するが、メッセージm1に遅延が生じたとする。そして(1)メッセージm2、m1の順序で受信すると、メッセージm2が先にキュー201に入る。この後、(2)マイクロサービス処理部101がメッセージm2をメッセージ処理し、メッセージm1がキュー201に入る。
上述したように、メッセージm1、m2はタイムスタンプ(生成時刻)を持つ。そして、実施の形態では、情報処理装置200(メッセージ制御部102)がタイムスタンプによりメッセージm1の到着遅れ(順序の逆転)を判断する。そして、メッセージ制御部102のロールバックにより、メッセージを正常な到着順序m1、m2に修正する。
これにより、(3)キュー201には、メッセージm1、m2の順序で入り、マイクロサービス処理部101はメッセージm2のメッセージ処理をキャンセルする。この後、(4)正常なメッセージの到着順序m1、m2でメッセージ処理することができる。この問題ケース1のように、一つの情報処理装置200内でのメッセージの到着遅れの影響は、タイムスタンプを用いた比較のみで修正処理できる。
図8(c)問題ケース2では、上流の情報処理装置200Aと、下流の情報処理装置200Bのキュー201およびマイクロサービス処理部101を記載し、メッセージm1の遅延が下流の情報処理装置200Bにまで及ぶケースを示す。
はじめに、(1)メッセージm2、m1の順序を有し、メッセージm2は上流の情報処理装置200Aではメッセージ処理済みであり、下流の情報処理装置200Bのキュー201に入り、メッセージm1が上流の情報処理装置200Aで未受信とする。
この後、(2)上流の情報処理装置200Aのキュー201にメッセージm1が入り、下流の情報処理装置200Bはマイクロサービス処理部101がメッセージm2をメッセージ処理したとする。
実施の形態では、上流の情報処理装置200Aのマイクロサービス処理部101は、メッセージ処理時のスナップショットm2を記録保持している。情報処理装置200Aのメッセージ制御部102は、キュー201のメッセージm1のタイムスタンプと、スナップショットm2の比較により、メッセージm1の到着遅れ(順序の逆転)を判断する。そして、情報処理装置200A、200Bでは、メッセージ制御部102がm2処理前までロールバックすることにより、メッセージを正常な到着順序m1、m2に修正する。
この際、メッセージの到着順序が正常でないと判断した情報処理装置200Aは、下流の情報処理装置200Bに対して上述した修正通知を送信する。
これにより、(3)上流の情報処理装置200Aのキュー201には、メッセージm1、m2の順序で入る。また、下流の情報処理装置200Bのマイクロサービス処理部101はメッセージm2のメッセージ処理をキャンセルする。この後、(4)上流の情報処理装置200Aでは、正常なメッセージの到着順序m1、m2でメッセージ処理することができる。なお、下流の情報処理装置200Bでも、上流の情報処理装置200Aからメッセージm1、m2の順序にメッセージを受信し、正常にメッセージ処理できる。
図9には、問題ケース3に対する修正処理例3を示す。この問題ケース3では、正常時の到着順序がメッセージm1、m2、m3、m4、m5、m6であるが、メッセージm1が遅延したため、到着順序がm2、m3、m4、m5、m6、m1の順序に入れ替わった状態を示す。
はじめに、(1)メッセージm2、m3、m4、m5、m6、m1のうち、メッセージm2は最下流の情報処理装置200Cのキュー201に入ったとする。メッセージm3は中間の情報処理装置200Bのマイクロサービス処理部101でメッセージ処理し、メッセージm4が情報処理装置200Bのキュー201に入ったとする。また、メッセージm5は最上流の情報処理装置200Aのマイクロサービス処理部101でメッセージ処理し、メッセージm6が情報処理装置200Aのキュー201に入ったとする。また、メッセージm1は情報処理装置200Aで未受信とする。
この場合、実施の形態では、最上流の情報処理装置200Aでは、メッセージm2、m3、m4、m5のスナップショットを記録保持している。中間の情報処理装置200Bでは、メッセージm2、m3のスナップショットを記録保持している。
そして、(2)情報処理装置200Aのメッセージ制御部102は、キュー201のメッセージm1のタイムスタンプと、スナップショットm2~m6とを比較する。この比較により、メッセージm1の到着遅れ(順序の逆転)を判断し、また、メッセージm2~m6が順序の修正対象であると判断する。そして、情報処理装置200Aのメッセージ制御部102は、m2処理前までロールバックすることにより、メッセージを正常な到着順序m1、m2、m3、m4、m5、m6に修正する。
これにより、(3)最上流の情報処理装置200Aでは、キュー201にメッセージm1、m2、m3、m4、m5、m6の順序で入り、マイクロサービス処理部101のメッセージm6のメッセージ処理をキャンセルする。また、中間の情報処理装置200Bでは、キュー201の修正対象メッセージm5を削除し、マイクロサービス処理部101はメッセージm4のメッセージ処理をキャンセルする。また、最下流の情報処理装置200Cでは、キュー201の修正対象メッセージm3を削除し、マイクロサービス処理部101はメッセージm2のメッセージ処理をキャンセルする。
この際、メッセージの到着順序が正常でないと判断した情報処理装置200Aは、下流の全ての情報処理装置200B、200Cに対して上述した修正通知を送信する。
これにより、上流の情報処理装置200Aでは、正常なメッセージの到着順序m1、m2、m3、m4、m5、m6でメッセージ処理することができる。また、中間および下流の情報処理装置200B、200Cでも、上流の情報処理装置200Aからメッセージm1、m2の順序でメッセージを受信し、正常にメッセージ処理できる。
なお、この後に、たとえば、中間の情報処理装置200Bがメッセージを正常な到着順序で受信できない場合が生じれば、中間の情報処理装置200Bと下流の情報処理装置200C側は上記同様の修正処理を実行する。このように、複数の情報処理装置200のいずれの伝送路上でメッセージ遅延が生じた場合であっても、各情報処理装置200はメッセージの到着順序を修正してそれぞれ正常にメッセージ処理できるようになる。そして、図9に示すように、複数のマイクロサービスが連携し、情報処理装置200の段数が増え、影響を受けるメッセージの数が増えた場合でも同様の修正処理でメッセージの到着順序を正常に修正することができる。
図10には、問題ケース4に対する修正処理例4を示す。この問題ケース4では、送信側2:受信側1のマイクロサービス間接続の例として、上流に複数のマイクロサービス(2つのマイクロサービス)が配置され、下流の一つのマイクロサービス(一つのマイクロサービス)に合流するシステム構成例を示す。
図10には、上流側の2つのマイクロサービスのうち一方の情報処理装置200Aがメッセージm1~m4を送信し、他方の情報処理装置(不図示)がメッセージx1を送信する。そして、これらのメッセージm1~m4、x1が下流側の情報処理装置200Bで合流して受信する構成例を記載してある。
そして、正常時の到着順序がメッセージm1、m2、x1、m3、m4であるとする。ここで、(1)メッセージm1が遅延したため、到着順序がm2、x1、m3、m4、m1の順序に入れ替わった状態を示す。この際、下流の情報処理装置200Bのキュー201にメッセージm2が入ったとする。また、上流の情報処理装置200Aでは、メッセージm2、m3のスナップショットを記録保持し、キュー201にはメッセージm4が入っている。
つぎに、(2)下流の情報処理装置200Bでは、マイクロサービス処理部101がメッセージm2をメッセージ処理し、メッセージm2のスナップショットを記録保持する。また、上流の情報処理装置200Aでは、マイクロサービス処理部101がメッセージm4をメッセージ処理し、メッセージm2~m4のスナップショットを記録保持する。また、キュー201にメッセージm1が入る。
ここで、実施の形態では、情報処理装置200Aのメッセージ制御部102は、キュー201のメッセージm1のタイムスタンプと、スナップショットm2~m4の比較により、メッセージm1の到着遅れ(順序の逆転)を判断する。また、メッセージm2~m4が順序の修正対象であると判断する。そして、情報処理装置200Aのメッセージ制御部102は、m2処理前までロールバックすることにより、メッセージを正常な到着順序m1、m2、m3、m4に修正する。
これにより、(3)上流の情報処理装置200Aでは、キュー201にメッセージm1、m2、m3、m4の順序で入り、マイクロサービス処理部101はメッセージm4のメッセージ処理をキャンセルし、スナップショットm2~m4を削除する。
また、下流の情報処理装置200Bでは、キュー201の修正対象メッセージm3を削除し、キュー201にはメッセージx1のみとなる。この際、マイクロサービス処理部101はメッセージm2のメッセージ処理をキャンセルし、メッセージ処理を停止(stop)する。
この際、メッセージの到着順序が正常でないと判断した情報処理装置200Aは、下流の情報処理装置200Bに対して上述した修正通知を送信する。
つぎに、(4)上流の情報処理装置200Aでは、マイクロサービス処理部101がメッセージm1をメッセージ処理し、スナップショットm1を記録保持する。下流の情報処理装置200Bでは、マイクロサービス処理部101はメッセージ処理が停止したままである。
この後、(5)上流の情報処理装置200Aでは、マイクロサービス処理部101がメッセージm2をメッセージ処理し、スナップショットm1、m2を記録保持する。キュー201には、メッセージm3、m4がある。下流の情報処理装置200Bでは、メッセージ制御部102が受信メッセージを時間順でソートし、キュー201にはメッセージm1、x1の順に入る。この際、キュー201の先頭が修正後のメッセージ(m1)であれば、メッセージ制御部102は、マイクロサービス処理部101の停止を解除する。
この後、(6)上流の情報処理装置200では、正常化されたメッセージの到着順序m1、m2、m3、m4をメッセージ処理することができる。また、下流の情報処理装置200Bでも、合流するメッセージm1、m2、x1、m3、m4の順序を有して正常にメッセージ処理できる。
実施の形態では、上記の問題ケース1~4に基づき、スナップショットを保持するための最大の記録容量(サイズNmax)を下記式(1)に基づき設定する。
Figure 0007031424000001
ただし、m:下流のマイクロサービス数(マイクロサービス処理部101の数)、Qi=下流i番目のマイクロサービスのキューサイズである。
図11は、実施の形態にかかる情報処理装置に必要なスナップショットのサイズを示す説明図である。3つのマイクロサービス処理部101(情報処理装置200A~200C)を有し、メッセージ到着順序がm1~m8、mxである場合(メッセージmxはマイクロサービス処理前の状態)を例に説明する。
この場合、最上流の情報処理装置200Aのマイクロサービス処理部S1(101)が修正をおこなうには、最大でメッセージm1~m8が対象となる(スナップショットの数=8)。中間の情報処理装置200Bのマイクロサービス処理部S2(101)が修正をおこなうには、最大でメッセージm1~m4が対象となる(スナップショットの数=4)。最下流の情報処理装置200Cのマイクロサービス処理部S3(101)が修正をおこなうには、最大でメッセージm1が対象となる(スナップショットの数=1)。
このように、実施の形態によれば、下流のマイクロサービス(マイクロサービス処理部101)になるほどスナップショット記録数は少なくて済む。すなわち、実施の形態では、上流から下流までの全てのマイクロサービスのスナップショット記録数を同じ(最上流マイクロサービスで必要な記録数)にする必要はなく、システム全体で必要な記憶資源(履歴記録部103)のサイズを小さくすることができる。
また、メッセージの到着遅れにより生じた間違ったマイクロサービス実行を正しいマイクロサービス実行にリカバリすることができ、かつ、履歴記録部103で必要なスナップショット記録数を必要最小限に抑えることができる。
また、メッセージ制御部102は、最初にメッセージの到着遅れを検知するまでは、スナップショットを記録せず、最初のメッセージ到着遅れ検出の後、下流のマイクロサービスも含めスナップショット記録を開始してもよい。この場合、メッセージ制御部102は、最初のメッセージの到着遅れによる誤ったマイクロサービス処理のリカバリ(修正処理)はおこなわないこととする。
また、メッセージ制御部102(検査部212)は、最初のメッセージ到着遅れを検知するまで、マイクロサービス処理部101が最後に処理したメッセージのタイムスタンプt_aを保持する。そして、到着したメッセージのタイムスタンプt_bと比較して、t_bがt_aよりも古い場合、到着遅れと判定してもよい。
この場合、メッセージ到着遅れ検出後のリカバリは、2回目のメッセージ到着遅れからとなる。しかし、メッセージ制御部102は、全てのマイクロサービス処理部101でのスナップショットを記録する必要がなくなるため、スナップショット記録に必要な記憶資源(履歴記録部103)のサイズを削減できる。
履歴記録部103は、マイクロサービスの初期状態のスナップショットSS[0]と、処理したメッセージだけを記録してもよい。スナップショットSS[i](i=1、…、n)はメッセージの記録のみとなる。この場合、ロールバック制御部213によるロールバック処理は、マイクロサービスの状態をSS[0]へ戻し、求めたSS[r]までのメッセージを順番に実行させる。これにより、スナップショットのサイズを小さくすることができ、スナップショット記録に必要な記憶資源(履歴記録部103)のサイズを削減できる。
(従来技術について)
図12は、従来技術によるメッセージ通信の例を示す説明図である。図12(a)は、マイクロサービス1201と、マイクロサービス1202が1:1の場合のシステム1200の構成例、図12(b)は、n:1の場合のシステム1210の構成例を示す。
図12(a)の1:1のシステム1200では、マイクロサービスA(1201)がメッセージa、bの順序で送信した後、経路上での通信の輻輳等によりメッセージaに遅延Xが生じたとする。この場合、たとえば、MQなどの従来の順序性保証機構により、マイクロサービスB(1202)では正常なメッセージa、bの順序で受信することができる。
しかし、従来技術では、図12(b)のn:1のシステム1210では、メッセージの順序性を保証することができない。上流に2つのマイクロサービスA1(1201a)、A2(1201b)が配置され、マイクロサービスA1(1201a)がメッセージaを送信し、マイクロサービスA2(1201b)がメッセージbを送信する。下流のマイクロサービスB(1202)は、上流の2つのマイクロサービスA1、A2(1201a、1201b)のメッセージa、bが合流する形で受信する。
このような経路上で合流を含むシステム1210では、メッセージの順序性を保証できない。図12(b)の場合、下流側ではメッセージa、b、あるいはメッセージb、aの到着順序で受信するが、順序性保証機構を用いてもいずれの順序が正しいものであるか判断できない。
通信の輻輳などでメッセージの到着順序が変わると、誤った処理結果がメッセージとして下流へ伝播し、下流全ての処理が誤った結果となる。従来技術では、古いメッセージが到着してはじめてメッセージの到着遅れを判断できるため、必ず誤った処理後のメッセージを送った後になり、下流へメッセージを送る前に止めることはできない。
たとえば、システム1210においてマイクロサービスB(1202)が正しいメッセージa、bの順序で受信した場合には、この到着順序a、bで正しくメッセージ処理できる。しかし、メッセージaに遅延が生じて、マイクロサービスB(1202)がメッセージb、aの順序で受信した場合には、この到着順序b、aでメッセージ処理し下流に送信する。マイクロサービスB(1202)は、メッセージa、bが揃った後にタイムスタンプを比較する等してメッセージaの到着遅れを検出するが、この到着遅れの検出は、既に誤った処理結果を送出した後である。誤った処理結果はシステム1210の下流の全てのマイクロサービスに伝播してしまう。
図13は、n:1のメッセージ通信で順序保証が必要な事象を示す説明図である。近年、IoT(Internet of Things)技術により実世界で発生した事象をクラウド上のメッセージ(イベント)に変換し、マイクロサービス間のメッセージ通信で処理するようになってきている。
図13には、実世界で走行する車両の速度違反システムの例を示す。実世界では車両に設けられたセンサ等により車両の現在位置(一般道または高速道路)と、車両の速度を検出する。クラウド側のシステム1300は、マイクロサービスA1(1301a)が車両の現在位置のメッセージ処理をおこない、マイクロサービスA2(1301b)が車両の速度検出のメッセージ処理をおこなう。そして、マイクロサービスB(1302)は、マイクロサービスA1、A2(1301a、1301b)のメッセージを合流して受信し、スピード違反のメッセージ処理をおこない、マイクロサービスC(1303)は免許証の減点のメッセージ処理をおこなう。
上記マイクロサービスのシステム1300において、実世界での車両の現在位置と速度は、正しくはメッセージa、bの順序であったとする。メッセージaは現在位置が高速道路であり、メッセージbが速度100km/hであるとする。
しかし、メッセージaに遅延Xが生じた場合、マイクロサービスB(1302)では誤った到着順序b、aでメッセージ処理してしまう。この場合、実世界の車両は高速道路上で100km/hの速度で走行しているところ、マイクロサービスB(1302)では車両が高速道路ではない現在位置(一般道)上で速度100km/hで走行するため、スピード違反であるとメッセージ処理してしまう。さらに、下流のマイクロサービスC(1303)では、スピード違反のメッセージ処理に基づき所定の減点のメッセージ処理をしてしまう。
このように、クラウド上のシステム1300では、実世界の事象発生に伴うメッセージを正しい順序で伝播させないと誤った処理結果を生み出し、一つのマイクロサービスで生じた誤りをさらに下流のマイクロサービスに伝播させてしまう。
図14A、図14Bは、従来技術による複数のマイクロサービスを連携させたときの問題を示す説明図である。これら図14A、図14Bには、ある部屋の省エネ効果測定を5つのマイクロサービスで連携して処理するシステムを示す。図14Aは、マイクロサービス間でのメッセージ順序が正しい場合、図14Bは、マイクロサービス間でのメッセージ順序が入れ替わった場合を示す。
図14Aの(a)は、システム1400の構成例であり、図14Aの(a)に示す実世界に配置した入退室検知器Aは部屋へ入室した人体の数を入退室カード等によりユーザ別(個別)に検出し、電力計測器Bは部屋で消費する電力を検出する。システム1400の5つのマイクロサービスは、在室者カウンタ(マイクロサービス)1401が入退室検知器Aの検知情報に基づき、部屋への人体の入退室をカウント(加減算)し、現在部屋にいる人体の数を判断するメッセージ処理おこなう。消費電力計測(マイクロサービス)1402は、電力計測器Bの計測の情報に基づき、部屋の消費電力を計測するメッセージ処理をおこなう。
効率計算(マイクロサービス)1403は、在室者カウンタ1401と、消費電力計測1402のマイクロサービスの合流したメッセージを受信し、現在部屋にいる人体の数あたりの電力消費の効率(W/人)を求めるメッセージ処理をおこなう。省エネ評価(マイクロサービス)1404は、効率計算の結果に基づく省エネ状態を点数で評価するメッセージ処理をおこなう。月間効果測定(マイクロサービス)1405は、部屋の月間の省エネ効果の評価(たとえば、点数の推移、月間の評価の点数の平均、前回評価の点数に対する差分等)のメッセージ処理をおこなう。
図14Aの(b)には、メッセージの到着順序が正常時のシステム1400の各マイクロサービスの動作例を示すシーケンス図を示す。はじめに、入退室検知器Aが部屋から一人の退室を検知し、このときの在室者カウンタ(マイクロサービス)1401が在室者一人と判断したとする。そして、電力計測器Bが200Wの消費電力を計測すると、効率計算(マイクロサービス)1403は200W/人の効率計算をおこなう。そして、省エネ評価(マイクロサービス)1404は在室者の省エネ評価を60点と評価する。月間効果測定(マイクロサービス)1405は前回の省エネ評価時t1~今回の省エネ評価時t2の点数推移を求める。たとえば前回の点数が80点だった場合、t1~t2が80点として出力する。
この後、入退室検知器Aが部屋へ一人の入室を検知し、このときの在室者カウンタ(マイクロサービス)1401が在室者2人と判断したとすると、効率計算(マイクロサービス)1403は100W/人の効率計算をおこなう。そして、省エネ評価(マイクロサービス)1404は在室者の省エネ評価を100点と評価する。月間効果測定(マイクロサービス)1405はt2~t3が60点である情報(メッセージ)を出力する。
つぎに、図14Bに示すマイクロサービス間でのメッセージの到着順序が入れ替わった場合について説明する。図14Bの(a)に示すように、システム1400の在室者カウンタ(マイクロサービス)1401のメッセージに遅延Xが発生したとする。
図14Bの(b)に示すように、遅延Xの発生が一人入室時に生じた場合、在室者カウンタ(マイクロサービス)1401から出力されるメッセージは、効率計算(マイクロサービス)1403に本来の到達時点(時期t0)で受信される。しかし、遅延Xにより、在室者カウンタ(マイクロサービス)1401から出力されるメッセージが実際には時期txで効率計算(マイクロサービス)1403に到達(受信)したとする。
この場合、遅延Xによる期間Tの間、効率計算(マイクロサービス)1403は、一人の入室にかかるメッセージを受信しない状態のままメッセージ処理をおこなう。この場合、本来入室は二人であるところ、一人しか入室していない状態(合計一人)だけで電力計測器Bが検出した消費電力800Wに基づく効率計算(800W/一人)をおこなう。この結果、下流の省エネ評価(マイクロサービス)1404は10点と評価し、月間効果測定(マイクロサービス)1405もt2~t4が60点と判断してしまう。図中×印は、本来必要なメッセージ処理であるが未処理となったメッセージ処理結果、△印は誤った処理によるメッセージ処理結果である。
遅延Xのメッセージによる期間T経過後、システム1400の消費電力計測(マイクロサービス)は、遅延したメッセージが時期txで実際に到着した時点ではじめてこのメッセージの到着遅れを検出する。このように、従来技術では、メッセージに遅延が生じた場合、遅延した期間Tまでの間、メッセージの遅延の有無を判断できずにメッセージ処理をおこなってしまい、下流の全てのマイクロサービスも同様に誤ったメッセージ処理をおこなう問題が生じた。
これに対し、実施の形態によれば、各マイクロサービスにマイクロサービス間のメッセージの伝播状態と、メッセージ処理時のタイムスタンプによりメッセージの到着遅れを検知できる。一つのマイクロサービスのメッセージ遅延はキュー内でのタイムスタンプの比較だけで簡単に検出でき、正しいメッセージ順序に修正できる。
また、メッセージの遅延が複数のマイクロサービスに影響を与える場合、たとえば、遅延したメッセージのメッセージ処理を実行せずに下流に処理後のメッセージを出した場合にも対応できる。この場合、メッセージ処理後のスナップショットを参照して、ロールバック制御することで、正しいメッセージ順序に修正でき、再度メッセージ処理できるようになる。具体的には、下流のマイクロサービスでは、到着遅れメッセージより先行したメッセージをメッセージ処理した以前の状態のスナップショットを参照して状態を戻し、到着遅れのメッセージから正しいメッセージ順序でメッセージ処理を再実行することができる。
また、上流の複数のマイクロサービスのメッセージが合流して下流の一つのマイクロサービスで受信するシステム構成においても、修正通知によりサービス処理部でのメッセージ処理を停止する。このように上流で並列にメッセージ処理する場合において、たとえば一方のメッセージに到着遅れが生じても、自身のマイクロサービスでは正しいメッセージ到着順序に修正できる。加えて、下流のマイクロサービスでは、メッセージ処理を停止することで誤ったメッセージ処理結果をさらに下流に伝播させることを防ぐことができる。また、キューの先頭のメッセージが正しく修正されたメッセージになれば停止を解除して、メッセージ処理を再開できる。
また、サービス処理部の処理時のスナップショットは、キューサイズから求めた所定数分だけ保存すればよい。この際、保持するスナップショットは、下流の情報処理装置のサービス処理部の数と、キューサイズに基づく記録容量とすることができ、下流のマイクロサービスに至るにつれて記録容量を小さくできる。これにより、システム全体でのスナップショットを保持するための記録容量を削減できるようになる。
従来スナップショットを保持する記録容量は、運用者が勘により経験上十分と考える世代数分にするため、余裕を持った世代数となり、必要以上のスナップショットを保存していた。これに対し、実施の形態では、スナップショットの記録容量を削減でき、記憶資源にかかるコストを低コスト化できるようになる。
そして、実施の形態によれば、上流のマイクロサービスで到着遅れを検出して下流のマイクロサービスに修正通知を送信するため、簡単な構成で正しいメッセージ順序に修正できる。このため、メッセージの順序保証を伝送路等でおこなう必要がなく、高価な専用システムを用いる必要がない。
そして、実施の形態によれば、所定のサービスを提供する複数のマイクロサービスのいずれかでメッセージ到着遅れが生じても、簡単な処理と低コストな構成で全てのマイクロサービスがそれぞれ正しいメッセージ到着順序でメッセージ処理できるようになる。
なお、本発明の実施の形態で説明した情報処理プログラムは、あらかじめ用意されたプログラムをサーバ等のプロセッサに実行させることにより実現することができる。本制御方法は、ハードディスク、フレキシブルディスク、CD-ROM(Compact Disc-Read Only Memory)、DVD(Digital Versatile Disk)、フラッシュメモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本制御方法は、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)複数のマイクロサービス間でメッセージ通信し、それぞれが前記マイクロサービスをおこなう情報処置装置において、
受信した複数の前記メッセージのタイムスタンプを比較し、遅延して到着した前記メッセージを判断し、前記メッセージを正しい到着順序で再度メッセージ処理し、前記メッセージを受信する下流の情報処理装置に対し、正しいメッセージの到着順序で再度メッセージ処理させる修正通知を送信する、
メッセージ制御部を有することを特徴とする情報処理装置。
(付記2)受信したメッセージを到着順序で格納するキューと、
前記キューへの格納順に前記メッセージを読み出し、所定のメッセージ処理をおこなうサービス処理部と、を有し、
前記メッセージ制御部は、
前記サービス処理部のメッセージ処理毎の処理状態をスナップショットとして処理順に保持する履歴記録部と、
前記キューに格納された前記メッセージと、前記履歴記録部に保持された前記スナップショットに基づき、前記受信したメッセージの到着順序が正常か否かを検査し、検査結果を前記修正通知として送信する検査部と、
前記修正通知の受信時に、前記キューおよび前記サービス処理部に対し、正しいメッセージの到着順序で処理をおこなわせるロールバック制御をおこなうロールバック制御部と、を有する、
ことを特徴とする付記1に記載の情報処理装置。
(付記3)前記検査部は、
下流の情報処理装置に対する前記修正通知として、修正対象の前記メッセージの識別子と、到着順序を正しく修正した後のメッセージ列の先頭のメッセージの識別子の情報を送信することを特徴とする付記2に記載の情報処理装置。
(付記4)前記ロールバック制御部は、
前記修正通知の受信時に、当該修正通知に基づき、前記キューに対し、正しく修正した後のメッセージ列を格納し、前記サービス処理部に対し、遅延して到着した前記メッセージ以前のメッセージ処理状態にロールバックさせることを特徴とする付記2または3に記載の情報処理装置。
(付記5)前記ロールバック制御部は、
前記修正通知の受信時に、当該修正通知に基づき、前記サービス処理部に対し、到着順序が正しくない前記メッセージのメッセージ処理をキャンセルさせることを特徴とする付記4に記載の情報処理装置。
(付記6)前記ロールバック制御部は、
前記修正通知の受信時に、前記キューに格納された修正対象の前記メッセージを削除することを特徴とする付記4または5に記載の情報処理装置。
(付記7)上流の複数の情報処理装置から合流して前記メッセージを受信するシステム構成の場合、
前記ロールバック制御部は、
前記修正通知の受信時に、前記サービス処理部によりメッセージ処理を停止し、前記キューの先頭のメッセージが正しく修正されたメッセージであれば前記停止を解除することを特徴とする付記2または3に記載の情報処理装置。
(付記8)前記履歴記録部は、
下流の情報処理装置の前記サービス処理部の数と、キューサイズに基づく記録容量を有することを特徴とする付記2~7のいずれか一つに記載の情報処理装置。
(付記9)前記履歴記録部は、
前記スナップショットとして、前記サービス処理部のメッセージ処理毎のサービス状態の履歴を記録保持することを特徴とする付記2~8のいずれか一つに記載の情報処理装置。
(付記10)複数のマイクロサービス間でメッセージ通信し、それぞれが前記マイクロサービスをおこなう複数の情報処置装置を含む情報処理システムにおいて、
前記情報処理装置は、それぞれ、
受信したメッセージを到着順序で格納するキューと、
前記キューへの格納順に前記メッセージを読み出し、所定のメッセージ処理をおこなうサービス処理部と、
前記メッセージのタイムスタンプを比較し、遅延して到着した前記メッセージを判断し、前記メッセージを正しい到着順序で再度メッセージ処理し、前記メッセージを受信する下流の情報処理装置に対し、正しいメッセージの到着順序で再度メッセージ処理させる修正通知を送信するメッセージ制御部と、
を有することを特徴とする情報処理システム。
(付記11)複数のマイクロサービス間でメッセージ通信し、それぞれが前記マイクロサービスをおこなう複数の情報処置装置と、メッセージ制御装置とを含む情報処理システムにおいて、
前記情報処理装置は、それぞれ、
受信したメッセージを到着順序で格納するキューと、
前記キューへの格納順に前記メッセージを読み出し、所定のメッセージ処理をおこなうサービス処理部と、を有し、
前記メッセージ制御装置は、
前記情報処理装置のメッセージのタイムスタンプを比較し、遅延して到着した前記メッセージを判断し、前記メッセージを正しい到着順序で再度メッセージ処理し、前記メッセージを受信する下流の情報処理装置に対し、正しいメッセージの到着順序で再度メッセージ処理させる修正通知を送信する、
ことを特徴とする情報処理システム。
(付記12)複数のマイクロサービス間でメッセージ通信し、それぞれが前記マイクロサービスをおこなう情報処置装置のコンピュータに、
受信した複数の前記メッセージのタイムスタンプを比較し、遅延して到着した前記メッセージを判断し、
前記メッセージを正しい到着順序で再度メッセージ処理し、
前記メッセージを受信する下流の情報処理装置に対し、正しいメッセージの到着順序で再度メッセージ処理させる修正通知を送信する、
処理を実行させることを特徴とする情報処理プログラム。
(付記13)前記修正通知の受信時に、当該修正通知に基づき、正しく修正した後のメッセージ列をキューに格納し、
前記マイクロサービスの処理をおこなうサービス処理部に対し、遅延して到着した前記メッセージ以前のメッセージ処理状態にロールバックさせる、
処理を実行させることを特徴とする付記12に記載の情報処理プログラム。
100 情報処理システム
101 マイクロサービス処理部
102 メッセージ制御部
103 履歴記録部
200(200A~200C) 情報処理装置
201 キュー
212 検査部
213 ロールバック制御部
301 CPU
302 メモリ
303 ネットワークインタフェース
305 記録媒体
330 ネットワーク

Claims (10)

  1. 複数のマイクロサービス間でメッセージ通信し、それぞれ前記マイクロサービスが到着順序でメッセージ処理する情報処置装置において、
    受信したメッセージを到着順序で格納するキューと、
    前記キューへの格納順に前記メッセージを読み出し、所定のメッセージ処理をおこなうサービス処理部と、
    受信した複数の前記メッセージの到着順序と複数の前記メッセージのタイムスタンプとに基づき、複数の前記メッセージのうち遅延して到着した前記メッセージがあれば正しい到着順序にして複数の前記メッセージを処理し、前記メッセージを受信する下流の情報処理装置に対し、正しい到着順序で前記メッセージを処理させる修正通知を送信するメッセージ制御部と、を有し、
    前記メッセージ制御部は、
    前記サービス処理部のメッセージ処理毎の処理状態をスナップショットとして処理順に保持する履歴記録部と、
    前記キューに格納された前記メッセージと、前記履歴記録部に保持された前記スナップショットに基づき、前記受信したメッセージの到着順序が正常か否かを検査し、検査結果を前記修正通知として送信する検査部と、
    前記修正通知の受信時に、前記キューおよび前記サービス処理部に対し、正しいメッセージの到着順序で処理をおこなわせるロールバック制御をおこなうロールバック制御部と、を有し、
    前記検査部は、
    下流の情報処理装置に対する前記修正通知として、修正対象の前記メッセージの識別子と、到着順序を正しく修正した後のメッセージ列の先頭のメッセージの識別子の情報を送信することを特徴とする情報処理装置。
  2. 前記ロールバック制御部は、
    前記修正通知の受信時に、当該修正通知に基づき、前記キューに対し、正しく修正した後のメッセージ列を格納し、前記サービス処理部に対し、遅延して到着した前記メッセージ以前のメッセージ処理状態にロールバックさせることを特徴とする請求項1に記載の情報処理装置。
  3. 前記ロールバック制御部は、
    前記修正通知の受信時に、当該修正通知に基づき、前記サービス処理部に対し、到着順序が正しくない前記メッセージのメッセージ処理をキャンセルさせることを特徴とする請求項2に記載の情報処理装置。
  4. 前記ロールバック制御部は、
    前記修正通知の受信時に、前記キューに格納された修正対象の前記メッセージを削除することを特徴とする請求項2または3に記載の情報処理装置。
  5. 上流の複数の情報処理装置から合流して前記メッセージを受信するシステム構成の場合、
    前記ロールバック制御部は、
    前記修正通知の受信時に、前記サービス処理部によりメッセージ処理を停止し、前記キューの先頭のメッセージが正しく修正されたメッセージであれば前記停止を解除することを特徴とする請求項1に記載の情報処理装置。
  6. 前記履歴記録部は、
    下流の情報処理装置の前記サービス処理部の数と、キューサイズに基づく記録容量を有することを特徴とする請求項1~5のいずれか一つに記載の情報処理装置。
  7. 複数のマイクロサービス間でメッセージ通信し、それぞれの前記マイクロサービスが到着順序でメッセージ処理する複数の情報処置装置を含む情報処理システムにおいて、
    前記情報処理装置は、それぞれ、
    受信したメッセージを到着順序で格納するキューと、
    前記キューへの格納順に前記メッセージを読み出し、所定のメッセージ処理をおこなうサービス処理部と、
    受信した複数の前記メッセージの到着順序と複数の前記メッセージのタイムスタンプとに基づき、複数の前記メッセージのうち遅延して到着した前記メッセージがあれば正しい到着順序にして複数の前記メッセージを処理し、前記メッセージを受信する下流の情報処理装置に対し、正しい到着順序で前記メッセージを処理させる修正通知を送信するメッセージ制御部と、を有し、
    前記メッセージ制御部は、
    前記サービス処理部のメッセージ処理毎の処理状態をスナップショットとして処理順に保持する履歴記録部と、
    前記キューに格納された前記メッセージと、前記履歴記録部に保持された前記スナップショットに基づき、前記受信したメッセージの到着順序が正常か否かを検査し、検査結果を前記修正通知として送信する検査部と、
    前記修正通知の受信時に、前記キューおよび前記サービス処理部に対し、正しいメッセージの到着順序で処理をおこなわせるロールバック制御をおこなうロールバック制御部と、を有し、
    前記検査部は、
    下流の情報処理装置に対する前記修正通知として、修正対象の前記メッセージの識別子と、到着順序を正しく修正した後のメッセージ列の先頭のメッセージの識別子の情報を送信することを特徴とする情報処理システム。
  8. 複数のマイクロサービス間でメッセージ通信し、それぞれの前記マイクロサービスが到着順序でメッセージ処理する複数の情報処置装置と、メッセージ制御装置とを含む情報処理システムにおいて、
    前記情報処理装置は、それぞれ、
    受信したメッセージを到着順序で格納するキューと、
    前記キューへの格納順に前記メッセージを読み出し、所定のメッセージ処理をおこなうサービス処理部と、を有し、
    前記メッセージ制御装置は、
    前記情報処理装置が受信した複数の前記メッセージの到着順序と複数の前記メッセージのタイムスタンプとに基づき、複数の前記メッセージのうち遅延して到着した前記メッセージがあれば正しい到着順序にして複数の前記メッセージを処理し、前記メッセージを受信する下流の情報処理装置に対し、正しい到着順序で前記メッセージを処理させる修正通知を送信するメッセージ制御部を有し、
    前記メッセージ制御部は、
    前記サービス処理部のメッセージ処理毎の処理状態をスナップショットとして処理順に保持する履歴記録部と、
    前記キューに格納された前記メッセージと、前記履歴記録部に保持された前記スナップショットに基づき、前記受信したメッセージの到着順序が正常か否かを検査し、検査結果を前記修正通知として送信する検査部と、
    前記修正通知の受信時に、前記キューおよび前記サービス処理部に対し、正しいメッセージの到着順序で処理をおこなわせるロールバック制御をおこなうロールバック制御部と、を有し、
    前記検査部は、
    下流の情報処理装置に対する前記修正通知として、修正対象の前記メッセージの識別子と、到着順序を正しく修正した後のメッセージ列の先頭のメッセージの識別子の情報を送信することを特徴とする情報処理システム。
  9. 複数のマイクロサービス間でメッセージ通信し、それぞれの前記マイクロサービスが到着順序でメッセージ処理する情報処置装置のコンピュータに、
    受信したメッセージを到着順序でキューに格納し、
    前記キューへの格納順に前記メッセージを読み出し、所定のメッセージ処理をおこない、
    受信した複数の前記メッセージの到着順序と複数の前記メッセージのタイムスタンプとに基づき、複数の前記メッセージのうち遅延して到着した前記メッセージがあれば正しい到着順序にして複数の前記メッセージを処理し、
    前記メッセージを受信する下流の情報処理装置に対し、正しい到着順序で前記メッセージを処理させる修正通知を送信し、
    さらに、前記メッセージ処理毎の処理状態をスナップショットとして処理順に保持し、
    前記キューに格納された前記メッセージと、保持された前記スナップショットに基づき、前記受信したメッセージの到着順序が正常か否かを検査し、検査結果を前記修正通知として送信し、
    前記修正通知の受信時に、正しいメッセージの到着順序で処理をおこなわせるロールバック制御をおこない、
    下流の情報処理装置に対する前記修正通知として、修正対象の前記メッセージの識別子と、到着順序を正しく修正した後のメッセージ列の先頭のメッセージの識別子の情報を送信する、
    処理を実行させることを特徴とする情報処理プログラム。
  10. 前記修正通知の受信時に、当該修正通知に基づき、正しく修正した後のメッセージ列をキューに格納し、
    前記マイクロサービスの処理をおこなうサービス処理部に対し、遅延して到着した前記メッセージ以前のメッセージ処理状態にロールバックさせる、
    処理を実行させることを特徴とする請求項9に記載の情報処理プログラム。
JP2018058720A 2018-03-26 2018-03-26 情報処理装置、情報処理システムおよび情報処理プログラム Expired - Fee Related JP7031424B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018058720A JP7031424B2 (ja) 2018-03-26 2018-03-26 情報処理装置、情報処理システムおよび情報処理プログラム
US16/362,582 US11115484B2 (en) 2018-03-26 2019-03-22 Control apparatus and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018058720A JP7031424B2 (ja) 2018-03-26 2018-03-26 情報処理装置、情報処理システムおよび情報処理プログラム

Publications (2)

Publication Number Publication Date
JP2019169109A JP2019169109A (ja) 2019-10-03
JP7031424B2 true JP7031424B2 (ja) 2022-03-08

Family

ID=67985763

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018058720A Expired - Fee Related JP7031424B2 (ja) 2018-03-26 2018-03-26 情報処理装置、情報処理システムおよび情報処理プログラム

Country Status (2)

Country Link
US (1) US11115484B2 (ja)
JP (1) JP7031424B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11785117B2 (en) * 2019-06-26 2023-10-10 Telefonaktiebolaget Lm Ericsson (Publ) Methods and apparatuses for service discovery
CN110430079B (zh) * 2019-08-05 2021-03-16 腾讯科技(深圳)有限公司 车路协同系统
US11941026B2 (en) * 2020-01-03 2024-03-26 HealthSnap, Inc. System and method for syncing asynchronously received sequential data from disparate sources
JP2021196971A (ja) * 2020-06-16 2021-12-27 株式会社デンソー 制御システム、制御方法、制御プログラム、車載制御装置およびサーバ装置
US20210117242A1 (en) 2020-10-03 2021-04-22 Intel Corporation Infrastructure processing unit
US11785065B2 (en) * 2021-04-15 2023-10-10 Nec Corporation Dynamic microservice intercommunication configuration
US11327819B1 (en) * 2021-05-03 2022-05-10 Dell Products L.P. Microservices mediation layer for canonical message alignment in complex microservices environments
JP7196262B1 (ja) 2021-10-25 2022-12-26 エヌ・ティ・ティ・コミュニケーションズ株式会社 サービス提供システムおよびサービス提供方法
JP7296515B2 (ja) * 2021-10-25 2023-06-22 エヌ・ティ・ティ・コミュニケーションズ株式会社 サービス提供システムおよびサービス提供方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0628199A (ja) * 1990-03-05 1994-02-04 Internatl Business Mach Corp <Ibm> 並行処理の同期方法
JPH07271620A (ja) 1994-03-30 1995-10-20 Mitsubishi Electric Corp ソフトウェア回復方式
JPH10283276A (ja) * 1997-04-10 1998-10-23 Nippon Telegr & Teleph Corp <Ntt> イベント順序補正方法
JPH11259386A (ja) * 1998-03-06 1999-09-24 Ntt Communication Ware Kk ネットワークシステム
US9037698B1 (en) * 2006-03-14 2015-05-19 Amazon Technologies, Inc. Method and system for collecting and analyzing time-series data
US9076021B2 (en) * 2012-07-16 2015-07-07 Compellent Technologies Encryption/decryption for data storage system with snapshot capability
US20180248772A1 (en) * 2017-02-24 2018-08-30 Satori Worldwide, Llc Managing intelligent microservices in a data streaming ecosystem
US10824981B2 (en) * 2017-04-24 2020-11-03 Sap Se Transaction orchestration for microservice
US10686862B2 (en) * 2017-12-08 2020-06-16 Salesforce.Com, Inc. Apparatus and method for low-latency message request/response processing

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
山口 佳紀 他,実時間履歴情報を用いた並列離散事象シミュレーション,電気学会研究会資料 ,社団法人電気学会,1997年01月31日,第97-1/11巻,第41頁-第46頁

Also Published As

Publication number Publication date
JP2019169109A (ja) 2019-10-03
US11115484B2 (en) 2021-09-07
US20190297150A1 (en) 2019-09-26

Similar Documents

Publication Publication Date Title
JP7031424B2 (ja) 情報処理装置、情報処理システムおよび情報処理プログラム
US10698771B2 (en) Zero-data-loss with asynchronous redo shipping to a standby database
CN102414663B (zh) 用于管理报文排序的方法和系统
CN109194493B (zh) 一种信息管理系统、方法及装置
CN102667728A (zh) 具有客户机端一致性的传递
US8583754B2 (en) Business flow distributed processing system and method
EP3210119B1 (en) Recovery and fault-tolerance under computational indeterminism
US20220092224A1 (en) Data management system with tamper-evidence
US8055991B2 (en) Error detection and recovery using an asynchronous transaction journal
Gog et al. Falkirk wheel: Rollback recovery for dataflow systems
JP5531760B2 (ja) 情報処理システム及び情報処理方法
JP7425300B2 (ja) 実行制御方法及び実行制御プログラム
JP2008217118A (ja) ログファイル管理装置及びログファイル送信装置及びログファイル管理方法及びログファイル送信方法及びプログラム
US20080040729A1 (en) Method for Resolving a Unit of Work
US6516423B1 (en) System and method for providing multiple queue redundancy in a distributed computing system
US20110093738A1 (en) Error recovery for application-level intermediaries
US20230385156A1 (en) Distributed fault-tolerance via disaggregated memory boards
JP2009230257A (ja) 承認システムおよび承認プログラム
JP2005293325A (ja) データベースの即時レプリケーション性能監視システム
US12307296B2 (en) Computer-readable recording medium storing data processing program, data processing method, and data processing system
CN114282865B (zh) 出单信息的透传方法、装置及计算设备
Ahn Enhanced sender-based message logging for reducing forced checkpointing overhead in distributed systems
Schultz Partitionable virtual synchrony using extended virtual synchrony
Chen et al. Sigma: A fault-tolerant mutual exclusion algorithm in dynamic distributed systems subject to process crashes and memory losses
EP4068096B1 (en) Data processing program, information processing system, and data processing method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201210

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211020

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220112

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220207

R150 Certificate of patent or registration of utility model

Ref document number: 7031424

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees