JP2004517424A - サーバーアーキテクチャー - Google Patents
サーバーアーキテクチャー Download PDFInfo
- Publication number
- JP2004517424A JP2004517424A JP2002560009A JP2002560009A JP2004517424A JP 2004517424 A JP2004517424 A JP 2004517424A JP 2002560009 A JP2002560009 A JP 2002560009A JP 2002560009 A JP2002560009 A JP 2002560009A JP 2004517424 A JP2004517424 A JP 2004517424A
- Authority
- JP
- Japan
- Prior art keywords
- service
- event
- server
- environment
- thread
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/5055—Allocation 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 software capabilities, i.e. software resources associated or available to the machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Computer And Data Communications (AREA)
Abstract
本発明は、サーバーの構造に係る。本発明は、多数の異なるサービスを同時に取り扱うことのできる少なくとも1つのスレッドを含むサーバーアーキテクチャーを備えている。スレッドは、タスクマネージャーを使用して、処理されるべき次のサービスをスケジュールする。オペレーティングシステムは、スレッド(1つ又は複数)の実行を取り扱う。指定リストは、スレッドに指定される全てのサービスを含む。
Description
【0001】
【技術分野】
本発明は、サーバーに係る。より詳細には、本発明は、サーバーがいかに構成されるか及びサーバーがサービスをいかに実行するかといったサーバーの構造に係る。更に、本発明は、特に、テレコミュニケーションの分野におけるサーバーに係る。
【0002】
【背景技術】
図1は、クライアント−サーバー環境の一例を示す。サーバー(1)は、多数のサービス(2)を含む。クライアント(3)は、サーバーにおける特定のサービスを呼び出す。クライアントとサーバーとの間のインターフェイスは、例えばCOBRAをベースとする。サービスは、クライアントにより変化するある状態にある。サービスが希望のタスクを実行すると、クライアントに応答を返送する。これは、サーバーが現在クライアントからの要求を取り扱う方法である。
【0003】
サーバーは、多数の方法で構成することができる。それらは全て欠点と利点がある。1つの考えられる方法は、オブジェクト指向のプログラミング言語であるJavaを使用して、サーバーのファンクションを生成することである。Javaの利点及び欠点と、本発明とについて述べた本明細書を読むときには、基本的なJava構造を銘記しなければならない。
【0004】
オブジェクトとは、実行可能なコード及びデータを通常含むソフトウェアコンポーネントである。オブジェクト指向の言語では、実際のオブジェクトが定義されず、オブジェクトのクラスが定義される。クラスとは、同様の特徴を伴う多数のオブジェクトのためのテンプレートである。クラスは、そのクラスの全オブジェクトに対する全ての共通の特徴を記述すると言える。従って、単一のオブジェクトは、クラスを具体的に表わすもので、換言すれば、インスタンスである。
【0005】
メソッドとは、クラス又はオブジェクトにおいて動作するファンクション即ち実行可能なコードである。ストリームとは、ある情報のソースとその行先との間の通信経路である。Javaは、異なるストリームを定義するための多数の入力ストリーム及び出力ストリームクラスを含む。シリアル化は、クラスのインスタンスの状態(クラスの具体的表示)をバイトラインの形態でセーブできるようにするJava環境の特徴である。シリアル化されたインスタンスは、そのセーブされたクラス表示を後で使用できるようにデシリアル化することができる。
【0006】
スレッドとは、スレッド−クラスのオブジェクトである。スレッドは、アプリケーションが多数のタスクを同時に実行する場合に使用されるのが好ましい。スレッドは、それに与えられたタスクを実行する。タスクは、オペレーティングシステムが実行するコマンドを含む。パラレルなスレッドが同時に実行され、即ちアプリケーションは、単一のコマンドが終了するのを待機してから次のコマンドを開始するのではなく、パラレルなコマンドを個々に実行することができる。従って、同時に実行されるべきアプリケーション及び/又はタスクが多数存在する場合には、スレッド−モデリングを使用するのが有用である。
【0007】
要約すれば、Javaアプリケーションは、オブジェクトと称するクラスを含む。1つのクラスは、「ルート」クラスで、これは、アプリケーションの基本的なメソッドを含み、そしてアプリケーションに属する他のクラスを得ることができる。
クライアントは、クライアントから到来する事象をリストしたスレッドを有するサーバーへ事象を送信する。これらのスレッドは、事象を受け取ると、実際の事象処理を行う処理スレッドへそれを通す。各事象は、それ自身の新たな処理スレッドを要求する。2つの形式のスレッドの協働が同期される。しかしながら、この同期は、常に、経費がかかり、設計が厄介である。
本発明の目的は、これら欠点を解消し、従来の解決策より優れたシステム性能を与えることである。これは、請求の範囲に記載したように達成される。
【0008】
【発明の開示】
本発明の考え方は、サーバーアーキテクチャーが、多数の異なるサービスを同時に取り扱いできる少なくとも1つのスレッドを含むことである。このスレッドは、タスクマネージャーを使用して、処理されるべき次のサービスをスケジュールする。オペレーティングシステムは、スレッド(1つ又は複数)の実行を取り扱う。指定リストは、そのスレッドに指定された全てのサービスを含む。サービス環境は、サービス及びオブジェクト特有データを保持しそしてコンテナの動作を制御するための実際のサービスインスタンス及びエレメントを形成するオブジェクトを収容するコンテナクラスを備えている。更に、サービス環境は、コンテナの状態及びサブ状態の情報と、処理されるべき種々の形式の事象に対する待ち行列も備えている。これら待ち行列は、クライアントから到来する事象を、それらが実際に処理されるまで保持することができる。
【0009】
サービス環境は、待ち行列の状態を観察する。タスクマネージャーは、指定リストにおいてサービス環境に、処理されるべき事象があるかどうか尋ねる。もしあれば、マネージャーは、事象を、それらが処理されようとしている順序で引き出す。スレッドは、オペレーティングシステムにおいて実行するために、マネージャーからその順序で事象を引き出す。スレッドは、指定リストにおける正しいサービスに対して事象をファイアし、実行を開始する。実行後に、サービス環境の状態が変更される。
【0010】
【発明を実施するための最良の形態】
以下、図1ないし5を参照して本発明を詳細に説明する。
図3は、パラレルなサービスを取り扱うための本発明によるサーバーアーキテクチャーの一例を示す図である。実行されるべき同時プロセスを構成するときにはスレッドが非常に重要となる。通常、スレッドは、1つのサービスの実行を取り扱う。従って、例えば、10個のパラレルなサービスがある場合には、10個のパラレルなスレッドが存在する。しかしながら、サービスは、互いに独立して実行され、従って、オペレーティングシステムの観点では、アイドルスレッドとビジースレッドが存在する。アイドルスレッドは、オペレーティングシステムのリソースを消費する。本発明による図3のような構成体を使用すると、1つのスレッド(31)が多数のサービスを同時に取り扱うことができ、オペレーティングシステムのリソースを節約する。本発明によるサーバーアーキテクチャーは、多数のサービスを各々取り扱う多数のパラレルなスレッドを含むことができる。従って、1つのスレッドは、1つないし多数のサービス(又はサービスのサービスインスタンス)を含むことができる。
【0011】
サーバーアーキテクチャーは、サービスを実行するスケジューリングを取り扱うためにタスクマネージャー(32)を必要とする。スレッド(31)に指定されるサービス(33a、33b、33c)は、指定リスト(34)を形成する。タスクマネージャーは、このリストを使用して、リスト内のサービスから事象を引き出し、そしてスレッドに対して事象をスケジューリングし、スレッドは、タスクマネージャーから事象を引き出して実行する。スレッドは、サービスにおいて事象の実行をファイアする。
【0012】
サービス環境、即ちプログラム環境は、サービス(42)(プログラム)及びそのインスタンス(プログラムインスタンス)を受け入れて、サービスアーキテクチャーにおける動作時に実行することのできるコンテナ(図4の41)(クラス)である。プログラム環境は、図4に示す要素を含む。
サービス環境は、クライアントから到来するメッセージ即ち事象を記憶するための1つないし多数の待ち行列(47)を含む。各事象は、現在のサービスインスタンスが処理するタスクを表わす。
【0013】
コンテナは、制御部分(45)及びインスタンスコンテクスト(44)を含む共通部分を備えている。更に、コンテナは、実際のサービスを形成する1組のオブジェクト(43)も備えている。制御部分は、受け取った事象に基づいてオブジェクト(43)を実行する。インスタンスコンテクストは、サービスインスタンスに対して特有のデータを記憶する。
サービス環境は、コンテナの状態及びサブ状態の情報(46)と、処理されるべき種々の形式の事象に対する待ち行列(47)とを備えている。事象は、3つの形式、即ち要求事象、ISC事象及び非同期事象に分類される。ISC(サービス間通信)とは、事象が別のサービスから送信され、そしてそれを同期又は非同期で送信できることを意味する。
【0014】
同期メッセージ(事象)とは、サービスがそれを待機し、即ちサービス事象の処理が待機状態にあり、そしてサービスが特殊な(同期)メッセージを得たときに処理を継続するところのメッセージである。
非同期メッセージとは、サービスがそれを待機しないメッセージである。しかしながら、サービスは、同期メッセージを待機しなければならず、その時間中に、予期せぬメッセージ、即ち非同期メッセージ、又は同期メッセージを受け取ることがある。
【0015】
信号メッセージは、非同期メッセージの特殊なケースである。信号ハンドラーが信号メッセージを取り扱うと同時に、別のハンドラーが同期又は非同期メッセージを取り扱うことができる。要求形式は、サービスの内部から到来する同期事象を取り扱う。しかしながら、もし必要であれば、他の形式及び別の数の形式を使用することもできる。待ち行列は、クライアントから到来する事象を、それらが実際に処理されるまで保持することができる。事象をどれほど長く保持できるかの周期は、サービス自体に依存する。サービス環境は、待ち行列の状態を登録する。
【0016】
通信システムのサービスプラットホームにおけるサービスについて考える。1つのサービスは、サービス環境に埋め込まれるプログラムとして実施することができる。換言すれば、サービスは、そのプログラムコードがコンテナ内のオブジェクトとして実施されるようにして実施される。従って、サービスアーキテクチャー内で実行される上記プログラムの特定インスタンスは、サービス環境インスタンスである。
コンテナは、制御部分(45)及びインスタンスコンテクスト(44)を含む共通部分を備えている。更に、コンテナは、実際のサービスを形成する1組のオブジェクト(43)も備えている。制御部分は、受け取った事象に基づいてオブジェクト(43)を実行する。インスタンスコンテクストは、サービスインスタンスに対して特有のデータを記憶する。
【0017】
サービス環境は、例えば、スレッド内でパラレルに実行できる種類のプログラムロードモジュールとして定義することができる。次いで、スレッドは、Java仮想マシンのような実行環境内でパラレルに実行することができる。それ故、3つのレベル、即ちオペレーティングシステムレベル、仮想マシンレベル及びスレッドレベルに、パラレルなプロセスエンティティが存在する。
サービスアーキテクチャーは、オブジェクト指向のモデルをベースとするので、クライアントもオブジェクトとしてモデリングされる。クライアントは、要求又はメッセージをサービスに送信し、サービスも、クライアントに望まれるタスクを含むオブジェクトである。要求/メッセージオブジェクトは、事象と称される(事象は、別の形式のオブジェクトも意味し得ることに注意されたい)。
【0018】
図3に示す状態のように、3つのサービスが指定された1つのスレッドを有するようにサービスアーキテクチャーが構成された一例を説明する。2つのサービス33a及び33bは、アイドル状態であるが、第3のサービス33cが、クライアントからの事象を有する。事象は、当該待ち行列において待機している。サービス環境は、待ち行列及びサービスの状態を登録している。1つ又は多数のサービスが内部事象を実行する準備ができた場合には、サービス環境は、何らかの事象待機がある場合に要求待ち行列からサービスに対する事象を引き出す。
【0019】
タスクマネージャーは、事象を引き出すために指定リストを検査する。サービスの状態をチェックするためにマネージャーが使用するサイクルに基づき、マネージャーは、33aからスタートする。サービス33aは、アイドル状態であり、従って、実行のための事象をもたない。又、マネージャーが次に検査するサービス33bも、アイドル状態である。マネージャーは、サービス33cの状態を検査するときに実行に対して引き出されるべき事象を見出す。マネージャーは、事象を引き出す。
【0020】
通常、タスクマネージャー(32)において実行のためにスケジュールされるべき多数の事象が存在するが、この例では、マネージャーが最初に実行するためにスケジュールすることのできる事象は、1つだけである。処理されるべき事象と共に指定リストに多数のサービスが存在する場合には、タスクマネージャーは、ラウンドロビン形態でサービスを通して進み、そして事象のプライオリティに基づく特定の順序で事象を処理する。サービス環境において、非同期事象は、事象のプライオリティの順序とされる。同期メッセージは、到来する順序に基づく順序とされる。(タスクマネージャーは、他の技術的解決策が使用される場合には他のスケジューリング方法も使用できることに注意されたい。)スレッドは、マネージャーから事象を引き出し(31)、そしてサービス(33c)において事象の実行をファイアする。ファイアするとは、同じスレッドが事象を送信(及び受信)してそれを実行できることを意味する。事象を実行すると、サービス環境(46)を検査するときにタスクマネージャーが通知できるそのサービス環境の状態が変化する。
【0021】
図2は、本発明によるクライアント−サーバー環境の一例を示す。クライアントは、サーバー1に事象を送信する。この事象は、正しいサービス環境(S1)に向けられる。事象は、待ち行列に入れることができ、即ちサービスがタスクマネージャーにとってアイドル状態に見えるので、スレッドがそれをファイアする前に、サービス環境(S1)は、あるタスクに対して他のサービス環境を使用でき、その後、事象は、最終的な実行のためにスレッドに返送される。このため、サービスは、他のサービスを使用して最終的なサービスを生成するように構成することができる。サービス環境は、同じサーバー(5)又は別のサーバー(6)において別のサービス環境(5)を求めることができる。又、サービス環境のチェーンを形成して、最終的なサービスを生成することもできる。図2に示された状態では、ルートサービス環境S1(4)が、別のサーバー(6)における別のサービス環境S4(7)に、あるタスク(1つ又は複数)を行うように求め、そしてサーバー環境S4は、次いで、更に別のサーバー環境S5(8)に、あるタスク(1つ又は複数)を行うように求める。上記チェーンは、サービス環境S5がサービス環境S4に応答してタスク(1つ又は複数)をファイアするときに後方にディスチャージし、サービス環境S4は、次いで、サービス環境S1に応答してタスク(1つ又は複数)をファイアし、そこで、最終的に、事象は、クライアントにより望まれるサービスをファイアすることをスレッドに返送する。サービスは、クライアントに応答を与える。
【0022】
本発明によるサーバーアーキテクチャーは、サービスを実行する方法を含む。図5は、好ましい方法の一例を示す。第1に(61)、このサービス及びその事象を取り扱うサービス環境においてクライアントからの事象を待ち行列から引き出さねばならない。上述したように、サービス環境は、実際のサービスと、クライアントにより押し込まれた事象に対する少なくとも1つの待ち行列と、サービス及び待ち行列の状態情報とを含む。
【0023】
サービス環境は、待ち行列に事象を保持するか、又はそれをタスクマネージャーにより引き出すことができる(62)。その選択は、サービス及び待ち行列の状態情報に依存する。例えば、サービスは、他の事柄を実行していてビジーであるか、或いは待ち行列の1つが、最初に実行されるべき別の事象を有する。
タスクマネージャーは、事象を引き出すと、その事象を、他のサービス環境から引き出された他の事象と共に、それら事象が引き出された順序でスケジューリングする(63)。これらのサービス環境は、指定サービス環境特有のサービスの処理を取り扱うスレッドに指定されている。スケジュールされた事象は、サービスの性能の順序である。
【0024】
スレッドは、事象を処理するためにタスクマネージャーから事象を順に引き出す(64)。スレッドは、サービスを遂行するためにサービス環境においてサービスに対し事象をファイアする(65)。ファイアするとは、スレッドではなくサービスにおいて実際の処理が生じることを意味する。スレッドは、それに指定されたサービスのサービスクラスを含み、そしてそれらクラスを使用して事象を遂行する。或いは又、スレッドは、サービスに事象をポスティングできることにも注意されたい。ポスティングとは、種々のスレッドがサービスの実行及び送信(ポスティング)を取り扱うことを意味する。サービスアーキテクチャーは、上述した以外のやり方でも構成できることに注意されたい。例えば、引き出し動作は、事象をサービス環境からタスクマネージャーへそしてタスクマネージャーからスレッドへ押し込むような押し込み技術を使用して生成することができる。しかしながら、ここに述べるように引き出し技術を使用することが好ましい。更に、本発明のアーキテクチャーにおける引き出し順序は、例えば、最初に、スレッドがタスクマネージャーから事象を引き出し、そしてその後、タスクマネージャーがサービス環境から事象(1つ又は複数)を引き出す(タスクマネージャーは事象を独立して引き出さない)というものであることに注意されたい。
【0025】
本発明の他の実施形態では、例えば、事象待ち行列が必ずしも所与のサービス環境インスタンスに関連して記憶されず、どこに記憶されてもよいが、到来する事象が通知されたときにプログラムインスタンスによって事象を検索できるようにされる。同様に、コンテナ部分は、必ずしも個別のオブジェクトで構成されない1つのコードモジュールで構成することができる。同様に、プログラムのコード部分は、共通の制御部分と、サービス特有の部分とに明確に分離されない。
【0026】
本発明は、オペレーティングシステムのリソースをより効率的に使用して、膨大な量のサービスを同時に実行できるようにする。各サービスに対し、スレッドがサービス自体に対してのみ実行されるように見える。本発明によるサービスアーキテクチャーは、非同期で実行され、これは、クライアント要求の確認とクライアントへの応答との間の周期が、バッファ動作により、如何にでもなり得ることを意味する。同期を回避することは、コストの節約を意味する。又、本発明は、いわゆるホットサービスも可能にする。これは、サービスの状態がクライアントによって変更されず、サービス自体が状態を変更し得ることを意味する。あるサービスは、他のサービスに対するクライアントとなり得ることに特に注意されたい。
以上、本発明の幾つかの例を説明したが、本発明は、これに限定されるものではなく、本発明の考え方の範囲内で他の解決策にも使用できることが明らかであろう。
【図面の簡単な説明】
【図1】
現在のクライアント−サーバー環境の一例を示す図である。
【図2】
本発明によるクライアント−サーバー環境の一例を示す図である。
【図3】
本発明によりパラレルサービスを取り扱うためのサーバーアーキテクチャーの一例を示す図である。
【図4】
本発明によるサービス環境の一例を示す図である。
【図5】
本発明による方法の一例を示す図である。
【技術分野】
本発明は、サーバーに係る。より詳細には、本発明は、サーバーがいかに構成されるか及びサーバーがサービスをいかに実行するかといったサーバーの構造に係る。更に、本発明は、特に、テレコミュニケーションの分野におけるサーバーに係る。
【0002】
【背景技術】
図1は、クライアント−サーバー環境の一例を示す。サーバー(1)は、多数のサービス(2)を含む。クライアント(3)は、サーバーにおける特定のサービスを呼び出す。クライアントとサーバーとの間のインターフェイスは、例えばCOBRAをベースとする。サービスは、クライアントにより変化するある状態にある。サービスが希望のタスクを実行すると、クライアントに応答を返送する。これは、サーバーが現在クライアントからの要求を取り扱う方法である。
【0003】
サーバーは、多数の方法で構成することができる。それらは全て欠点と利点がある。1つの考えられる方法は、オブジェクト指向のプログラミング言語であるJavaを使用して、サーバーのファンクションを生成することである。Javaの利点及び欠点と、本発明とについて述べた本明細書を読むときには、基本的なJava構造を銘記しなければならない。
【0004】
オブジェクトとは、実行可能なコード及びデータを通常含むソフトウェアコンポーネントである。オブジェクト指向の言語では、実際のオブジェクトが定義されず、オブジェクトのクラスが定義される。クラスとは、同様の特徴を伴う多数のオブジェクトのためのテンプレートである。クラスは、そのクラスの全オブジェクトに対する全ての共通の特徴を記述すると言える。従って、単一のオブジェクトは、クラスを具体的に表わすもので、換言すれば、インスタンスである。
【0005】
メソッドとは、クラス又はオブジェクトにおいて動作するファンクション即ち実行可能なコードである。ストリームとは、ある情報のソースとその行先との間の通信経路である。Javaは、異なるストリームを定義するための多数の入力ストリーム及び出力ストリームクラスを含む。シリアル化は、クラスのインスタンスの状態(クラスの具体的表示)をバイトラインの形態でセーブできるようにするJava環境の特徴である。シリアル化されたインスタンスは、そのセーブされたクラス表示を後で使用できるようにデシリアル化することができる。
【0006】
スレッドとは、スレッド−クラスのオブジェクトである。スレッドは、アプリケーションが多数のタスクを同時に実行する場合に使用されるのが好ましい。スレッドは、それに与えられたタスクを実行する。タスクは、オペレーティングシステムが実行するコマンドを含む。パラレルなスレッドが同時に実行され、即ちアプリケーションは、単一のコマンドが終了するのを待機してから次のコマンドを開始するのではなく、パラレルなコマンドを個々に実行することができる。従って、同時に実行されるべきアプリケーション及び/又はタスクが多数存在する場合には、スレッド−モデリングを使用するのが有用である。
【0007】
要約すれば、Javaアプリケーションは、オブジェクトと称するクラスを含む。1つのクラスは、「ルート」クラスで、これは、アプリケーションの基本的なメソッドを含み、そしてアプリケーションに属する他のクラスを得ることができる。
クライアントは、クライアントから到来する事象をリストしたスレッドを有するサーバーへ事象を送信する。これらのスレッドは、事象を受け取ると、実際の事象処理を行う処理スレッドへそれを通す。各事象は、それ自身の新たな処理スレッドを要求する。2つの形式のスレッドの協働が同期される。しかしながら、この同期は、常に、経費がかかり、設計が厄介である。
本発明の目的は、これら欠点を解消し、従来の解決策より優れたシステム性能を与えることである。これは、請求の範囲に記載したように達成される。
【0008】
【発明の開示】
本発明の考え方は、サーバーアーキテクチャーが、多数の異なるサービスを同時に取り扱いできる少なくとも1つのスレッドを含むことである。このスレッドは、タスクマネージャーを使用して、処理されるべき次のサービスをスケジュールする。オペレーティングシステムは、スレッド(1つ又は複数)の実行を取り扱う。指定リストは、そのスレッドに指定された全てのサービスを含む。サービス環境は、サービス及びオブジェクト特有データを保持しそしてコンテナの動作を制御するための実際のサービスインスタンス及びエレメントを形成するオブジェクトを収容するコンテナクラスを備えている。更に、サービス環境は、コンテナの状態及びサブ状態の情報と、処理されるべき種々の形式の事象に対する待ち行列も備えている。これら待ち行列は、クライアントから到来する事象を、それらが実際に処理されるまで保持することができる。
【0009】
サービス環境は、待ち行列の状態を観察する。タスクマネージャーは、指定リストにおいてサービス環境に、処理されるべき事象があるかどうか尋ねる。もしあれば、マネージャーは、事象を、それらが処理されようとしている順序で引き出す。スレッドは、オペレーティングシステムにおいて実行するために、マネージャーからその順序で事象を引き出す。スレッドは、指定リストにおける正しいサービスに対して事象をファイアし、実行を開始する。実行後に、サービス環境の状態が変更される。
【0010】
【発明を実施するための最良の形態】
以下、図1ないし5を参照して本発明を詳細に説明する。
図3は、パラレルなサービスを取り扱うための本発明によるサーバーアーキテクチャーの一例を示す図である。実行されるべき同時プロセスを構成するときにはスレッドが非常に重要となる。通常、スレッドは、1つのサービスの実行を取り扱う。従って、例えば、10個のパラレルなサービスがある場合には、10個のパラレルなスレッドが存在する。しかしながら、サービスは、互いに独立して実行され、従って、オペレーティングシステムの観点では、アイドルスレッドとビジースレッドが存在する。アイドルスレッドは、オペレーティングシステムのリソースを消費する。本発明による図3のような構成体を使用すると、1つのスレッド(31)が多数のサービスを同時に取り扱うことができ、オペレーティングシステムのリソースを節約する。本発明によるサーバーアーキテクチャーは、多数のサービスを各々取り扱う多数のパラレルなスレッドを含むことができる。従って、1つのスレッドは、1つないし多数のサービス(又はサービスのサービスインスタンス)を含むことができる。
【0011】
サーバーアーキテクチャーは、サービスを実行するスケジューリングを取り扱うためにタスクマネージャー(32)を必要とする。スレッド(31)に指定されるサービス(33a、33b、33c)は、指定リスト(34)を形成する。タスクマネージャーは、このリストを使用して、リスト内のサービスから事象を引き出し、そしてスレッドに対して事象をスケジューリングし、スレッドは、タスクマネージャーから事象を引き出して実行する。スレッドは、サービスにおいて事象の実行をファイアする。
【0012】
サービス環境、即ちプログラム環境は、サービス(42)(プログラム)及びそのインスタンス(プログラムインスタンス)を受け入れて、サービスアーキテクチャーにおける動作時に実行することのできるコンテナ(図4の41)(クラス)である。プログラム環境は、図4に示す要素を含む。
サービス環境は、クライアントから到来するメッセージ即ち事象を記憶するための1つないし多数の待ち行列(47)を含む。各事象は、現在のサービスインスタンスが処理するタスクを表わす。
【0013】
コンテナは、制御部分(45)及びインスタンスコンテクスト(44)を含む共通部分を備えている。更に、コンテナは、実際のサービスを形成する1組のオブジェクト(43)も備えている。制御部分は、受け取った事象に基づいてオブジェクト(43)を実行する。インスタンスコンテクストは、サービスインスタンスに対して特有のデータを記憶する。
サービス環境は、コンテナの状態及びサブ状態の情報(46)と、処理されるべき種々の形式の事象に対する待ち行列(47)とを備えている。事象は、3つの形式、即ち要求事象、ISC事象及び非同期事象に分類される。ISC(サービス間通信)とは、事象が別のサービスから送信され、そしてそれを同期又は非同期で送信できることを意味する。
【0014】
同期メッセージ(事象)とは、サービスがそれを待機し、即ちサービス事象の処理が待機状態にあり、そしてサービスが特殊な(同期)メッセージを得たときに処理を継続するところのメッセージである。
非同期メッセージとは、サービスがそれを待機しないメッセージである。しかしながら、サービスは、同期メッセージを待機しなければならず、その時間中に、予期せぬメッセージ、即ち非同期メッセージ、又は同期メッセージを受け取ることがある。
【0015】
信号メッセージは、非同期メッセージの特殊なケースである。信号ハンドラーが信号メッセージを取り扱うと同時に、別のハンドラーが同期又は非同期メッセージを取り扱うことができる。要求形式は、サービスの内部から到来する同期事象を取り扱う。しかしながら、もし必要であれば、他の形式及び別の数の形式を使用することもできる。待ち行列は、クライアントから到来する事象を、それらが実際に処理されるまで保持することができる。事象をどれほど長く保持できるかの周期は、サービス自体に依存する。サービス環境は、待ち行列の状態を登録する。
【0016】
通信システムのサービスプラットホームにおけるサービスについて考える。1つのサービスは、サービス環境に埋め込まれるプログラムとして実施することができる。換言すれば、サービスは、そのプログラムコードがコンテナ内のオブジェクトとして実施されるようにして実施される。従って、サービスアーキテクチャー内で実行される上記プログラムの特定インスタンスは、サービス環境インスタンスである。
コンテナは、制御部分(45)及びインスタンスコンテクスト(44)を含む共通部分を備えている。更に、コンテナは、実際のサービスを形成する1組のオブジェクト(43)も備えている。制御部分は、受け取った事象に基づいてオブジェクト(43)を実行する。インスタンスコンテクストは、サービスインスタンスに対して特有のデータを記憶する。
【0017】
サービス環境は、例えば、スレッド内でパラレルに実行できる種類のプログラムロードモジュールとして定義することができる。次いで、スレッドは、Java仮想マシンのような実行環境内でパラレルに実行することができる。それ故、3つのレベル、即ちオペレーティングシステムレベル、仮想マシンレベル及びスレッドレベルに、パラレルなプロセスエンティティが存在する。
サービスアーキテクチャーは、オブジェクト指向のモデルをベースとするので、クライアントもオブジェクトとしてモデリングされる。クライアントは、要求又はメッセージをサービスに送信し、サービスも、クライアントに望まれるタスクを含むオブジェクトである。要求/メッセージオブジェクトは、事象と称される(事象は、別の形式のオブジェクトも意味し得ることに注意されたい)。
【0018】
図3に示す状態のように、3つのサービスが指定された1つのスレッドを有するようにサービスアーキテクチャーが構成された一例を説明する。2つのサービス33a及び33bは、アイドル状態であるが、第3のサービス33cが、クライアントからの事象を有する。事象は、当該待ち行列において待機している。サービス環境は、待ち行列及びサービスの状態を登録している。1つ又は多数のサービスが内部事象を実行する準備ができた場合には、サービス環境は、何らかの事象待機がある場合に要求待ち行列からサービスに対する事象を引き出す。
【0019】
タスクマネージャーは、事象を引き出すために指定リストを検査する。サービスの状態をチェックするためにマネージャーが使用するサイクルに基づき、マネージャーは、33aからスタートする。サービス33aは、アイドル状態であり、従って、実行のための事象をもたない。又、マネージャーが次に検査するサービス33bも、アイドル状態である。マネージャーは、サービス33cの状態を検査するときに実行に対して引き出されるべき事象を見出す。マネージャーは、事象を引き出す。
【0020】
通常、タスクマネージャー(32)において実行のためにスケジュールされるべき多数の事象が存在するが、この例では、マネージャーが最初に実行するためにスケジュールすることのできる事象は、1つだけである。処理されるべき事象と共に指定リストに多数のサービスが存在する場合には、タスクマネージャーは、ラウンドロビン形態でサービスを通して進み、そして事象のプライオリティに基づく特定の順序で事象を処理する。サービス環境において、非同期事象は、事象のプライオリティの順序とされる。同期メッセージは、到来する順序に基づく順序とされる。(タスクマネージャーは、他の技術的解決策が使用される場合には他のスケジューリング方法も使用できることに注意されたい。)スレッドは、マネージャーから事象を引き出し(31)、そしてサービス(33c)において事象の実行をファイアする。ファイアするとは、同じスレッドが事象を送信(及び受信)してそれを実行できることを意味する。事象を実行すると、サービス環境(46)を検査するときにタスクマネージャーが通知できるそのサービス環境の状態が変化する。
【0021】
図2は、本発明によるクライアント−サーバー環境の一例を示す。クライアントは、サーバー1に事象を送信する。この事象は、正しいサービス環境(S1)に向けられる。事象は、待ち行列に入れることができ、即ちサービスがタスクマネージャーにとってアイドル状態に見えるので、スレッドがそれをファイアする前に、サービス環境(S1)は、あるタスクに対して他のサービス環境を使用でき、その後、事象は、最終的な実行のためにスレッドに返送される。このため、サービスは、他のサービスを使用して最終的なサービスを生成するように構成することができる。サービス環境は、同じサーバー(5)又は別のサーバー(6)において別のサービス環境(5)を求めることができる。又、サービス環境のチェーンを形成して、最終的なサービスを生成することもできる。図2に示された状態では、ルートサービス環境S1(4)が、別のサーバー(6)における別のサービス環境S4(7)に、あるタスク(1つ又は複数)を行うように求め、そしてサーバー環境S4は、次いで、更に別のサーバー環境S5(8)に、あるタスク(1つ又は複数)を行うように求める。上記チェーンは、サービス環境S5がサービス環境S4に応答してタスク(1つ又は複数)をファイアするときに後方にディスチャージし、サービス環境S4は、次いで、サービス環境S1に応答してタスク(1つ又は複数)をファイアし、そこで、最終的に、事象は、クライアントにより望まれるサービスをファイアすることをスレッドに返送する。サービスは、クライアントに応答を与える。
【0022】
本発明によるサーバーアーキテクチャーは、サービスを実行する方法を含む。図5は、好ましい方法の一例を示す。第1に(61)、このサービス及びその事象を取り扱うサービス環境においてクライアントからの事象を待ち行列から引き出さねばならない。上述したように、サービス環境は、実際のサービスと、クライアントにより押し込まれた事象に対する少なくとも1つの待ち行列と、サービス及び待ち行列の状態情報とを含む。
【0023】
サービス環境は、待ち行列に事象を保持するか、又はそれをタスクマネージャーにより引き出すことができる(62)。その選択は、サービス及び待ち行列の状態情報に依存する。例えば、サービスは、他の事柄を実行していてビジーであるか、或いは待ち行列の1つが、最初に実行されるべき別の事象を有する。
タスクマネージャーは、事象を引き出すと、その事象を、他のサービス環境から引き出された他の事象と共に、それら事象が引き出された順序でスケジューリングする(63)。これらのサービス環境は、指定サービス環境特有のサービスの処理を取り扱うスレッドに指定されている。スケジュールされた事象は、サービスの性能の順序である。
【0024】
スレッドは、事象を処理するためにタスクマネージャーから事象を順に引き出す(64)。スレッドは、サービスを遂行するためにサービス環境においてサービスに対し事象をファイアする(65)。ファイアするとは、スレッドではなくサービスにおいて実際の処理が生じることを意味する。スレッドは、それに指定されたサービスのサービスクラスを含み、そしてそれらクラスを使用して事象を遂行する。或いは又、スレッドは、サービスに事象をポスティングできることにも注意されたい。ポスティングとは、種々のスレッドがサービスの実行及び送信(ポスティング)を取り扱うことを意味する。サービスアーキテクチャーは、上述した以外のやり方でも構成できることに注意されたい。例えば、引き出し動作は、事象をサービス環境からタスクマネージャーへそしてタスクマネージャーからスレッドへ押し込むような押し込み技術を使用して生成することができる。しかしながら、ここに述べるように引き出し技術を使用することが好ましい。更に、本発明のアーキテクチャーにおける引き出し順序は、例えば、最初に、スレッドがタスクマネージャーから事象を引き出し、そしてその後、タスクマネージャーがサービス環境から事象(1つ又は複数)を引き出す(タスクマネージャーは事象を独立して引き出さない)というものであることに注意されたい。
【0025】
本発明の他の実施形態では、例えば、事象待ち行列が必ずしも所与のサービス環境インスタンスに関連して記憶されず、どこに記憶されてもよいが、到来する事象が通知されたときにプログラムインスタンスによって事象を検索できるようにされる。同様に、コンテナ部分は、必ずしも個別のオブジェクトで構成されない1つのコードモジュールで構成することができる。同様に、プログラムのコード部分は、共通の制御部分と、サービス特有の部分とに明確に分離されない。
【0026】
本発明は、オペレーティングシステムのリソースをより効率的に使用して、膨大な量のサービスを同時に実行できるようにする。各サービスに対し、スレッドがサービス自体に対してのみ実行されるように見える。本発明によるサービスアーキテクチャーは、非同期で実行され、これは、クライアント要求の確認とクライアントへの応答との間の周期が、バッファ動作により、如何にでもなり得ることを意味する。同期を回避することは、コストの節約を意味する。又、本発明は、いわゆるホットサービスも可能にする。これは、サービスの状態がクライアントによって変更されず、サービス自体が状態を変更し得ることを意味する。あるサービスは、他のサービスに対するクライアントとなり得ることに特に注意されたい。
以上、本発明の幾つかの例を説明したが、本発明は、これに限定されるものではなく、本発明の考え方の範囲内で他の解決策にも使用できることが明らかであろう。
【図面の簡単な説明】
【図1】
現在のクライアント−サーバー環境の一例を示す図である。
【図2】
本発明によるクライアント−サーバー環境の一例を示す図である。
【図3】
本発明によりパラレルサービスを取り扱うためのサーバーアーキテクチャーの一例を示す図である。
【図4】
本発明によるサービス環境の一例を示す図である。
【図5】
本発明による方法の一例を示す図である。
Claims (7)
- 少なくとも1つのクライアントと、少なくとも1つのサービスを含む少なくとも1つのサーバーとを備えたクライアント−サーバープラットホームにおいてサーバーへ事象を送信するクライアントのためのサービスを実行するサーバーであって、
スレッドをパラレルに実行するためのスレッド実行環境を備え、各スレッドはそれに指定された事象を処理し、
上記スレッドの少なくとも1つは、そのスレッドに指定された少なくとも2つのサービスインスタンスの実行をパラレルに取り扱い、そして
更に、事象をスケジュールするためのタスクマネージャーを備えたことを特徴とするサーバー。 - 上記スレッド実行環境は、上記サービスインスタンスの1つに対してプラットフォームを形成するための少なくとも1つのサービス環境を備えた請求項1に記載のサーバー。
- 上記サービス環境は、事象を待ち行列処理するための少なくとも1つの待ち行列を備えた請求項2に記載のサーバー。
- 上記サービス環境は、更に、サービスインスタンス及び待ち行列の状態情報を備えた請求項2又は3に記載のサーバー。
- 少なくとも1つのクライアントと、少なくとも1つのサービスを含む少なくとも1つのサーバーとを備えたクライアント−サーバープラットホームにおいてサーバーへサービス特有の事象を送信するクライアントのためのサービスを実行する方法において、
サービスと、送信された事象に対する少なくとも1つの待ち行列と、サービス及び待ち行列の状態情報とで構成されたサービス環境へクライアントが送信する事象を、サービス環境により待ち行列から引き出し、
サービス及び待ち行列の状態情報が許す場合にタスクマネージャーによりサービス環境から事象を引き出し、
タスクマネージャーにおいて、指定サービス環境の事象の処理を取り扱うスレッドに指定されたサービス環境からの事象をスケジューリングし、
サービス事象を処理するためにスレッドによりタスクマネージャーから上記スケジューリングされた事象を引き出し、そして
サービスを実行するためにサービス環境におけるサービスに対してその事象をファイアする、
という段階を備えたことを特徴とする方法。 - 少なくとも1つのクライアントと、少なくとも1つのサービスを含む少なくとも1つのサーバーとを備えたクライアント−サーバープラットホームにおいてサーバーへサービス特有の事象を送信するクライアントのためのサービスを実行する方法において、
サービスと、送信された事象に対する少なくとも1つの待ち行列と、サービス及び待ち行列の状態情報とで構成されたサービス環境へクライアントが送信する事象を、サービス環境により待ち行列から引き出し、
サービス及び待ち行列の状態情報が許す場合にサービス環境によりタスクマネージャーへ事象を押し込み、
タスクマネージャーにおいて、指定サービス環境の事象の処理を取り扱うスレッドに指定されたサービス環境からの事象をスケジューリングし、
サービス事象を処理するためにタスクマネージャーによりスレッドへ上記スケジューリングされた事象を押し込み、そして
サービスを実行するためにサービス環境におけるサービスに対してその事象をファイアする、
という段階を備えたことを特徴とする方法。 - サービスに事象をポスティングするのではなく、サービスに対して事象をファイアする請求項5又は6の記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FI20010163A FI20010163A (fi) | 2001-01-26 | 2001-01-26 | Palvelinarkitehtuuri |
PCT/FI2002/000058 WO2002059747A1 (en) | 2001-01-26 | 2002-01-24 | Method and system where one thread can handle several different services concurrently |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004517424A true JP2004517424A (ja) | 2004-06-10 |
Family
ID=8560149
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002560009A Withdrawn JP2004517424A (ja) | 2001-01-26 | 2002-01-24 | サーバーアーキテクチャー |
Country Status (5)
Country | Link |
---|---|
US (1) | US20030163600A1 (ja) |
EP (1) | EP1297422A1 (ja) |
JP (1) | JP2004517424A (ja) |
FI (1) | FI20010163A (ja) |
WO (1) | WO2002059747A1 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6832376B1 (en) * | 1999-09-29 | 2004-12-14 | Unisys Corporation | Method and apparatus for resuse of a thread for different programmed operations |
US7386857B2 (en) * | 2002-09-17 | 2008-06-10 | International Business Machines Corporation | Application connector parallelism in enterprise application integration systems |
US7571464B2 (en) * | 2004-08-27 | 2009-08-04 | International Business Machines Corporation | Secure bidirectional cross-system communications framework |
US7904546B1 (en) | 2004-09-27 | 2011-03-08 | Alcatel-Lucent Usa Inc. | Managing processes on a network device |
US8990365B1 (en) * | 2004-09-27 | 2015-03-24 | Alcatel Lucent | Processing management packets |
JP4238258B2 (ja) * | 2006-08-10 | 2009-03-18 | 株式会社デンソー | 車載電子制御ユニットのタスク管理装置及びタスク管理方法 |
US20080115131A1 (en) * | 2006-11-15 | 2008-05-15 | Jeff Kelsey | Express task manager system and method |
CN101452399B (zh) * | 2007-12-05 | 2011-04-20 | 中兴通讯股份有限公司 | 任务二级调度模块及方法 |
US10649768B1 (en) * | 2018-03-12 | 2020-05-12 | Amazon Technologies, Inc. | Development code execution using a service proxy |
CN112148455B (zh) * | 2020-09-29 | 2021-07-27 | 星环信息科技(上海)股份有限公司 | 一种任务处理方法、设备及介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5715474A (en) * | 1992-04-30 | 1998-02-03 | Motorola, Inc. | Simultaneous control of radio frequency modem in a multi-tasking system using a single session manager program with separate command queue for each application program |
GB2320594A (en) * | 1996-12-20 | 1998-06-24 | Ibm | Dispatching client method calls to parallel execution threads within a server |
US20020046230A1 (en) * | 1998-04-29 | 2002-04-18 | Daniel J. Dieterich | Method for scheduling thread execution on a limited number of operating system threads |
US6125382A (en) * | 1997-07-25 | 2000-09-26 | International Business Machines Corporation | Distributed thread mechanism and method |
US6292825B1 (en) * | 1998-11-12 | 2001-09-18 | International Business Machines Corporation | Service application with pull notification |
US7010586B1 (en) * | 2000-04-21 | 2006-03-07 | Sun Microsystems, Inc. | System and method for event subscriptions for CORBA gateway |
US7051330B1 (en) * | 2000-11-21 | 2006-05-23 | Microsoft Corporation | Generic application server and method of operation therefor |
-
2001
- 2001-01-26 FI FI20010163A patent/FI20010163A/fi unknown
-
2002
- 2002-01-24 JP JP2002560009A patent/JP2004517424A/ja not_active Withdrawn
- 2002-01-24 WO PCT/FI2002/000058 patent/WO2002059747A1/en active Application Filing
- 2002-01-24 US US10/239,724 patent/US20030163600A1/en not_active Abandoned
- 2002-01-24 EP EP02710913A patent/EP1297422A1/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
WO2002059747A1 (en) | 2002-08-01 |
EP1297422A1 (en) | 2003-04-02 |
US20030163600A1 (en) | 2003-08-28 |
FI20010163A0 (fi) | 2001-01-26 |
FI20010163A (fi) | 2002-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2200929C (en) | Periodic process scheduling method | |
JP3872690B2 (ja) | キューイングされた作業アイテムを実施するための再利用可能スレッドのプールを提供するためのシステムおよび方法 | |
US5247671A (en) | Scalable schedules for serial communications controller in data processing systems | |
US7076781B2 (en) | Resource reservation for large-scale job scheduling | |
CN103197968A (zh) | 一种融合同步异步特点的线程池处理方法及系统 | |
JP2004517424A (ja) | サーバーアーキテクチャー | |
CN113535362B (zh) | 一种分布式调度系统架构和微服务工作流调度方法 | |
WO2012094862A1 (zh) | 操作系统的任务调度方法、装置及计算机 | |
Li et al. | Task scheduling algorithm for heterogeneous real-time systems based on deadline constraints | |
US7703103B2 (en) | Serving concurrent TCP/IP connections of multiple virtual internet users with a single thread | |
JP2904483B2 (ja) | 周期的プロセスのスケジューリング方法 | |
CN110365786A (zh) | 作业处理系统、异步作业调度方法和计算机设备 | |
CN116225741A (zh) | 异构多核核间通信调度方法 | |
EP1450256A2 (en) | Inter-task communications method, program, recording medium, and electronic device | |
CN116089033A (zh) | 一种基于多级异构动态队列的任务调度方法 | |
AU714853B2 (en) | Job scheduling for instruction processor | |
CN108304257A (zh) | 基于延迟服务器的强实时混合任务调度方法 | |
CN112527532A (zh) | 一种基于消息的路径调度方法 | |
KR100272092B1 (ko) | 시간정보에 의한 우선순위 스케줄링 방법 및 그에 적합한 태스크 생성방법 | |
JP2000322278A (ja) | プロセス実行制御方法 | |
Rajaei et al. | Simulation of job scheduling for small scale clusters | |
JP3653176B2 (ja) | プロセス実行制御方法 | |
JPH1196108A (ja) | 計算機システム及びバス制御装置 | |
CN117076508B (zh) | 一种流数据处理系统支持批数据处理的方法 | |
JPH11312093A (ja) | 分散処理システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20050405 |