JP6273069B2 - データ処理システムおよびデータ処理方法 - Google Patents

データ処理システムおよびデータ処理方法 Download PDF

Info

Publication number
JP6273069B2
JP6273069B2 JP2017510594A JP2017510594A JP6273069B2 JP 6273069 B2 JP6273069 B2 JP 6273069B2 JP 2017510594 A JP2017510594 A JP 2017510594A JP 2017510594 A JP2017510594 A JP 2017510594A JP 6273069 B2 JP6273069 B2 JP 6273069B2
Authority
JP
Japan
Prior art keywords
data processing
processing unit
message
data
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017510594A
Other languages
English (en)
Other versions
JPWO2017037924A1 (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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JPWO2017037924A1 publication Critical patent/JPWO2017037924A1/ja
Application granted granted Critical
Publication of JP6273069B2 publication Critical patent/JP6273069B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • 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
    • 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
    • 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/3433Recording 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 for load management
    • 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/3452Performance evaluation by statistical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/82Architectures of general purpose stored program computers data or demand driven
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0002Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the transmission rate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/06Generation of reports
    • H04L43/062Generation of reports related to network traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0817Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
    • 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
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • 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
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/101Server selection for load balancing based on network conditions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/875Monitoring of systems including the internet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/026Capturing of monitoring data using flow identification

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Environmental & Geological Engineering (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、データ処理を実行するデータ処理システムおよびデータ処理方法に関する。
近年、通信、電力、交通、産業といった社会インフラサービスにおいて、IoT(Internet of Things)/m2m(Machine to Machine)が普及しはじめている。IoTサービスを提供するサーバシステム(以下、IoTサービスシステム)は、携帯電話、スマートメータ、自動車、工場の機器といった様々な通信デバイスから送信されるデータ(以下、メッセージ)を収集し、サービス目的に応じてデータを加工する。
IoTサービスシステムは、メッセージの活用目的の変更や追加により、頻繁にシステム変更を要求される。その度に、作業者による負荷分散設計と何度も負荷試験を行って負荷分散のパラメータを決定する作業(以下、チューニング)とが発生し、そのためのコストや負荷分散設計およびチューニング作業の日数の増加を抑制することが、ビジネス上の課題である。負荷分散設計およびチューニング作業では、作業者は、リソースに対する負荷試験と、ボトルネック解析と、リソース振分と、パラメータ設定という作業を何度も繰り返す。そして、作業者は、システムの処理性能(スループット)が最大となるパラメータの値および分散設計を探索する。
上記課題の解決方法として、特許文献1、2および非特許文献1に示すような動的な分散手法およびチューニング手法が開示されている。特許文献1は、サーバ内のたとえばCPU(Central Processing Unit)のリソースを管理するリソース管理部が、各処理にキューとそれを処理するスレッドプールを結びつけ、キューの滞留数に応じてスレッドを割り当てる方法を開示する。特許文献2は、キューと複数のサーバとを結びつけ、キューの滞留数から分散先を振り分ける方法を開示する。非特許文献1は、サーバを増減する方法を開示する。
米国特許第8230447号明細書 特開2006−259812号公報
Auto Scaling Developer Guide API Version 2011−01−01、[平成27年7月2日検索]、インターネット〈URL:http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/as−using−sqs−queue.html〉
近年、一部のIoTサービスシステムは、業種により、多種大量のセンサから送信される粒度の異なるデータを多様な業務目的に活用するため、複雑なデータ加工と配信を要求される。たとえば、電力分野のIoTサービスシステムは、スマートメータやHEMS(Home Energy Management System)から集めたデータを、電力会社、一般の電力供給者、電力の需給業者といった宛先ごとに、地域、時間、データフォーマットが異なるデータ処理を行う。また、産業分野のIoTサービスシステムは、工場の監視や保全のために、工場の機器の情報に加え、ビデオカメラの動画データやタブレット等のデバイスのデータを収集してつき合わせるデータ処理を行う。
これらの複雑なデータ処理の多くは、SOA(Service Oriented Architecture)やMicroservice Architectureと呼ばれる一連のデータ処理を複数のモジュールに分割して処理を行う形態で実現する。一方、従来のようにデータ処理を分割せずに一つのモジュールで実行する形態は、モノリシックと呼ばれる。複雑なデータ処理は1種類のデータ処理であっても、処理性能向上や冗長性確保のため複数のサーバで実行される。また、センサデータ活用目的の変更や追加、または、宛先の変更や追加は、上記複雑なデータ処理を行うIoTサービスシステムに、システム変更を頻繁に要求する。
しかしながら、上述した特許文献1、2および非特許文献1の方法は、複雑なデータ処理に適用できるアーキテクチャを前提としていないため、以下の技術課題が解決できない場合がある。
第1に、複雑なデータ処理は、ボトルネック解析が困難で、ボトルネックにより、たとえば、サーバのCPUやI/Oのようなリソースを十分に活用できない。また、サーバを増設しても処理性能が増設台数に比例して伸びないため、サーバ増設による性能拡張を前提とする分散処理システムにおいて大きな課題となる。
第2に、複雑なデータ処理は、複数のモジュールに分割され、各データ処理が関連して、一連のデータ処理が完了する(以下、一連のデータ処理の流れをデータフローとする)。たとえば、前述の電力分野のIoTサービスシステムは、スマートメータから集めたメッセージのプロトコル変換処理、複数のメッセージから地域別の統計情報を出力する処理、複数のメッセージから時間別の統計情報を出力する処理、HEMSから集めたメッセージのプロトコル変換処理、HEMSからのメッセージとスマートメータからのメッセージとの付き合せ処理といった複数種類のデータ処理を組み合わせたデータフローを用いる。そして、電力分野のIoTサービスシステムは、このデータフローにより、電力会社、一般の電力供給者、電力の需給業者といった宛先毎に異なるデータ処理を実現する。
ここで、一つのデータ処理の設定変更や処理変更を行った結果、変更前後で消費するリソース量が異なると、上記複雑に関連している各データ処理のリソース消費のバランスが変化し、新たなボトルネックが発生する。これにより、負荷分散設計とチューニング作業が必要になる。
第3に、特許文献1の方法を上記複雑なデータ処理に適用した技術は、最初のボトルネックであるデータ処理に残りのリソースを全て消費してしまい、IoTサービスシステムのスループットを最大化できない場合がある。また、特許文献1は、1サーバ内のリソース管理に言及しており、複数のサーバで構成されたシステムについては言及していない。特許文献2および非特許文献1の方法も、1種類のデータ処理を対象としているため、上記複雑なデータ処理のボトルネック解消に言及していない。
本発明は、複数種類のデータ処理が混在するデータフロー群のスループットの向上を図ることを目的とする。
本願において開示される発明の一側面となるデータ処理システムおよびデータ処理方法は、送信元からのメッセージに対しデータ処理を実行して宛先に送信するデータ処理システムおよびデータ処理方法であって、前記データ処理が異なる複数種類のデータ処理部の各々を1以上有し、前記メッセージに対し種類が異なる一連のデータ処理を実行して前記一連のデータ処理後のメッセージを前記宛先に送信する複数のデータフローについて、前記送信元からのメッセージに指定されるデータフローにしたがって、当該メッセージおよび前記データ処理部によるデータ処理後のメッセージを後続のデータ処理部に振り分ける振分部を有し、前記振分部は、前記複数のデータフローを流れるメッセージの滞留量と前記データ処理のリソース情報とに基づいて、ボトルネックまたはボトルネックとなり得る特定の状態である特定のデータ処理部を検出する検出処理と、前記検出処理によって検出された特定のデータ処理部のリソース情報に基づいて、前記特定のデータ処理部の台数の増加により前記特定のデータ処理部が前記特定の状態から解消される台数に決定する決定処理と、前記特定のデータ処理部を、前記決定処理によって決定された前記特定の状態から解消される台数分設定する設定処理と、を実行することを特徴とする。
本発明の代表的な実施の形態によれば、複数種類のデータ処理が混在するデータフロー群のスループットの向上を図ることができる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
本実施例にかかるネットワークシステムのシステム構成例を示すブロック図である。 サーバ群の論理的な接続関係を示す説明図である。 サーバのハードウェア構成例を示すブロック図である。 サーバの記憶デバイスの記憶内容例を示す説明図である。 データフローテーブルの記憶内容例を示す説明図である。 データ処理テーブルの記憶内容例を示す説明図である。 分散システムにおけるデータ処理例を示す説明図である。 データ処理シーケンス例を示すシーケンス図である。 振分部の流量制御を行うためのフロー計算処理手順例を示すフローチャートである。 流量制御後のデータフローの一例を示す説明図である。
本実施例のデータ処理システムは、複雑なデータ処理が組み合わさったデータフロー上でメッセージのデータ処理を実行するデータ処理部の数、すなわち、リソースを制御することにより、間接的にデータフロー上を流れるメッセージの流量を制御する。これにより、データフローに発生したボトルネックを解消し、複数種類のデータ処理が混在するデータフロー群のスループットの向上を図る。ここで、メッセージは、一つ以上のパケットから構成されるデータであり、ヘッダとボディを含む。メッセージは、たとえば、携帯電話の電子メールやSNS(Social Networking Service)のメッセージデータ、センサ情報、携帯電話、パーソナルコンピュータ、自動車、鉄道、工場の機器が発信するデータを含む。
また、本実施例では、たとえば、携帯電話、パーソナルコンピュータ、自動車、鉄道、工場の機器といったIoT/M2Mサービスのメッセージ処理を対象とし、具体例として電力のスマートメータやHEMSからのデータ処理を対象とする。
また、本実施例では、「流量」とは、単位時間あたりのメッセージ処理数である。たとえば、データ処理部の「流量」は、データ処理部において、単位時間あたりの流出メッセージ量から流入メッセージ量を引いた値であり、データフローの「流量」は、データフロー上の各データ処理部における流量の統計値(たとえば、最大値、最小値、中央値、平均値)とする。
<システム構成>
図1は、本実施例にかかるネットワークシステム100のシステム構成例を示すブロック図である。ネットワークシステム100は、1以上の通信デバイス101と、ロードバランサ103およびサーバ群SVsと、運用端末104と、1以上の宛先サーバ106と、がネットワーク102を介して通信可能に接続されたシステムである。
通信デバイス101は、サーバ群SVsのいずれかのサーバSVi(iはサーバを特定する番号であり、1≦i≦nの整数。nは2以上の整数。)にアクセスするコンピュータである。通信デバイス101は、たとえば、携帯電話端末、タブレット、パーソナルコンピュータ、スマートメータ、HEMS、センサデバイス、車等のデータ通信可能な装置であり、取得したメッセージをサーバ群SVsに転送する。また、通信デバイス101は、上記データ通信可能な装置からのメッセージを収集して、当該メッセージを定期的にまとめてサーバ群SVsへ送信する中間サーバまたはゲートウェイでもよい。
ネットワーク102は、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)などである。有線でも無線でもよい。ロードバランサ103は、通信デバイス101からのメッセージを分散して、いずれかのサーバSViに、たとえばラウンドロビンで振り分ける。
通信デバイス101からのメッセージは、上述したように、ヘッダとボディにより構成されるが、ヘッダは、宛先サーバのアドレス、サーバSViの受信ポート番号、および、データフローの識別子を含む。たとえば、通信デバイス101ごとに、どの宛先にどのデータフローを用いてメッセージを送信するかがあらかじめ設定されている。
サーバ群SVsは、複数のサーバSV1〜SVnにより構成されるデータ処理システムである。各サーバSViは相互に通信可能である。サーバSViは各々、振分部Hiと、記憶部DSiと、データ処理部DPiX(Xは、データ処理の種別を示すアルファベット。)と、を有する。データ処理部DPiXについて、所属するサーバSViを区別しない場合は、データ処理部DPXと表記する。
振分部Hiは、通信デバイス101からのメッセージやデータ処理部DPXがデータ処理Xをしたメッセージを、後述するデータフローにしたがって、1以上のつぎのデータ処理部DPYに振り分ける(Y≠X)。ロードバランサ103は通信デバイス101からの接続(コネクション)を振り分けるだけである。振分部Hiは、通信デバイス101からロードバランサ103を介して受信したメッセージを一度、記憶部DSi上に蓄積してから各データ処理部DPXへ振り分ける。
具体的には、たとえば、振分部Hiは、メッセージのヘッダに含まれているポート番号により特定されるポートでメッセージを受信し、データフローの識別子から、当該メッセージを流すデータフローを特定する。そして、振分部Hiは、特定したデータフローにしたがって記憶部DSiを介してメッセージを転送する。振分部Hiが受信したメッセージを保証することにより、データ処理部DPXへ流入するメッセージ量の平準化や、通信デバイス101への即時応答(再送確率低減や輻輳回避)を実現する。
記憶部DSiは、振分部Hiからのアクセスによりメッセージを書き込んだり、振分部Hiに読み出したりする。すなわち、記憶部DSiは、振分部Hiからのデータの格納、更新、削除等の要求に応じて処理を実行する。記憶部DSiとしては、たとえば、分散型KVS(Key−Value Store)であり、同一のメッセージを複製し、複数のサーバSVi上でメッセージを多重で保持し、永続性を実現する。なお、分散型KVSに限定されることなく、データグリッド、外部ストレージ、NAS(Network Attached Storage)等の他の記憶装置でも実現可能である。したがって、どの記憶部DSiも同じデータを保存する。なお、記憶部DSiは、振分部Hiからアクセス可能であれば、サーバSViの外部に存在してもよい。
データ処理部DPiXは、サーバSVi内のデータ処理Xを実行するソフトウェアモジュールである。Xが同一であるデータ処理部DPiXは、同種のデータ処理Xを実行する。たとえば、サーバSVi内のデータ処理部DPiA,DPiB,…は、異なるデータ処理A,Bを実行し、サーバSV1〜SVnのデータ処理部DP1A,…,DPiA,…,DPnAは、同種のデータ処理Aを実行する。
また、複数のメッセージから地域別の統計情報を出力するデータ処理と、複数のメッセージから時間別の統計情報を出力するデータ処理とは、異なるデータ処理である。また、スマートメータから集めたメッセージのプロトコル変換処理と、HEMSから集めたメッセージのプロトコル変換処理とは、異なるデータ処理である。なお、同一サーバSVi内で同種のデータ処理部DPiXは複数存在してもよい。この場合、データ処理部DPi−1X,DPi−2X,…というように、枝番で表記する。
サーバSViには他にもプログラムが存在するが、そのようなプログラムを除外する意図はない。サーバSViは、物理サーバでも仮想サーバでもよい。IoTサービスでは、たとえば、オンプレミスでサーバリソースが限られている場合は、振分部Hiと記憶部DSiとデータ処理部DPiXとを同一サーバSVi内にサーバプログラムとして実現することが多く、一方データセンタ内のようなクラウド環境では、振分部Hiと記憶部DSiとデータ処理部DPiXとを仮想マシンまたは物理サーバとして実現することが多い。なお、本実施例のシステム構成は、図1に限定されること無く、他の構成のメッセージングシステムにも適用可能である。
データ処理部DPXは、データ処理Xを実行し、データ処理Xをしたメッセージをデータフローにしたがって振分部Hiまたは宛先サーバ106に送信する。データ処理部DPXは、メッセージの入出力を備えるソフトウェアであれば適用可能である。データ処理部DPXとしては、たとえば、不図示のRDB(リレーショナルデータベース)、メールボックス、オンラインストレージシステム、ユーザ情報の管理サーバ等の制御プログラムが挙げられる。
なお、データ処理部DPXは、同種のプログラムであれば、バージョンが異なっていてもよいし、互換性を持つ異なるプログラムを複数いれてもよい(例えば、データベースのように共通のアクセスプロトコル(SQL)をもつデータ処理部DPXであって、プログラム自体は別の場合でもよい。)。これらは、データ処理部DPXのバージョンアップ時の不具合抽出や、データ処理部DPiXを変更する際の過渡期の不具合抽出に利用することができる。
これにより、通信デバイス101からのメッセージ(たとえば、SQL文)に含まれるデータは、振分部Hiを介して複数の記憶部DSiに書き込まれるため、データ処理部DPiXを非改造のままデータをn重化することができる。
宛先サーバ106は、サーバ群SVsと接続し、データ処理部DPXから送信されたメッセージを受信する。例えば、電力の例では、宛先サーバ106は、スマートメータやHEMSからのメッセージを活用する電力会社のシステム、一般の電力供給者のシステム、電力の需給業者のシステムである。
<サーバ群SVsの論理的な接続関係>
図2は、サーバ群SVsの論理的な接続関係を示す説明図である。図3に示すように、振分部Hiは、記憶部DSiにアクセス可能である。振分部Hiおよびデータ処理部DPiXは、相互にアクセス可能である。
<サーバSViのハードウェア構成例>
図3は、サーバSViのハードウェア構成例を示すブロック図である。サーバSViは、プロセッサ301と、記憶デバイス302と、入力デバイス303と、出力デバイス304と、通信インターフェース(通信IF305)と、を有する。プロセッサ301、記憶デバイス302、入力デバイス303、出力デバイス304、および通信IF305は、バス306により接続される。プロセッサ301は、サーバSViを制御する。記憶デバイス302は、プロセッサ301の作業エリアとなる。また、記憶デバイス302は、各種プログラムやデータを記憶する非一時的なまたは一時的な記録媒体である。記憶デバイス302としては、たとえば、ROM(Read Only Memory)、RAM(Random Access Memory)、HDD(Hard Disk Drive)、フラッシュメモリがある。また、記憶デバイスの一部には、記憶部DSiが含まれる。
入力デバイス303は、データを入力する。入力デバイス303としては、たとえば、キーボード、マウス、タッチパネル、テンキー、スキャナがある。出力デバイス304は、データを出力する。出力デバイス304としては、たとえば、ディスプレイ、プリンタがある。通信IF305は、ネットワーク102と接続し、データを送受信する。
<記憶デバイス302>
図4は、サーバSViの記憶デバイス302の記憶内容例を示す説明図である。記憶デバイス302は、プログラム格納領域401とデータ領域402とを含む。プログラム格納領域401には、OS(Operating System)411と、振分プログラム412と、記憶プログラム413と、データ処理プログラム414と、が格納される。
振分プログラム412は、プロセッサ301により実行されることで、振分部Hiとして機能する。記憶プログラム413は、プロセッサ301により実行されることで、記憶部DSiを制御する。データ処理プログラム414は、プロセッサ301により実行されることで、データ処理部DPiXとして機能する。
なお、本明細書の説明で、振分部Hi、記憶部DSi、およびデータ処理部DPiXの各処理については、便宜的に振分部Hi、記憶部DSi、およびデータ処理部DPiXを主語にして説明するが、実際には、上述したように、振分プログラム412、記憶プログラム413、およびデータ処理プログラム414をプロセッサ301に実行させることで、振分部Hi、記憶部DSi、およびデータ処理部DPiXの各処理が実行されることになる。また、各プログラムやその機能を便宜的に主語にして説明することもある。
データ領域402には、データフローテーブル431と、データ処理テーブル432と、メッセージ状態テーブル433と、過去リソース情報434と、キューQiXと、が格納される。また、データ領域402は、データ処理記憶領域450を有する。
データフローテーブル431は、データフローを規定するテーブルである。データフローとは、メッセージが経由するデータ処理部DPiXを規定するテーブルである。データフローテーブル431の詳細については、図5で後述する。
データ処理テーブル432は、データ処理部DPiXを管理するテーブルである。データ処理テーブル432の詳細については、図6で後述する。
メッセージ状態テーブル433は、データフロー上を流れるメッセージの状態を管理するテーブルである。具体的には、たとえば、メッセージ状態テーブル433には、キューに滞留中のメッセージがこれまでどのキューおよびデータ処理部DPiXを経由してきたかを示すログを格納する。
過去リソース情報434は、データ処理部DPiXごとの過去のリソース値を格納する。リソース値は、たとえば、CPU使用率やCPU処理時間であり、後述するデータフローテーブル431のリソース値が更新される際に、更新前のリソース値が格納される。
キューQiXは、いわゆるFIFOメモリである。キューQiXは、キュー管理情報440を有し、振分部Hiやデータ処理部DPiXからのメッセージを保持し、格納順にメッセ―ジを出力する。キューQiXは、データ処理テーブル432により、データ処理部DPiXと関連付けられる。各サーバSViでは、キューQiXは、対応するデータ処理部DPiXにメッセージを出力する。
キュー管理情報440は、キューQiXのキュー長と、キューQiXに格納されたメッセージのメッセージ数と、キューQiXへ流入する流入メッセージ量と、キューQiXから流出する流出メッセージ量と、つぎに送られるキューQYを指定する情報と、を管理する。なお、メッセージ数のかわりに、キューQiXに滞留中のメッセージの量(滞留メッセージ量)でもよい。1メッセージのサイズが固定であれば、メッセージ数でよい。ただし、当該サイズは、キュー管理情報440で管理されるものとする。
キューQiXに流入するメッセージは、メッセージ情報441とメッセージメタ情報442という組み合わせでキューQiX内に滞留する。メッセージ情報441は、メッセージのヘッダおよびボディである。メッセージメタ情報442は、キューQiXに滞留中のメッセージがこれまでどのキューQiXおよびデータ処理部DPiXを経由してきたかを示すログである。すなわち、上述したメッセージ状態テーブル433に格納される情報は、厳密にはログ自体ではなく、メッセージメタ情報442を呼び出すためのポインタである。当該ポインタは、メッセージがキューQiXに流入したタイミングで記憶プログラム413により生成される。
なお、本例では、各サーバSViの記憶部DSiは、データ処理XごとにキューQiXを保持する例としたが、データ処理Xごとではなく、1つのキューQiを保持することとしてもよい。
データ処理記憶領域450は、データ処理プログラム414がメッセージを処理するワークエリアである。
振分プログラム412は、振分機能421、キュー管理機能422、データフロー計算機能423、データフロー登録機能424、メッセージ状態管理機能425といったプログラムモジュールを含む。
振分機能421は、通信デバイス101から受信したメッセージに含まれるデータフローの識別子(フローID)から、当該メッセージを流すデータフローを特定する。振分機能421は、通信デバイス101から受信したメッセージを、特定したデータフロー上の送信先となる各データ処理部DPXにアクセスする記憶部DSi内のキューQiXに格納する。また、振分機能421は、各データ処理部DPXによってデータ処理されたデータ処理後のメッセージを当該各データ処理部DPXから受信する。
そして、振分機能421は、受信した各メッセージを、データフロー上の送信先となるデータ処理部DPYにアクセスするキューQYに格納する。YはXとは異なるアルファベット、すなわち、異種のデータ処理であることを示す。
キュー管理機能422は、キュー管理情報440で管理されている情報に基づいて、キューQXに対応するデータ処理部DPXがボトルネックであるか否か、または、ボトルネックになり得るか否かを判断する。具体的には、たとえば、キュー管理機能422は、メッセージの滞留量がキューQXのキュー長の80%に達した場合、ボトルネックになり得ると判断し、90%に達した場合、ボトルネックであると判断する。また、キュー管理機能422は、流入メッセージ量(または流入メッセージ量から流出メッセージ量を引いたメッセージ量)がキューQXの空き容量よりも大きい場合に、ボトルネックであると判断してもよい。
データフロー計算機能423は、データフローテーブル431と、データ処理テーブル432と、キュー管理情報440と、を用いて、振分機能421が行う振分処理を制御するための動的な設定値である流量制御値を決定する。流量制御値を計算する処理をフロー計算と呼び、詳細は図9で説明する。
データフロー計算機能423は、サーバリソースの有効利用および処理性能をスケールアウトすることを実現するために、流量制御値を動的に計算して、その結果をデータ処理テーブル432に格納する。
データフロー登録機能424は、運用端末104からの操作により、データフローテーブル431に、データ処理部DPXを経由するメッセージの流れであるデータフローを登録する。
メッセージ状態管理機能425は、各メッセージがどのデータ処理部DPXで処理中であるかを示す情報をメッセージメタ情報442に追加する。
記憶プログラム413は、記憶部DSiを制御するプログラムである。具体的には、たとえば、記憶プログラム413は、メッセージをキューQiXに格納したり、キューQiXからメッセージを出力したり、キュー管理情報440を格納したり、メッセージメタ情報442を生成したり、メッセージ状態テーブル433にポインタを生成したりする。
データ処理プログラム414はメッセージを処理するプログラムである。具体的には、たとえば、データ処理プログラム414は、メッセージのプロトコル変換処理、複数のメッセージから地域別の統計情報を出力する処理、複数のメッセージから時間別の統計情報を出力する処理、メッセージ同士を突き合わせる処理、圧縮処理、伸長処理、暗号化処理、復号処理など各種データ処理を実行する。
<データフローテーブル431>
図5は、データフローテーブル431の記憶内容例を示す説明図である。データフローテーブル431は、フィールドとして、フローIDフィールド501と、フロー定義フィールド502と、フロー要件フィールド503と、優先度フィールド504と、流量目標値フィールド505と、流量現在値フィールド506と、リソース値フィールド507と、を有し、各フィールドの値によりデータフローを規定するエントリを構成する。以降、○○フィールドxxx(○○はフィールド名、xxxは符号)の値も、○○xxxと表記する。たとえば、フローIDフィールド501の値であるフローIDを、フローID501と表記する。
フローIDフィールド501は、値として、データフローの識別子であるフローID501を格納する記憶領域である。フロー定義フィールド502は、値として、データフローの定義情報であるフロー定義502を格納する記憶領域である。たとえば、フロー定義502:「A−C−D」は、データ処理部DPA→データ処理部DPC→データ処理部DPDを経由して、データ処理D後のメッセージを宛先サーバ106に配信するデータフローを意味する。
フロー要件フィールド503は、値として、フロー要件503を格納する記憶領域である。フロー要件503とは、データフローに求められる性能を規定する要件である。フロー要件503には、たとえば、サーバSViの振分部Hiが通信デバイス101からメッセージを受信し、宛先サーバ106へメッセージが配信されるまでの時間や、通信デバイス101への応答時間がある。
優先度フィールド504は、値として、優先度504を格納する記憶領域である。優先度504は、複数のデータフロー中での優先順位を示す値である。優先度504は、後述するフロー計算でリソースを融通する場合に利用される。フローIDフィールド501〜優先度フィールド504の値は、運用端末104からあらかじめ設定される。
流量目標値フィールド505は、値として、流量目標値505を格納する記憶領域である。流量目標値505は、後述するデータ処理テーブル432を元に計算される値であり、フロー定義502で規定されるデータフローでのメッセージ流量の目標値である。流量目標値505は、データフロー計算機能423により動的に変更される。たとえば、流量目標値505は、データフロー上のデータ処理部DPiXの流量制御値(後述する流量制御情報フィールド605の値)の統計値(たとえば、最大値、最小値、中央値、平均値)が採用される。ただし、振分部Hiが制御する流量制御値はデータ処理部DPiX単位である。流量目標値505は、運用者への表示に利用される。
流量現在値フィールド506は、値として、流量現在値506を格納する記憶領域である。流量現在値506は、キュー管理情報440から取得した現在のメッセージ流量であり、定期的に更新される。流量現在値506は、データフローの現在流量であるため、データフロー上の各データ処理部DPiXの現在流量の統計値(たとえば、最大値、最小値、中央値、平均値)が採用される。
リソース値フィールド507は、値として、リソース値507を格納する記憶領域である。リソース値507は、このデータフローが使用しているリソースの値である。リソースは、たとえば、CPU使用率、ディスクやネットワークI/O処理数を含む。リソース値507は、たとえば、振分部Hiが、データフローを構成する各データ処理部DPXの現在のリソースの値を収集して合計した値をリソース値507としてリソース値フィールド507に格納する。振分部Hiは、更新前のリソース値507を、過去リソース情報に格納する。
<データ処理テーブル432>
図6は、データ処理テーブル432の記憶内容例を示す説明図である。データ処理テーブル432は、キューQXごとにサーバSVi内のデータ処理部DPiXを管理するテーブルである。データ処理テーブル432は、キューIDフィールド601と、処理名フィールド602と、リソース要件フィールド603と、処理優先度フィールド604と、流量制御情報フィールド605と、流量現在値フィールド606と、リソース値フィールド607と、プロトコル情報フィールド608と、を有し、各フィールドの値によりサーバSViが管理するデータ処理部DPiXの状態をキューQXごとに規定するエントリを構成する。
キューIDフィールド601は、キューID601を格納する記憶領域である。キューID601は、キューQXを一意に特定する識別情報である。キューQXは、他サーバSVj(j≠i)内のキューQjXであってもよい。処理名フィールド602は、処理名602を格納する記憶領域である。処理名602は、キューQXからのデータを処理するデータ処理部DPiXのデータ処理X、または、キューQXからのデータを受信する宛先サーバ106への配信処理の種別を一意に特定する識別情報である。キューID601と処理名602との組み合わせは、キューQXとデータ処理部DPiXとを関連付ける。
リソース要件フィールド603は、リソース要件603を格納する記憶領域である。リソース要件603とは、処理名602により特定されるデータ処理部DPiXに要求される性能を規定する要件である。たとえば、リソース要件603が「自サーバ」である場合は、同種のデータ処理部DPiXを自サーバSViに分散することを意味し、「他サーバ」である場合は、同種のデータ処理部DPiXを他サーバSVjに分散することを意味する。
また、リソース要件603に「(自動拡張可)」がある場合は、データ処理部DPiXの分散に際し、振分部Hiまたは運用者は、運用機能との連携により拡張可能、すなわち、物理的または仮想的に増設可能であることを意味する。リソース要件603に「(自動拡張不可)」がある場合は、データ処理部DPiXの分散に際し、上記自動拡張ができないことを意味する。この場合、自サーバSViおよび他サーバSVjにおける既存のデータ処理部DPiXにより不足分のリソースを補うことになる。
処理優先度フィールド604は、処理名602により特定されるデータ処理部DPiXの処理優先度604を格納する記憶領域である。処理優先度604は、データ処理テーブル432のエントリ間のデータ処理部DPiXの優先度を示す。本例では、処理優先度604の数値が高い方が優先順位が高い。
流量制御情報フィールド605は、流量制御情報605を格納する記憶領域である。流量制御情報605は、同一処理名602、すなわち同種のデータ処理部DPiXの分散先数と流量制御値との組み合わせである。分散先数とは、同種のデータ処理部DPiXで並行処理させる、すなわち、振分部Hiから分散させるデータ処理部DPiXの台数である。流量制御値は、振分部Hiが制御する値である。流量制御値は、キューQiXから分散先数分のデータ処理部DPiXへのメッセージ流量の目標値である。たとえば、流量現在値506,606が流量制御値未満であれば、振分部Hiは、データ処理部DPiXにメッセージを送信することができる。流量制御情報605は、データフロー計算機能423により動的に変更される。
分散先数は、言い換えれば、振分部Hiが、同時に何台の同種のデータ処理部DPXで処理させるかということを意味しており、これにより、振分部Hiはデータ処理部DPXの同時処理数の制御を可能にする。データ処理部DPXが分散先数よりも多く存在する場合、すなわち、利用されていないデータ処理部DPXが存在する場合、分散先数の増加により、どのサーバSViでもデータ処理部DPXの処理が実行可能となる。逆に、データ処理部DPXが分散先数以下である場合は、サーバ群SVs内で利用されていないデータ処理部DPXの台数を参照してデータ処理部DPXの台数が分散先数を超えないように増加される。また、データ処理部DPXが不足する場合は、新たにデータ処理部DPXをデプロイ、またはデータ処理システムの運用機能により自動増設することが必要である。
流量現在値フィールド606は、流量現在値606を格納する記憶領域である。流量現在値606とは、データ処理部DPiXへ流入する現在のメッセージ流量である。流量現在値606は、キュー管理情報440から取得される。
リソース値フィールド607は、リソース値607を格納する記憶領域である。リソース値607は、処理名602により特定されるデータ処理部DPiXが使用しているリソースの値である。リソースは、たとえば、CPU使用率、ディスクやネットワークI/O処理数を含む。リソース値607は、振分部Hiが直接収集したデータ処理部DPiXのリソースの現在値でもよいし、データ処理部DPiXの特性や処理内容からデータ処理部DPiXのリソースの現在値を算出してもよい。
プロトコル情報フィールド608は、プロトコル情報608を格納する記憶領域である。プロトコル情報608は、振分部Hiが処理名602により特定されるデータ処理部DPiXへメッセージを送信するときのプロトコルと、当該メッセージの送信方法に関する設定情報とを含む。データ処理部DPiXの種類ごとに入力プロトコルが異なるため、振分部Hiがプロトコル情報608に対応したプロトコルに変換してメッセージの振分処理を行う。また、メッセージの送信方法にも種類がある。たとえば、振分部Hiからデータ処理部DPiXへメッセージが到着したことを示す通知を送り、データ処理部DPiXが当該通知をトリガーにメッセージを取得しにくる方式がある。また、振分部Hiからデータ処理部DPiXへメッセージを直接送信する方式がある。また、データ処理部DPiXが定期的に振分部Hiへアクセスするポーリング方式がある。設定情報は、このような方式を示す識別情報である。
<データ処理例>
図7は、分散システムにおけるデータ処理例を示す説明図である。図7では、「A→B」、「A→C→D」、「A→C→F」、「E→F」の4つのデータフローを示す。各データ処理部DPA〜DPFは、サーバ群SVsにおいて1台以上用意される。たとえば、図7の例では、データ処理部DPA、DPBはそれぞれ2台、データ処理部DPC〜DPFはそれぞれ3台である。同種の複数のデータ処理部DPXは、同一サーバSViに存在してもよいし、異なるサーバSVjに存在してもよい。ただし、データ処理テーブル432のリソース要件603に従う。また、各データ処理部DPXは複数存在するが、あるデータ処理部DPXに着目して説明する。また、図7では、データフロー「A→B」に着目して説明する。
振分部Hiは、各データ処理部DPXとキューQXとを対応させて、その対応関係をデータフローテーブル431およびデータ処理テーブル432で管理する。最初に、振分部Hiは、通信デバイス101−1から受信したメッセージをキューQAに格納する。次に、データ処理部DPAが、振分部Hiを介してキューQAからメッセージを取出し、データ処理Aを実行する。
データ処理部DPAは、データフロー「A→B」にしたがってデータ処理部DPBに対応するキューQBを指定するとともに、「A→C→D」および「A→C→F」にしたがってデータ処理部DPCに対応するキューQCを指定する。振分部Hiは、指定されたキューQB,QCにデータ処理A後のメッセージを送信する。キューQB、QCは、送信されてくるメッセージを格納する。
データ処理部DPBは、振分部Hiを介してキューQBからメッセージを取出し、データ処理Bを実行する。そして、データ処理部DPBは、データ処理B後のメッセージを宛先サーバ106−1へ送信する。データフロー「A→C→D」、「A→C→F」、「E→F」についても同様に処理される。なお、データ処理部DPFは、データ処理部DPCでデータ処理Cされたメッセージと、データ処理部DPEでデータ処理Eされたメッセージとを用いて、データ処理Fを実行する。
<キューQXとデータ処理部DPXとの関係>
ここで、キューQXとデータ処理部DPXとの関係について説明する。たとえば、通信デバイス101からの同一データフロー「A→B」を指定する一連のメッセージを受信したサーバSViをサーバSV1(i=1)とする。データフロー「A→B」は、データ処理部DPAでデータ処理Aを実行して、データ処理A後のメッセージをデータ処理部DPBに与えてデータ処理Bを実行し、データ処理B後のメッセージを宛先サーバ106に送信するデータフローを意味する。
例として、データ処理部DPAを、4台のデータ処理部DP1−1A,DP1−2A,DP2A,DP3Aとする。データ処理部DPBを、2台のデータ処理部DP1B、DP2Bとする。
第1の例は、あるサーバSViのキューQiXとデータ処理部DPXとが対応する例である。たとえば、サーバSV1は、受信した一連のメッセージM1〜M4を振分部H1によりキューQ1Aに格納する。振分部H1は、キューQ1Aから一連のメッセージM1〜M4を入力順に取り出す。振分部H1は、たとえば、キューQ1Aから取り出したメッセージM1をデータ処理部DP1−1Aに、つぎのメッセージM2をデータ処理部DP1−2Aに、そのつぎのメッセージM3をDP2Aに、そのつぎのメッセージM4をDP3Aに振り分ける。
データフロー「A→B」上のつぎのデータ処理Xはデータ処理Bであるため、4台のデータ処理部DP1−1A、DP1−2A,DP2A,DP3Aは、キューQBを指定して、データ処理A後のメッセージM1〜M4(以降、メッセージM1A〜M4Aとする)を振分部H1に返す。振分部H1は、キューQBとして自サーバSV1のキューQ1Bを指定し、当該キューQ1BにメッセージM1A〜M4Aを格納する。
振分部H1は、キューQ1BからメッセージM1A〜M4Aを順次取出し、メッセージM1Aをデータ処理部DP1Bに振り分け、メッセージM2Aをデータ処理部DP2Bに振り分け、メッセージM3Aをデータ処理部DP1Bに振り分け、メッセージM4Aをデータ処理部DP2Bに振り分ける。
データ処理部DP1Bは、データ処理BをしたメッセージM1A,M3A(以降、メッセージM1B,M3Bとする)を宛先サーバ106に送信し、データ処理部DP2Bは、データ処理BをしたメッセージM2A,M4A(以降、メッセージM2B,M4Bとする)を宛先サーバ106に送信する。
第2の例は、所属するサーバSViのキューQiXおよびデータ処理部DPiXどうしが対応する例である。たとえば、サーバSV1は振分部H1により、受信した一連のメッセージM1〜M4のうち、メッセージM1、M2をキューQ1Aに、メッセージM3をサーバSV2のキューQ2Aに、メッセージM4をキューQ3Aに格納する。振分部H1は、キューQ1Aから一連のメッセージM1、M2を入力順に取り出す。振分部H1は、キューQ2AからメッセージM3を取り出す。振分部H1は、キューQ3AからメッセージM4を取り出す。
振分部H1は、たとえば、キューQ1Aから取り出したメッセージM1をデータ処理部DP1−1Aに、つぎのメッセージM2をデータ処理部DP1−2Aに振り分ける。
振分部H1は、キューQ2Aから取り出したメッセージM3をデータ処理部DP2Aに振り分ける。振分部H1は、キューQ3Aから取り出したメッセージM4をデータ処理部DP3Aに振り分ける。
データフロー「A→B」上のつぎのデータ処理Xはデータ処理Bであるため、データ処理部DP1−1A、DP1−2AはキューQ1Bを指定して、データ処理A後のメッセージM1A、M2Aを振分元の振分部H1に返す。データ処理部DP2AはキューQ2Bを指定して、データ処理A後のメッセージM3Aを振分元の振分部H1に返す。データ処理部DP3AはキューQ3Bを指定して、データ処理A後のメッセージM4Aを振分元の振分部H1に返す。
振分部H1は、キューQBとしてサーバSV1のキューQ1Bを指定し、当該キューQ1BにメッセージM1A,M2Aを格納する。振分部H1は、キューQBとしてサーバSV2のキューQ2Bを指定し、当該キューQ2BにメッセージM3Aを格納する。振分部H1は、キューQBとしてサーバSV3のキューQ3Bを指定し、当該キューQ3BにメッセージM4Aを格納する。
振分部H1は、キューQ1BからメッセージM1A,M2Aを順次取出し、メッセージM1Aをデータ処理部DP1Bに振り分け、メッセージM2Aをデータ処理部DP2Bに振り分ける。振分部H1は、キューQ2BからメッセージM3Aを取出し、メッセージM3Aをデータ処理部DP1Bに振り分ける。振分部H1は、キューQ3BからメッセージM4Aを取出し、メッセージM4Aをデータ処理部DP2Bに振り分ける。
データ処理部DP1Bは、データ処理BをしたメッセージM1B,M3Bを宛先サーバ106に送信し、データ処理部DP2Bは、データ処理BをしたメッセージM2B,M4Bを宛先サーバ106に送信する。
なお、第1の例および第2の例は、あくまでもキューQXとデータ処理部DPXとの関係の例示であり、整合性が取れる範囲であれば、他の例でもよい。たとえば、第1の例および第2の例では、通信デバイス101からメッセージを受信したサーバSV1の振分部H1が振分処理を実行したが、メッセージを保持するキューQiXと同一サーバSViの振分部Hiが当該メッセージを振り分けてもよい。
<データ処理シーケンス>
図8は、データ処理シーケンス例を示すシーケンス図である。図8では、実際は振分部Hiによる記憶部DSiのキューQiへのメッセージ格納や各種テーブル操作でアクセスを行うが、シーケンスの単純化のため、記憶部DSiへの操作を振分部Hiの処理として記述し、記憶部DSiをシーケンスからは割愛する。図8では、図7に示したデータフロー「A→B」を用いて説明する。
通信デバイス101−1は、宛先サーバ106−1を宛先としてメッセージを送信する(ステップS801)。当該メッセージを受信したロードバランサ103は、振分部Hiに当該メッセージを振り分ける。
振分部Hiは、ロードバランサ103からのメッセージを受信し、振分機能421により、メッセージに含まれているフローID501から、当該メッセージを流すデータフローを特定する。振分部Hiは、振分機能421を用いて、メッセージを、フローID501で特定したデータフロー「A→B」上の送信先となる各データ処理部DPAにアクセスするキューQAに格納する(ステップS802)。また、振分部Hiは、キュー管理情報440に含まれるメッセージ数やキューQAへの流入メッセージ数を更新する。そして、振分部Hiは、通信デバイス101−1へ正常応答を送信する(ステップS803)。
振分部Hiは、特定したデータフローに対応するデータフローテーブル431の流量現在値506と、データ処理テーブル232の流量制御情報605の流量制御値および流量現在値606とを参照し、流量現在値506,606がそれぞれ流量制御値未満であるか否かを判定する。流量現在値506,606がともに流量制御値未満であれば、振分部Hiはデータ処理部DPAにメッセージを送信可能であると判定し、そうでなければ、送信不可と判定する(ステップS804)。以下、このような処理を流量制御判定と称す。
なお、流量制御判定(ステップS804)において、流量現在値506,606がそれぞれ流量制御値未満であるか否かを判定することとしたが、流量現在値506,606のいずれか一方が流量制御値未満であるか否かを判定するだけでもよい。
流量制御判定(ステップS804)において送信可能と判定された場合、振分部Hiは、データ処理テーブル232のプロトコル情報508に基づいて、メッセージがキューQAに到着したことを示す到着通知をデータ処理部DPAに送信する(ステップS805)。
なお、流量制御判定(ステップS804)において送信不可と判定された場合、振分部Hiは流量制御判定で送信可能になるまで、到着通知の送信(ステップS805)を遅らせる。たとえば、1秒単位でメッセージ量の上限が規定されている場合は、振分部Hiは、1秒後に流量制御判定(ステップS804)を再実行する。
データ処理部DPAは、到着通知を受信する(ステップS805)と、振分部Hiにメッセージの取得要求を送信する(ステップS806)。振分部Hiは、取得要求に応じてキューQAから出力されるメッセージを各データ処理部DPAに送信し、各データ処理部DPAは当該メッセージを受信する(ステップS807)。
なお、ステップS807において、キューQAは、データ処理部DPAに取得された後にも同一のメッセージを、一定時間ロックがかけられた状態で保持する。キューQAに保持されたメッセージは、ロックがかけられている間は、データフロー上のつぎのデータ処理部DPBに送られることはない。これは、データ処理部DPAがデータ処理A中に障害等で停止した場合にメッセージをロストしないための仕組みである。たとえば、データ処理部DPAが停止した場合、振分部Hiは、キューQAのメッセージのロックを一定時間後に解除し、データフロー上のつぎのデータ処理部DPBにメッセージを振り分ける。
つぎに、データ処理部DPAは、メッセージのデータ処理Aを実行し(ステップS808)、データフロー「A→B」にしたがってキューQBを指定して、データ処理A後のメッセージAを振分部Hiに送信する(ステップS809)。同様に、データ処理部DPAは、データフロー「A→C→D」および「A→C→F」にしたがってキューQCを指定して、データ処理A後のメッセージAを振分部Hiに送信する(ステップS810)。
振分部Hiは、ステップS809、S810で受信したメッセージAをそれぞれキューQB,QCに格納し(ステップS811、S812)、正常応答を送信する(ステップS813、S814)。
つぎに、データ処理部DPAは、ステップS807でキューQAにロックされた状態の残存メッセージ(データ処理A前のメッセージ)を削除する要求を振分部Hiに送信する(ステップS815)。振分部Hiは、削除要求を受けると当該メッセージを削除する(ステップS816)。ステップS804〜S816までが、振分部Hiとデータ処理部DPAとの間での1メッセージ分の通信である。
つぎに、振分部Hiは、データ処理部DPB,DPCについても、ステップS804〜S806と同様に、各データ処理部DPB,DPCの流量制御判定を行い、到着通知を送信し、各データ処理部DPB,DPCから取得要求を受信する(ステップS820,S821)。
データ処理部DPBは、ステップS820後にメッセージAを取得し(ステップS822)、データ処理Bを実行し(ステップS823)、データ処理BされたメッセージBを宛先サーバ106−1へ送信する(ステップS824)。宛先サーバ106−1は、データ処理部DPBに正常応答を送信する(ステップS825)。
データ処理部DPBは、宛先サーバ106−1から正常応答を受信(ステップS825)後、キューQBでロック状態の残存メッセージAの削除要求を振分部Hiに送信する(ステップS826)。振分部HiはメッセージAをキューQBから削除する(ステップS827)。
データ処理部DPCは、ステップS821後にメッセージAを取得し(ステップS828)、データ処理Cを実行し(ステップS829)、データフロー「A→C→D」にしたがってキューQDを指定し、データ処理C後のメッセージCを振分部Hiに送信する(ステップS830)。以降の処理は、図8では割愛するが、このあと、振分部Hiが、ステップS820,S821と同様にデータ処理部DPDとメッセージ交換を行い、宛先サーバ106−2へメッセージを送信する。
<フロー計算処理例>
図9は、振分部Hiの流量制御を行うためのフロー計算処理手順例を示すフローチャートである。振分部Hiは、データフロー計算機能423により、所定のタイミング、たとえば、一定時間おきにフロー計算処理を実行する。図9では、ボトルネックが発生した場合を例に説明するが、ボトルネックとなり得る状態の場合にも適用される。
振分部Hiは、キュー管理情報440を元にキューQiXのキュー長と、当該キューQiXに滞留中のメッセージ数と、により、ボトルネックであるキューQiXを特定する。振分部Hiは、特定したキューQiXに関連付けされたデータ処理部DPiXをボトルネックとしてデータ処理テーブル432から検出する(ステップS901)。
つぎに、振分部Hiは、データフローテーブル431のフロー定義502から、ボトルネックであるデータ処理部DPiXに関連するデータフロー(関連データフロー)を特定し(ステップS902)、かつ、過去リソース情報434を取得する(ステップS903)。たとえば、図7のキューQCのメッセージ数がキュー長の閾値を超過したことによりデータ処理部DPCがボトルネックになったとする。この場合、振分部Hiは、データ処理部DPCを含むデータフロー「A→C→D」、「A→C→F」を関連データフローとして特定する。
そして、振分部Hiは、ボトルネックであるデータ処理部DPiXと、特定したデータフロー上のデータ処理部DPYとを特定し、過去リソース情報434を用いて、各データ処理部DPiX,DPYへ割り当てる分散先数を仮計算する(ステップS904)。具体的には、たとえば、データ処理部DPCがボトルネックである場合、特定したデータフローが、「A→C→D」、「A→C→F」であるため、振分部Hiは、データ処理部DPA、DPDDPFを特定する。
そして、振分部Hiは、データ処理部DPCと、関連するデータ処理部DPA、DPDDPFへのリソースの配分を決定する。
ボトルネックであるデータ処理部DPCについては、振分部Hiは、過去リソース情報434、たとえば、特定のデータフローの過去のCPU使用率を用いて、ボトルネックが解消するために分散先数をどのくらいまで増やせるか仮計算する。
たとえば、振分部Hiは、ボトルネックであるデータ処理部DPiXの台数を1つずつ増加させて、増加後のデータ処理部DPiXのCPU使用率を仮計算し、当該CPU使用率を用いた特定のデータフローのCPU使用率を仮計算する。振分部Hiは、特定のデータフローのCPU使用率が、特定のデータフローの過去のCPU使用率、すなわちボトルネックから解消されるCPU使用率以下となったときのボトルネックであるデータ処理部DPiXの台数を分散先数に仮決定する。
なお、ここでは、過去リソース情報434を用いたが、過去リソース情報434を用いずに、振分部Hiは、所定のCPU使用率をボトルネックが解消するしきい値とし、特定のデータフローのCPU使用率が所定のCPU使用率以下となるデータ処理部DPiXの台数を分散先数に仮決定してもよい。この場合、ステップS903は不要である。
また、関連するデータ処理部DPA、DPB、DPD〜DPFについては、たとえば、振分部Hiは、以下の(1)〜(4)の基準でリソースを仮計算する。
(1)振分部Hiは、ボトルネック(本例では、データ処理部DPC)を含む関連データフロー上において、ボトルネックの上流側のデータ処理部DPY(本例では、データ処理部DPA)については、ボトルネックが解消された場合でも、上流側のデータ処理部DPYからデータ処理部DPCへのメッセージ流量が多いと、データ処理部DPCが再度ボトルネックにあるおそれがある。したがって、振分部Hiは、上流側のキューQYの滞留中のメッセージ数に応じて、上流側のデータ処理部DPYの分散先数を増加させる。たとえば、ボトルネックを規定する第1のしきい値には達していないが、当該第1のしきい値よりも低い第2のしきい値を超過している場合、振分部Hiは、上流側のデータ処理部DPYの分散先数を増加させる。第2のしきい値を超過していない場合、現状維持とする。なお、ボトルネックの上流側のデータ処理部DPYのうち、ボトルネックに近いほど増加数を多くしてもよい。
(2)ボトルネックを含む関連データフロー上において、ボトルネックの下流側のデータ処理部DPY(本例では、データ処理部DPD,DPF)については、ボトルネックが解消された場合、下流側のデータ処理部DPYに流れてくるメッセージ量が増加する。したがって、振分部Hiは、下流側のキューQYの滞留中のメッセージ数に応じて、データ処理部DPYの分散先数を増加させる。たとえば、ボトルネックを規定する第1のしきい値には達していないが、当該第1のしきい値よりも低い第2のしきい値を超過している場合、振分部Hiは、データ処理部DPYの分散先数を増加させる。第2のしきい値を超過していない場合、現状維持とする。なお、ボトルネックの下流側のデータ処理部DPYのうち、ボトルネックに近いほど増加数を多くしてもよい。
(3)また、振分部Hiは、関連データフローでないデータフロー(非関連データフロー)上のデータ処理部DPYの中で、処理優先度604が相対的または絶対的に低いデータ処理部DPZのリソースを減少させてもよい。減少数は、あらかじめ設定される。たとえば、振分部Hiは、流量制御前後でサーバ群SVsの総分散先数が同一となるように、処理優先度604を用いてデータ処理部DPZの分散先数を減少させてもよい。ただし、振分部Hiは、減少後にデータ処理部DPZでボトルネックが発生しない分散先数にする。
(4)関連データフロー上のデータ処理部DPYの中で、非関連データフローとの合流点となるデータ処理部DPZ(本例では非関連データフロー「E→F」にも属するデータ処理部DPF)が存在する場合がある。合流元のデータ処理部DPX(本例ではデータ処理部DPC,DPE)のキューQX(本例ではキューQC,QE)に滞留中のメッセージ数に一定数以上の差がある場合、振分部Hiは、メッセージ数が少ない方のキューQXに対応するデータ処理部DPXの分散先数を増加させる。増加数は、あらかじめ設定される値でもよい。
またこの場合、振分部Hiは、メッセージ数が多い方のキューQXに対応するデータ処理部DPXの分散先数と同数となるように、少ない方のデータ処理部DPXの分散先数を増加してもよい。たとえば、データ処理部DPFの分散元は、ボトルネックであるデータ処理部DPCと、非関連データフロー「E→F」に属するデータ処理部DPEである。たとえば、ボトルネックであるデータ処理部DPCの分散先数が「6」であり、データ処理部DPEの分散先数が「2」であるとする。一定数を「4」とする。分散先数の差が一定数以上であることを満たす。ボトルネックであるデータ処理部DPCの分散先数が「6」から「8」に増加される場合、振分部Hiは、データ処理部DPE5の分散先数を「2」から「8」に増加してもよい。
つぎに、振分部Hiは、ボトルネックの拡張性を判定する(ステップS905)。拡張性判定(ステップS905)とは、ボトルネックであるデータ処理部DPiXの拡張が不要であるか、自動拡張不可であるか、自動拡張可であるか否かを判定する処理である。振分部Hiが、ステップS904の仮計算結果と、各サーバSViで利用されていないデータ処理部DPiYの台数と、データ処理テーブル432のリソース要件603であるリソースの自動拡張の有無と、に基づいて、拡張性を判定する。
たとえば、仮計算結果により、残存するデータ処理部DPYでリソース増加分を賄える場合は、振分部Hiは、拡張不要と判定する(ステップS905:拡張不要)。ただし、ボトルネックであるデータ処理部DPiXについてデータ処理テーブル432のリソース要件603に「自動拡張不可」がある場合、振分部Hiは、自動拡張不可であると判定する(ステップS905:自動判定不可)。また、ボトルネックであるデータ処理部DPiXについてデータ処理テーブル432のリソース要件603が「自動拡張可」である場合、振分部Hiは、自動拡張可能であると判定する(ステップS905:自動判定可)。
拡張不要である場合(ステップS905:拡張不要)、振分部Hiは、仮計算結果にしたがって、ボトルネックのデータ処理部DPiXおよび関連するデータ処理部DPYの流量制御情報605である分散先数と流量制御値とを決定する(ステップS906)。振分部Hiは、たとえば、分散先数に応じて流量制御値を増減する。すなわち、分散先数が増加すれば流量制御値も増加し、分散先数が減少すれば、流量制御値も減少する。たとえば、分散先数が「4」で流量制御値が「100[msg/sec]」である場合、分散先1台について流量制御値は「25[msg/sec]」である。したがって、分散先数が「4」から「5」に増加される場合、流量制御値は「100[msg/sec]」から「125[msg/sec]」となる。同様に、分散先数が「4」から「3」に減少される場合、流量制御値は「100[msg/sec]」から「75[msg/sec]」となる。
自動拡張不可である場合(ステップS905:自動判定不可)、残存リソースを駆使してボトルネックであるデータ処理部DPiXの増加分を賄うしかない。したがって、振分部Hiは、ボトルネックのデータ処理部DPiXを含むデータフローと関連しないデータ処理部DPZを特定し、関連しないデータ処理部DPiXへのリソース割当を削減する。具体的には、振分部Hiは、関連しないデータ処理部DPZのうち、その流量現在値606が相対的に低いデータ処理部DPZの分散先数および流量制御値を減少させる。また、流量現在値606により制御対象となるデータ処理部DPZを絞り込めない場合は、振分部Hiは、関連しないデータ処理部DPZのうち、その優先度504が相対的に低いデータ処理部DPZの分散先数および流量制御値を減少させてもよい。また、優先度504ではなく、処理優先度604でもよい。
自動拡張可能である場合(ステップS905:自動判定可)、振分部Hiまたは運用者は、運用機能との連携によりリソースを拡張し(ステップS908)、ステップS906と同様、振分部Hiは、仮計算結果にしたがって、ボトルネックのデータ処理部DPiXおよび関連するデータ処理部DPYの流量制御情報605の値である分散先数と流量制御値とを決定する(ステップS909)。
ステップS906、S907、S909のあと、振分部Hiは、ステップS906、S907、S909で決定した分散先数および流量制御値を流量制御情報605に反映し、反映後の流量制御情報605を元にデータフローテーブル431の流量目標値505を更新する(ステップS910)。
そして、振分部Hiは、ステップS906、S907、S909で決定した分散先数および流量制御値にしたがって、データ処理部DPXを増減する(ステップS911)。
つぎに、振分部Hiは、流量制御情報605の反映結果をフィードバックするために、当該反映結果に効果があるか否かを判定する(ステップS912)。効果の有無とは、ボトルネックになったデータ処理部DPXの検出の場合は、特定のデータフローにおいてボトルネックが解消するか否かであり、ボトルネックとなり得るデータ処理部DPXの検出の場合は、特定のデータフローにおいてボトルネックとなり得る状態が解消するか否かである。
ボトルネック検出の場合、具体的には、たとえば、振分部Hiは、データフローテーブル431において、ボトルネックのデータ処理部DPiXを含むデータフローの流量目標値505の下限しきい値と、流量現在値506とに基づいて、流量制御情報605の反映結果に効果があるか否かを判定する。流量目標値505の下限しきい値は、ボトルネックの指標となるしきい値である。流量現在値506が下限しきい値以下である場合、流量制御情報605の反映結果に効果がない、すなわち、データフロー上のどこかのキューQXでボトルネックが発生していることを意味する。下限しきい値は固定値でもよく、ステップS910による更新後の流量目標値505に依存する値、たとえば、当該更新後の流量目標値505の1/3でもよい。
効果がない場合(ステップS912:No)、振分部Hiは、ボトルネックのデータ処理部DPiXの分散先数および流量制御値を所定量減少させて下方修正し(ステップS913)、データ処理テーブル432の流量制御情報605を更新する。所定量とは、たとえば、上述した分散先1台についての流量制御値(以降、1段階分の制御量という)であり、上記の例では、分散先数を「1」減少させて、流量制御値を「25[msg/sec]」減少させる。なお、振分部Hiは、2段階以上の制御量を減少させてもよく、また、増減したすべての分散先数および流量制御値を増減前の状態に戻してもよい。
一方、効果がある場合(ステップS912:Yes)、振分部Hiは、分散先数および流量制御値を所定量(たとえば、1段階分の制御量)増加させて上方修正し(ステップS914)、データ処理テーブル432の流量制御情報605を更新する。なお、振分部Hiは、2段階以上の制御量を減少させてもよい。
ステップS913またはS914のあと、振分部Hiは、ステップS913またはS914での修正後の分散先数および流量制御値を流量制御情報605に反映し、反映後の流量制御情報605を元にデータフローテーブル431の流量目標値505を更新する(ステップS915)。
そして、振分部Hiは、ステップS913またはS914での修正後の分散先数および流量制御値にしたがって、データ処理部DPXを増減する(ステップS916)。なお、図9では、データ処理部DPXの増減をステップS911とステップS916に分けて説明したが、ステップS916でまとめてデータ処理部DPXを増減してもよい。
図10は、流量制御後のデータフローの一例を示す説明図である。図10では、上述した基準(1)〜(4)の適用によりボトルネックのデータ処理部DPiXおよび他のデータ処理部DPYが増減した例を示す。この流量制御後に、振分部Hiは、図8に示した流量制御判定(ステップS804)を実行する。
このように、本実施例のデータ処理システムは、ボトルネックまたはボトルネックとなり得るとなるデータ処理部を増加することにより、当該データ処理部のメッセージ処理量を増加させ、キューでのメッセージの滞留量を間接的に減少させる。これにより、本実施例のデータ処理システムは、複数種類のデータ処理が混在するデータフロー群で発生するボトルネックを事後的にまたは未然に解消し、データフロー群のスループットの向上を図ることができる。
また、ボトルネックに関連するデータ処理部を増加することにより、より効率的にデータフロー群のスループットの向上を図ることができる。また、ボトルネックに関連しないデータ処理部を減少させることにより、その減少分のリソースを増加が必要なデータ処理部に融通することができる。
このように、本実施例によれば、複数のデータ処理から構成される複雑なデータ処理を行うデータ処理システムでの処理性能をスケールアップまたはスケールアウトすることができ、運用者の負荷分散設計やチューニング作業の削減と開発迅速化とを実現することができる。
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加、削除、または置換をしてもよい。
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、SSD(Solid State Drive)等の記憶装置、又は、ICカード、SDカード、DVD等の記録媒体に格納することができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。

Claims (8)

  1. 送信元からのメッセージに対しデータ処理を実行して宛先に送信するデータ処理システムであって、
    前記データ処理が異なる複数種類のデータ処理部の各々を1以上有し、前記メッセージに対し種類が異なる一連のデータ処理を実行して前記一連のデータ処理後のメッセージを前記宛先に送信する複数のデータフローについて、前記送信元からのメッセージに指定されるデータフローにしたがって、当該メッセージおよび前記データ処理部によるデータ処理後のメッセージを後続のデータ処理部に振り分ける振分部を有し、
    前記振分部は、
    前記複数のデータフローを流れるメッセージの滞留量と前記データ処理のリソース情報とに基づいて、ボトルネックまたはボトルネックとなり得る特定の状態である特定のデータ処理部を検出する検出処理と、
    前記検出処理によって検出された特定のデータ処理部のリソース情報に基づいて、前記特定のデータ処理部の台数の増加により前記特定のデータ処理部が前記特定の状態から解消される台数に決定する決定処理と、
    前記特定のデータ処理部を、前記決定処理によって決定された前記特定の状態から解消される台数分設定する設定処理と、
    を実行することを特徴とするデータ処理システム。
  2. 前記決定処理では、前記振分部は、前記複数のデータフローのうち前記特定のデータ処理部を経由する関連データフローにおいて、前記特定のデータ処理部以外の他のデータ処理部の台数を、前記特定の状態の検出前よりも多い台数に決定し、
    前記設定処理では、前記振分部は、前記他のデータ処理部を、前記特定の状態の検出前よりも多い台数分設定することを特徴とする請求項1に記載のデータ処理システム。
  3. 前記決定処理では、前記振分部は、前記複数のデータフローのうち前記特定のデータ処理部を経由する関連データフローではない非関連データフロー上において、前記特定のデータ処理部以外の他のデータ処理部の台数を、前記特定の状態の検出前よりも少ない台数に決定し、
    前記設定処理では、前記振分部は、前記他のデータ処理部を、前記特定の状態の検出前よりも少ない台数分設定することを特徴とする請求項1に記載のデータ処理システム。
  4. 前記決定処理では、前記振分部は、前記他のデータ処理部に設定された優先度に基づいて、前記他のデータ処理部の台数を決定することを特徴とする請求項2または3に記載のデータ処理システム。
  5. 前記決定処理では、前記振分部は、前記複数のデータフローのうち前記特定のデータ処理部を経由する関連データフローではない非関連データフローが前記関連データフローと合流するデータ処理部が存在する場合、前記非関連データフロー上において、前記合流するデータ処理部の上流側のデータ処理部の台数を、前記特定の状態の検出前よりも多い台数に決定し、
    前記設定処理では、前記振分部は、前記上流側のデータ処理部を、前記特定の状態の検出前よりも多い台数分設定することを特徴とする請求項1に記載のデータ処理システム。
  6. 前記決定処理では、前記振分部は、前記複数のデータフローのうち前記特定のデータ処理部を経由する関連データフロー上の前記特定のデータ処理部でのデータ処理後のメッセージをデータ処理する後続のデータ処理部に当該メッセージを送信可能なメッセージ流量の目標値である流量制御値を、前記特定の状態から解消される台数に応じた流量制御値に決定し、
    前記振分部は、
    前記特定のデータ処理部の現在のメッセージ流量である流量現在値が前記決定処理によって決定された流量制御値以上であるか否かを判定する流量制御判定処理と、
    前記流量制御判定処理によって前記流量現在値が前記決定処理によって決定された流量制御値以上であると判定された場合、前記特定のデータ処理部によるデータ処理後のメッセージを前記後続のデータ処理部に振り分ける振分処理と、を実行することを特徴とする請求項1に記載のデータ処理システム。
  7. 前記振分部は、
    前記特定のデータフローにおける現在のメッセージ流量である流量現在値と、前記決定処理によって決定された流量制御値に応じた流量目標値と、に基づいて、前記データフローにおいて前記特定の状態が解消されるか否かを判定する効果判定処理と、
    前記効果判定処理による判定結果に基づいて、前記決定処理によって決定された台数および流量制御値を増減制御する増減制御処理と、
    を実行することを特徴とする請求項6に記載のデータ処理システム。
  8. 送信元からのメッセージに対しデータ処理を実行して宛先に送信するデータ処理システムによるデータ処理方法であって、
    前記データ処理システムは、
    前記データ処理が異なる複数種類のデータ処理部の各々を1以上有し、前記メッセージに対し種類が異なる一連のデータ処理を実行して前記一連のデータ処理後のメッセージを前記宛先に送信する複数のデータフローについて、前記送信元からのメッセージに指定されるデータフローにしたがって、当該メッセージおよび前記データ処理部によるデータ処理後のメッセージを後続のデータ処理部に振り分ける振分部を有し、
    前記振分部は、
    前記複数のデータフローを流れるメッセージの滞留量と前記データ処理のリソース情報とに基づいて、ボトルネックまたはボトルネックとなり得る特定の状態である特定のデータ処理部を検出する検出処理と、
    前記検出処理によって検出された特定のデータ処理部のリソース情報に基づいて、前記特定のデータ処理部の台数の増加により前記特定のデータ処理部が前記特定の状態から解消される台数に決定する決定処理と、
    前記特定のデータ処理部を、前記決定処理によって決定された前記特定の状態から解消される台数分設定する設定処理と、
    を実行することを特徴とするデータ処理方法。
JP2017510594A 2015-09-03 2015-09-03 データ処理システムおよびデータ処理方法 Active JP6273069B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/075112 WO2017037924A1 (ja) 2015-09-03 2015-09-03 データ処理システムおよびデータ処理方法

Publications (2)

Publication Number Publication Date
JPWO2017037924A1 JPWO2017037924A1 (ja) 2017-08-31
JP6273069B2 true JP6273069B2 (ja) 2018-01-31

Family

ID=58186780

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017510594A Active JP6273069B2 (ja) 2015-09-03 2015-09-03 データ処理システムおよびデータ処理方法

Country Status (3)

Country Link
US (1) US10425273B2 (ja)
JP (1) JP6273069B2 (ja)
WO (1) WO2017037924A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10178045B2 (en) * 2016-09-07 2019-01-08 Sap Se Dynamic discovery and management of microservices for multi-cluster computing platforms
US10938943B2 (en) * 2017-02-27 2021-03-02 International Business Machines Corporation Context aware streaming of server monitoring data
CN108200118A (zh) * 2017-12-04 2018-06-22 中山大学 一种基于运动仿真平台高并发请求的解决方法
US10521263B2 (en) * 2017-12-08 2019-12-31 Sap Se Generic communication architecture for cloud microservice infrastructure
JP6853218B2 (ja) * 2018-05-22 2021-03-31 株式会社日立製作所 センサーデータ分析システムおよびセンサーデータ分析方法
CN111865811B (zh) * 2020-06-24 2022-06-17 浪潮(北京)电子信息产业有限公司 一种数据处理方法、装置、设备及介质
CN112988389B (zh) * 2021-03-22 2023-08-11 成都卓拙科技有限公司 结合负载调节及周期性调节的自动伸缩方法及系统

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6560606B1 (en) * 1999-05-04 2003-05-06 Metratech Method and apparatus for processing data with multiple processing modules and associated counters
US20020120741A1 (en) * 2000-03-03 2002-08-29 Webb Theodore S. Systems and methods for using distributed interconnects in information management enviroments
US20030236861A1 (en) * 2000-03-03 2003-12-25 Johnson Scott C. Network content delivery system with peer to peer processing components
US20020108059A1 (en) * 2000-03-03 2002-08-08 Canion Rodney S. Network security accelerator
US7467390B2 (en) 2003-04-01 2008-12-16 International Business Machines Corporation Enhanced staged event-driven architecture
JP2006259812A (ja) 2005-03-15 2006-09-28 Hitachi Ltd 動的キュー負荷分散方法、システム及びプログラム
US7870556B2 (en) 2006-05-16 2011-01-11 Ab Initio Technology Llc Managing computing resources in graph-based computations
US7844856B1 (en) * 2007-12-26 2010-11-30 Emc (Benelux) B.V., S.A.R.L. Methods and apparatus for bottleneck processing in a continuous data protection system having journaling
US8225291B2 (en) * 2008-01-04 2012-07-17 International Business Machines Corporation Automated detection of application performance bottlenecks
JP4569846B2 (ja) 2008-04-02 2010-10-27 日本電気株式会社 I/oノード制御方式及び方法
JP2011243089A (ja) 2010-05-20 2011-12-01 Hitachi Ltd 計算機の流量制御方法、流量制御装置および流量制御プログラム
CN102025577B (zh) * 2011-01-06 2012-07-04 西安电子科技大学 物联网网络系统及数据处理方法
US9600571B2 (en) * 2013-07-11 2017-03-21 Neura, Inc. Interoperability mechanisms for internet of things integration platform

Also Published As

Publication number Publication date
US10425273B2 (en) 2019-09-24
US20170279654A1 (en) 2017-09-28
JPWO2017037924A1 (ja) 2017-08-31
WO2017037924A1 (ja) 2017-03-09

Similar Documents

Publication Publication Date Title
JP6273069B2 (ja) データ処理システムおよびデータ処理方法
CN110365752B (zh) 业务数据的处理方法、装置、电子设备和存储介质
CN111950988B (zh) 分布式工作流调度方法、装置、存储介质及电子设备
CN108776934B (zh) 分布式数据计算方法、装置、计算机设备及可读存储介质
CN107798108B (zh) 一种异步任务查询方法及设备
US10659410B2 (en) Smart message delivery based on transaction processing status
US8533334B2 (en) Message binding processing technique
US10944655B2 (en) Data verification based upgrades in time series system
CN102801737B (zh) 一种异步网络通信方法及装置
JP2011258098A (ja) 仮想計算機システム、仮想計算機システムの監視方法及びネットワーク装置
CN109960575B (zh) 一种计算能力共享方法、系统及相关设备
JP2012079242A (ja) 複合イベント分散装置、複合イベント分散方法および複合イベント分散プログラム
US9736226B2 (en) Rule distribution server, event processing system and method, and program
CN105550051A (zh) 业务请求的异步处理方法及装置
US20200169614A1 (en) Function Based Dynamic Traffic Management for Network Services
US11206673B2 (en) Priority control method and data processing system
US10673983B2 (en) Processing a unit of work
JP2009026221A (ja) ビジネスプロセス運用管理システム、方法、プロセス運用管理装置およびそのプログラム
US9893972B1 (en) Managing I/O requests
US20180131756A1 (en) Method and system for affinity load balancing
CN113486018B (zh) 生产数据存储方法、存储装置、电子设备及存储介质
US10218799B2 (en) Optimizing client distance to network nodes
CN110971697B (zh) Redis单实例保护处理方法、装置、计算机设备及存储介质
US20160034919A1 (en) Collection and aggregation of large volume of metrics
US11366794B1 (en) Data store item count service

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170725

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170908

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180104

R150 Certificate of patent or registration of utility model

Ref document number: 6273069

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150