JP2010044552A - リクエスト処理方法及び計算機システム - Google Patents

リクエスト処理方法及び計算機システム Download PDF

Info

Publication number
JP2010044552A
JP2010044552A JP2008207704A JP2008207704A JP2010044552A JP 2010044552 A JP2010044552 A JP 2010044552A JP 2008207704 A JP2008207704 A JP 2008207704A JP 2008207704 A JP2008207704 A JP 2008207704A JP 2010044552 A JP2010044552 A JP 2010044552A
Authority
JP
Japan
Prior art keywords
request
server
processing
redundant
proxy device
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.)
Granted
Application number
JP2008207704A
Other languages
English (en)
Other versions
JP4722973B2 (ja
Inventor
Hiroshi Fujii
宏 藤井
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
Priority to JP2008207704A priority Critical patent/JP4722973B2/ja
Priority to US12/366,759 priority patent/US7937437B2/en
Publication of JP2010044552A publication Critical patent/JP2010044552A/ja
Application granted granted Critical
Publication of JP4722973B2 publication Critical patent/JP4722973B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2035Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant without idle spare hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2046Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share persistent storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2025Failover techniques using centralised failover control functionality
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)

Abstract

【課題】冗長化されたリクエストのセッションが重複する場合であっても有効なセッション管理技術を提案する。
【解決手段】クライアントから送信されたリクエストを処理する複数のアプリケーションサーバと、リクエストを受信し、アプリケーションサーバに送信するプロキシ装置と、リクエストを管理するセッション管理装置とを含む計算機システムで、プロキシ装置は、受信したリクエストを冗長化して各アプリケーションサーバに送信し、各アプリケーションサーバは、リクエストの処理結果をプロキシ装置に送信し、アプリケーションサーバの識別子及びリクエストの識別子を含むセッション情報をセッション管理装置に通知し、プロキシ装置は、クライアントに応答する処理結果を決定し、決定された処理結果を送信したアプリケーションサーバの識別子及びリクエストの識別子をセッション管理装置に通知する。
【選択図】図6

Description

本発明は、受信したリクエストを冗長化して複数の計算機で実行する技術に関する。
近年、インターネット技術の成熟により、業務システムのWebアプリケーション化が広く実施されるようになった。Webアプリケーションによって実現されたユーザアプリケーション(以下、「ユーザAP」)の実行基盤を提供するWebアプリケーションサーバ(以下、「APサーバ」)には、高い性能と信頼性が求められている。
現在、システムの性能を向上させるための技術として、負荷分散機を利用したシステム構築方法が提案されている。負荷分散機を利用したシステムでは、同一アプリケーションを実行可能な複数のAPサーバが配置され、負荷分散機を介して処理要求を受け付ける。
負荷分散機は、負荷状態に基づいて要求を処理させるAPサーバを選択する。特定のAPサーバに負荷が集中することを回避することによって、システムの応答性能を向上させる。
負荷分散機は、通常、後段に配置されたAPサーバの障害情報を監視し、障害が発生したAPサーバを回避してAPサーバを選択する。このようなホットスタンバイ方式による冗長化によってサービスの可用性を高めることができる。
ただし、ホットスタンバイ方式の冗長化では、リクエストを処理中のAPサーバに障害が発生すると、処理中だったリクエストはエラー又は無応答などになってしまう。従来の負荷分散機では、発生したエラーを回復することはできなかった。
特許文献1には、この問題を解決するために、負荷分散機の後段に配置したサーバを複数台からなる組として配置し、負荷分散機で受け付けた一つのリクエストを冗長化し、複数のサーバで同時並行に処理する技術が開示されている。
特許文献1に開示された技術では、リクエストを並行処理させる場合に、まず、各サーバに「仮実行」としてリクエスト処理を実行させる。最初に負荷分散機に「仮実行」のレスポンスが到達したサーバが「本実行」を実施し、最終的に応答する。他のサーバは「実行キャンセル」を実施する。「仮実行」「本実行」「実行キャンセル」の一連の技術は、一般にトランザクション処理と呼ばれ、処理開始から終了まで、システム内での一貫性を保つためにデータベースサーバなどに実装されている。
特許文献1に開示された技術では、負荷分散機の後段に配置されたサーバの処理が冗長化され、一台のサーバで障害が発生した場合も、別のサーバが同じリクエストに対するレスポンス処理を実行しているため、システムとしては処理を継続することができる。このようにして、システム内部におけるサーバの障害発生をシステム外部に影響させない、安定した応答性能を備えるシステムを実現可能になる。
さらに、冗長化構成を実現するための技術についても触れておくと、近年、サーバ装置の高性能化にともなって、仮想計算機技術の発展がめざましい。同一の物理計算機上で複数の仮想計算機を動作させることが可能になっている。
ハイパーバイザ型と呼ばれる仮想計算機では、仮想計算機を動作させるためのOS(ホストOS)を必要とせずに、物理計算機のリソース層を共有するための機能を提供し、複数の異なるOSを並行して動作させることが可能である。
冗長化構成システムを実現する場合において、複数の仮想計算機を用いる方法は、複数の物理計算機を用いる方法と比較して、管理運用コスト、省スペース化、消費電力の削減など、コスト面において優れている。
特開2004−030204号公報
Webアプリケーションによる業務システムでは、複数のリクエスト及びレスポンスの流れによって一つの業務処理を実行し、画面遷移を含むアプリケーションを実現するためにセッション情報をサーバ上で保持する仕組みが必要となる。セッション情報をサーバ上で保持する仕組みとして、一般にスティッキー機能が用いられる。
スティッキー機能とは、負荷分散機がセッション情報を解析し、あるセッションIDが送信された場合の処理サーバを選択する場合に、過去に当該セッションIDを処理したサーバの記録を検索し、常に同じサーバを選択する。
しかし、負荷分散機は、スティッキー機能を用いると、負荷分散機能が発揮されず、システム全体での最適性能を実現できなくなる。
また、セッションを必要とするリクエストを処理することが可能なサーバが一意に固定されると、リクエストとサーバ間の依存性が高くなる。その結果、一台のサーバマシンに障害が発生した場合のシステムの継続性が保証されない。このことは、特許文献1に開示された技術であっても同様である。
回避方法としては、共有の外部データベース装置などを用いたセッション管理方法が知られている。セッション情報は、リクエストを処理するサーバとは異なる外部のデータベース上に記録され、すべてのサーバによって共有される。
セッション情報を外部データベースで管理する方法は、性能面でスティッキー機能に劣る。しかし、一般に性能については、ハードウェア装置の高性能化によって、低コストで実現が可能になる。高信頼性を要求される場合には、セッションをサーバ間で平等に共有できることが望ましい。
ここで、リクエストを冗長化した場合に発生するセッション衝突問題について説明する。通常、セッション情報は、システム内部の識別子(ID)で一意に管理されるため、同一のセッションIDを有するリクエストが並行して処理されることはない。そのため、同一のセッションIDに対して、複数のセッション登録要求が発生することはない。
しかしながら、リクエストを冗長化すると、クライアントは「同じリクエストのセッション情報」を複数のAPサーバから登録され、参照可能となっている場合がある。複数のセッション情報を登録され、各セッション情報の内容が異なっている場合には、どの情報を参照すべきか適切に選択しなければならない。選択を誤った場合には、システム内で矛盾が発生するおそれがある。このような問題は「セッション衝突の問題」と呼ばれる。
セッション衝突の問題は、「同一のユーザAPが同一のリクエストを受信した場合に、同一のセッション情報が生成される保証がない」ことが原因となる。典型的な例として、福引システムについて説明する。
福引システムでは、アプリケーションによって生成される乱数によって、「あたり」又は「はずれ」を抽選する。したがって、複数のAPサーバ上で同じリクエストを処理しても、すべての処理結果が同じになる保証はない。「あたり」の場合と「はずれ」の場合、一般にセッション情報は異なったものが生成される可能性が高い。
また、他の例として、締め切り時刻の判定処理を含んだチケット予約システムについて説明する。チケット予約システムの締め切り時刻の判定処理で、締め切り時刻の評価対象として「APサーバ装置の現在時刻」を使用していると、判定処理が参照する時刻が冗長化された各リクエストの処理で完全に同一になることは保証されない。その結果、「締め切り済みか否か」の判定結果は処理したAPサーバによって分かれ、各APサーバの生成するセッション情報が異なったものになる可能性がある。
特許文献1に開示された技術では、リクエストを冗長化した際に、スティッキー機能が実現可能である。セッション管理への適用を考慮したものであるが、スティッキー機能を利用したセッション管理では、セッション衝突の問題を解決することはできない。
具体的には、スティッキー機能の実現方法として、「実行キャンセル」を実施する際に、セッション情報を消去せずにサーバ上に残す。そして、再度当該セッション情報を必要とするリクエストを受け付けた場合に、同じサーバの組にリクエストを実施することによって、セッション情報を再利用する。この場合、生成されたセッション情報の内容がサーバごとに異なっていれば、サーバのペアで異なるセッション情報が管理されることになるため、システム内で矛盾が生じてしまうおそれがある。
以上より、APサーバシステムにおいてリクエスト冗長化を実現するためには、セッション衝突問題を解決可能なセッション管理方法が必要となる。本発明は、APサーバシステムにおいて、セッション衝突問題が解決されたリクエスト冗長化システムを実現することを目的とする。
なお、本発明は、技術の進歩によって計算機の処理能力がさらに向上し、コストも低減されることを前提として、「少ない計算機資源でどれだけ性能を向上させるか」という視点だけでなく、「余剰した計算機資源を活用することによって、処理性能の向上及び信頼性の向上を図る」といった視点で構築されたシステムを提案する。
本発明の一形態では、業務処理を要求するリクエストを送信するクライアントと、前記リクエストを処理する複数のアプリケーションサーバと、前記リクエストを受信し、前記アプリケーションサーバに送信するプロキシ装置と、前記リクエストを管理するセッション管理装置とを含む計算機システムにおいて、前記リクエストを処理する方法であって、前記プロキシ装置は、第1インタフェース、前記第1インタフェースに接続される第1プロセッサ、及び前記第1プロセッサに接続される第1メモリを備え、前記アプリケーションサーバは、第2インタフェース、前記第2インタフェースに接続される第2プロセッサ、及び前記第2プロセッサに接続される第2メモリを備え、前記プロキシ装置は、前記クライアントから送信されたリクエストを冗長化し、前記冗長化されたリクエストを各アプリケーションサーバに送信し、前記各アプリケーションサーバは、前記冗長化されたリクエストの処理結果を前記プロキシ装置に送信し、前記各アプリケーションサーバは、前記アプリケーションサーバの識別子及び前記冗長化されたリクエストの識別子を含むセッション情報を前記セッション管理装置に通知し、前記プロキシ装置は、前記冗長化されたリクエストの処理結果を受信すると、前記クライアントに応答する処理結果を決定し、前記プロキシ装置は、前記決定された処理結果を送信したアプリケーションサーバの識別子及び前記クライアントから送信されたリクエストの識別子を前記セッション管理装置に通知する。
本発明の代表的な一形態によれば、クライアントからのリクエストを冗長化して、各アプリケーションサーバで処理する場合に発生するセッションの衝突問題を解決することができる。
本発明では、リクエストを冗長化して処理するため、処理対象のリクエストに更新処理を含む場合には、二重に更新処理が実行されることによって矛盾が発生する可能性がある。本発明の実施の形態を具体的に説明する前に、まず、この問題について説明する。
一般的に、APサーバシステムでは、リクエストを処理する過程において、データベースサーバなど、APサーバの外部にあるシステムにアクセスして、情報を取得したり、外部システムの内容を更新したりする処理を含んでいる。ここでは、外部システムに対するアクセスとして、値を参照するアクセスを「参照系アクセス」、値を更新するアクセスを「更新系アクセス」と定義する。
リクエストを冗長化すると、元々一つのリクエストから、複数の外部アクセスが実行される。各リクエストがすべて参照系アクセスの場合には、システム内で矛盾が発生することはない。しかし、更新系アクセスの場合には、リクエストが冗長化されていない場合には発生するはずのない更新要求が発生するため、外部システムのデータが不正に更新されてしまう「更新系アクセスによる矛盾問題」が生じるおそれがある。
更新系アクセスによる矛盾問題の一例として、インターネットショッピングによる在庫管理システムについて説明する。APサーバ203の外部にあるデータベースシステムには、商品の在庫量が記憶されているものとする。ユーザAP216には、商品が購入されたことを通知するリクエストを受信すると、商品の購入処理を実行し、在庫数を1つ減らす処理が記述されている。
在庫管理システムに在庫数を1減らすリクエストが入力されると、リクエストが冗長化されていない場合には、データベースサーバの在庫数は1減った状態となる。しかし、リクエストを2つに冗長化した場合には、並行して処理されている2つのユーザAPそれぞれから、「在庫量を1減らす」要求がデータベースサーバに送信される。このとき、データベースサーバの在庫数は2減らされてしまい、期待されていた結果と異なる結果になってしまう。このように、外部システムに更新系のアクセスが実行されるユーザAPでは、リクエストを冗長化することによって、本来期待していた結果と異なる結果となってしまう可能性がある。
特許文献1に開示された技術では、「仮実行」「本実行」「実行キャンセル」によるトランザクション処理をサーバに実装することで「更新系アクセスによる矛盾問題」を解決しようとしている。
APサーバは、APサーバ内部で実行されるWebアプリケーション上でトランザクション処理を実現するための技術として、JTA(Java Transaction API、「Java」は登録商標、以下同じ)などの機能を実装している。しかし、APサーバ自身へのリクエストに対してトランザクション処理を実施するような機能は、一般のAPサーバに備えられておらず、当該機能の有無はWebアプリケーションの設計に依存する。
また、APサーバへの入力となるURL文字列の情報は、一般に、URL文字列自体が更新系アクセスの有無を表すものではないため、トランザクション処理が必要か否かを判定する手段は無い。したがって、特許文献1の手法をAPサーバシステムに適用する場合、URLでトランザクション処理が必要か否かを判定可能な場合を除いて、すべてのリクエストに対してトランザクション処理を実行する必要がある。トランザクション処理は、排他処理、及び処理開始から処理完了までの一連のトランザクション処理内容を記録する大量のバッファ制御が必要になるなど、一般に負荷の大きい処理である。
一方、APサーバシステム固有の特性として、APサーバシステムにおける「参照系アクセス」「更新系アクセス」の発生頻度に着目すると、大半の処理が「参照系アクセス」のみで成り立っていることが知られている。この発生頻度の比率は99:1とも300:1ともいわれている。
したがって、特許文献1に開示された技術をAPサーバシステムに適用するには、性能面のデメリットが大きい。
本発明では、更新系アクセスによる矛盾問題の解決手段として、「更新系リクエストが発生するかどうか」に応じて、リクエスト冗長化の多重度を決定する処理をインテリジェントプロキシ処理部又はAPサーバに追加する。具体的には、更新系アクセスによる矛盾問題が発生する可能性が生じたタイミングで、冗長化されたリクエストの枝刈りを実施する。詳細な処理手順については、図5にて後述する。
以上のように処理することによって、外部システムとの連携処理があるAPサーバシステムにおいて、冗長化されたリクエストが発生した場合に、更新系アクセスによる二重更新などの矛盾問題を回避することができる。
以下、前述した「セッション衝突問題」及び「更新系アクセスによる矛盾問題」を解決する本発明の実施の形態について図面を用いて説明する。
(第1の実施の形態)
図1は、本発明の第1の実施の形態の計算機システムの物理構成図である。
本発明の第1の実施の形態の計算機システムは、クライアント201、インテリジェントプロキシ装置202、APサーバ装置330、セッション管理装置340、及びデータベース(DB)サーバ装置(外部サーバ)205を含む。
クライアント201は、ネットワークを介してインテリジェントプロキシ装置202に接続する。また、APサーバ装置330、セッション管理装置340、及びDBサーバ装置205は、ネットワークを介してインテリジェントプロキシ装置202に接続する。クライアント201は、インテリジェントプロキシ装置202を介して、APサーバ装置330、セッション管理装置340、及びDBサーバ装置205にアクセスする。
クライアント201は、利用者からの業務処理の実行要求を受け付け、インテリジェントプロキシ装置202を介して、APサーバ装置330にリクエストを送信する。本発明の第1の実施の形態では、クライアント201の数は、単数でも複数でもよく、二つのクライアント201が図1に示されている。
インテリジェントプロキシ装置202は、いわゆる負荷分散機であって、クライアント201から送信されたリクエストをAPサーバ装置330に振り分ける。インテリジェントプロキシ装置202は、受信したリクエストを冗長化し、それぞれ異なるAPサーバ装置330に送信する。
インテリジェントプロキシ装置202は、CPU321、主記憶322、ネットワークインタフェースカード(NIC)323A、及びNIC323Bを備える。
CPU321は、主記憶322に記憶されたプログラムを実行し、各種処理を実行する。主記憶322は、CPU321によって実行されるプログラム及び処理に必要なデータを記憶する。例えば、受信したリクエストをAPサーバ装置330に振り分けるインテリジェントプロキシ処理部211が記憶される。インテリジェントプロキシ処理部211は、クライアント201から送信されたリクエストを冗長化し、冗長化されたリクエストを処理するAPサーバ装置330を選択し、各APサーバ装置330に振り分ける。インテリジェントプロキシ処理部211の詳細については後述する。
NIC323Aは、ネットワークを介してクライアント201に接続される。NIC323Bは、ネットワークを介して、APサーバ装置330、セッション管理装置340、及びDBサーバ装置205に接続される。
APサーバ装置330は、クライアント201から送信されたリクエストを処理し、処理結果をクライアント201に送信する。APサーバ装置330は、計算機システムに複数備えられる。各APサーバ装置330は、インテリジェントプロキシ装置202によって冗長化されたリクエストをそれぞれ処理する。なお、各APサーバ装置に共通する内容について説明する場合には、符号を330とし、個別のAPサーバ装置を区別して説明する場合には、符号を「330A」「330B」などとする。また、APサーバ装置を構成するプログラムなどの要素についても同様に扱う。
APサーバ装置330は、CPU331、主記憶332、及びNIC333を備える。CPU331は、主記憶332に記憶されたプログラムを実行し、各種処理を実行する。主記憶332は、CPU331によって実行されるプログラム及び処理に必要なデータを記憶する。例えば、クライアント201から送信されたリクエストを処理するAPサーバ203が記憶される。NIC333は、ネットワークに接続される。
セッション管理装置340は、クライアント201とAPサーバ装置330との間のセッションを管理する。セッション管理装置340は、CPU341、主記憶342、NIC343、及び補助記憶装置344を備える。
CPU341は、主記憶342に記憶されたプログラムを実行し、各種処理を実行する。主記憶342は、CPU341によって実行されるプログラム及び処理に必要なデータを記憶する。具体的には、セッションを管理するセッション管理処理部204が記憶される。NIC343は、ネットワークに接続される。補助記憶装置344は、不揮発性記憶媒体によって、セッション情報を記憶する。
DBサーバ装置205は、APサーバ装置330が業務を処理するために使用するデータなどが格納される。DBサーバ装置205は、CPU351、主記憶352、NIC353、及び補助記憶装置354を備える。
CPU351は、主記憶352に記憶されたプログラムを実行し、各種処理を実行する。主記憶352は、CPU351によって実行されるプログラム及び処理に必要なデータを記憶する。具体的には、データを管理するデータベース管理システム(DBMS)355が記憶される。NIC353は、ネットワークに接続される。補助記憶装置354は、業務処理に利用されるデータが格納される。なお、図1には、外部サーバとしてDBサーバ装置205が計算機システムに含まれているが、DBサーバ以外のサーバであってもよい。
ここで、セッション衝突の問題を回避するために、インテリジェントプロキシ処理部211とセッション管理処理部204が相互に通信し、インテリジェントプロキシ処理部211がセッション管理処理部204におけるセッションの登録を制御する手順の概要について説明する。
セッション情報は、セッション管理処理部204のバッファ上に記録され、セッション衝突が発生しないように管理される。インテリジェントプロキシ処理部211が最終的にクライアント201に送信するリクエストを決定した時点で、当該リクエストに対応したセッション情報をセッション記憶データベースに記録する。
図2は、本発明の第1の実施の形態のセッション管理の概要を説明する図であって、セッション情報を登録する手順を説明する図である。
クライアント201は、まず、インテリジェントプロキシ装置202に業務処理の要求を含むリクエストを送信する。インテリジェントプロキシ装置202は、クライアント201から送信されたリクエストを受信すると、インテリジェントプロキシ処理部211によって、受信したリクエストを冗長化する。
また、インテリジェントプロキシ処理部211には、リクエスト冗長化制御部212及び結果解析処理部214が含まれている。リクエスト冗長化制御部212は、受信したリクエストを冗長化し、冗長化されたリクエストに共通のリクエストIDを付与する。共通のリクエストIDを付与することによって、複数のリクエストが並行して処理された場合にも、冗長化する前のリクエストが同一であるか否かを判定することができる。複数のリクエストの処理結果を解析する結果解析処理部214については後述する。
APサーバ203は、冗長化されたリクエストを処理する。図2に示すように、インテリジェントプロキシ処理部211によって冗長化されたリクエストがAPサーバ203A及びAPサーバ203Bによって処理される。
APサーバ203Aは、Webサーバ215A、ユーザAP216A、セッション獲得処理部217A、及びセッション登録処理部218Aを含む。APサーバ203Bについても同様である。
Webサーバ215Aは、クライアント201が送信する業務処理の要求を受け付けるためのインタフェースを提供し、クライアント201から送信されたリクエストを受信する。ユーザAP216Aは、Webサーバ215Aが受け付けた要求を処理する。セッション獲得処理部217Aは、セッション管理処理部204に登録されたセッションを取得する。セッション登録処理部218Aは、クライアント201とAPサーバ203Aとの間で確立されたセッションをセッション管理処理部204に登録する。
また、APサーバ203Aは、セッション登録処理部218Aによって、セッション管理処理部204にセッションの登録を要求する。セッション登録処理部218Aは、セッション登録処理を実行する場合に、セッション情報に加え、リクエストを処理したAPサーバ203のサーバID、及び当該リクエストのリクエストIDをセッション管理処理部204に通知する。このように、APサーバ203のアドレス、リクエストを処理したプロセスID及びスレッドIDなどの情報に基づいて、リクエストを処理したサーバIDを一意に特定できるようにする。なお、セッション登録処理部218Bについても同様である。
セッション管理処理部204は、バッファテーブル224及びセッション記憶データベース225を含む。
バッファテーブル224は、セッション情報を一時的に格納する。バッファテーブル224は、サーバID2241、リクエストID2242、セッションID2243、及びセッション内容2244を含む。
サーバID2241は、APサーバ203の識別子である。リクエストID2242は、クライアント201から送信されたリクエストの識別子であって、一意の番号又は文字列である。
セッションID2243は、クライアント201とユーザAP216とが、リクエスト及びレスポンスを送受信することによって連続して状態が遷移する場合、一連の流れを特定するための識別子である。セッション内容2244は、セッションID2243によって識別されるセッションの状態を示す情報が格納される。以降、セッション情報とは、セッションIDとセッション内容の組み合わせのことを指す。
セッション記憶データベース225は、セッション情報を格納する。セッション記憶データベース225は、セッションID2251及びセッション内容2252を含む。セッション記憶データベース225には、リクエストが冗長化された場合にインテリジェントプロキシ処理部211によって選択され、クライアント201に実際にレスポンスが送信されたセッションの内容が記録される。
セッション管理処理部204は、セッション登録要求を受け付けると、まず、バッファテーブル224にセッション登録要求に含まれる情報を記録する。この際、冗長化されたリクエストであっても、サーバIDとリクエストIDの組み合わせによって識別可能であるため、バッファテーブル224においてセッションの衝突は発生しない。
図3は、本発明の第1の実施の形態のセッション管理の概要を説明する図であって、リクエストの処理結果をクライアントに送信する手順を説明する図である。
結果解析処理部214は、APサーバ203からリクエストに対する処理結果を受信すると、最終的にクライアントに応答するレスポンスを確定させる。結果解析処理部214は、最終的にクライアントに応答するレスポンスが確定すると、当該レスポンスを応答したAPサーバ203に対応するセッション情報をセッション記憶データベース225に登録する処理を開始する。インテリジェントプロキシ処理部211は、セッション管理処理部204と通信し、セッション管理処理部204のコミット処理部219に、最終的にレスポンスとして採用するリクエストを処理したAPサーバ203とリクエスト内容とを識別する識別子を通知する。具体的な処理の内容については、図4を参照しながら後述する。
コミット処理部219は、セッション情報のセッション記憶データベース225に対する登録要求を受信すると、受信した識別子に基づいて、バッファテーブル224のレコードを検索し、発見したデータをセッション記憶データベース225に登録する。さらに、バッファテーブル224に記録されている同一のリクエストIDを有するレコードをすべて削除する。具体的な処理の内容については後述する。
図4は、本発明の第1の実施の形態のクライアントから受け付けた処理要求に応答する手順を示すフローチャートである。
インテリジェントプロキシ装置202のCPU321は、インテリジェントプロキシ処理部211に含まれる結果解析処理部214を実行し、APサーバ203のWebサーバ215から正常なレスポンスを受信したことを確認すると、受信したレスポンスに含まれる「サーバID」及び「リクエストID」を取得する(S401)。
インテリジェントプロキシ装置202のCPU321は、別のAPサーバ203からのレスポンスを受信した場合に本処理を実行しないように排他処理を開始する(S402)。
さらに、インテリジェントプロキシ装置202のCPU321は、取得されたリクエストIDに対応する処理が実行済みか否かを判定する(S403)。実行済みの場合には(S403の結果が「Yes」)、当該リクエストIDに対応する処理結果を応答するための処理が実行済みであるため、S402の処理で実行された排他処理を解放し(S408)、本処理を終了する。
インテリジェントプロキシ装置202のCPU321は、処理が実行されていない場合には(S403の結果が「No」)、セッション管理装置340のセッション管理処理部204に含まれるコミット処理部219に、セッションの選択を確定するコミット要求を送信し、処理が完了するまで待機する(S404)。コミット要求には、S401の処理で取得されたサーバID及びリクエストIDが含まれる。コミット処理部219によって実行される処理については後述する。なお、この場合には、S401の処理で受信したレスポンスが、当該リクエストIDについて、APサーバ203から最初に応答されたレスポンスとなる。
インテリジェントプロキシ装置202のCPU321は、S401の処理で取得されたリクエストIDに対応する処理が完了すると、処理の実行が完了したことを主記憶322に記憶する(S405)。さらに、S402の処理で実行された排他処理を解放する(S406)。最後に、クライアント201にレスポンスを送信し(S407)、本処理を終了する。
ここで、クライアント201に送信されるレスポンスが確定し、対応するセッション情報をセッション管理処理部204によって登録する手順について説明する。
セッション管理装置340のCPU341は、まず、結果解析処理部214によって送信されたコミット要求を受信する。
セッション管理装置340のCPU341は、コミット処理部219によって、受信したコミット要求に含まれるサーバID及びリクエストIDに基づいてバッファテーブル224を検索し、該当するレコードを取得する。
セッション管理装置340のCPU341は、受信されたレコードに含まれるセッションID及びセッション内容をセッション記憶データベース225に登録する。
さらに、セッション管理装置340のCPU341は、受信したリクエストIDと一致するレコードをバッファテーブル224から検索し、該当するレコードを削除する。
最後に、セッション管理装置340のCPU341は、インテリジェントプロキシ処理部211の結果解析処理部214に処理完了を通知し、本処理を終了する。
以上、説明した手順によって、リクエストしたクライアントが受信する情報と、システム内部で管理されるセッション情報の内容が矛盾することを防ぐことができ、セッション衝突の問題を解決することができる。
さらに、更新系アクセスによる矛盾問題の解決手段としては、前述のように、「更新系リクエストが発生するかどうか」に応じて、リクエスト冗長化の多重度を決定する処理をインテリジェントプロキシ処理部211又はAPサーバ203に追加する。例えば、更新系アクセスによる矛盾問題が発生する可能性が生じたタイミングで、冗長化されたリクエストの枝刈りを実施する。以下、処理の概要を説明する。
図5は、本発明の第1の実施の形態の更新系アクセスを含むリクエストの多重度を単一にする手順を示すフローチャートである。
本処理では、更新系アクセスを実行する可能性があるリクエストを1つに絞りこみ、処理されたレスポンスのみをクライアントに送信することによって、更新系アクセスによる矛盾問題の発生を防止する。したがって、各リクエストについて、「仮実行」「本実行」「実行キャンセル」の処理は必要ない。
インテリジェントプロキシ装置202のCPU321は、クライアント201から送信されたリクエストを受信すると(S601)、「更新系アクセスが発生するか否か」を判定可能なタイミングまで処理を継続する(S602)。「更新系アクセスが発生するか否か」を判定する基準としては、例えば、所定のモジュールを実行した場合、又は、実際に外部にアクセスしようとした場合などである。なお、更新系アクセスが発生するか否かを確実に判定する必要はなく、更新系アクセスが発生する可能性があるか否かを判定できればよい。また、リクエストはAPサーバ203で処理されるが、APサーバ203とインテリジェントプロキシ装置202との間では、リクエストとレスポンスとが送受信されている。
インテリジェントプロキシ装置202のCPU321は、更新系アクセスが発生しない場合には(S603の結果が「No」)、冗長化されたリクエストについてそのまま処理を継続する(S608)。
インテリジェントプロキシ装置202のCPU321は、更新系アクセスが発生する可能性がある場合には(S603の結果が「Yes」)、リクエストIDが一致する他のレスポンス処理が実施済みか否かを判定する(S604)。リクエストIDが一致する他のレスポンス処理が実施済みの場合には(S604の結果が「Yes」)、処理対象となっている冗長化されたリクエストの処理を中止する(S605)。
インテリジェントプロキシ装置202のCPU321は、リクエストIDが一致する他のレスポンス処理が実施済みでない場合には(S604の結果が「No」)、リクエストIDが一致する他の冗長化されたリクエストの処理を中止させる(S606)。さらに、処理対象となっているリクエスト処理が完了するまで待機し、処理結果をクライアント201に応答する(S607)。
なお、リクエストの多重度が1になった場合には、サーバ障害を検知する機能と自動リトライ機能とを備えた負荷分散機と同等とすることができる。そのため、参照系アクセスのみの場合に実現可能な、障害発生時に影響を受けない応答性能を実現することはできなくなる。ただし、本発明が主に適用されるWebアプリケーションシステムでは、クライアントから送信されるリクエストの大半が「参照系アクセス」であるため、システム全体としての応答性能は十分に確保される。
図6は、本発明の第1の実施の形態のシステム構成を説明する図である。
本発明の第1の実施の形態では、リクエストURLによって、外部システムへの更新系アクセスが発生するか否かを判定可能である場合に適用される。
インテリジェントプロキシ装置202には、図2で説明した構成に加え、サーバアドレステーブル221、更新系アクセス有無定義テーブル222、及びリクエストID状態テーブル223が含まれる。
サーバアドレステーブル221は、クライアント201から送信されたリクエストを処理するAPサーバ203のアドレスの一覧を格納する。例えば、IP(インターネットプロトコル)アドレスとポート番号の組み合わせなどが用いられる。図6では、サーバアドレスのみが記載されているが、さらに、「稼動中」又は「故障中」などのサーバの稼動状態などの情報も格納される。
インテリジェントプロキシ装置202は、リクエストを送信するAPサーバ203を選択する場合に、サーバアドレステーブル221を参照する。具体的には、ラウンドロビン法によってサーバを選択する。また、インテリジェントプロキシ装置202には、サーバアドレスの故障情報を記録する手段、故障中のサーバがある場合に故障中のサーバアドレスを参照させない手段、及びサーバアドレスを追加及び削除する手段などが備えられる。
更新系アクセス有無定義テーブル222は、クライアント201からリクエストされるURLに対し、外部システムへの更新系アクセスが発生するか否かを示す情報を格納する。
リクエストID状態テーブル223は、クライアント201から受信したリクエストの状態が、リクエストIDごとに記録される。リクエストの状態は、例えば、「未使用」「処理中」「完了」の3つのステータスである。本発明の第1の実施の形態では、クライアント201からリクエストを受信するたびにリクエストIDを生成するのではなく、あらかじめ一意のリクエストIDを生成しておく。リクエストを受信すると、生成済みのリクエストIDを受信したリクエストに対応付ける。「未使用」はリクエストが対応付けられていない状態のリクエストIDである。
インテリジェントプロキシ処理部211には、図2に示した構成の他に、リトライ処理部213が含まれる。リトライ処理部213は、APサーバ203に障害が発生した場合に別のAPサーバ203にリクエストを再送する。具体的な処理については、後述する。
APサーバ203A及び203Bには、同一のユーザAP216A及び216Bが配置されている。インテリジェントプロキシ装置202からAPサーバ203A及び203Bに同時にリクエストが送信された場合、ユーザAP216A及び216Bはそれぞれ独立してリクエストを処理する。なお、図6では、2台のAPサーバ203のみを示しているが、適用するシステムの規模としては、10台以上から数百台規模のシステムを想定している。
バッファテーブル224及びセッション記憶DB225については、図2にて説明したとおりである。
図7は、本発明の第1の実施の形態のクライアントからのリクエストを処理する手順を示すシーケンス図である。
クライアント201は、利用者からの業務処理の要求を受け付け、インテリジェントプロキシ装置202にリクエストを送信する(S801)。
インテリジェントプロキシ装置202のリクエスト冗長化制御部212は、受信したリクエストをAPサーバ203に送信する(S802)。具体的には、まず、リクエストID状態テーブル223を参照し、「未使用」のリクエストIDを取得する。さらに、取得されたリクエストIDに対応するレコードの状態を「未使用」から「処理中」に変更する。
次に、リクエスト冗長化制御部212は、図5のフローチャートに示した処理を実行することによってリクエストを冗長化する多重度を決定する。すなわち、参照系アクセスのみの場合には、複数のAPサーバ203が冗長化されたリクエストを処理する。更新系アクセスを含む場合には、リクエストを冗長化しない、又は、冗長化されたリクエストを単一化する。
まず、リクエスト冗長化制御部212は、更新系アクセス有無定義テーブル222を参照し、クライアント201から受信したリクエストに更新系アクセスが発生する可能性があるか否かを判定する(図5のS603)。具体的には、リクエストに対応するURLに基づいて、更新系アクセス有無定義テーブル222を検索し、更新の有無を示す情報を取得する。
リクエスト冗長化制御部212は、更新系アクセスが発生する可能性がある場合には、リクエスト冗長化の多重度を1に設定し、リクエストを冗長化しない。すでに、リクエストが冗長化されている場合には、1つのリクエスト以外は処理を中止させる。
リクエスト冗長化制御部212は、更新系アクセスが発生しないリクエストの場合には、リクエストを2以上の多重度で冗長化する。多重度の決定方法は、固定値でもよいし、動的に変更させてもよい。動的に変更する方法については、本発明の第5の実施の形態にて後述する。
リクエスト冗長化制御部212は、多重度が決定されると、サーバアドレステーブル221を参照し、リクエストを送信するAPサーバ203のアドレスを取得する。APサーバ203の選択方法については、前述したように、例えば、ラウンドロビン方式で選択する。APサーバ203を選択する他の方法については、第3の実施の形態及び第4の実施の形態にて説明する。
リクエスト冗長化制御部212は、選択されたAPサーバ203に、並行してクライアント201から受信したリクエストを送信する。第1の実施の形態では、APサーバ203AとAPサーバ203B両方に対して、リクエストを送信する。また、送信されるリクエストには、リクエストIDが付加される。
APサーバ203Aは、Webサーバ215Aによって、リクエストの内容及びリクエストIDを受信する。さらに、ユーザAP216Aにリクエストを処理させる。APサーバ203Bでも同様に処理される(S803B〜S808B)。
ユーザAP216Aは、このとき、セッション獲得処理部217Aによって、セッション管理処理部204のセッション記憶DB225からセッション情報を取得する(S803A、S804)。
また、ユーザAP216Aは、リクエストを処理すると(S805A)、セッション登録処理部218Aによって、セッション管理処理部204にセッション情報を登録する。具体的には、バッファテーブル224にサーバID2241、リクエストID2242、セッションID2243、及びセッション内容2244を登録する処理をセッション管理処理部204に要求する(S806A、S807A)。ここで、サーバIDとは、リクエストを処理したAPサーバ203を一意に示す文字列で、例えば、サーバアドレスとAPサーバのプロセスID及びスレッドIDに基づいて生成された文字列である。サーバIDとリクエストIDとの組み合わせは、リクエストが冗長化された状態でも一意であるため、バッファテーブル224への登録において、セッションの衝突を生じさせない。
ユーザAP216Aは、リクエストの処理を完了すると、Webサーバ215Aを介して、レスポンスを結果解析処理部214に送信する(S808A)。
結果解析処理部214は、APサーバ203からレスポンスを受信すると、レスポンスの内容を解析し、解析結果に基づいてクライアント201に応答するレスポンスを特定する(S809)。また、結果解析処理部214は、APサーバ203からレスポンスを受信する際にリクエストを処理したAPサーバ203のサーバIDをさらに受信する。
具体的に説明すると、結果解析処理部214は、まず、レスポンスの内容を解析し、正常終了か異常終了かを判定する。この場合の異常終了とは、システム障害又は処理時間切れなどによるものであって、システムが正常にリクエストを処理した結果のエラー画面(例えば、リクエストされたファイルが見つからなかったエラーを表す画面)の表示などではない。結果解析処理部214は、それぞれのAPサーバ203からレスポンスを受信した場合に実行され、インテリジェントプロキシ装置202の内部で複数の処理が並行に実行される。
結果解析処理部214は、異常終了が検知された場合には、まず、障害情報をサーバアドレステーブル221に反映する。次に、リクエストID状態テーブル223を参照し、異常終了したリクエストIDのリクエストが「処理中」か否かを確認する。「処理中」の場合には、リトライ処理部213によってリトライ処理を依頼する。「完了」の場合には、レスポンスが既に応答されているので、そのまま処理を終了する。以降、障害が発生したAPサーバ203が復旧するまで、障害の発生したサーバを選択できないようにする。
リトライ処理部213は、サーバアドレステーブル221から次にリクエストを処理するAPサーバのアドレスを取得し、取得されたサーバアドレスに対してリクエストIDを付与したリクエストを送信する。これにより、リクエスト処理中は、常に一定の多重度が確保され、所定数のAPサーバ203で冗長化されたリクエストの処理が継続される。したがって、同時に複数のAPサーバで障害が発生した場合でも、安定した信頼性と継続性を実現することができる。なお、すべてのAPサーバで障害が発生した場合には、リトライ処理部213は処理の継続を断念し、処理対象のリクエストIDに対応するリクエストID状態テーブル223のレコードの状態に「完了」を記録し、クライアント201にエラーを通知する。
結果解析処理部214は、正常終了が検知された場合には、同じリクエストIDの処理に排他処理を実行する。排他処理の実行に成功すると、以降、同じリクエストIDを有し、並行して動作していた同じリクエストIDの結果解析処理は、排他処理が終了するまで休止状態となる。排他処理は、結果解析処理部214のみで実施され、他の処理部(例えばAPサーバ203Bなど)では、この間も並行して処理が継続される。
結果解析処理部214は、リクエストID状態テーブル223を参照し、処理対象のリクエストが「処理中」か否かを確認する。処理対象のリクエストが「完了」の場合には、既に当該リクエストIDに対応するリクエストのレスポンスがクライアント201に送信されているため、処理を継続する必要がない。結果解析処理部214は、排他を解放し、処理を終了する。
一方、結果解析処理部214は、リクエストIDのリクエストが「処理中」の場合、レスポンスを受信したAPサーバ203Aの「サーバID」と「リクエストID」の情報をセッション管理処理部204のコミット処理部219にメッセージとして送信する(S810)。
コミット処理部219は、メッセージを受信すると、バッファテーブル224を参照し、リクエストIDが一致するレコードをすべて取得する。取得されたレコードからAPサーバ203Aの「サーバID」と一致するレコードをセッション記憶データベース225に登録する(S811)。その後、バッファテーブル224に含まれるリクエストIDが一致するレコードをすべて削除する。以上の処理が完了すると、コミット処理部219は、結果解析処理部214に完了通知を送信する。
結果解析処理部214は、コミット処理部219から完了通知を受信すると、処理対象のリクエストIDに対応するリクエストID状態テーブル223のレコードの状態を「完了」に変更する。その後、排他を解放し、クライアント201にAPサーバ203Aからのレスポンスを送信する(S812)。
以上の手順によって、セッション衝突の問題を解決することができる。
なお、セッション情報を参照しないユーザAP216のみがAPサーバ203で動作するシステムであれば、一連のセッション管理処理部204への問い合わせを実行する処理は不要である。
本発明の第1の実施の形態では、結果解析処理部214の処理において、結果として、複数のAPサーバ203で並行処理されたレスポンスのうち、最も応答性能が高速であったレスポンスを採用する。この場合、冗長化の多重度が大きくなればなるほど、従来の負荷分散機における、「最も負荷の少ない、応答性能の良さそうなAPサーバにリクエストを転送する」場合に得られる最適な応答性能に近似する。
したがって、本発明の第1の実施の形態によれば、冗長化したリクエストを処理するサーバの選択方法として「ラウンドロビン法」といった単純な方法で、最も負荷の低いサーバを選択する負荷分散機を利用した場合と近似した処理性能を得ることができる。
本発明の第1の実施の形態では、セッション管理処理部204に負荷が集中するため、セッション管理処理部204の冗長性を高めた構成にしてもよい。
本発明の第1の実施の形態では、セッション管理処理部204がすべてのAPサーバに対して平等に処理を実行し、かつ、インテリジェントプロキシ処理部211にリトライ処理部213を備えているため、リクエストを処理するために、すべてのAPサーバの組み合わせが使用される可能性がある。したがって、すべてのAPサーバで障害が発生しない限り、リクエスト処理の実行を継続することができる。
本発明の第1の実施の形態によれば、リクエストを冗長化することによって、信頼性、可用性及び処理性能を向上させ、堅牢なAPサーバシステムを構築することができる。
さらに、本発明の第1の実施の形態によれば、余剰リソースとして存在し、稼働率の少ないサーバを活用することによって、システムの信頼性向上などに当該サーバを貢献させることができる。
また、本発明の第1の実施の形態によれば、クライアントから送信されるリクエスト及び当該リクエストを処理するサーバ間の依存度を低減させることを可能とし、例えば、APサーバ上で動作させるWebアプリケーションがセッション情報を必要とする場合であっても、セッション衝突問題を回避することができる。
また、本発明の第1の実施の形態によれば、外部システムとの連携処理があるAPサーバシステムにおいて、冗長化されたリクエストが発生した場合に、更新系アクセスによる二重更新などの矛盾問題を回避することができる。
また、本発明の第1の実施の形態によれば、Webサーバなどの参照系アクセスの多いシステムにおいて、トランザクション管理を実行することによって整合性を確保するシステムと比較して性能を向上させることができる。
(第2の実施の形態)
本発明の第2の実施の形態は、クライアント201のリクエストURLに基づいて外部システム904への更新系アクセス要求の有無を判定できない場合に適用される。第1の実施の形態のように、リクエストURLに基づいて更新系アクセス要求の有無を判定可能な場合は、あらかじめ意図してシステムを設計した場合に実現可能であって、通常のAPサーバシステムは第2の実施の形態に属する。なお、第1の実施の形態と共通する内容については適宜説明を省略する。
図8は、本発明の第2の実施の形態のシステム構成を説明する図である。
セッション制御の手順については、第1の実施の形態と同じであるため、説明を省略する。また、図8において、セッションを制御するための構成を一部省略する。
インテリジェントプロキシ装置202は、特権制御付リクエストID状態テーブル922を含む。特権制御付リクエストID状態テーブル922は、第1の実施の形態のリクエストID状態テーブル223を拡張したものである。具体的には、リクエストIDに対するリクエスト処理の現在の状態を「未使用」「処理中」「完了」に加えて、「特権中」の4種類のステータスによって表す。また、リクエストID単位で特権制御付リクエストID状態テーブル922に対するアクセスの排他処理を実施可能である。結果解析処理部914における排他処理についても、当該機能を利用して実装される。
また、インテリジェントプロキシ処理部211には、特権付与処理部919が含まれる。特権付与処理部919は、リクエスト冗長化制御部912及びリトライ処理部913によって実行される。
リクエスト冗長化制御部912は、第1の実施の形態のリクエスト冗長化制御部212とは異なり、リクエストURLの内容に関わらず、常にリクエストを2以上に冗長化して複数のサーバに並行して送信する。この際、冗長化されたリクエストの中で一つのリクエストを選択し、選択されたリクエストに対して特権付与処理部919が更新特権を付与する。
更新特権を付与するリクエストの選択方法についてはどのような方法を使ってもよく、ランダムであってもよいし、負荷の少ないAPサーバを選択してもよい。なお、第4の実施の形態にて、更新特権を付与するリクエストの選択方法について説明する。
Webサーバ915は、リクエスト冗長化制御部912によって冗長化されたリクエストを受信すると、受信したリクエストに更新特権が付与されているか否かを判定する。更新特権の有無を識別する情報は、例えば、HTTP(ハイパーテキスト転送プロトコル)のリクエストヘッダを拡張することによって付与する。
また、本発明の第2の実施の形態では、APサーバ203は、外部アクセス制御処理部917を備える。APサーバ203による外部システムへのアクセスは、すべて外部アクセス制御処理部917を介して実行される。
外部アクセス制御処理部917は、外部システム904へのアクセスが更新系か参照系かを判定するアクセス判別処理部918を備える。アクセス判別処理部918は、ユーザAP916から受信した外部システム904に対する要求の内容が、「参照系アクセス」「更新系アクセス」「判別不能」のいずれかに判定する。ユーザAP916と外部システム904とが通信するためのプロトコル(例えば、データベースへのアクセスに用いられるSQLなど)は、構築するシステムによって異なる。したがって、アクセス判別処理部918の実装は適用するシステムごとに相違してもよい。例えば、ユーザがテキストで定義可能な定義ファイルのような形式であってもよいし、APサーバ203に組み込まれるモジュールのような形式として、システムを構築するユーザが独自に実装し、外部アクセス制御処理部917に組み込む形式にしてもよい。
ユーザAP916による外部システム904へのアクセス要求がアクセス判別処理部918によって「参照系アクセス」と判定された場合には、当該アクセス要求は、更新系アクセスによる矛盾問題を生じさせない。したがって、この場合には、外部アクセス制御処理部917は、外部システム904に対するアクセスを許可するように制御する。
一方、ユーザAP916による外部システム904へのアクセス要求がアクセス判別処理部918によって「更新系アクセス」と判定された場合、又は「判別不能」と判定された場合には、外部アクセス制御処理部917は、処理中のリクエストに更新特権が付与されているか否かを判定する。
外部アクセス制御処理部917は、処理中のリクエストに更新特権が付与されていない場合には、現在処理中のリクエストを枝刈り対象リクエストとみなし、リクエスト処理を終了する。このとき、Webサーバ915は、枝刈りが実施されたことを示すレスポンスを結果解析処理部914に通知する。結果解析処理部914は、当該レスポンスを受信すると、リトライ処理を実施せず、処理を終了する。
処理中のリクエストに更新特権が付与されている場合には、特権制御付リクエストID状態テーブル922にアクセスし、リクエストIDの排他処理を実行し、リクエストIDが「処理中」か否かを判定する。リクエストIDが「完了」の場合には、既に当該リクエストIDのクライアント201へのレスポンスは、別のサーバの処理によって完了している。したがって、排他を解放し、外部システム904にアクセスすることなく、リクエスト処理を終了する。
一方、リクエストIDが「処理中」の場合には、特権制御付リクエストID状態テーブル922のリクエストIDの状態を「特権中」に更新し、排他処理を終了する。そして、「特権中」に更新を完了すると、以降、更新系アクセスを実行する。「特権中」に更新する処理はリクエストIDあたり1回のみ実施され、以降、外部システム904に対するアクセス要求を受け付けると、外部アクセス制御処理部917は、アクセスの種類を判定することなく、そのまま、外部システム904にアクセスするように制御する。
特権制御付リクエストID状態テーブル922のリクエストIDが「特権中」に更新されると、当該リクエストIDに対して特権発動中となる。このとき、更新特権を付与されたリクエストが優先的に処理され、当該リクエストの処理結果が得られるクライアント201に対するレスポンスとして送信される。以上の処理の手順を図9に示す。
図9は、本発明の第2の実施の形態のクライアントからの要求を処理し、外部システムに対するアクセスを制御する手順を示すシーケンス図である。
クライアント201は、第1の実施の形態と同様に、まず、クライアント201からインテリジェントプロキシ処理部211にリクエストを送信する(S1001)。
インテリジェントプロキシ処理部211のリクエスト冗長化制御部912は、リクエストを冗長化し、各APサーバ203に送信する(S1002)。このとき、冗長化されたリクエストの1つに更新特権を付与する。その後、各APサーバ203は要求されたリクエストを処理する(S1003〜S1013)。この際、外部システム904へのアクセスについては、APサーバ203の外部アクセス制御処理部917がリクエストの更新特権の有無に基づいて、前述のとおり外部アクセスを制御する(S1006、S1007、S1008、S1009、S1014)。
インテリジェントプロキシ処理部211の結果解析処理部914は、APサーバ203からレスポンスを受信する(S1015、S1016)。受信したレスポンスが更新特権を有するリクエストを処理したレスポンスであれば、更新特権を含むレスポンスであることを認識することができる。例えば、HTTPのレスポンスヘッダを拡張してWebサーバ915が情報を付与してもよいし、別の方法を用いてもよい。結果解析処理部914は、第1の実施の形態と同様に、排他処理を実行後、特権制御付リクエストID状態テーブル922にアクセスし、リクエストIDの状態を確認する。
結果解析処理部914は、リクエストIDに対応するレコードの状態が「処理中」又は「完了」の場合には、第1の実施の形態と同様に処理する。
一方、結果解析処理部914は、リクエストIDに対応するレコードの状態が「特権中」の場合には、既に外部システム904に更新系アクセスが実行されたことを意味している。この場合には、更新特権の有さないリクエストの処理結果がレスポンスとしてクライアント201に返送されると、システムに矛盾を生じさせる。したがって、まず、APサーバ203から受信したレスポンスが更新特権を有するか否かを判定する。レスポンスが更新特権を有さない場合には、結果解析処理部914は実行中の排他処理を中止し、処理を終了する(S1015)。もし、レスポンスが更新特権を有する場合には、第1の実施の形態における、セッション登録処理以降の処理と同様の処理を実行する(S1009、S1010、S1013、S1016、S1017)。
更新特権が付与されたリクエストの処理が特権発動中の場合、更新特権を付与されていないリクエストの処理は、「外部アクセス制御処理部917に更新系アクセスを要求したタイミング」(S1008)、又は「リクエスト処理を完了し、結果解析処理部914にレスポンスを応答したタイミング」(S1015)のいずれかで処理が中止され、枝刈りされる。
ここで、障害発生時の結果解析処理部914の処理手順を以下に説明する。
まず、特権制御付リクエストID状態テーブル922にアクセスし、各リクエストIDの状態を判定する。
リクエストIDの状態が「処理中」の場合には、リトライ処理部913に処理を依頼する。このとき、障害が発生したリクエストに更新特権が付与されていた場合には、リトライされたリクエストにも更新特権を付与する。同様に、障害の発生したリクエストに更新特権が付与されていない場合には、リトライされたリクエストに更新特権を付与しない。以降、APサーバ203の障害が復旧するまで、障害の発生した「サーバID」「リクエストID」の組み合わせによる特権制御付リクエストID状態テーブル922へのアクセスを拒否する。
また、リクエストIDの状態が「完了」の場合には、リトライ処理を実行する必要はない。第1の実施の形態と同様に処理を終了する。
さらに、リクエストIDの状態が「特権中」の場合、障害の発生したリクエストに更新特権が付与されていたか否かを判定する。更新特権が付与されていなかった場合には、すでに更新特権が発動中であるため、リトライ処理を実行する必要はなく、そのまま処理を終了する。更新特権が付与されていた場合には、更新処理中にサーバの障害が発生し、リクエスト処理が完了できなかったことになる。この場合には、まず、外部システム904に対して、対象サーバからのトランザクション処理の失敗を通知し、外部システム904のロールバック処理を実行する。ロールバック処理の成功後、特権制御付リクエストID状態テーブル922にアクセスし、リクエストIDの状態を「特権中」から「処理中」に戻す。さらに、リトライ処理部913にリトライを依頼する。リトライ処理部913は、リトライされるリクエストを送信する場合には、当該リクエストに更新特権を付与する。以降、APサーバ203の障害が復旧するまで、障害の発生した「サーバID」「リクエストID」の組み合わせによる特権制御付リクエストID状態テーブル922へのアクセスを拒否する。
以上の手順によって、外部システムに対する更新アクセスによって矛盾が生じる問題を回避することができる。
本発明の第2の実施の形態では、冗長化されたリクエストを枝刈りするタイミングについて、更新特権を発動するタイミングを特権処理が必要になる最大限まで遅らせている。前述したとおり、Webアプリケーションシステムでは、外部システムへのアクセス処理の大半は参照系アクセスである。したがって、同一のURLに対するリクエストであっても、更新系の処理が必要になる前に参照系のアクセスのみで処理が完了する可能性が高い。第2の実施の形態では、参照系のアクセスが多い場合の応答性能を高めることができる。
また、第2の実施の形態の特徴によれば、第1の実施の形態で前提としていた「URLによって処理中の更新系アクセスの有無が判別可能」というユーザAPの設計に関する制約が無いため、従来システムからの移行性に優れる。
(第3の実施の形態)
本発明の第3の実施の形態では、複数の物理計算機上に複数の仮想計算機を稼働させ、APサーバの冗長性を高めた構成となっている。冗長性を高めるために必要となる物理計算機の台数が削減できるため、設置スペース及び消費電力などの面において、すべての計算機を物理的に用意するよりも現実的なシステム構成となる。
第1の実施の形態及び第2の実施の形態では、サーバの選択方法としてラウンドロビン法を利用していたが、複数の仮想計算機を含むシステム構成に適用するためにラウンドロビン法を拡張したサーバの選択方法を第3の実施の形態では説明する。
図10は、本発明の第3の実施の形態のシステム構成を説明する図である。
仮想計算機とは、一つの物理計算機上に、並列して動作可能な複数の仮想的な計算機をソフトウェアによって構築し、複数のOSなどを同時に実行する技術である。
図10に示す例では、同一の物理計算機上に2台ずつの仮想計算機を作成し、それぞれの仮想計算機上で1つのAPサーバを動作させる構成となっている。
同一の物理計算機上に構築された仮想計算機同士は、それぞれ独立した動作が可能であるが、物理計算機上のネットワークインタフェースカード(NIC)など、リソースの一部を共有して使用する。
したがって、例えば、複数の仮想計算機が動作している物理計算機において、NICが故障するなどの物理的な障害が発生すると、同一の物理計算機上で動作しているすべての仮想計算機に障害の影響が及んでしまうというデメリットがある。
また、共有のリソースを使用するため、同一の物理計算機上で動作している特定の仮想計算機に負荷が集中すると、その他の仮想計算機の性能が悪化するおそれがある。
以上より、同一物理計算機に処理が集中することは、処理性能の悪化及び障害発生時の影響などの問題が生じる可能性がある。そこで、第3の実施の形態では、処理を均等に分散させることを目的として、冗長化したリクエストを処理するサーバを選択する以下のアルゴリズムを導入する。以下のアルゴリズムを物理計算機均等配分ラウンドロビン法とする。
物理計算機均等配分ラウンドロビン法では、まず、物理計算機均等配分テーブル1121を作成する。物理計算機均等配分テーブル1121は、以下の手順で作成される。なお、物理計算機均等配分テーブル1121は、図10に示すように、インテリジェントプロキシ装置202に格納される。
まず、各物理計算機1、2、…nそれぞれで動作している仮想計算機の台数(N1、N2、…、Nn)を求める。次に、N1、N2、…、Nnの最小公倍数Mを算出する。各物理計算機単位でレコード数Mの作業用テーブルT1、T2、…Tnを作成し、テーブルのレコードとして、物理計算機上の仮想計算機で動作するサーバアドレスを、ラウンドロビン方式で順に並べる。次に、物理計算機均等配分テーブル1121として、レコード数M×nのテーブルSを作成し、S[1]=T1[1]、S[2]=T2[1]、…、S[n]=Tn[1]、S[1+n]=T1[2]、S[2+n]=T2[2]…のように、S[i+(j−1)×n]=Ti[j]が成り立つようにT1、T2、…TnのサーバアドレスをテーブルSに登録する。テーブルSを作成した後は、作業用テーブルT1、T2、…、Tnは削除してもよい。
以上の手順によって作成された物理計算機均等配分テーブル1121を作成する手順の一例を図11に示す。
図11は、本発明の第3の実施の形態の物理計算機均等配分テーブル1121を作成する例を示す図である。
図11に示す例では、物理計算機が3台含まれている(n=3)。各計算機には、それぞれ、3、2、2台の仮想計算機が稼働している(N1=3、N2=2、N3=2)。したがって、N1、N2、N3の最小公倍数Mは6である。各物理計算機について、レコード数M(=6)の作業用テーブルT1、T2及びT3を図11に示すように作成する。作業用テーブルT1ではA→B→Cを2回、T2ではD→Eを3回、T3ではF→Gを3回繰り返す内容となる。最後に、T1[1](=A)、T2[1](=D)、T3[1](=F)、T1[2](=B)、…といった順序で、レコード数M×n(=18)のテーブルS、すなわち、物理計算機均等配分テーブル1121に値が格納される。
第3の実施の形態では、作成された物理計算機均等配分テーブル1121を参照し、冗長化されたリクエストを処理するサーバがラウンドロビン方式で選択される。
サーバ選択方法として物理計算機均等配分ラウンドロビン法を適用すると、物理計算機の台数が冗長化の多重度より多い場合、必ず異なる物理計算機上に配置された仮想計算機上で動作するサーバに冗長化したリクエストが送信される。物理計算機の台数が冗長化の多重度より少ない場合においても、必ず異なる物理計算機上で同じリクエストの処理が実行され、また、振り分けられる冗長化したリクエストの量は物理計算機単位で均等に分散される。いずれの場合においても、すべての物理計算機で故障が発生した場合を除いて、常にリクエスト処理を継続することが可能になる。
以上より、本発明の第3の実施の形態によれば、物理計算機均等配分ラウンドロビン法の適用によって、システムの負荷分散と信頼度を最適化することができる。
なお、サーバのメンテナンス及び縮退運転などを容易化するために、図11に示した処理を自動的に実行するツールをあらかじめ用意しておくことが望ましい。システムの構成変更に応じて自動的に物理計算機均等配分テーブル1121を再作成することによって、システム全体を停止させることなく、仮想計算機又は物理計算機の一部リブート、機器入れ替えなどの作業を実行可能とし、運用を容易にすることができる。
なお、物理計算機、仮想計算機、又はAPサーバに障害が発生した場合には、障害の発生したサーバを除いて物理計算機均等配分テーブル1121を再構成するとよい。
また、厳密に処理量を分散する必要が無い場合には、物理計算機均等配分テーブル1121を図11に示したように均等に分散させるようにしなくてもよく、例えば、処理能力の高い物理計算機上の複数の仮想計算機で処理を実行させるようにしてもよい。
第3の実施の形態では、仮想計算機1台につき、1つのAPサーバが動作する場合について示している。仮想計算機1台につき複数台のAPサーバを動作させて冗長化する構成の場合には、前述した物理計算機均等配分テーブル1121の作成方法を拡張し、物理計算機上で分散され、かつ、仮想計算機単位でも分散されるように物理計算機均等配分テーブル1121を作成すればよい。
(第4の実施の形態)
本発明の第4の実施の形態では、第3の実施の形態の各仮想計算機が利用可能なリソース配分に重み付けを加えたものである。近年の仮想計算機及び中央演算処理装置の技術では、各仮想計算機で使用可能なリソースの配分を制御することが可能である。
第4の実施の形態は、リクエストを冗長化する場合に、「主系」「副系」を明確に区別する場合に適している。「主系」の冗長化リクエストを処理するために与えられるリソースの量が、第3の実施の形態と比較して多くなるため、第3の実施の形態よりもシステムの応答性能を向上させることができる。そのかわり、「主系」のリクエストを処理していた仮想計算機又は物理計算機で障害が発生した場合の応答性能は悪化する。したがって、仮想計算機又は物理計算機の故障率などに基づいて、第3の実施の形態又は第4の実施の形態のいずれをシステムに適用するかを判断するとよい。
図12は、本発明の第4の実施の形態のシステム構成を説明する図である。
第4の実施の形態では、各物理計算機で稼働している各仮想計算機が、「主系処理用」又は「副系処理用」に区別される。「主系処理用」の仮想計算機には、「副系処理用」の仮想計算機と比較して、より多くのリソースが配分される。図12に示す例では、仮想計算機1303A及び1303Cが主系処理用、仮想計算機1303B及び1303Dが副系処理用になる。
主系処理用の仮想計算機上で動作しているAPサーバを主系処理用のAPサーバ、副系処理用の仮想計算機上で動作しているAPサーバを副系処理用のAPサーバとする。図12の例では、APサーバ1304A及び1304Cが主系処理用、APサーバ1304B及び1304Dが副系処理用になる。
第4の実施の形態では、図12に示すように、主系処理用のAPサーバの主系テーブル1321と副系処理用のAPサーバの副系テーブル1322をそれぞれ用意する。主系テーブル1321及び副系テーブル1322の作成方法は、第3の実施の形態に示した方法を採用し、同一物理計算機に対する同一リクエストの分散を図るようにする。
リクエスト冗長化制御部1312は、リクエストを冗長化する際、冗長化されたリクエストの一つを「主系」リクエスト、残りを「副系」リクエストとみなす。「主系」リクエストを処理するサーバのアドレスを主系テーブル1321からラウンドロビン法で選択する。「副系」リクエストを処理するサーバのアドレスを副系テーブル1322からラウンドロビン法で選択する。
この場合、2つのテーブルからラウンドロビンでAPサーバを選択するため、同一物理計算機に対する同一リクエストの分散が厳密に実施されない場合がある。厳密に分散する場合には、「副系」リクエストを処理するサーバの選択方法として、「主系」と同一の物理計算機を除外したテーブルを物理計算機ごとに作成し、「副系」を選択する場合に「主系」で使用する物理計算機が除外された副系テーブルを参照するようにしてもよい。
また、第1の実施の形態のように、リクエストURLに基づいて外部システムに対する更新系アクセスの有無を判別可能な場合には、更新系アクセスを含むリクエストでは「主系」リクエスト1つに絞って処理するとよい。
さらに、第2の実施の形態のようにリクエストURLから外部システムへの更新系アクセスの有無が分からない場合には、常に「主系」リクエストに更新特権を与えるとよい。
本発明の第4の実施の形態によれば、システム負荷が小さい場合の応答性能は、従来の負荷分散機システムよりも優れている。また、APサーバを選択するためのアルゴリズムが単純であるため、負荷分散機におけるサーバ選択処理にかかる負荷も小さくすることができる。
さらに、本発明の第4の実施の形態によれば、大半のレスポンス結果は「主系」リクエストを処理したAPサーバから得られるようになる。したがって、あるリクエスト処理において、「主系」の一つのサーバからのレスポンス処理が完了した時点で「副系」で処理されている同一リクエスト処理をキャンセルするような処理を含めてもよい。具体的には、副系を処理している仮想計算機をすべて再起動するような単純な方法であってもよいし、当該リクエストを処理するプロセスを中止させる方法であってもよい。
(第5の実施の形態)
本発明の第5の実施の形態では、第3の実施の形態又は第4の実施の形態に、リクエストを冗長化させる多重度を動的に決定する処理を追加した形態である。
リクエストを処理するために使用が許可されるリソースの量は、レスポンス性能に直結する。リクエストの多重度を大きくしてリソース量を多くすると、処理能力の高いサーバに処理される可能性が高まるため、クライアントに対する応答性能が早くなる。一方、多重度を大きくすると、別のリクエストを処理するためのリソース量が制限されるため、別のリクエストの応答性能が低下する。したがって、すべてのリクエストに対して多重度を大きくすればよいわけではない。
そこで、第5の実施の形態では、リクエスト冗長化制御部1412において、多重度を動的に制御する多重度決定処理部1413を備えている。
図13は、本発明の第5の実施の形態のシステム構成を説明する図である。
本発明の第5の実施の形態では、前述したように、リクエスト冗長化制御部1412に多重度を動的に制御する多重度決定処理部1413を備える。多重度決定処理部1413は、APサーバが実行される計算機のリソース量などに基づいて、リクエストを冗長化する多重度を決定する。以下に、多重度決定処理部1413によって多重度を決定する3つの例について説明する。
(A)リクエストURLの重要度に基づいた多重度動的決定方法
図14は、本発明の第5の実施の形態のリクエストURLの重要度に基づいた多重度動的決定方法を実行するための構成を示す図である。
リクエストURLの重要度に基づいた多重度動的決定方法では、インテリジェントプロキシ装置202に、リクエストURLの重要度を表したURL重要度テーブル1521が格納される。
URL重要度テーブル1521は、システム管理者によって作成され、URLごとに重要度が規定されている。そして、重要度が高いと判定されたリクエストにマッチした場合には、冗長化の多重度を大きくすることによって、信頼性を向上させる。また、重要度が低いと判定された場合には、他のリクエストを処理するために使用されるリソースが増加するように多重度を小さくする。
リクエストURLの重要度に基づいた多重度動的決定方法は、クライアントからリクエストされるURLに対し、受信したリクエストの重要度があらかじめ認識されている場合に適用される。URL重要度テーブル1521は、第1の実施の形態で説明したURL単位の更新系アクセス有無定義テーブル222を拡張したものである。
URL重要度テーブル1521は、クライアント201から送信されたリクエストに対応するURLについて、リクエストの重要度を対応させたものである。重要度の情報としては、例えば、「高」「中」「低」「更新有」などの情報が格納される。
リクエスト冗長化制御部1512は、第1の実施の形態のリクエスト冗長化制御部212が拡張されている。具体的には、第1の実施の形態では、リクエスト冗長化制御部212は「更新有」なら多重度を1、そうでなければ複数の多重度に設定していたが、リクエスト冗長化制御部1512は、「更新有」の場合に1を、それ以外の場合には重要度に応じて多重度が高くなるように段階的に設定する。多重度を決定するために用いられる関数は、重要度に応じて多重度が高くなるように段階的に設定するものであれば、どのような関数であってもよい。
このように、クライアント201から送信されたリクエストのリクエストURLに対応する重要度に応じて、リクエスト冗長化の多重度を変化させることができる。
また、URL重要度テーブル1521には、「高」「中」「低」などの情報ではなく、リクエストURLに対応した多重度の数値を直接設定してもよい。
さらに、リクエストURLの重要度に基づいた多重度動的決定方法は、前述した第2の実施の形態に対しても適用可能である。ただし、リクエストURLに基づいて更新系アクセス要求の有無を判定できない構成であり、URL重要度テーブル1521に「更新有」が設定されないため、常に多重度は2以上の値になる。
(B)システム負荷状態に基づいた多重度動的決定方法
システム全体の負荷が高い状態で、多重度の高い冗長化リクエストを処理させようとすると、さらにシステム全体の負荷が高くなるため、応答性能が悪化する可能性がある。そこで、「システム全体の負荷が高い場合には多重度を低く」「システム全体の負荷が低い場合には多重度を高く」するように、システム全体の負荷状態に応じて多重度を動的に制御する。
図15は、本発明の第5の実施の形態のシステム負荷状態に基づいた多重度動的決定方法を説明する図である。
インテリジェントプロキシ装置202は、システム内部の冗長化リクエストの送受信を制御する。したがって、インテリジェントプロキシ装置202に冗長化リクエストの送受信数を計測する処理中リクエスト総数カウンタ1621を追加することによって、現在、APサーバで処理されているリクエストの総数を取得することができる。
図15に示すインテリジェントプロキシ装置202には、処理中リクエスト総数カウンタ1621及びAPサーバ総数カウンタ1622が含まれる。処理中リクエスト総数カウンタ1621は、現在処理中のリクエスト総数を格納する。また、APサーバ総数カウンタ1622は、故障していない、稼動中のAPサーバの台数を格納する。
リクエスト冗長化制御部1611は、クライアント201から受信したリクエストを冗長化すると、処理中リクエスト総数カウンタ1621の値に冗長化されたリクエストの個数を加算する。結果解析処理部1614は、1つの処理結果を受信した場合に、処理中リクエスト総数カウンタ1621の値を1減算する。リトライ処理部1613は、リクエストをリトライする場合に、処理中リクエスト総数カウンタ1621の値を1加算する。
ここで、システム全体の負荷は、処理中リクエスト総数カウンタ1621の値と、APサーバ総数カウンタ1622の値の比率から概算する。多重度決定処理部1612は、負荷が大きい場合は2に近く、負荷が小さい場合は可能な限り大きい値になるように、冗長化するリクエストの多重度を制御する。
多重度を決定する関数は、上記の性質を満たすものであればどのようなものでもよく、例えば、「リクエスト処理していない余剰なAPサーバがある場合には、余剰なAPサーバの半数を多重度として設定し、システム負荷の高い状態では多重度を2に設定する」といった関数を使用することができる。具体的には、以下に示す式の通りである。
多重度M = max(2,ceiling((Z−Y)÷2))
ここで、Yは処理中リクエスト総数カウンタ1621の値、ZはAPサーバ総数カウンタ1622の値である。max(x,y)は2つの値x、yのうち大きい方の値を表す関数である。ceiling(x)は天井関数であり、xの切り上げ値を表す。
以上により、システム全体の負荷状態に基づいて、多重度を動的に制御することが可能となる。
(C)「更新系アクセスの発生しやすさ」に基づいた多重度動的決定方法
第2の実施の形態によるリクエストの枝刈り方法では、更新系アクセスが発生した時点で、冗長化されたリクエストは自動的に枝刈り対象となり、最終的に処理されるのは更新特権を持つリクエストのみとなる。
したがって、冗長化の多重度を決定する前の段階で更新系リクエストが発生する可能性が高いことを認識可能な場合には、可能な限り更新特権を持たない冗長化リクエストの多重度を小さくすることが望ましい。
また、第2の実施の形態で前提としたように、通常のAPサーバシステムでは、入力データであるURLから更新系アクセスが発生するかどうかを判定することは困難である。しかし、リクエスト処理結果の統計的な情報に基づいて、特定のURLについて、リクエストを処理する過程における更新系アクセスの発生のしやすさを推定することは可能である。リクエスト処理結果の統計的な情報に基づいて冗長化の多重度を制御する方法を図16〜図18を参照しながら説明する。
図16は、本発明の第5の実施の形態の統計情報に基づいた多重度動的決定方法を実現するための構成を示す図である。
本発明の第5の実施の形態では、インテリジェントプロキシ処理部211に機械学習処理部1715、機械学習の結果を格納した統計情報テーブル1721、及び統計情報テーブル1721に基づいて「更新系アクセスの発生しやすさ」を判定する判定処理部1713が含まれる。
また、第2の実施の形態では、更新系アクセスが発生した時点で特権制御付リクエストID状態テーブル922に更新系アクセスの発生が通知される。特権制御付リクエストID状態テーブル922を利用することによって、リクエスト処理が完了した場合に、当該リクエストURLを処理した過程で、外部システムへの更新系アクセスが発生したか否かを認識することができる。
結果解析処理部1714は、第2の実施の形態の結果解析処理部914を拡張したものである。拡張された処理について、手順を図17に示す。
図17は、本発明の第5の実施の形態の結果解析処理部1714の特権制御付リクエストID状態テーブル922の状態を「完了」に変更する処理手順を示すフローチャートである。
インテリジェントプロキシ装置202のCPU321は、結果解析処理部1714によって、特権制御付リクエストID状態テーブル922の状態を「完了」に変更する場合に、まず、処理対象のリクエストIDに基づいて、特権制御付リクエストID状態テーブル922を検索する(S1801)。
インテリジェントプロキシ装置202のCPU321は、検索されたレコードの変更前の状態が「特権中」であるか否かを判定する(S1802)。変更前の状態が「特権中」の場合には(S1802の結果が「Yes」)、リクエストURLで更新系アクセスが発生したことを、機械学習処理部1715に通知する(S1803、S1805)。変更前の状態が「特権中」でない場合には(S1802の結果が「No」)、リクエストURLで更新系アクセスが発生しなかったことを、機械学習処理部1715に通知する(S1804、S1805)。最後に、インテリジェントプロキシ装置202のCPU321は、結果解析処理部1714によって、特権制御付リクエストID状態テーブル922の状態を「完了」に変更する(S1806)。その後の処理については、第1の実施の形態の結果解析処理部914による処理と同じである。
インテリジェントプロキシ装置202のCPU321は、機械学習処理部1715によって、結果解析処理部1714によって通知された情報を学習データとして、リクエストURLに対する更新系アクセスの発生しやすさを統計的学習手法によって学習する。
機械学習処理部1715による統計的学習手法は、単純に各URLに対するカウンタを設置してURLごとの更新系アクセスの発生頻度を計算してもよいし、URL文字列をN−gramなどによってベクトル化し、サポートベクタマシン又はニューラルネットワークなどによる、高度な機械学習を適用してもよい。前者の場合は未知のURLに対するリクエストを正しく判別することはできないが、後者の場合には、未知のURLに対するリクエストの場合でも、より良い推定結果を得られる可能性がある。
本発明の第5の実施の形態では、統計的学習を利用しているため、「絶対に更新系アクセスが発生しない」と断言することはできない。したがって、多重度決定処理部1712は、処理対象のリクエストについて最低でも2以上の多重度を与える。
リクエスト冗長化制御部1711は、第2の実施の形態のリクエスト冗長化制御部912が拡張されたものである。拡張された処理について手順を図18に示す。
図18は、本発明の第5の実施の形態のリクエスト冗長化制御部1711の多重度決定の処理手順を示すフローチャートである。
インテリジェントプロキシ装置202のCPU321は、クライアント201からのリクエストを受け付けると(S1901)、判定処理部1713に問い合わせることによって、当該リクエストURLで更新系アクセスが発生しやすいか示す情報を取得する(S1902)。判定処理部1713は、機械学習結果が格納されている統計情報テーブル1721に基づいて、リクエストURLに対する「更新系らしさ」を算出する。
インテリジェントプロキシ装置202のCPU321は、多重度決定処理部1712によって、算出された数値データに基づいて、「更新系アクセスが発生しやすい」場合には多重度を2に近い値に、「参照系アクセスが発生しやすい」場合には多重度をより大きな値に設定する(S1903)。
多重度決定処理部1712が多重度を決定するために用いる関数は、「更新系アクセスが発生しやすい」場合には多重度を2に近い値に、「参照系アクセスが発生しやすい」場合には多重度を大きくするものであれば、どのような関数を用いてもよい。例えば、更新系アクセスの発生しやすさが閾値以上の場合には多重度を2に、閾値以下の場合には前述した(A)リクエストURLの重要度に基づいた多重度動的決定方法、又は(B)システム負荷状態に基づいた多重度動的決定方法を用いるようにしてもよい。
多重度決定処理部1712によって多重度が決定された後の処理は、第2の実施の形態のリクエスト冗長化制御部912と同じである。
以上より、リクエストURLに応じて「更新系アクセスの発生しやすさ」を学習することによって、冗長化されるリクエストについて、より適正な多重度を取得することができる。
本発明の第5の実施の形態によれば、リクエストを処理するAPサーバの負荷などに基づいて、冗長化されるリクエストの多重度を決定することができる。したがって、リクエストに更新系アクセスが発生しやすい場合、システムの負荷状況などに応じて適正な多重度を決定することが可能となる。
本発明の第1の実施の形態の計算機システムの物理構成図である。 本発明の第1の実施の形態のセッション管理の概要を説明する図であって、セッション情報を登録する手順を説明する図である。 本発明の第1の実施の形態のセッション管理の概要を説明する図であって、リクエストの処理結果をクライアントに送信する手順を説明する図である。 本発明の第1の実施の形態のクライアントから受け付けた処理要求に応答する手順を示すフローチャートである。 本発明の第1の実施の形態の更新系アクセスを含むリクエストの多重度を単一にする手順を示すフローチャートである。 本発明の第1の実施の形態のシステム構成を説明する図である。 本発明の第1の実施の形態のクライアントからのリクエストを処理する手順を示すシーケンス図である。 本発明の第2の実施の形態のシステム構成を説明する図である。 本発明の第2の実施の形態のクライアントからの要求を処理し、外部システムに対するアクセスを制御する手順を示すシーケンス図である。 本発明の第3の実施の形態のシステム構成を説明する図である。 本発明の第3の実施の形態の物理計算機均等配分テーブルを作成する例を示す図である。 本発明の第4の実施の形態のシステム構成を説明する図である。 本発明の第5の実施の形態のシステム構成を説明する図である。 本発明の第5の実施の形態のリクエストURLの重要度に基づいた多重度動的決定方法を実行するための構成を示す図である。 本発明の第5の実施の形態のシステム負荷状態に基づいた多重度動的決定方法を説明する図である。 本発明の第5の実施の形態の統計情報に基づいた多重度動的決定方法を実現するための構成を示す図である。 本発明の第5の実施の形態の結果解析処理部の特権制御付リクエストID状態テーブルの状態を「完了」に変更する処理手順を示すフローチャートである。 本発明の第5の実施の形態のリクエスト冗長化制御部の処理手順を示すフローチャートである。
符号の説明
201 クライアント
202 インテリジェントプロキシ装置
203 APサーバ
204 セッション管理処理部
205 データベースサーバ装置
211 インテリジェントプロキシ処理部
212、912、1312、1412、1512、1611、1711 リクエスト冗長化制御部
213、913、1613 リトライ処理部
214、914、1614、1714 結果解析処理部
215、915 Webサーバ
216、916 ユーザAP
217 セッション獲得処理部
218 セッション登録処理部
219 コミット処理部
221 サーバアドレステーブル
222 更新系アクセス有無定義テーブル
223 リクエストID状態テーブル
224 バッファテーブル
225 セッション記憶データベース
917 外部アクセス制御処理部
918 アクセス判別処理部
919 特権付与処理部
922 特権制御付リクエストID状態テーブル
1121 物理計算機均等配分テーブル
1321 主系テーブル
1322 副系テーブル
1413、1612、1712 多重度決定処理部
1521 URL重要度テーブル
1621 処理中リクエスト総数カウンタ
1622 APサーバ総数カウンタ
1713 判定処理部
1715 機械学習処理部
1721 統計情報テーブル

Claims (10)

  1. 業務処理を要求するリクエストを送信するクライアントと、前記リクエストを処理する複数のアプリケーションサーバと、前記リクエストを受信し、前記アプリケーションサーバに送信するプロキシ装置と、前記リクエストを管理するセッション管理装置とを含む計算機システムにおいて、前記リクエストを処理する方法であって、
    前記プロキシ装置は、第1インタフェース、前記第1インタフェースに接続される第1プロセッサ、及び前記第1プロセッサに接続される第1メモリを備え、
    前記アプリケーションサーバは、第2インタフェース、前記第2インタフェースに接続される第2プロセッサ、及び前記第2プロセッサに接続される第2メモリを備え、
    前記プロキシ装置は、前記クライアントから送信されたリクエストを冗長化し、前記冗長化されたリクエストを各アプリケーションサーバに送信し、
    前記各アプリケーションサーバは、前記冗長化されたリクエストの処理結果を前記プロキシ装置に送信し、
    前記各アプリケーションサーバは、前記アプリケーションサーバの識別子及び前記冗長化されたリクエストの識別子を含むセッション情報を前記セッション管理装置に通知し、
    前記プロキシ装置は、前記冗長化されたリクエストの処理結果を受信すると、前記クライアントに応答する処理結果を決定し、
    前記プロキシ装置は、前記決定された処理結果を送信したアプリケーションサーバの識別子及び前記クライアントから送信されたリクエストの識別子を前記セッション管理装置に通知することを特徴とするリクエスト処理方法。
  2. 前記アプリケーションサーバは、前記業務処理で利用されるデータを格納する外部サーバにアクセスし、
    前記プロキシ装置は、前記クライアントから送信されたリクエストに前記外部サーバに格納されたデータの更新要求が含まれる場合には、前記冗長化されたリクエストの中で最初に更新処理が完了したリクエスト以外のリクエストの処理を中止することを特徴とする請求項1に記載のリクエスト処理方法。
  3. 前記アプリケーションサーバは、前記業務処理で利用されるデータを格納する外部サーバにアクセスし、
    前記プロキシ装置は、
    前記冗長化されたリクエストから一つのリクエストを選択し、
    前記選択されたリクエストに更新特権を付与し、
    前記クライアントから送信されたリクエストによって、前記外部サーバに格納されたデータを更新する処理が実行される場合には、前記更新特権が付与されていないリクエストの処理を中止することを特徴とする請求項1に記載のリクエスト処理方法。
  4. 前記アプリケーションサーバは、前記アプリケーションサーバの計算機資源を論理的に分割することによって仮想計算機を提供し、
    前記冗長化されたリクエストは、前記仮想計算機によって処理されることを特徴とする請求項1に記載のリクエスト処理方法。
  5. 前記プロキシ装置は、前記冗長化されるリクエストを処理する仮想計算機を選択する順序を含む計算機配分情報を管理し、
    前記計算機配分情報は、前記仮想計算機を提供するアプリケーションサーバが均等に分散されるように、前記仮想計算機の選択順序が設定されていることを特徴とする請求項4に記載のリクエスト処理方法。
  6. 前記仮想計算機は、前記主系計算機と、前記主系計算機より処理能力の低い副系計算機とに分類され、
    前記プロキシ装置は、一台の前記主系計算機と、少なくとも一台の前記副系計算機とを選択し、前記選択された主系計算機及び副系計算機に前記冗長化されたリクエストを送信することを特徴とする請求項4に記載のリクエスト処理方法。
  7. 前記プロキシ装置は、
    前記アプリケーションサーバの負荷情報を管理し、
    前記負荷情報に基づいて、前記冗長化されたリクエストの多重度を決定することを特徴とすることを特徴とする請求項1に記載のリクエスト処理方法。
  8. 前記プロキシ装置は、
    前記クライアントから送信されたリクエストに含まれるアクセス先情報ごとに、前記外部サーバに格納されたデータが更新されたか否かを含む情報を蓄積し、
    前記蓄積された情報に基づいて、前記冗長化されたリクエストの多重度を決定することを特徴とすることを特徴とする請求項1に記載のリクエスト処理方法。
  9. 業務処理を要求するリクエストを送信するクライアントと、前記リクエストを処理する複数のアプリケーションサーバと、前記リクエストを受信し、前記アプリケーションサーバに送信するプロキシ装置と、前記リクエストを管理するセッション管理装置とを含む計算機システムにおいて、前記リクエストを処理する方法であって、
    前記プロキシ装置は、第1インタフェース、前記第1インタフェースに接続される第1プロセッサ、及び前記第1プロセッサに接続される第1メモリを備え、
    前記アプリケーションサーバは、第2インタフェース、前記第2インタフェースに接続される第2プロセッサ、及び前記第2プロセッサに接続される第2メモリを含む計算機資源を備え、前記計算機資源を論理的に分割することによって仮想計算機を提供し、
    前記プロキシ装置は、前記クライアントから送信されたリクエストを冗長化し、前記冗長化されたリクエストを各アプリケーションサーバによって提供される仮想計算機に送信し、
    前記各仮想計算機は、前記冗長化されたリクエストの処理結果を前記プロキシ装置に送信し、
    前記各仮想計算機は、前記仮想計算機の識別子及び前記冗長化されたリクエストの識別子を含むセッション情報を前記セッション管理装置に通知し、
    前記プロキシ装置は、前記冗長化されたリクエストの処理結果を受信すると、前記クライアントに応答する処理結果を決定し、
    前記プロキシ装置は、前記決定された処理結果を送信した仮想計算機の識別子及び前記クライアントから送信されたリクエストの識別子を前記セッション管理装置に通知することを特徴とするリクエスト処理方法。
  10. 業務処理を要求するリクエストを送信するクライアントと、前記リクエストを処理する複数のアプリケーションサーバと、前記リクエストを受信し、前記アプリケーションサーバに送信するプロキシ装置と、前記リクエストを管理するセッション管理装置とを含む計算機システムであって、
    前記プロキシ装置は、第1インタフェース、前記第1インタフェースに接続される第1プロセッサ、及び前記第1プロセッサに接続される第1メモリを備え、
    前記アプリケーションサーバは、第2インタフェース、前記第2インタフェースに接続される第2プロセッサ、及び前記第2プロセッサに接続される第2メモリを備え、
    前記プロキシ装置は、前記クライアントから送信されたリクエストを冗長化し、前記冗長化されたリクエストを各アプリケーションサーバに送信し、
    前記各アプリケーションサーバは、前記冗長化されたリクエストの処理結果を前記プロキシ装置に送信し、
    前記各アプリケーションサーバは、前記アプリケーションサーバの識別子及び前記冗長化されたリクエストの識別子を含むセッション情報を前記セッション管理装置に通知し、
    前記プロキシ装置は、前記冗長化されたリクエストの処理結果を受信すると、前記クライアントに応答する処理結果を決定し、
    前記プロキシ装置は、前記決定された処理結果を送信したアプリケーションサーバの識別子及び前記クライアントから送信されたリクエストの識別子を前記セッション管理装置に通知することを特徴とする計算機システム。
JP2008207704A 2008-08-12 2008-08-12 リクエスト処理方法及び計算機システム Expired - Fee Related JP4722973B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008207704A JP4722973B2 (ja) 2008-08-12 2008-08-12 リクエスト処理方法及び計算機システム
US12/366,759 US7937437B2 (en) 2008-08-12 2009-02-06 Method and apparatus for processing a request using proxy servers

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008207704A JP4722973B2 (ja) 2008-08-12 2008-08-12 リクエスト処理方法及び計算機システム

Publications (2)

Publication Number Publication Date
JP2010044552A true JP2010044552A (ja) 2010-02-25
JP4722973B2 JP4722973B2 (ja) 2011-07-13

Family

ID=41682021

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008207704A Expired - Fee Related JP4722973B2 (ja) 2008-08-12 2008-08-12 リクエスト処理方法及び計算機システム

Country Status (2)

Country Link
US (1) US7937437B2 (ja)
JP (1) JP4722973B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130078300A (ko) * 2011-12-30 2013-07-10 주식회사 케이티 단말로부터 요청된 가상 어플리케이션을 실행하는 서버 및 방법, 그리고 단말
JP2018504862A (ja) * 2014-12-18 2018-02-15 イプコ 2012 リミテッドIpco 2012 Limited 電子メッセージを受信するためのシステム、方法及びコンピュータプログラム製品
US10708213B2 (en) 2014-12-18 2020-07-07 Ipco 2012 Limited Interface, method and computer program product for controlling the transfer of electronic messages
US10963882B2 (en) 2014-12-18 2021-03-30 Ipco 2012 Limited System and server for receiving transaction requests
US11080690B2 (en) 2014-12-18 2021-08-03 Ipco 2012 Limited Device, system, method and computer program product for processing electronic transaction requests
JP7434040B2 (ja) 2020-04-09 2024-02-20 株式会社東芝 料金所機器、情報処理装置、料金収受方法、料金収受プログラム及び料金収受システム

Families Citing this family (122)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8185891B2 (en) 2007-05-14 2012-05-22 Red Hat, Inc. Methods and systems for provisioning software
US8561058B2 (en) * 2007-06-20 2013-10-15 Red Hat, Inc. Methods and systems for dynamically generating installation configuration files for software
US8464247B2 (en) * 2007-06-21 2013-06-11 Red Hat, Inc. Methods and systems for dynamically generating installation configuration files for software
US8713177B2 (en) 2008-05-30 2014-04-29 Red Hat, Inc. Remote management of networked systems using secure modular platform
US8275830B2 (en) 2009-01-28 2012-09-25 Headwater Partners I Llc Device assisted CDR creation, aggregation, mediation and billing
US8924543B2 (en) 2009-01-28 2014-12-30 Headwater Partners I Llc Service design center for device assisted services
US8589541B2 (en) 2009-01-28 2013-11-19 Headwater Partners I Llc Device-assisted services for protecting network capacity
US8406748B2 (en) 2009-01-28 2013-03-26 Headwater Partners I Llc Adaptive ambient services
US8346225B2 (en) 2009-01-28 2013-01-01 Headwater Partners I, Llc Quality of service for device assisted services
US8924469B2 (en) 2008-06-05 2014-12-30 Headwater Partners I Llc Enterprise access control and accounting allocation for access networks
US8898293B2 (en) 2009-01-28 2014-11-25 Headwater Partners I Llc Service offer set publishing to device agent with on-device service selection
US8635335B2 (en) 2009-01-28 2014-01-21 Headwater Partners I Llc System and method for wireless network offloading
US20100192207A1 (en) 2009-01-28 2010-07-29 Gregory G. Raleigh Virtual service provider systems
US8391834B2 (en) 2009-01-28 2013-03-05 Headwater Partners I Llc Security techniques for device assisted services
US8340634B2 (en) 2009-01-28 2012-12-25 Headwater Partners I, Llc Enhanced roaming services and converged carrier networks with device assisted services and a proxy
US8725123B2 (en) 2008-06-05 2014-05-13 Headwater Partners I Llc Communications device with secure data path processing agents
US8548428B2 (en) 2009-01-28 2013-10-01 Headwater Partners I Llc Device group partitions and settlement platform
US8832777B2 (en) 2009-03-02 2014-09-09 Headwater Partners I Llc Adapting network policies based on device service processor configuration
US8626115B2 (en) 2009-01-28 2014-01-07 Headwater Partners I Llc Wireless network service interfaces
US8402111B2 (en) 2009-01-28 2013-03-19 Headwater Partners I, Llc Device assisted services install
US9100297B2 (en) * 2008-08-20 2015-08-04 Red Hat, Inc. Registering new machines in a software provisioning environment
US8930512B2 (en) * 2008-08-21 2015-01-06 Red Hat, Inc. Providing remote software provisioning to machines
US9477570B2 (en) * 2008-08-26 2016-10-25 Red Hat, Inc. Monitoring software provisioning
US8838827B2 (en) 2008-08-26 2014-09-16 Red Hat, Inc. Locating a provisioning server
US8793683B2 (en) * 2008-08-28 2014-07-29 Red Hat, Inc. Importing software distributions in a software provisioning environment
US20100058327A1 (en) * 2008-08-28 2010-03-04 Dehaan Michael Paul Methods and systems for providing customized actions related to software provisioning
US9021470B2 (en) * 2008-08-29 2015-04-28 Red Hat, Inc. Software provisioning in multiple network configuration environment
US9164749B2 (en) * 2008-08-29 2015-10-20 Red Hat, Inc. Differential software provisioning on virtual machines having different configurations
US8527578B2 (en) * 2008-08-29 2013-09-03 Red Hat, Inc. Methods and systems for centrally managing multiple provisioning servers
US9952845B2 (en) * 2008-08-29 2018-04-24 Red Hat, Inc. Provisioning machines having virtual storage resources
US9111118B2 (en) * 2008-08-29 2015-08-18 Red Hat, Inc. Managing access in a software provisioning environment
US8103776B2 (en) 2008-08-29 2012-01-24 Red Hat, Inc. Systems and methods for storage allocation in provisioning of virtual machines
US8244836B2 (en) * 2008-08-29 2012-08-14 Red Hat, Inc. Methods and systems for assigning provisioning servers in a software provisioning environment
US8612968B2 (en) * 2008-09-26 2013-12-17 Red Hat, Inc. Methods and systems for managing network connections associated with provisioning objects in a software provisioning environment
US8326972B2 (en) * 2008-09-26 2012-12-04 Red Hat, Inc. Methods and systems for managing network connections in a software provisioning environment
US8898305B2 (en) 2008-11-25 2014-11-25 Red Hat, Inc. Providing power management services in a software provisioning environment
US9124497B2 (en) * 2008-11-26 2015-09-01 Red Hat, Inc. Supporting multiple name servers in a software provisioning environment
US8775578B2 (en) * 2008-11-28 2014-07-08 Red Hat, Inc. Providing hardware updates in a software environment
US8832256B2 (en) * 2008-11-28 2014-09-09 Red Hat, Inc. Providing a rescue Environment in a software provisioning environment
US8782204B2 (en) 2008-11-28 2014-07-15 Red Hat, Inc. Monitoring hardware resources in a software provisioning environment
US10248996B2 (en) 2009-01-28 2019-04-02 Headwater Research Llc Method for operating a wireless end-user device mobile payment agent
US11985155B2 (en) 2009-01-28 2024-05-14 Headwater Research Llc Communications device with secure data path processing agents
US9578182B2 (en) 2009-01-28 2017-02-21 Headwater Partners I Llc Mobile device and service management
US10783581B2 (en) 2009-01-28 2020-09-22 Headwater Research Llc Wireless end-user device providing ambient or sponsored services
US10064055B2 (en) 2009-01-28 2018-08-28 Headwater Research Llc Security, fraud detection, and fraud mitigation in device-assisted services systems
US8606911B2 (en) 2009-03-02 2013-12-10 Headwater Partners I Llc Flow tagging for service policy implementation
US9647918B2 (en) 2009-01-28 2017-05-09 Headwater Research Llc Mobile device and method attributing media services network usage to requesting application
US9858559B2 (en) 2009-01-28 2018-01-02 Headwater Research Llc Network service plan design
US9954975B2 (en) 2009-01-28 2018-04-24 Headwater Research Llc Enhanced curfew and protection associated with a device group
US10264138B2 (en) 2009-01-28 2019-04-16 Headwater Research Llc Mobile device and service management
US9955332B2 (en) 2009-01-28 2018-04-24 Headwater Research Llc Method for child wireless device activation to subscriber account of a master wireless device
US8351898B2 (en) 2009-01-28 2013-01-08 Headwater Partners I Llc Verifiable device assisted service usage billing with integrated accounting, mediation accounting, and multi-account
US11218854B2 (en) 2009-01-28 2022-01-04 Headwater Research Llc Service plan design, user interfaces, application programming interfaces, and device management
US9392462B2 (en) 2009-01-28 2016-07-12 Headwater Partners I Llc Mobile end-user device with agent limiting wireless data communication for specified background applications based on a stored policy
US8793758B2 (en) 2009-01-28 2014-07-29 Headwater Partners I Llc Security, fraud detection, and fraud mitigation in device-assisted services systems
US9270559B2 (en) 2009-01-28 2016-02-23 Headwater Partners I Llc Service policy implementation for an end-user device having a control application or a proxy agent for routing an application traffic flow
US9572019B2 (en) 2009-01-28 2017-02-14 Headwater Partners LLC Service selection set published to device agent with on-device service selection
US9609510B2 (en) 2009-01-28 2017-03-28 Headwater Research Llc Automated credential porting for mobile devices
US10326800B2 (en) 2009-01-28 2019-06-18 Headwater Research Llc Wireless network service interfaces
US8745191B2 (en) 2009-01-28 2014-06-03 Headwater Partners I Llc System and method for providing user notifications
US9557889B2 (en) 2009-01-28 2017-01-31 Headwater Partners I Llc Service plan design, user interfaces, application programming interfaces, and device management
US9253663B2 (en) 2009-01-28 2016-02-02 Headwater Partners I Llc Controlling mobile device communications on a roaming network based on device state
US10841839B2 (en) 2009-01-28 2020-11-17 Headwater Research Llc Security, fraud detection, and fraud mitigation in device-assisted services systems
US10200541B2 (en) 2009-01-28 2019-02-05 Headwater Research Llc Wireless end-user device with divided user space/kernel space traffic policy system
US10484858B2 (en) 2009-01-28 2019-11-19 Headwater Research Llc Enhanced roaming services and converged carrier networks with device assisted services and a proxy
US9706061B2 (en) 2009-01-28 2017-07-11 Headwater Partners I Llc Service design center for device assisted services
US10237757B2 (en) 2009-01-28 2019-03-19 Headwater Research Llc System and method for wireless network offloading
US9565707B2 (en) 2009-01-28 2017-02-07 Headwater Partners I Llc Wireless end-user device with wireless data attribution to multiple personas
US10779177B2 (en) 2009-01-28 2020-09-15 Headwater Research Llc Device group partitions and settlement platform
US10492102B2 (en) 2009-01-28 2019-11-26 Headwater Research Llc Intermediate networking devices
US10715342B2 (en) 2009-01-28 2020-07-14 Headwater Research Llc Managing service user discovery and service launch object placement on a device
US8893009B2 (en) 2009-01-28 2014-11-18 Headwater Partners I Llc End user device that secures an association of application to service policy with an application certificate check
US10798252B2 (en) 2009-01-28 2020-10-06 Headwater Research Llc System and method for providing user notifications
US9980146B2 (en) 2009-01-28 2018-05-22 Headwater Research Llc Communications device with secure data path processing agents
US9351193B2 (en) 2009-01-28 2016-05-24 Headwater Partners I Llc Intermediate networking devices
US10057775B2 (en) 2009-01-28 2018-08-21 Headwater Research Llc Virtualized policy and charging system
US11973804B2 (en) 2009-01-28 2024-04-30 Headwater Research Llc Network service plan design
US9755842B2 (en) 2009-01-28 2017-09-05 Headwater Research Llc Managing service user discovery and service launch object placement on a device
US8402123B2 (en) * 2009-02-24 2013-03-19 Red Hat, Inc. Systems and methods for inventorying un-provisioned systems in a software provisioning environment
US9727320B2 (en) * 2009-02-25 2017-08-08 Red Hat, Inc. Configuration of provisioning servers in virtualized systems
US20100217944A1 (en) * 2009-02-26 2010-08-26 Dehaan Michael Paul Systems and methods for managing configurations of storage devices in a software provisioning environment
US8413259B2 (en) * 2009-02-26 2013-04-02 Red Hat, Inc. Methods and systems for secure gated file deployment associated with provisioning
US8892700B2 (en) * 2009-02-26 2014-11-18 Red Hat, Inc. Collecting and altering firmware configurations of target machines in a software provisioning environment
US8572587B2 (en) * 2009-02-27 2013-10-29 Red Hat, Inc. Systems and methods for providing a library of virtual images in a software provisioning environment
US8640122B2 (en) * 2009-02-27 2014-01-28 Red Hat, Inc. Systems and methods for abstracting software content management in a software provisioning environment
US8990368B2 (en) * 2009-02-27 2015-03-24 Red Hat, Inc. Discovery of network software relationships
US9411570B2 (en) * 2009-02-27 2016-08-09 Red Hat, Inc. Integrating software provisioning and configuration management
US9940208B2 (en) * 2009-02-27 2018-04-10 Red Hat, Inc. Generating reverse installation file for network restoration
US9558195B2 (en) 2009-02-27 2017-01-31 Red Hat, Inc. Depopulation of user data from network
US8667096B2 (en) * 2009-02-27 2014-03-04 Red Hat, Inc. Automatically generating system restoration order for network recovery
US8135989B2 (en) * 2009-02-27 2012-03-13 Red Hat, Inc. Systems and methods for interrogating diagnostic target using remotely loaded image
US8417926B2 (en) * 2009-03-31 2013-04-09 Red Hat, Inc. Systems and methods for providing configuration management services from a provisioning server
US9250672B2 (en) * 2009-05-27 2016-02-02 Red Hat, Inc. Cloning target machines in a software provisioning environment
US9134987B2 (en) 2009-05-29 2015-09-15 Red Hat, Inc. Retiring target machines by a provisioning server
US9047155B2 (en) 2009-06-30 2015-06-02 Red Hat, Inc. Message-based installation management using message bus
US8825819B2 (en) * 2009-11-30 2014-09-02 Red Hat, Inc. Mounting specified storage resources from storage area network in machine provisioning platform
US10133485B2 (en) 2009-11-30 2018-11-20 Red Hat, Inc. Integrating storage resources from storage area network in machine provisioning platform
JP5732767B2 (ja) * 2010-07-26 2015-06-10 富士通株式会社 処理装置,処理方法,処理用プログラム,同プログラムを記録したコンピュータ読取可能な記録媒体
US9154826B2 (en) 2011-04-06 2015-10-06 Headwater Partners Ii Llc Distributing content and service launch objects to mobile devices
JP5729209B2 (ja) * 2011-08-12 2015-06-03 富士通株式会社 情報処理装置、情報処理システムのテスト方法およびプログラム
US8775638B2 (en) * 2012-02-02 2014-07-08 Siemens Aktiengesellschaft Method, computer readable medium and system for scaling medical applications in a public cloud data center
US9742676B2 (en) 2012-06-06 2017-08-22 International Business Machines Corporation Highly available servers
US10713726B1 (en) 2013-01-13 2020-07-14 United Services Automobile Association (Usaa) Determining insurance policy modifications using informatic sensor data
US20140278573A1 (en) 2013-03-15 2014-09-18 State Farm Mutual Automobile Insurance Company Systems and methods for initiating insurance processing using ingested data
JP5411381B1 (ja) * 2013-06-03 2014-02-12 株式会社 ディー・エヌ・エー サーバ検査システム、サーバ検査装置およびサーバ検査プログラム
US9947051B1 (en) 2013-08-16 2018-04-17 United Services Automobile Association Identifying and recommending insurance policy products/services using informatic sensor data
US9781053B1 (en) * 2013-09-05 2017-10-03 Amazon Technologies, Inc. Request routing and processing using a cancellation token
CN104426636A (zh) * 2013-09-11 2015-03-18 松下电器产业株式会社 通信控制装置及通信控制方法
JP2015119472A (ja) * 2013-11-18 2015-06-25 株式会社リコー 選択システム、通信管理システム、通信システム、プログラム、及び選択方法
US11416941B1 (en) 2014-01-10 2022-08-16 United Services Automobile Association (Usaa) Electronic sensor management
US10552911B1 (en) 2014-01-10 2020-02-04 United Services Automobile Association (Usaa) Determining status of building modifications using informatics sensor data
US11087404B1 (en) 2014-01-10 2021-08-10 United Services Automobile Association (Usaa) Electronic sensor management
US11847666B1 (en) 2014-02-24 2023-12-19 United Services Automobile Association (Usaa) Determining status of building modifications using informatics sensor data
US10614525B1 (en) 2014-03-05 2020-04-07 United Services Automobile Association (Usaa) Utilizing credit and informatic data for insurance underwriting purposes
US9852107B2 (en) * 2015-12-24 2017-12-26 Intel Corporation Techniques for scalable endpoint addressing for parallel applications
US10599483B1 (en) * 2017-03-01 2020-03-24 Amazon Technologies, Inc. Decentralized task execution bypassing an execution service
EP3622447A1 (en) 2017-05-08 2020-03-18 British Telecommunications Public Limited Company Interoperation of machine learning algorithms
WO2018206374A1 (en) * 2017-05-08 2018-11-15 British Telecommunications Public Limited Company Load balancing of machine learning algorithms
CN111886940B (zh) * 2018-03-29 2022-02-11 株式会社富士 对基板作业机的管理装置
JP7244482B2 (ja) 2020-12-16 2023-03-22 株式会社日立製作所 ストレージ管理システム、管理方法
CN113961311A (zh) * 2021-10-27 2022-01-21 阿波罗智联(北京)科技有限公司 业务数据处理方法、装置、电子设备和介质
US11910053B2 (en) * 2021-12-16 2024-02-20 Nbcuniversal Media, Llc Spread channel multi-CDN streaming

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004030204A (ja) * 2002-06-25 2004-01-29 Jmnet Inc 負荷分散装置及びそれに接続するノードコンピュータ
JP2007316837A (ja) * 2006-05-24 2007-12-06 Fujitsu Ltd サーバシステム

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6003083A (en) * 1998-02-19 1999-12-14 International Business Machines Corporation Workload management amongst server objects in a client/server network with distributed objects
US6446109B2 (en) * 1998-06-29 2002-09-03 Sun Microsystems, Inc. Application computing environment
US6249801B1 (en) * 1998-07-15 2001-06-19 Radware Ltd. Load balancing
JP2000076118A (ja) * 1998-09-03 2000-03-14 Fuji Xerox Co Ltd 分散ファイル処理装置および分散ファイル処理方法
US7047314B2 (en) * 2000-12-28 2006-05-16 Oki Electric Industry Co., Ltd. Duplicate private address translating system and duplicate address network system
US6925481B2 (en) * 2001-05-03 2005-08-02 Symantec Corp. Technique for enabling remote data access and manipulation from a pervasive device
US7631084B2 (en) * 2001-11-02 2009-12-08 Juniper Networks, Inc. Method and system for providing secure access to private networks with client redirection
US20030212739A1 (en) * 2002-05-09 2003-11-13 Antoine Boucher Store and forward architecture
US7254636B1 (en) * 2003-03-14 2007-08-07 Cisco Technology, Inc. Method and apparatus for transparent distributed network-attached storage with web cache communication protocol/anycast and file handle redundancy
US20050198206A1 (en) * 2004-01-30 2005-09-08 International Business Machines Corporation Method and apparatus for dynamically selecting functionally equivalent Web services through a single autonomic proxy
JP3922375B2 (ja) * 2004-01-30 2007-05-30 インターナショナル・ビジネス・マシーンズ・コーポレーション 異常検出システム及びその方法
JP4160092B2 (ja) * 2004-03-09 2008-10-01 ケイティーフリーテル カンパニー リミテッド パケットデータ課金細分化方法及びそのシステム
JP4353208B2 (ja) * 2006-06-27 2009-10-28 日本電気株式会社 ストレージサブシステム、ストレージシステム、負荷分散方法、負荷分散プログラム
US9143558B2 (en) * 2007-05-09 2015-09-22 Radware, Ltd. Geographic resiliency and load balancing for SIP application services
US8543667B2 (en) * 2008-01-14 2013-09-24 Akamai Technologies, Inc. Policy-based content insertion
TW201006175A (en) * 2008-07-31 2010-02-01 Ibm Method, apparatus, and computer program product for testing a network system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004030204A (ja) * 2002-06-25 2004-01-29 Jmnet Inc 負荷分散装置及びそれに接続するノードコンピュータ
JP2007316837A (ja) * 2006-05-24 2007-12-06 Fujitsu Ltd サーバシステム

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130078300A (ko) * 2011-12-30 2013-07-10 주식회사 케이티 단말로부터 요청된 가상 어플리케이션을 실행하는 서버 및 방법, 그리고 단말
KR101909257B1 (ko) * 2011-12-30 2018-12-20 주식회사 케이티 단말로부터 요청된 가상 어플리케이션을 실행하는 서버 및 방법, 그리고 단말
JP2018504862A (ja) * 2014-12-18 2018-02-15 イプコ 2012 リミテッドIpco 2012 Limited 電子メッセージを受信するためのシステム、方法及びコンピュータプログラム製品
US10708213B2 (en) 2014-12-18 2020-07-07 Ipco 2012 Limited Interface, method and computer program product for controlling the transfer of electronic messages
US10963882B2 (en) 2014-12-18 2021-03-30 Ipco 2012 Limited System and server for receiving transaction requests
US10997568B2 (en) 2014-12-18 2021-05-04 Ipco 2012 Limited System, method and computer program product for receiving electronic messages
US10999235B2 (en) 2014-12-18 2021-05-04 Ipco 2012 Limited Interface, method and computer program product for controlling the transfer of electronic messages
US11080690B2 (en) 2014-12-18 2021-08-03 Ipco 2012 Limited Device, system, method and computer program product for processing electronic transaction requests
US11521212B2 (en) 2014-12-18 2022-12-06 Ipco 2012 Limited System and server for receiving transaction requests
US11665124B2 (en) 2014-12-18 2023-05-30 Ipco 2012 Limited Interface, method and computer program product for controlling the transfer of electronic messages
JP7434040B2 (ja) 2020-04-09 2024-02-20 株式会社東芝 料金所機器、情報処理装置、料金収受方法、料金収受プログラム及び料金収受システム

Also Published As

Publication number Publication date
JP4722973B2 (ja) 2011-07-13
US20100042675A1 (en) 2010-02-18
US7937437B2 (en) 2011-05-03

Similar Documents

Publication Publication Date Title
JP4722973B2 (ja) リクエスト処理方法及び計算機システム
US20230273937A1 (en) Conditional master election in distributed databases
US7185096B2 (en) System and method for cluster-sensitive sticky load balancing
US10122595B2 (en) System and method for supporting service level quorum in a data grid cluster
US8639816B2 (en) Distributed computing based on multiple nodes with determined capacity selectively joining resource groups having resource requirements
US7349970B2 (en) Workload management of stateful program entities
US9736243B2 (en) Multiple transaction logs in a distributed storage system
CN104823170B (zh) 分布式缓存群集管理
RU2613040C2 (ru) Smb2-масштабирование
CN106936899B (zh) 分布式统计分析系统的配置方法及分布式统计分析系统
US20150269239A1 (en) Storage device selection for database partition replicas
US8959226B2 (en) Load balancing workload groups
US8635318B1 (en) Message broadcast protocol which handles configuration changes in a cluster of virtual servers
JP2012094030A (ja) 計算機システム及び処理制御方法
US9904573B2 (en) Transactional updating in dynamic distributed workloads
CN102253869A (zh) 可缩放的容错元数据服务
JP2005216151A (ja) 資源運用管理システム及び資源運用管理方法
CA2847597A1 (en) Clustered client failover
WO2012063478A1 (ja) セッション管理方法、セッション管理システム及びプログラム
US20080196029A1 (en) Transaction Manager Virtualization
US8180846B1 (en) Method and apparatus for obtaining agent status in a network management application
KR20170102725A (ko) 데이터 관리 시스템 및 방법
JP2008250427A (ja) 情報処理システムに用いられるバージョンアップ装置及び該装置を備えた情報処理システム並びに情報処理システムをバージョンアップするためのプログラム
KR101654969B1 (ko) 가상화 클러스터 환경에서 네임 노드를 할당하는 방법 및 장치
JP4375121B2 (ja) データベース管理システムにおける処理代行方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100224

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100524

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100601

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100729

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101019

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101126

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110308

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110406

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140415

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees