ところで、前述のようなネットワークシステムにおいて、複数のサーバに同一のサービスを実現するプログラム(以下、サービスプログラムという)が組み込まれ、或るサーバがサービスを提供できない状況になった場合でも、クライアント機器を利用するユーザにはそのことを意識させたり何らかの操作を課したりすることなく他のサーバが代替的にそのサービスを提供できるようにする冗長構成が採用されているものがある。しかしながら、従来のネットワークシステムの冗長構成では、次のような問題が生じていた。
サービスプログラムには、該プログラムの機能等を識別するための識別子(以下、サービスIDという)が割り当てられている。しかしながら、各々のサーバが同一のサービスIDが付与されたサービスプログラムを搭載する場合において、ユーザがクライアント機器に対してサービスの提供を要求する指示を入力したときに、該クライアント機器は、この要求を示す情報をどのサーバのサービスプログラムに送信すべきであるのかを認識することができない。その結果、クライアント機器からの要求に対応するサーバが定まらない。
このような状況を回避するために、同一のサービスプログラムであってもサーバ毎にサービスIDを変えるようにすることが考えられるが、この場合、クライアント機器は、サーバとサービスIDとの対応関係を管理する必要が生じたり、或るサーバが停止した場合に備えて、サーバの停止を検知する機能や、サーバ停止検知後に要求情報の送信先を別のサーバのサービスプログラムに切り替える機能が必要となったりする。しかしながら、このような構成は、クライアント機器を利用するユーザにはそのことを意識させたり何らかの操作を課したりすることなく他のサーバが代替的にそのサービスを提供できるという本来の冗長構成の目的にそぐわないものとなる。
また、クライアント機器から1つの要求情報を複数のサーバのサービスプログラムに送信した場合、各サービスプログラムが同一の設備機器にアクセスする状況が発生し、設備機器には、該設備機器がもつ通信能力を超えた通信負荷がかかる状況が発生しうる。
さらに、クライアント機器の場合と同様、設備機器が前記制御結果情報や動作状態情報をサーバに返信する場合に、設備機器は、これらの情報をどのサーバのサービスプログラムに返信すべきであるのかを認識することができない。その結果、各サーバのサービスプログラムが同一の設備機器から前記制御結果情報や動作状態情報を取得するために、該設備機器にアクセスが集中したり、或いは、各サーバのサービスプログラムが設備機器から前記制御結果情報や動作状態情報を取得した後に、各サーバ間で取得した情報の授受を行うことで、同一のサーバに同一の情報が重複して記録されたりする状況が発生しうる。
本発明は、上述した問題点を解決するためになされたものであり、設備機器やクライアント機器に新たな機能の追加を行うことなく、冗長化された信頼性の高いサーバプログラム、サーバ及びネットワークシステムを提供することを目的とする。
請求項1に記載の発明は、設備機器、前記設備機器の動作に関するサービスの要求を行うクライアント機器及び他のサーバと通信ネットワークを介して通信可能に接続されたサーバを、前記クライアント機器から取得した前記サービスの要求を示す情報に基づいて、前記サービスを行うものとして機能させるサービスプログラムであって、同一のサービスを行うサービス提供部には同一のものが割り当てられる識別子であって、当該他のサーバが提供しているサービス提供部に割り当てられている識別子が前記他のサーバから受信された場合に格納される記憶部を備える前記サーバを、前記サービス提供部として機能させ、前記サービス提供部は、前記サーバが起動すると、前記記憶部に、当該サービス提供部に割り当てられている第1の識別子と同一の識別子が既に格納されているか否かを確認し、前記第1の識別子と同一の識別子が格納されていないときには前記サービス提供の起動状態となり且つ前記第1の識別子を前記他のサーバに送信し、前記第1の識別子が前記記憶部に既に格納されているときには前記起動状態への移行を待機する前記サービス提供の待機状態となることを特徴とするサービスプログラム。
請求項9に記載の発明は、設備機器と、前記設備機器の動作に関するサービスの要求を行うクライアント機器及び他のサーバと通信ネットワークを介して通信可能に接続され、前記クライアント機器から取得した前記サービスの要求を示す情報に基づいて、前記サービスを他のサーバと連携して行うサーバであって、請求項1ないし8のいずれかに記載のサービスプログラムに従って動作することを特徴とするものである。
請求項10に記載の発明は、設備機器と、前記設備機器の動作の制御及び前記設備機器の動作状態に関する情報の提供のうち少なくとも一方を含むサービスの要求を行うクライアント機器と、前記クライアント機器からの前記サービスの要求を示す情報に基づいて、前記設備機器の動作の制御及び前記クライアント機器への前記設備機器の動作状態を示す情報の提供のうち少なくとも一方を含むサービス提供を行う複数のサーバとが通信ネットワークを介して接続されてなるネットワークシステムであって、前記サーバは、請求項9に記載のサーバであり、前記クライアント機器は、サービスの要求を、前記第1の識別子を用いて行うことを特徴とするネットワークシステムである。
これらの発明によれば、複数のサーバに同一のサービス提供部が搭載されている場合に、いずれか1つのサービス提供部のみが起動状態となる。
請求項2に記載の発明は、請求項1に記載のサービスプログラムにおいて、前記サービス提供部は、起動優先順位を決定するために用いられる第2の識別子を設定して前記記憶部に格納し、当該サービス提供部が待機状態から起動状態となるとともに他のサーバのサービス提供部から起動状態となった旨の情報を受信したとき、当該サービス提供部を有するサーバに設定した第2の識別子と前記他のサーバに設定された第2の識別子とを比較し、その比較結果に応じて、自らが起動状態を維持するか待機状態に移行するかを判断することを特徴とするものである。
この発明によれば、複数のサーバにおける同一のサービス提供部が一時的に略同時に起動した場合であっても、いずれか1つのサービス提供部のみが起動する状態に収束する。
請求項3に記載の発明は、請求項1または2に記載のサービスプログラムにおいて、前記他のサーバとの間で前記記憶部の記憶内容を授受し、受け取った記憶内容に基づいて当該記憶部の記憶内容を更新する記憶内容管理部を有し、前記記憶内容管理部は、当該記憶内容管理部を有するサーバのサービス提供部が待機状態であっても、サーバの起動中は、他のサーバとの間で前記記憶部の記憶内容の授受を繰り返し行うことを特徴とするものである。
この発明によれば、各サーバの記憶部に略同一の記憶内容を格納させることができる。
請求項4に記載の発明は、請求項2に記載のサービスプログラムにおいて、前記サービス提供部は、前記起動状態のときに前記クライアント機器へのサービスの要求に対応できなくなると、その旨を前記他のサーバに通知し、前記待機状態のときに前記他のサーバから前記通知を受け取ると、該待機状態から起動状態となり、当該サービス提供部が待機状態から起動状態となると同時に前記他のサーバのサービス提供部から起動状態となった旨の情報を受信したとき、当該サービス提供部を有するサーバに設定した第2の識別子と前記他のサーバに設定された第2の識別子とを比較し、その比較結果に応じて、自らが起動状態を維持するか待機状態に移行するかを判断することを特徴とするものである。
この発明によれば、或るサーバのサービス提供部が、前記クライアント機器のサービスの要求に対応できない状態になったときでも、他のサーバのうちいずれか1つのサーバのサービス提供部により前記クライアント機器のサービスの要求に対応することができる。
請求項5に記載の発明は、請求項4に記載のサービスプログラムにおいて、前記サービス提供部は、当該サービス提供部を有するサーバの通信負荷が一定状態を超えた場合に、前記クライアント機器へのサービスの要求に対応できなくなったと判断して、その旨を前記他のサーバに通知することを特徴とするものである。
この発明によれば、或るサーバのサービス提供部の通信負荷が大きくなっても、起動状態となるサービス提供部を他のサーバのものに切り替えることで、クライアント機器からの要求に対する応答(サービス提供)速度の低下を防止または抑制することができる。
請求項6に記載の発明は、請求項2,4,5のいずれかに記載のサービスプログラムにおいて、前記サービス提供部は、前記他のサーバの動作停止を検知すると、前記待機状態から起動状態となり、当該サービス提供部が待機状態から起動状態となると同時に他のサーバのサービス提供部から起動状態となった旨の情報を受信したとき、当該サービス提供部を有するサーバに設定した第2の識別子と前記他のサーバに設定された第2の識別子とを比較し、その比較結果に応じて、自らが起動状態を維持するか待機状態に移行するかを判断することを特徴とするものである。
この発明によれば、或るサーバの動作が停止しても、他の1つのサーバのサービス提供部により前記クライアント機器のサービスの要求に対応することができる。
請求項7に記載の発明は、請求項6に記載のサービスプログラムにおいて、前記サービス提供部は、当該サービス提供部を有するサーバが動作している旨を示すサーバ動作情報を、他のサーバのサービス提供部との間で繰り返し授受し、他のサーバから前記サーバ動作情報を受信しなくなる状態を検知することにより、前記他のサーバの動作が停止したものと判断することを特徴とするものである。
この発明によれば、他のサーバの動作停止を確実に検知することができる。
請求項8に記載の発明は、請求項1ないし7のいずれかに記載のサービスプログラムにおいて、前記サービス提供部は、前記設備機器又は前記他のサーバと通信コネクションを確立したときに、前記設備機器又は前記他のサーバから送信された、設備機器を個別に識別するための第3の識別子及び設備機器の機能を識別するための第4の識別子を前記記憶部に格納するとともに、前記通信コネクションを識別するための第5の識別子を、前記第3、第4の識別子又は前記他のサーバの第1の識別子と対応付けて前記記憶部に格納し、前記サービス提供部は、前記クライアント機器から前記サービスの要求があると、該サービスの要求を示す情報に含まれる第3、第4の識別子に対応した第5の識別子を検出して、該第5の識別子に対応する設備機器又はサーバにアクセスすることを特徴とするものである。
この発明によれば、サービスの要求を示す情報を伝達する通信経路が自動的に決定される。
請求項1,9,10に発明によれば、複数のサーバにそれぞれ同一のサービス提供部が搭載されている場合に、いずれか1つのサービス提供部のみが起動状態となるようにしたので、設備機器やクライアント機器に新たな機能を追加することなく、冗長化されたネットワークシステムを構築することができる。
請求項2に記載の発明によれば、複数のサーバにおける同一のサービス提供部が略同時に起動した場合であっても、最終的にいずれか1つのサービス提供部のみを起動状態とすることができる。その結果、ユーザがクライアント機器に対してサービスの提供を要求する指示を入力したときに、該クライアント機器は、この要求を示す情報をどのサーバのサービスプログラムに送信すべきであるのかを認識することができ、クライアント機器からの要求に対応するサーバを定めることができる。
請求項3に記載の発明によれば、各サーバに共通の記憶内容を保有させることができる。
請求項4に記載の発明によれば、或るサーバのサービス提供部が、前記クライアント機器のサービスの要求に対応できない状態になったときでも、前記クライアント機器のサービスの要求に対応することができる。
請求項5に記載の発明によれば、或るサーバのサービス提供部の通信負荷が大きくなっても、クライアント機器からの要求に対する応答速度の低下を防止または抑制することができる。
請求項6に記載の発明によれば、或るサーバの動作が停止しても、クライアント機器のサービスの要求に対応することができる。
請求項7に記載の発明によれば、他のサーバの動作停止を確実に検知することができる。
請求項8に記載の発明によれば、サービスの要求を示す情報を伝達する通信経路を自動的に決定するシステムを構築することができる。
以下、本発明に係るネットワークシステムの実施形態を図面に基づいて説明する。図1は、本実施形態のネットワークシステムの構成図である。
図1に示すように、本実施形態のネットワークシステム1は、例えばビル等に設置される照明設備や空調設備等の設備機器2と、設備機器2の動作の制御や状態の監視、設備機器2に関する各種情報の収集及び管理を行うサーバ3と、サーバ3に対して設備機器2の情報の要求や該設備機器2の制御指示を遠隔的に行うためのクライアント機器4とを備えて構成されている。また、サーバ3同士は、通信ネットワークを介して通信可能に接続されており、また、各サーバ3には、設備機器2及びクライアント機器4が通信ネットワークを介して通信可能に接続されており、サーバ3は、他のサーバ3や設備機器2或いはクライアント機器4との間で、共通の通信規約(プロトコル、例えばTCP/IP(transmission control protocol/internet protocol)に基づく通信をそれぞれ行う。
なお、図1では、ネットワークシステム1に3台のサーバ3が設けられ、各サーバ3にそれぞれ設備機器2及びクライアント機器4が2台ずつ接続されている形態を示しているが、サーバ3を含む各機器の台数はこれに限られるものではない。
図2は、設備機器2の構成を示すブロック図である。設備機器2は、前述の照明設備、冷暖房等の空調設備の他に、煙感知器等からなる防災設備、ブラインド設備、あるいはインターホンからなるセキュリティ設備等も含み、図2に示すように、動作部21と、通信部22と、制御部23とを備える。
動作部21は、当該設備機器2の目的・機能を果たすべく動作する部分であり、例えば照明設備では照明光を出力する構成に相当し、空調設備では冷気や暖気を生成して外部に送出する構成に相当する。通信部22は、サーバ3との間で前記通信規約に基づく通信を行うものであり、後述するクライアント機器4から出力された要求情報をサーバ3を介して受信し、該情報を当該設備機器2の制御部23に出力したり、制御部23によって取得された動作部21の動作状態、例えば照明光の出力のオン/オフ状態や該照明光の強度を示す情報(以下、動作状態情報という)を該制御部21から受け取ってサーバ3に送信したりする機能を有する。
制御部23は、例えば制御プログラムを記憶するROMや一時的にデータを記憶するRAM等が内蔵されたマイクロコンピュータからなり、機能的に、ID記憶部231と、動作制御部232とを備える。
ID記憶部231は、設備機器2の個体を識別するための識別子(以下、オブジェクトID(Identify)という;前記第3の識別子に相当)と、当該設備機器2が提供できるサービスの種類(当該設備機器2の機能)、例えば照明機器では、照明光の出力、空調設備では、冷暖気の生成・出力を示すための識別子(以下、インタフェースIDという;前記第4の識別子に相当)とを記憶するものである。インタフェースIDには、設備機器2の状態、例えば照明機器では照明光のオン/オフや該照明光の強度、空調設備では冷暖気の出力のオンオフや設定温度等が変数又は関数として含まれている。
動作制御部232は、サーバ3を介してクライアント機器4から送信されてくる要求情報(前記オブジェクトID及びインタフェースIDを含む)に基づき前記動作部21の動作を制御するものである。例えば、当該設備機器2が照明設備であり、サーバ3を介してクライアント機器4から送信されてきた要求情報が照明設備のオンを指示する旨の情報である場合には、動作制御部232は、この情報に従って照明光が出力されるように動作部21を制御する。
また、動作制御部232は、前記制御後、その制御結果に応じた変数又は関数を有するインタフェースIDを含んだ前記動作状態情報を当該設備機器2と通信コネクションが確立されたサーバ3に送信する指示を通信部22に出力する。
動作制御部232は、当該設備機器2がサーバ3に接続されると、ID記憶部231から読み出したオブジェクトID及びインタフェースIDを当該設備機器2と通信コネクションが確立されたサーバ3に送信する指示を通信部22に出力する。
図3は、クライアント機器4の構成を示すブロック図である。クライアント機器4は、例えばパーソナルコンピュータであり、入力操作部41と、表示部42と、外部記憶部43と、制御部44と、通信部45とを備える。
入力操作部41は、設備機器2に関する情報の収集や前記設備機器2の動作制御の要求を行うべく、ユーザが制御部44に所望の処理・動作を行わせる指示を入力するためのものであり、例えばキーボードやマウスに相当する。表示部42は、例えばLCD(Liquid Crystal Display)やプラズマディスプレイ等からなり、当該クライアント機器4の制御部44により収集された各種情報等の表示を行うものである。外部記憶部43は、例えばハードディスクやメモリカードからなり、各種のプログラムやデータを記憶するものである。
制御部44は、例えば制御プログラムを記憶するROMや一時的にデータを記憶するRAM等が内蔵されたマイクロコンピュータからなり、機能的に、要求情報生成部441と、返信取得部442と、テーブル記憶部443と、表示制御部444とを備える。
要求情報生成部441は、入力操作部41により要求が入力されると、その要求内容を示す要求情報を生成し、当該クライアント機器4との間で通信コネクションが確立されたサーバ3に該要求情報を送信する指示を通信部45に出力するものである。
要求情報生成部441は、例えば、入力操作部41により設備機器2の動作状態を要求する入力がなされると、その要求内容を示す情報(以下、動作状態要求情報という)を生成し、該情報をサーバ3に送信する指示を通信部45に出力し、また、例えば入力操作部41により設備機器2の動作制御を指示する情報、例えば照明光の出力をオンにするとか該照明光の強度を2段階下げるなどの要求を示す情報が入力されると、該要求内容を示す情報(以下、動作制御要求情報という)を生成し、該情報をサーバ3に送信する指示を通信部45に出力する。
返信取得部442は、通信部45で受信されたサーバ3からの返信を前記通信部45から取得するものである。返信取得部442は、例えば、前記動作状態要求情報に対して設備機器2から出力された動作状態情報を通信部45を介してサーバ3から取得し、また、前記動作制御要求情報に基づいて動作した設備機器2から出力されるその動作結果を示す情報(以下、動作結果情報という)を通信部45を介してサーバ3から取得する。
通信部45は、サーバ3との間で前記通信規約に基づく通信を行うものであり、前記要求情報生成部441により生成された前記動作状態要求情報や動作制御要求情報を制御部44から受け取り、当該クライアント機器4との間で通信コネクションが確立されたサーバ3に送信するとともに、前記動作状態情報や動作結果情報をサーバ3から受け取り、これらの情報を制御部44に出力する。
テーブル記憶部443は、図5に示すように、当該クライアント機器4との間で通信コネクションが確立されたサーバ3から受け取ったオブジェクトIDおよびインタフェースIDとを対応付けたテーブルを記憶するものである。なお、図5では、テーブル記憶部443が、オブジェクトID「A」とインタフェースID「a」とを対応付けて記憶していることを示している。本ネットワークシステム1においては、サーバ3が、定期的に(繰り返し)、当該サーバ3との間で通信コネクションが確立されたクライアント機器4にオブジェクトID及びインタフェースIDを送信するように構成されている。これにより、クライアント機器4は、各設備機器2等のオブジェクトIDおよびインタフェースIDを保持し、ユーザは、該クライアント機器4において、設備機器2に対する各種の要求を入力したり、設備機器2に関する情報を取得したりすることができる。
表示制御部444は、返信取得部442で取得された前記動作状態情報や動作結果情報に基づいて、前記入力操作部41による要求対象の設備機器2の動作状態や動作結果を表示部42に表示させるものである。
図4は、サーバ3の構成を示すブロック図である。サーバ3は、当該ネットワークシステム1内に設置された設備機器2に関するサービスをクライアント機器4に提供するためのコンピュータであり、制御部31と、通信部32とを備える。
制御部31は、例えば制御プログラムを記憶するROMや一時的にデータを記憶するRAM等が内蔵されたマイクロコンピュータからなり、機能的に、サービス提供部311と、ルーティングテーブル記憶部312と、サービス提供部監視部314と、ルーティングテーブル管理部313とを備える。なお、ルーティングテーブル記憶部312、サービス提供部監視部314及びテーブル管理部313は、サーバ3の起動(サーバ3aが初めて利用される場合や、電源オフ状態のサーバ3aが再び電源オンされる場合等)と略同時に起動することを前提とする。
サービス提供部311は、設備機器2に関する情報の通信を設備機器2、他のサーバ3及びクライアント機器4との間で行うものである。例えば、サービス提供部311は、設備機器2から受信した動作状態情報や動作結果情報をクライアント機器4に送信したり、クライアント機器4から受信した前記動作状態要求情報や動作制御要求情報を設備機器2に送信したりする。
また、サービス提供部311は、他のサーバ3のサービス提供部311に、自らが通信可能な状態(後述する起動状態及び待機状態を含む)にあることを示す情報(以下、コネクション確立情報という)を定期的に出力する。
ネットワークシステム1においては、各サーバ3のサービス提供部311の機能を識別するためのIDも設けられている。以下、このIDをサービスIDという。サービスIDは、前記第1の識別子に相当し、当該サーバ3に設けられている図略の記憶部に予め格納されている。
なお、サービスIDを前述したルーティング技術と連携させる場合には、サービスIDをオブジェクトIDとインタフェースIDとに分解して、これらをサービスIDとして使用することもできる。このようにすると、別途サービスIDを設ける必要がなく、処理の低減やシステムの簡素化を図ることができる。
サービス提供部311は、当該サーバ3に新たな設備機器2が接続されると、該設備機器2からオブジェクトID及びインタフェースIDを取得し、新たにオブジェクトID及びインタフェースIDをルーティングテーブル記憶部312のルーティングテーブルに格納する。
サービス提供部311は、前記各IDの他に、後述するコネクションID及びルートIDを生成する。コネクションIDは、サーバ3と設備機器2との間、又はサーバ3間で通信コネクションが確立された場合に、この通信コネクションを識別するためのIDであり、例えば、図1において、設備機器2aとサーバ3aとの間で通信コネクションWが確立された場合に、サーバ3aのサービス提供部311がその通信コネクションWに対して付与する。
サービス提供部311は、設備機器2や他のサーバ3との間で通信コネクションが確立されたときにコネクションIDを生成する。そして、サービス提供部311は、生成したコネクションIDを、通信コネクションの確立相手である設備機器2aのオブジェクトID及びインタフェースIDに対応付けてルーティングテーブル記憶部312のルーティングテーブルに格納する。
また、例えば、サーバ3aとサーバ3bとの間で通信コネクションが確立された場合は、サーバ3a,3bの各サービス提供部311a,311bは、この通信コネクションに対して独自にコネクションIDをそれぞれ生成し、この生成したコネクションIDを、相手側のサーバ3から送信されてくるサービスIDに対応付けてルーティングテーブル記憶部312に格納する。
ルートIDは、決定するために用いられるIDであり、当該サービス提供部311が生成されたとき、或いは、サービス提供部311が当該サーバ3との間で通信コネクションが確立された設備機器2からオブジェクトID及びインタフェースIDを取得したときに割り当てられるものである。ルートIDが割り当てられる対象は、サーバ2毎でもよいし、或いは、サービスIDが複数存在する場合にはサービスID毎でもよい。
ルーティングテーブル記憶部312は、図6に示すように、当該サーバ3との間で通信コネクションが確立された設備機器2や他のサーバ3から取得したオブジェクトID及びインタフェースID又はサービスIDと前記コネクションIDやルートIDとを対応付けたルーティングテーブルを記憶する。
テーブル管理部313は、ルーティングテーブル記憶部312のルーティングテーブルを管理するものであり、ルーティングテーブルを当該サーバ3との間で通信コネクションが確立されたクライアント機器4に定期的に送信する。
また、テーブル管理部313は、他のサーバ3のテーブル管理部313との間で、ルーティングテーブル記憶部312に格納されたルーティングテーブルを定期的に授受し合い、他のサーバ3から受け取ったルーティングテーブルを利用して、当該サーバ3のルーティングテーブル記憶部312のルーティングテーブルを更新する。ここで、テーブル管理部313は、当該サーバ3のサービス提供部311が待機状態であっても、サーバ3が起動している間は、他のサーバ3のテーブル管理部313との間で、ルーティングテーブル記憶部312に格納されたテーブルを定期的に授受する。これにより、ネットワークシステム1の各サーバ3は、常時、略同一のテーブルを保有することになり、どのサーバ3が起動状態になってもサービスの提供を行うことができる。
図1に示すネットワークシステム1における各サーバ3を区別して表現するため、各サーバ3を、サーバ3a、サーバ3b、サーバ3cと表すとともに、各サーバ3a,3b,3cに直接接続されているものや各サーバ3a,3b,3cに属するものを、各機器に付された番号の後に「a」,「b」,「c」を付して区別するものとする。
図6は、図1において設備機器2aとサーバ3aとの間に通信コネクションが確立されている場合に、該サーバ3aのルーティングテーブル記憶部312に格納されるテーブルの一例を示す図である。設備機器2aがオブジェクトIDとして「AAA」が、インタフェースIDとして「aaa」が割り当てられている場合、図6に示すように、該設備機器2aが起動状態のサーバ3aとの間で通信コネクションが確立されたことで、該サーバ3aのサービス提供部311は、該設備機器2から前記オブジェクトID「AAA」及びインタフェースID「aaa」を取得し、これらのIDをルーティングテーブル記憶部312にテーブル形式で格納する。
また、サービス提供部311aは、当該サーバ3aと設備機器2aとの間で通信コネクションWが確立されると、この通信コネクションWを表すコネクションID「xxx」と、当該サーバ3aを表すルートID「yyy」とを生成し、このコネクションID「xxx」及びルートID「yyy」を前記オブジェクトID及びインタフェースIDに対応付けた上でルーティングテーブル記憶部312aに格納されたルーティングテーブルに格納する。
サービス提供部監視部314は、サービス提供部311の動作状態を監視するものである。サービス提供部311に複数のクライアント機器4からのアクセスが集中したり、当該サーバ3の他のプログラムの動作によりサービス提供部311を含む複数のプログラムが起動・動作していたりすると、サービス提供部311の処理速度が低下する。そして、サービス提供部311は、その処理速度が予め設定された速度より小さくなると、それ以降のクライアント機器4からの要求情報に対する処理の実行を停止する。サービス提供部監視部314は、このようなサービス提供部311による処理の実行停止を検出すると、その旨を示すサービス停止情報を他のサーバ3に送信する。
通信部32は、設備機器2、クライアント機器4及び他のサーバ3との間で前記通信規約に基づく通信を行うものであり、サービス提供部311からの指示にしたがって前記各種の情報の送受を行うものである。
次に、本実施形態におけるネットワークシステム1の特徴部分であるサーバ3の処理について説明する。
(1)図7に示すように、サーバ3aが起動すると、該サーバ3aのサービス提供部311aを構成するサービスプログラムがインストールされ、前記サービス提供部311aが生成される(♯1)。このとき、サービス提供部311は、当該サーバ3a固有のルートIDを設定する。
次に、サーバ3aのサービス提供部311aは、自らの前記サービスIDと同一のサービスIDが、当該サーバ3aのルーティングテーブル記憶部312aに格納されていないか否かを確認する同一サービス動作中判定処理を実行する(♯2)。すなわち、サービス提供部311aは、当該サービス提供部311aが生成された時点で、既に他のサーバ3において、前記サービス提供部311aと同一のサービス提供部311が動作しているか否かをルーティングテーブル記憶部312を用いて判定する。
その結果、サービス提供部311aは、前記サービスIDがルーティングテーブル記憶部312aに格納されていないことを確認したときには、未だ、他のサーバ3において、前記サービス提供部311aと同一のサービス提供部311が動作していないものとの判断に基づいて起動状態に移行し、サービス提供部311aのサービスIDを他のサーバ3b,3cに送信する(♯3)。また、サービス提供部311aは、前記サービスID(サーバ側オブジェクトID)を、当該サーバ3aと通信コネクションを確立しているクライアント機器4にも送信する(♯4)。
そして、クライアント機器4により前記サービスIDに対する要求が行われると(♯5)、起動状態であるサーバ3aのサービス提供部311aが前記クライアント機器4に応答する(♯6)。
一方、サーバ3aのサービス提供部311aは、当該サーバ3aのルーティングテーブル記憶部312aに同一のサービスIDが既に格納されていることを確認した場合には、既に他のサーバ3において、前記サービス提供部311aと同一のサービス提供部311が動作しているものと判断し、前記起動状態への移行を待機する待機状態となる。なお、この処理は図7におけるサーバ3aの処理としては図示されていないが、サーバ3b,3cの処理として表されている。
すなわち、サーバ3bが起動すると、該サーバ3bのサービス提供部311bを構成するサービスプログラム(サーバ3aのサービス提供部311aと同一機能を有するプログラム)がインストールされ、前記サービス提供部311bが生成される(♯7)。なお、このとき、サービス提供部311bは、当該サーバ3bに対してルートIDを設定する。
次に、サービス提供部311bは、自らの前記サービスIDと同一のサービスIDが、当該サーバ3bのルーティングテーブル記憶部312bに格納されていないか否かを確認する同一サービス動作中判定を実行する(♯8)。ここで、サーバ3bはサーバ3aにより時間的に後に起動し、その起動後から♯8の同一サービス動作中判定処理までの間にサーバ3aから取得した前記サービスIDがサーバ3bのルーティングテーブル記憶部312bに格納されている。したがって、サービス提供部311bは、自らのサービスIDと同一のサービスIDが、当該サーバ3bのルーティングテーブル記憶部312bに格納されていることを確認することとなり、前記待機状態となる(♯9)。
また、サーバ3cについては、該サーバ3cの起動から同一サービス動作中判定処理実行までの間に、サーバ3aからサービスIDを受信した点がサーバ3bの場合と異なるのみで、同じくサーバ3aより後に起動するため、サーバ3bのサービス提供部311cは、サーバ3bと略同様の処理を実行することとなる。
以上のように、各サーバ3の起動タイミングのずれを利用して、先に起動したサーバ3のサービス提供部311が起動状態となり、起動したサービス提供部311が自らのサービスIDを他のサーバ3に送信する一方、後に起動した他のサーバ3は待機状態になるように構成することにより、いずれか1つのサーバ3のサービス提供部311のみが起動状態となるため、設備機器2やクライアント機器4の改良や改変を行うことなく、ネットワークシステム1の冗長構成を実現することができる。
(2)ユーザによりクライアント機器4に対して何らかの要求の入力が行われると、該クライアント機器4からその要求内容を示す要求情報がサーバ3に送信される。この要求情報には、要求対象のオブジェクトID及びインタフェースIDが含まれている。しかし、この要求情報を受け取ったサービス提供部311は、前記オブジェクトID及びインタフェースIDだけでは、その要求対象の設備機器2がどのサーバ3と直接接続されているのかが判別できないので、前述のコネクションIDを利用する。
サーバ3aと確立された通信コネクションの相手が設備機器2aである場合、該サーバ3aのサービス提供部311aは、その設備機器2aから当該設備機器2aが保持するオブジェクトID「AAA」及びインタフェースID「aaa」を取得してルーティングテーブル記憶部312aのルーティングテーブルに格納するとともに、前記コネクションID「xxx」を生成して前記オブジェクトID「AAA」及びインタフェースID「aaa」に対応付けて前記ルーティングテーブル記憶部312aのルーティングテーブルに格納する。なお、ここではルートIDについての説明は省略する。
一方、サーバ3aと確立された通信コネクションの相手がサーバ3b、3cである場合、該サーバ3aのサービス提供部311aは、前記他のサーバ3b,3cからサービスIDを取得する。そして、前記サービス提供部311aは、取得したサービスIDと同一のサービスIDを有する項目の有無を、ルーティングテーブル記憶部312のルーティングテーブルを参照して確認し、同一のサービスIDが含まれていないこと(すなわち他のサーバ3b,3cのサービス提供部311b,311cが起動状態となっていないこと)を確認したとき、ルーティングテーブル記憶部312aのルーティングテーブルに、取得したサービスIDとコネクションID「xxx」とを対応付けて格納する。一方、サービス提供部311aは、取得したサービスIDと同一のサービスIDが含まれていることを確認したときには、前記サービスID及びコネクションIDを格納する処理を保留し、待機状態(保留状態)となる。
前記サービス提供部311aは、クライアント機器4aから前記オブジェクトID「AAA」及びインタフェースID「aaa」を含む要求情報を受け取ると、これらのID「AAA」,「aaa」に対応するコネクションID「xxx」をルーティングテーブル記憶部312のルーティングテーブルから抽出し、このコネクションID「xxx」に対応する設備機器2aに前記要求情報を送信する。
このように、サービスの要求を示す情報を伝達する通信経路を自動的に決定することができる。
(3)複数のサーバ3におけるサービス提供部311が同時に起動した場合に、以下に説明するような前記ルートIDを用いた処理を行うことで、起動状態となるサービス提供部311が1つのみとなるようにする。なお、ここでは、複数のサーバ3におけるサービス提供部311が同時に起動する場合の一例として、ここでは起動状態のサーバ3の処理能力の低下に起因して他のサーバ3が起動する場合を想定する。
図8に示すように、クライアント機器4aからの要求(♯11)があった後、例えばサーバ3aのサービス提供部311aにアクセスが集中してサービス提供部311による処理能力が低下した場合(♯12)、サービス提供部311は、それ以降のクライアント機器4からの要求情報に応答しない停止状態に移行する(♯13)。サービス提供部監視部314は、この状態を検知して、その旨を示す情報を他のサーバ3に送信する(♯14)。
この情報を受け取ったサーバ3b、3cにおけるサービス提供部311b,311cは、全て、一旦待機状態から起動状態に移行する。そして、サーバ3b,3cのサービス提供部311b,311cは、他のサーバ3b,3cのサービス提供部311b,311cに向けてサービスIDを送信することで、自らのサービス提供部311b,311cが起動状態に移行した旨をサーバ3b,3cにおけるサービス提供部311b,311cに通知する(♯15,♯16)。
ここで、サーバ3b,3cのサービス提供部311b,311cへの通知タイミングがずれている場合には、前記(1)と同様の処理を実行することとなるが、前記通知タイミングが略同時であった場合には、前記通知を受け取ったサービス提供部311b,311cは、次のような処理を実行する。
すなわち、起動状態に移行したサーバ3bのサービス提供部311bは、当該サーバ3bに割り当てたルートID(以下、自ルートIDという)と、他のサーバ3cに割り当てられたルートID(以下、他ルートIDという)とを比較するサービス実行可否判定を行い、一方、起動状態に移行したサーバ3cのサービス提供部311cは、自らを搭載するサーバ3cに割り当てた自ルートIDと、他のサーバ3bに割り当てられた他ルートIDとを比較するサービス実行可否判定をそれぞれ行う(♯17,♯18)。なお、ルートIDが乱数を用いて設定される場合には、ここではルートIDの数値の大小が比較される。
そして、図8の場合、サービス提供部311bは、自ルートIDが他ルートIDに対して所定の状態のときであると判定して自らを起動状態とし(♯19)、一方、サービス提供部311cは、前記所定の状態でないと判定して再び待機状態になり、サービス提供部監視部314cは、待機状態への移行を検知して、その旨を示す情報をサーバ3bに送信する(♯20,♯21)。
これによれば、一時的に複数のサーバ3(3b,3c)におけるサービス提供部311(311b,311c)が同時に起動状態となっても、最終的に1つのサーバ3(3b)におけるサービス提供部311(311b)のみが起動状態に収束する。
以上の処理により、或るサーバ3のサービス提供部311による処理能力が低下することによるサービスの提供が停止するのを防止することができる。その結果、信頼性の高いネットワークシステム1を構築することができる。
次に、複数のサーバ3におけるサービス提供部311が同時に起動する場合の他の例として、サーバ3の動作が停止した場合を挙げ、この場合の処理について説明する。
図9に示すように、例えばサーバ3aの動作が停止する(停止したサーバ3aを停止サーバ3aという)と(♯31)、この停止サーバ3aと通信コネクションが確立されていたサーバ3b,3cとの通信コネクションが切断される。前述したように、各サーバ3a,3b,3cのサービス提供部311a,311b,311cは、定期的に他のサーバ3a,3b,3cからコネクション確立情報を受信するように構成されていることから、サーバ3b,3cのサービス提供部311b,311cは、サーバ3aからコネクション確立情報が受信されなくなることで、サーバ3aとの通信コネクションの切断を検知する(♯32,♯33)。
サービス提供部311b,311cは、前記通信コネクションの切断を検知すると、当該サーバ3b,3cのテーブル記憶部311b,311cに格納されたルーティングテーブルを参照し、該ルーティングテーブルに含まれる停止サーバ3aに関連する項目を全て削除するテーブル修正を実行する(♯34,♯35)。
これにより、停止サーバ3aのサービス提供部311aに割り当てられたサービスIDに対応する項目も削除される。サービス提供部311b,311cは、このサービスIDに対応する項目の削除により、サーバ3aのサービス提供部311aによるサービスの提供が停止されたことを検出する(♯36,♯37)。
そして、サービス提供部311b,311cは、サービスIDを削除した旨の情報及び自らのサービス提供部311b,311cの起動を示す情報を他のサーバ3b,3cのサービス提供部311b,311cに送信する(♯38,♯39)。このとき、サービス提供部311b,311cは、停止サーバ3aと通信コネクションが確立されていなかったサーバ3が存在している場合には、そのサーバ3のサービス提供部311にも前記情報を送信する。
ここで、サービス提供部311b,311cが同時に起動したとき、サービス提供部311b,311cは、図8に示す♯17〜♯21と同様の処理を実行する。すなわち、同時に起動状態に移行したサービス提供部311b,311cは、当該サーバ3b,3cに割り当てた自ルートIDと、他のサーバ3b,3cに割り当てられた他ルートIDとを比較するサービス実行可否判定をそれぞれ行う(♯40,♯41)。ルートIDが乱数を用いて設定される場合には、ここではルートIDの数値の大小が比較される。
そして、図9の場合、サービス提供部311bは、自ルートIDが他ルートIDに対して所定の状態のときであると判定して自らを起動状態とし(♯42)、一方、サービス提供部311cは、前記所定の状態でないと判定して再び待機状態となり、サービス提供部監視部314cは、待機状態への移行を検知して、その旨を示す情報をサーバ3bに送信する(♯43,♯44)。
これにより、サービスの提供を行っているサーバ3の動作が停止しても、該ネットワークシステム1のユーザへのサービスの提供が停止することなく継続して実行することができる。その結果、信頼性の高いネットワークシステム1を構築することができる。