JP2015103124A - ネットワークシステム、常時接続方法、電子機器、サーバ、プログラム - Google Patents

ネットワークシステム、常時接続方法、電子機器、サーバ、プログラム Download PDF

Info

Publication number
JP2015103124A
JP2015103124A JP2013244547A JP2013244547A JP2015103124A JP 2015103124 A JP2015103124 A JP 2015103124A JP 2013244547 A JP2013244547 A JP 2013244547A JP 2013244547 A JP2013244547 A JP 2013244547A JP 2015103124 A JP2015103124 A JP 2015103124A
Authority
JP
Japan
Prior art keywords
always
server
servers
data
electronic 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
JP2013244547A
Other languages
English (en)
Other versions
JP6057879B2 (ja
Inventor
仁 西川
Hitoshi Nishikawa
仁 西川
裕史 古川
Yasushi Furukawa
裕史 古川
戸嶋 朗
Akira Toshima
朗 戸嶋
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.)
Sharp Corp
Original Assignee
Sharp Corp
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 Sharp Corp filed Critical Sharp Corp
Priority to JP2013244547A priority Critical patent/JP6057879B2/ja
Priority to US14/555,653 priority patent/US20150149524A1/en
Priority to CN201410694568.8A priority patent/CN104683435B/zh
Publication of JP2015103124A publication Critical patent/JP2015103124A/ja
Application granted granted Critical
Publication of JP6057879B2 publication Critical patent/JP6057879B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Transfer Between Computers (AREA)

Abstract

【課題】一般的にネットワークシステムの可用性を高めるためにネットワークシステムの各部の冗長化を行うことが多い。しかしながら、常時接続サーバを冗長化した場合には、通常のサーバを冗長化した場合とは異なる問題が生じる。常時接続サーバを冗長化した場合に生じる問題を解決する。【解決手段】複数の常時接続サーバと、複数の常時接続サーバの少なくともいずれかと常時接続可能な電子機器とを備えるネットワークシステムが提供される。電子機器は、複数の常時接続サーバのいずれかから複数の常時接続サーバの少なくともいずれかに関する情報を取得し、情報に基づいて複数の常時接続サーバのいずれかとの常時接続を開始する。【選択図】図6

Description

本発明は、電子機器同士を常時接続するための技術に関し、特にクライアントとサーバとを常時接続するネットワークシステム、常時接続方法、電子機器、サーバ、プログラムに関する。
従来から、通信機器が互いに相手にデータを送信するための様々な技術が知られている。たとえば、特開2010−277492号公報(特許文献1)には、電子会議サーバおよびコンピュータプログラムが開示されている。特開2010−277492号公報(特許文献1)によると、ウェブ・アプリケーションにて電子会議システムを提供する場合にリアルタイム性を確保可能とすること、および電子会議システムの運用に付随した未解決課題の管理などを実現する。具体的には、アプリケーションサーバは、Cometサーバが各電子機器からのHTTPリクエストを受信して保留状態となるように制御する。ある電子機器からメッセージデータをアプリケーションサーバが受信したら、アプリケーションサーバが会議データベースから必要データを引き出してメッセージデータとともに該当する電子機器へCometサーバから送信する。送信後は前記アプリケーションサーバが各電子機器からのHTTPリクエストを受信して再び保留状態となるように制御する。
しかしながら、Cometでは、通信のたびにHTTPセッションが必要となるため、クライアントとサーバとの間で何度も同じデータをやり取りする必要があった。そこで、近年では、TCP(Transmission Control Protocol)上で動作するWebSocketという技術が開発されている。WebSocketは、インターネットの標準化団体であるW3CとIETFがウェブサーバとウェブブラウザとの間の双方向通信用の技術規格である。WebSocketプロトコルの仕様はRFC(Request For Comment)6455に規定されている。
特開2010−277492号公報
一般的にネットワークシステムの可用性を高めるためにネットワークシステムの各部の冗長化を行うことが多い。しかしながら、常時接続サーバを冗長化した場合には、通常のサーバを冗長化した場合とは異なる問題が生じる。
本発明は、かかる問題を解決するためになされたものであり、その目的は、常時接続サーバを冗長化した場合に生じる問題を解決することにある。
この発明のある態様に従うと、複数の常時接続サーバと、複数の常時接続サーバの少なくともいずれかと常時接続可能な電子機器とを備えるネットワークシステムが提供される。電子機器は、複数の常時接続サーバのいずれかから複数の常時接続サーバの少なくともいずれかに関する情報を取得し、情報に基づいて複数の常時接続サーバのいずれかとの常時接続を開始する。
好ましくは、常時接続サーバは、複数の常時接続サーバのリストを取得する。
好ましくは、常時接続サーバは、情報としてリストを送信する。電子機器は、リストに基づいて複数の常時接続サーバから1つの常時接続サーバを選択する。
好ましくは、常時接続サーバは、リストに基づいて複数の常時接続サーバから1つの常時接続サーバを選択し、情報として、1つの常時接続サーバを特定する情報を電子機器に送信する。
好ましくは、常時接続サーバは、電子機器からの要求を受けたときにリストを取得する。
好ましくは、常時接続サーバは、定期的にリストを取得する。
好ましくは、常時接続サーバは、リストとして、複数の稼働中の常時接続サーバのリストを取得する。
好ましくは、常時接続サーバは、リストとして、接続中の電子機器の数に基づいて複数の常時接続サーバがソートされたリストを作成する。
好ましくは、常時接続サーバは、リストとして、負荷に基づいて複数の常時接続サーバがソートされたリストを作成する。
この発明の別の態様に従うと、複数の常時接続サーバのいずれかが、複数の常時接続サーバに関する情報を電子機器に送信するステップと、電子機器が、情報に基づいて複数の常時接続サーバのいずれかとの常時接続を開始するステップとを備える、常時接続方法が提供される。
この発明の別の態様に従うと、複数の常時接続サーバのいずれかと常時接続するための通信インターフェイスと、通信インターフェイスを利用することによって、複数の常時接続サーバのいずれかから複数の常時接続サーバに関する情報を取得し、情報に基づいて複数の常時接続サーバのいずれかとの常時接続を開始するためのプロセッサとを備える、電子機器が提供される。
この発明の別の態様に従うと、電子機器と通信するための通信インターフェイスと、複数の常時接続サーバに関する情報を記憶するメモリと、電子機器からの要求に応じて、通信インターフェイスを利用することによって、複数の常時接続サーバに関する情報を電子機器に送信するためのプロセッサとを備える、サーバが提供される。
この発明の別の態様に従うと、プロセッサと通信インターフェイスとを含む電子機器で利用されるプログラムが提供される。プログラムは、通信インターフェイスを利用することによって、複数の常時接続サーバのいずれかから複数の常時接続サーバに関する情報を取得するステップと、通信インターフェイスを利用することによって、情報に基づいて複数の常時接続サーバのいずれかとの常時接続を開始するステップとをプロセッサに実行させる。
この発明の別の態様に従うと、プロセッサとメモリと通信インターフェイスとを含むサーバで利用されるプログラムが提供される。プログラムは、通信インターフェイスを利用して、複数の常時接続サーバに関する情報を取得するステップと、電子機器からの要求に応じて、通信インターフェイスを利用することによって、複数の常時接続サーバに関する情報を電子機器に送信するステップとをプロセッサに実行させる。
この発明の別の態様に従うと、電子機器と、電子機器と常時接続可能な複数の常時接続サーバと、複数の常時接続サーバのいずれかを介して電子機器と情報を送受信するアプリケーションサーバと、アプリケーションサーバからのデータを複数の常時接続サーバに割り振る負荷分散サーバとを備えるネットワークシステムが提供される。複数の常時接続サーバの各々は、データの送信先に指定されている電子機器と常時接続中の他の常時接続サーバにデータを転送する。
好ましくは、ネットワークシステムは、複数の常時接続サーバと複数の電子機器との常時接続関係を格納するデータベースをさらに備える。データを割り振られた複数の常時接続サーバの各々は、データベースを参照することによって、データの送信先に指定されている電子機器と常時接続中の他の常時接続サーバを特定する。
好ましくは、常時接続サーバの各々は、複数の常時接続サーバと複数の電子機器との常時接続関係を格納する。データを割り振られた複数の常時接続サーバの各々は、常時接続関係を参照することによって、データの送信先に指定されている電子機器と常時接続中の他の常時接続サーバを特定する。
この発明の別の態様に従うと、アプリケーションサーバが負荷分散サーバにデータを送信するステップと、負荷分散サーバが、データを複数の常時接続サーバのいずれかに割り振るステップと、複数の常時接続サーバのいずれかが、データの送信先に指定されている電子機器と常時接続中の他の常時接続サーバにデータを転送するステップとを備える、常時接続方法が提供される。
この発明の別の態様に従うと、電子機器と常時接続するための通信インターフェイスと、通信インターフェイスを利用することによって、負荷分散されたデータを受信し、データの送信先に指定されている電子機器と常時接続中の他の常時接続サーバにデータを転送するプロセッサとを備える、サーバが提供される。
この発明の別の態様に従うと、電子機器と常時接続するための通信インターフェイスとプロセッサとを含む常時接続サーバで利用されるプログラムが提供される。プログラムは、通信インターフェイスを利用することによって、負荷分散されたデータを受信するステップと、通信インターフェイスを利用することによって、データの送信先に指定されている電子機器と常時接続中の他の常時接続サーバにデータを転送するステップとをプロセッサに実行させる。
以上のように、この発明によれば、常時接続サーバを冗長化した場合に生じる問題を解決できる。
本実施の形態にかかるネットワークシステム1の全体構成を示すイメージ図である。 本実施の形態にかかるクライアント100のハードウェア構成を表わすブロック図である。 本実施の形態にかかる常時接続サーバ200のハードウェア構成を表わすブロック図である。 本実施の形態にかかるアプリケーションサーバ300のハードウェア構成を表わすブロック図である。 本実施の形態にかかる負荷分散サーバ400のハードウェア構成を表わすブロック図である。 本実施の形態にかかるネットワークシステム1全体の機能構成を示すブロック図である。 本実施の形態にかかるネットワークシステム1における常時接続に関する装置間のデータのやり取りの処理手順を示すシーケンス図である。 本実施の形態にかかるネットワークシステム1Bの全体構成と動作概要とを示す第1のイメージ図である。 本実施の形態にかかるネットワークシステム1Bの全体構成と動作概要とを示す第2のイメージ図である。 本実施の形態にかかるネットワークシステム1Bの全体構成と動作概要とを示す第3のイメージ図である。 本実施の形態にかかる負荷分散サーバ600のハードウェア構成を表わすブロック図である。 本実施の形態にかかるネットワークシステム1B全体の機能構成を示すブロック図である。 本実施の形態にかかる対応関係DB500のデータ構造を示すイメージ図である。
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
また、以下では、常時接続の一例として、WebSocketプロトコルを利用した通信について説明する。しかしながら、アプリケーションサーバから任意のタイミングでクライアントにデータをプッシュできればよく、本発明はWebSocketプロトコルを利用する常時接続に限定されるものではない。
<第1の実施の形態>
<ネットワークシステムの全体構成>
まず、本実施の形態にかかるネットワークシステム1の全体構成について説明する。図1は、本実施の形態にかかるネットワークシステム1の全体構成を示すイメージ図である。
図1を参照して、本実施形態にかかるネットワークシステム1は、住居またはオフィスなどに配置される複数の家電100A,100Dと、ネットワークを介して家電100A,100Dと接続される複数の常時接続サーバ200A,200Bと、家電100A,100Dに関する様々なサービスを提供する複数のアプリケーションサーバ300A,300Bと、常時接続サーバ200A,200Bにかかる負荷を分散するための負荷分散サーバ400とを含む。
なお、以下では、常時接続サーバ200A,200Bが2つの場合について説明するが、常時接続サーバは1つであってもよいし3つ以上であっても良い。アプリケーションサーバも1つであってもよいし3つ以上であっても良い。家電も1つであってもよいし3つ以上であってもよい。負荷分散装置は2つ以上であってもよい。
ここで、家電としては、たとえば、掃除機100A、エアコン100D、テレビ、洗濯機、冷蔵庫、炊飯器、空気清浄器、床暖房、IH(Induction Heating)クッキングヒーター、などが挙げられる。さらに、家電は、住居内またはオフィス内の通信機器であればよく、たとえば、パーソナルコンピュータ、テレビ以外のAV機器、インターホンシステムなどを含んでもよい。また、常時接続サーバ200A,200Bとアプリケーションサーバ300A,300Bと負荷分散サーバ400とは、家電と同じ住居内、オフィス内、ビル内、会社あるいは学校の構内に存在するサーバなどを含んでもよい。
また、家電と各サーバ間は、光ファイバ等の回線を経由し、途中に、光回線終端装置、無線LAN通信を行うためのアクセスポイント、ルータ等が接続されてもよい。家電は、ネットワークに接続する手段として、IEEE802.11a/b/g/n/acなどの無線LAN通信、あるいは、有線LANなどが用いられるが、接続方法はこれらに限定されるものではない。
そして、本実施の形態においては、掃除機100Aおよびエアコン100Dの各々が、常時接続サーバ200A,200Bのいずれかと常時接続される。これによって、掃除機用のアプリケーションサーバ300Aおよびエアコン用のアプリケーションサーバ300Bは、常時接続サーバ200A,200Bを介して任意のタイミングで掃除機100Aおよびエアコン100Dにデータをプッシュ送信することができる。
すなわち、本実施形態にかかるネットワークシステム1では、多数の家電の各々が、自身に適したサービスを提供する複数のアプリケーションサーバの全てと、直接的に常時接続する必要がない。また、逆に、複数のアプリケーションサーバの各々が、対応する複数の家電の全てと、直接的に常時接続する必要がない。
<ネットワークシステムの動作概要>
次に、本実施の形態にかかるネットワークシステム1の動作概要について説明する。なお、以下では、説明の重複をさけるために、掃除機100A、エアコン100Dなどの家電を総称して、クライアント100ともいう。同様に、ノード1の常時接続サーバ200Aと、ノード2の常時接続サーバ200Bとを総称して、常時接続サーバ200ともいう。同様に、掃除機用のアプリケーションサーバ300Aおよびエアコン用のアプリケーションサーバ300Bなどのように、各種のサービスをクライアント100およびユーザなどに提供するためのアプリケーションサーバを総称して、アプリケーションサーバ300ともいう。
図1を参照して、掃除機100Aは、WebSocketプロトコルを利用して、ノード1としての常時接続サーバ200Aと常時接続する。これによって、掃除機100Aは、常時接続サーバ200Aを介して、掃除機用のアプリケーションサーバ300Aにデータを送信することができる。逆に、掃除機用のアプリケーションサーバ300Aも、任意のタイミングで常時接続サーバ200Aを介して、掃除機100Aにデータをプッシュすることができる。
同様に、エアコン100Dは、WebSocketプロトコルを利用して、ノード2としての常時接続サーバ200Bと常時接続する。すなわち、エアコン100Dは、常時接続サーバ200Bを介して、エアコン用のアプリケーションサーバ300Bにデータを送信することができる。逆に、エアコン用のアプリケーションサーバ300Bも、任意のタイミングで常時接続サーバ200Bを介して、掃除機エアコン100Dにデータをプッシュすることができる。
本実施形態においては、常時接続サーバ200A,200Bとアプリケーションサーバ300A,300Bの間に、負荷分散サーバ400が配備される。負荷分散サーバ400は、複数の常時接続サーバ200A,200Bの一部のみに大きな負荷がかかり、複数の常時接続サーバ200A,200Bの他の部分に小さな負荷しかからないという状況を避けるために利用される。
たとえば、負荷分散サーバ400は、アプリケーションサーバ300A,300Bのいずれかからデータを受信したときに、常時接続サーバ200A,200Bの負荷を調べる。そして、負荷分散サーバ400は、負荷が少ない方の常時接続サーバ200に当該データを送信する。
本実施形態においては、常時接続サーバ200Aは、負荷分散サーバ400からデータを受信したときに、当該データが常時接続サーバ200Aと常時接続中の家電100Aに向けたものであるかを判断する。そして、当該データが常時接続サーバ200Aと常時接続中の家電100Aに向けたものである場合、常時接続サーバ200Aは、WebSocketプロトコルを利用して、当該データを家電100Aに送信する。
一方、当該データが自身と常時接続中の家電100Aに向けたものでない場合、常時接続サーバ200Aは、当該データの送信先としての家電100Bが常時接続中の常時接続サーバ200Bを特定する。常時接続サーバ200Aは、当該データを、送信先に指定された家電100Bと常時接続中の常時接続サーバ200Bへと転送する。常時接続サーバ200Bは、当該データが自身と常時接続中の家電100Bに向けたものであるため、WebSocketプロトコルを利用して、当該データを家電100Bに送信する。
このように、本実施形態にかかるネットワークシステム1では、クライアント100が常時接続サーバ200と常時接続するシステムであるにかかわらず、負荷分散サーバ400が複数の常時接続サーバ200にかかる負荷を分散することができる。
以下、このような機能を実現するためのネットワークシステム1の具体的な構成について詳述する。
<クライアント100のハードウェア構成>
まず、クライアント100のハードウェア構成の一態様について説明する。図2は、本実施の形態にかかるクライアント100のハードウェア構成を表わすブロック図である。
図2を参照して、クライアント100は、主たる構成要素として、CPU110と、メモリ120と、入出力部130と、家電制御回路150と、通信インターフェイス160とを含む。
CPU110は、メモリ120あるいは外部の記憶媒体に記憶されているプログラムを実行することによって、クライアント100の各部を制御する。より詳細には、CPU110は、メモリ120のプログラムを実行することによって後述するクライアントAPPおよびクライアントAPI112(図7および図12を参照。)として動作する。より詳細には、クライアントAPPは、クライアント100の各部を制御する。クライアントAPI112は、後述する通信インターフェイスを介して、HTTPプロトコルを使用して通信したり、HTTPプロトコル上で利用されるWebSocketプロトコルを使用して通信したりする。
メモリ120は、各種のRAM(Random Access Memory)、各種のROM(Read-Only Memory)や、フラッシュメモリーなどによって実現される。なお、メモリ120は、インターフェイスを介して利用される、USB(Universal Serial Bus)(登録商標)メモリ、CD(Compact Disc)、DVD(Digital Versatile Disk)、メモリカード、ハードディスク、IC(Integrated Circuit)カード、光カード、マスクROM、EPROM(Erasable Programmable Read Only Memory)、EEPROM(Electronically Erasable Programmable Read-Only Memory)などの記憶媒体などによっても実現される。
メモリ120は、CPU110によって実行されるプログラムや、CPU110によるプログラムの実行により生成されたデータ、入出力部130を介して入力されたデータ、掃除機またはエアコンなどのようなクライアントとして動作するAPP(Application software)データ、クライアントAPPとデータをやり取りしながら常時接続サーバ200と通信するためのAPI(Application Programming Interface)データを記憶する。APPデータは、アプリケーションサーバ300と情報を送受信するためのサービス接続情報を含む。APIデータは、WebSocketクライアントAPI設定情報と、認証情報と、接続先サービス設定情報と、接続状態情報とを含む。
入出力部130は、ユーザからの命令を受け付けて、当該命令をCPU110に入力する。また、入出力部130は、CPU110からの信号に基づいて、文字や画像を出力する。
家電制御回路150は、CPU110からの信号に基づいて、家電としてのクライアントの各部(モータなど)を制御する。
通信インターフェイス160は、IEEE802.11a/b/g/n/acなどの無線LAN通信、ZigBee(登録商標)、BlueTooth(登録商標)、あるいは、イーサネット(登録商標)などの有線LANなどの通信モジュールによって実現される。通信インターフェイス160は、有線通信あるいは無線通信によって他の装置との間でデータをやり取りする。CPU110は、通信インターフェイス160を介して、他の装置からプログラム、制御命令、画像データ、テキストデータなどを受信したり、他の装置にテキストデータ、画像データなどを送信したりする。
<常時接続サーバ200のハードウェア構成>
次に、常時接続サーバ200のハードウェア構成の一態様について説明する。図3は、本実施の形態にかかる常時接続サーバ200のハードウェア構成を表わすブロック図である。
図3を参照して、常時接続サーバ200は、主たる構成要素として、CPU210と、メモリ220と、入出力部230と、通信インターフェイス260とを含む。常時接続サーバ200のハードウェア構成は、クライアント100のハードウェア構成と比較して、家電の各部を制御するための家電制御回路150を有さない点、CPU210の動作、メモリ220に格納されているデータに関して異なる。以下では、CPU210の動作とメモリ220が記憶するデータとについて説明するものとし、その他のハードウェア構成については説明を繰り返さない。
CPU210は、メモリ220あるいは外部の記憶媒体に記憶されているプログラムを実行することによって、常時接続サーバ200の各部を制御する。具体的には、CPU210は、メモリ220に記憶されているプログラムを実行することによって、後述するWSサーバコア212,212A,212B(図6、図7、図12を参照。)およびWS接続バランシング機能211,211A,211B(図6、図7、図12を参照。)として動作する。WSサーバコア212は、ソフトウェアとしての常時接続サーバのことを言い、WebSocketプロトコルを使用してクライアント100との常時接続通信を制御したり、HTTPプロトコルを使用して負荷分散サーバ400または複数のアプリケーションサーバ300との通信を制御したりする。
メモリ220は、CPU210によって実行されるプログラムや、CPU210によるプログラムの実行により生成されたデータ、入出力部230を介して入力されたデータ、サービスマスタ情報、一時認証情報、接続状態管理情報、接続グループ情報、接続グループ参加情報などを記憶する。
<アプリケーションサーバ300のハードウェア構成>
次に、アプリケーションサーバ300のハードウェア構成の一態様について説明する。図4は、本実施の形態にかかるアプリケーションサーバ300のハードウェア構成を表わすブロック図である。
図4を参照して、アプリケーションサーバ300は、主たる構成要素として、CPU310と、メモリ320と、入出力部330と、通信インターフェイス360とを含む。アプリケーションサーバ300のハードウェア構成は、常時接続サーバ200のハードウェア構成と比較して、CPU310の動作、メモリ320に格納されているデータに関して異なる。よって、以下では、CPU310の動作と、メモリ320が記憶するデータとについて説明するものとし、その他のハードウェア構成については説明を繰り返さない。
CPU310は、メモリ320あるいは外部の記憶媒体に記憶されているプログラムを実行することによって、アプリケーションサーバ300の各部を制御する。具体的には、CPU310は、メモリ320に記憶されているプログラムを実行することによって、後述するサーバAPP311A、311B(図6を参照。)およびサーバAPI312,312A,312B(図6、図7を参照。)として動作する。
サーバAPP311A,311Bは、ソフトウェアとしてのアプリケーションサーバのことを言い、クライアント100やスマートフォン500などにサービスを提供する。サーバAPI312,312A,312Bは、HTTPプロトコルを利用した負荷分散サーバ400または常時接続サーバ200との通信を制御する。
メモリ320は、CPU310によって実行されるプログラムや、CPU310によるプログラムの実行により生成されたデータ、キーボード330を介して入力されたデータ、アプリケーションサーバ300として動作するAPPデータ、サーバAPPとデータをやり取りしながら常時接続サーバ200と通信するためのAPIデータを記憶する。APPデータは、自身が管理すべきクライアント100に関する情報を含むクライアント情報と、常時接続中のクライアント100との接続に関するクライアント接続情報と、新たに常時接続を開始するための接続確率テンポラリ情報とを含む。APIデータは、WebSocketサーバAPI設定情報と、認証管理情報と、サービス設定情報と、クライアント接続状態情報とを含む。
<対応関係DB>
次に、本実施形態にかかるネットワークシステム1で利用される対応関係DB500について説明する。図13は、本実施の形態にかかる対応関係DB500のデータ構造を示すイメージ図である。
図13を参照して、対応関係DB500は、クライアント100とアプリケーションサービスとの組み合わせ毎に、クライアント100を特定するための接続IDと、アプリケーションサーバ300が提供するサービスを特定するためのサービスID(アプリケーション定義データともいう。)と、常時接続サーバ200を特定するためのノード名(常時接続サーバ200のアドレスに対応付けられてもよいし、常時接続サーバ200のアドレスそのものであってもよい。)と、常時接続の開示時刻と、常時接続の利用回数との対応関係を含む。そして、対応関係DB500は、本実施形態にかかるネットワークシステム1に含まれる複数のアプリケーションサーバ300および複数の常時接続サーバ200から参照可能になっている。
<負荷分散サーバ400のハードウェア構成>
次に、負荷分散サーバ400のハードウェア構成の一態様について説明する。図5は、本実施の形態にかかる負荷分散サーバ400のハードウェア構成を表わすブロック図である。
図5を参照して、負荷分散サーバ400は、主たる構成要素として、CPU410と、メモリ420と、キーボード430と、ディスプレイ440と、通信インターフェイス460とを含む。負荷分散サーバ400のハードウェア構成は、常時接続サーバ200のハードウェア構成と比較して、CPU410の動作、メモリ420に格納されているデータに関して異なる。よって、以下では、CPU410の動作と、メモリ420が記憶するデータとについて説明するものとし、その他のハードウェア構成については説明を繰り返さない。
CPU410は、メモリ420あるいは外部の記憶媒体に記憶されているプログラムを実行することによって、負荷分散サーバ400の各部を制御する。具体的には、CPU410は、メモリ420に記憶されているプログラムを実行することによって、後述するロードバランサ機能411(図6および図7を参照。)を実現する。
メモリ420は、CPU410によって実行されるプログラムや、CPU410によるプログラムの実行により生成されたデータ、キーボード430を介して入力されたデータ、負荷分散サーバ400として動作するための常時接続サーバリストおよび常時接続サーバ負荷状態とを記憶する。常時接続サーバリストは、現在、負荷分散サーバ400と通信可能な常時接続サーバ200毎のアドレスを格納する。常時接続サーバ負荷状態は、現在、負荷分散サーバ400と通信可能な常時接続サーバ200毎にかかっている負荷を格納する。
<ネットワークシステム1の機能構成>
次に、本実施の形態にかかるネットワークシステム1全体の機能構成について説明する。図6は、本実施の形態にかかるネットワークシステム1全体の機能構成を示すブロック図である。なお、以下では、説明を解りやすくするために、家電として、クライアント100A〜100Fが常時接続されているものとする。
図6を参照して、クライアント100A〜100Cは、WebSocketプロトコルを使用してノード1としての常時接続サーバ200Aと常時接続している。クライアント100D〜100Fは、WebSocketプロトコルを使用してノード2としての常時接続サーバ200Bと常時接続している。なお、クライアント100A〜100Fは、HTTPプロトコルを使用して常時接続サーバ200A,200Bおよびアプリケーションサーバ300A,300Bと通信することもできる。
アプリケーションサーバ300A,300Bの各々に関して、サーバAPP311A,311BはCPU310によって実現されるものであって、サーバAPI312A,312Bに他の装置とのデータのやり取りを依頼する。本実施形態においては、ネットワークシステム1は、掃除機100Aを制御するためのサーバAPP311Aと、エアコン100Dを制御するためのサーバAPP311Bとを含む。
サーバAPI312A,312Bは、CPU310によって実現されるものであって、通信インターフェイス360を利用することによって、負荷分散サーバ400、対応関係DB500、他のデータベース900、スマートフォン700などとデータの送受信を行う。本実施の形態においては、アプリケーションサーバ300A,300Bは、常時接続サーバ200A,200Bを介して、クライアント100A〜100Fに任意のタイミングでデータを送信できる。
負荷分散サーバ400に関して、ロードバランサ機能411は、CPU410によって実現されるものであって、複数の常時接続サーバ200A,200Bから、より小さな負荷がかかっている常時接続サーバ200A,200Bを選択する。そして、ロードバランサ機能411は、アプリケーションサーバ300A,300Bからのデータを、選択された常時接続サーバ200A,200Bに送信する。
常時接続サーバ200A,200Bに関して、WSサーバコア212A,212Bは、CPU210によって実現されるものであって、WebSocketプロトコルを利用して、通信インターフェイス260を介して、クライアント100A〜100Fと常時接続する。WSサーバコア212A,212Bは、HTTPプロトコルを利用して、通信インターフェイス260を介して、他の常時接続サーバ200、負荷分散サーバ400、アプリケーションサーバ300などともデータ通信を行う。
WS接続バランシング機能211A,211Bは、CPU210によって実現される。以下では、常時接続サーバ200AのWS接続バランシング機能211Aの機能について説明する。WS接続バランシング機能211Aは、負荷分散サーバ400からデータを受信したときに、当該データに含まれる接続IDとサービスIDとに基づいて、常時接続サーバ200Aと常時接続中のクライアント100A〜100Cに向けられたものであるか否かを判断する。なお、接続IDは、クライアント100A〜100FとサーバAPP311A,311Bとの組み合わせ毎かつサービス毎に設定されるものである。
当該データが常時接続サーバ200Aと常時接続中のクライアント100A〜100Cのいずれかに向けたものである場合、WS接続バランシング機能211Aは、WSサーバコア212Aに当該データをクライアント100へ送信するように依頼する。WSサーバコア212Aは、WebSocketプロトコルを利用して、通信インターフェイス260を介して当該データをクライアント100に送信する。
一方、当該データが常時接続サーバ200Aと常時接続中のクライアント100A〜100Cに向けられたものでない場合、WS接続バランシング機能211Aは、当該データの送信先としてのクライアント100と常時接続中の常時接続サーバ200Bを特定する。具体的には、WS接続バランシング機能211Aは、WSサーバコア212Aと通信インターフェイス260とを介して、外部の対応関係DB500にアクセスする。ここで、対応関係DB500は、多数のクライアントと複数の常時接続サーバとの接続状態を格納している。WS接続バランシング機能211Aは、接続IDに対応するクライアント100D〜100Fが常時接続中の常時接続サーバ200Bを特定する情報を取得する。WS接続バランシング機能211Aは、通信インターフェイス260を介して、常時接続サーバ200Bにデータと接続IDとを転送する。
常時接続サーバ200BのWSサーバコア212Bは、常時接続サーバ200Aから転送されてきたデータを、接続IDに基づいて常時接続サーバ200Bと常時接続中のクライアント100D〜100Fのいずれかへとプッシュする。
<常時接続に関する装置間のデータのやり取り>
次に、本実施の形態にかかるネットワークシステム1における常時接続に関する装置間のデータのやり取りの概要について説明する。なお、図7は、本実施の形態にかかるネットワークシステム1における常時接続に関する装置間のデータのやり取りの処理手順を示すシーケンス図である。
図7を参照して、クライアント100によって実現されるクライアントAPI112は、HTTPプロトコルを使用して、通信インターフェイス160を介して、アプリケーションサーバ300に認証情報を要求する(ステップS002)。このとき、クライアントAPI112は、アプリケーションサーバ300に、認証に利用されるクライアントIDを送信する。アプリケーションサーバ300のサーバAPI312は、当該要求に応じてHTTPプロトコルを使用して、通信インターフェイス360を介してクライアント100に認証情報を送信する(ステップS004)。
サーバAPI312は、通信インターフェイス360を介して、常時接続サーバ200にも認証情報を送信する(ステップS006)。常時接続サーバ200のWSサーバコア212は、アプリケーションサーバ300から受信した認証情報を保存する(ステップS008)。
クライアント100と常時接続サーバ200とは、HTTPプロトコルを使用して、WebSocketを利用した常時接続状態を確立する(ステップS010、ステップS012)。具体的には、クライアントAPI112は、HTTPプロトコルを使用して、通信インターフェイス160を介して常時接続サーバ200にハンドシェイク要求を送る。WSサーバコア212は、通信インターフェイス260を介してハンドシェイク応答を返す。これによって、クライアント100と常時接続サーバ200との間で、WebSocketプロトコルによる常時接続が有効になる。
クライアントAPI112は、通信インターフェイス160を介して認証情報を常時接続サーバ200に送信する(ステップS014)。WSサーバコア212またはWS接続バランシング機能211は、クライアント100からの認証情報と予め保存している認証情報とに基づいて、クライアント100を認証する(ステップS016)。認証に成功すると、WSサーバコア212またはWS接続バランシング機能211は、アプリケーションサーバ300がクライアント100を識別するための接続IDを発行する(ステップS018)。
すなわち、WSサーバコア212またはWS接続バランシング機能211は、常時接続中のクライアント100と接続IDとの対応関係を、接続状態管理情報として記憶する。クライアント100は、接続IDを受信して、記憶する(ステップS020)。アプリケーションサーバ300も、接続IDを受信して、記憶する(ステップS022)。このとき、WSサーバコア212またはWS接続バランシング機能211は、接続IDと常時接続サーバ200Aを特定する情報とアプリケーションサービスを特定する情報とを対応付けて、通信インターフェイス260を介して当該対応関係を対応関係DB500に登録する。
その後、サーバAPI312は、サーバAPP311からの要求に応じて、データ本体と送り先のクライアント100を特定するための接続IDとを通信インターフェイス360を介して常時接続サーバ200に送信する(ステップS032)。
本実施の形態においては、ステップS033として、アプリケーションサーバ300からのデータは、負荷分散サーバ400が受信する。負荷分散サーバ400のロードバランサ機能411は、常時接続サーバ200のそれぞれの負荷を取得して、当該負荷に基づいてデータを送信すべき常時接続サーバ200を選択する。ロードバランサ機能411は、通信インターフェイス460を介して、選択された常時接続サーバ200にデータを送信する。
たとえば、ロードバランサ機能411は、複数の常時接続サーバ200のうちの、現在かかっている負荷が小さい常時接続サーバ200に優先的にデータを送信する。あるいは、ロードバランサ機能411は、常時接続中のクライアント100の数が少ない常時接続サーバ200に優先的にデータを送信してもよい。あるいは、ロードバランサ機能411は、ランダムにデータを送信してもよい。
常時接続サーバ200は、負荷分散サーバ400からデータ本体と接続IDとを受信する(ステップS034)。WS接続バランシング機能211は、接続状態管理情報を参照して、接続IDに基づいてクライアント100を特定する(ステップS036)。
接続IDに対応するクライアント100が常時接続サーバ200と常時接続中である場合、WS接続バランシング機能211はWSサーバコア212にクライアントへのデータ送信を依頼する。すなわち、WSサーバコア212は、WebSocketプロトコルを使用して、通信インターフェイス260を介して、特定されたクライアント100にデータ本体を送信する(ステップS038−1)。クライアント100は、データ本体を受信する(ステップS040)。
クライアント100は、WebSocketプロトコルを使用して、受信結果を常時接続サーバ200に送信する(ステップS042)。常時接続サーバ200は、受信結果を受信すると、当該受信結果をアプリケーションサーバ300に送信する(ステップS044)。アプリケーションサーバ300は、受信結果を受信する(ステップS046)。
一方、接続IDに対応するクライアント100が常時接続サーバ200と常時接続中でない場合、WS接続バランシング機能211はWSサーバコア212に他の常時接続サーバ200へのデータ転送を依頼する。すなわち、WS接続バランシング機能211は、通信インターフェイス260を介して、対応関係DB500を参照することによって、接続IDに対応するクライアント100と常時接続中の他の常時接続サーバ200を特定する。
WS接続バランシング機能211は、WSサーバコア212に他の常時接続サーバ200へのデータ送信を依頼する。WSサーバコア212は、HTTPプロトコルを利用して、通信インターフェイス260を介して、特定された常時接続サーバ200にデータを転送する(ステップS038−1)。他の常時接続サーバ200のWSサーバコア212は、WebSocketプロトコルを利用して、通信インターフェイス260を介して接続IDに対応するクライアント100にデータを送信する(ステップS039)。
このように、本実施形態にかかるネットワークシステム1では、クライアント100が常時接続サーバ200と常時接続している最中であっても、負荷分散サーバ400が複数の常時接続サーバ200の間で負荷を分散することができる。
<第2の実施の形態>
<ネットワークシステムの全体構成>
次に、第2の実施の形態について説明する。本実施の形態にかかるネットワークシステム1Bは、第1の実施の形態のネットワークシステム1に後述する負荷分散サーバ600を追加したものである。
まず、本実施の形態にかかるネットワークシステム1Bの全体構成について説明する。図8は、本実施の形態にかかるネットワークシステム1Bの全体構成と動作概要とを示す第1のイメージ図である。図9は、本実施の形態にかかるネットワークシステム1Bの全体構成と動作概要とを示す第2のイメージ図である。図10は、本実施の形態にかかるネットワークシステム1Bの全体構成と動作概要とを示す第3のイメージ図である。
図8を参照して、ネットワークシステム1Bは、住居またはオフィスなどに配置される複数の家電100A,100Dと、ネットワークを介して家電100A,100Dと接続される複数の常時接続サーバ200A,200Bと、家電100A,100Dに関する様々なサービスを提供する複数のアプリケーションサーバ300A,300Bと、常時接続サーバ200A,200Bにかかる負荷を分散するための負荷分散サーバ400と、クライアント100が常時接続サーバ200A,200Bと再接続するための負荷分散サーバ600とを含む。
なお、以下では、常時接続サーバ200A,200Bが2つの場合について説明するが、常時接続サーバは1つであってもよいし、3つ以上であっても良い。アプリケーションサーバも1つであってもよいし、3つ以上であっても良い。家電も1つであってもよいし、3つ以上であってもよい。負荷分散装置と常時接続補助サーバは2つ以上であってもよい。
家電、常時接続サーバ、アプリケーションサーバ、負荷分散サーバの定義は、第1の実施の形態のそれらと同様であるため、ここでは説明を繰り返さない。
そして、本実施の形態においては、掃除機100Aおよびエアコン100Dの各々が、常時接続サーバ200A,200Bのいずれかと常時接続される。これによって、掃除機用のアプリケーションサーバ300Aおよびエアコン用のアプリケーションサーバ300Bは、常時接続サーバ200A,200Bを介して任意のタイミングで掃除機100Aおよびエアコン100Dにデータをプッシュ送信することができる。
すなわち、本実施形態にかかるネットワークシステム1Bも、多数の家電の各々が、自身に適したサービスを提供する複数のアプリケーションサーバの全てと、直接的に常時接続する必要がない。また、逆に、複数のアプリケーションサーバの各々が、対応する多数の家電の全てと、直接的に常時接続する必要がない。
<ネットワークシステムの動作概要>
次に、本実施の形態にかかるネットワークシステム1Bの動作概要について説明する。なお、以下では、説明の重複をさけるために、掃除機100A、エアコン100Dなどの家電を総称して、クライアント100ともいう。同様に、ノード1の常時接続サーバ200Aと、ノード2の常時接続サーバ200Bとを総称して、常時接続サーバ200ともいう。同様に、掃除機用のアプリケーションサーバ300Aおよびエアコン用のアプリケーションサーバ300Bなどのような、各種のサービスをクライアント100およびユーザなどに提供するためのアプリケーションサーバを総称して、アプリケーションサーバ300ともいう。
まず、図8を参照して、掃除機100Aは、常時接続サーバ200A,200Bのいずれかと常時接続を開始するために、まず、HTTPプロトコルを利用して、負荷分散サーバ600を介して常時接続サーバ200に、複数の稼働中の常時接続サーバ200のアドレスが格納されたノードリストを要求する。
常時接続サーバ200は、負荷分散サーバ600からのノードリスト要求に応じて対応関係DB500にノードリストを要求する。あるいは、常時接続サーバは、ノードリスト要求を受け付けた際に、複数の常時接続サーバ200A,200Bに接続確認用データ(ping)を送信し、その応答に応じてノードリストを作成する。掃除機100Aは、常時接続サーバ200から負荷分散サーバ600を介して受信した当該ノードリストに基づいて、WebSocketプロトコルを利用して、ノード1としての常時接続サーバ200Aと常時接続を開始する。
このようにして、掃除機100Aは、常時接続サーバ200Aを介して、掃除機用のアプリケーションサーバ300Aにデータを送信することができる。逆に、掃除機用のアプリケーションサーバ300Aも、常時接続サーバ200Aを介して、掃除機100Aにデータをプッシュすることができる。
同様に、エアコン100Dは、WebSocketプロトコルを利用して、ノード2としての常時接続サーバ200Bと常時接続している。すなわち、エアコン100Dは、常時接続サーバ200Bを介して、エアコン用のアプリケーションサーバ300Bにデータを送信することができる。逆に、エアコン用のアプリケーションサーバ300Bも、常時接続サーバ200Bを介して、掃除機エアコン100Dにデータをプッシュすることができる。
第1の実施の形態と同様に、本実施形態においても、常時接続サーバ200A,200Bとアプリケーションサーバ300A,300Bの間に、負荷分散サーバ400が配備される。負荷分散サーバ400は、複数の常時接続サーバ200A,200Bの一部のみに大きな負荷がかかり、複数の常時接続サーバ200A,200Bの他の部分に小さな負荷しかからないという状況を避けるために利用される。
たとえば、負荷分散サーバ400は、アプリケーションサーバ300A,300Bのいずれかからデータを受信したときに、常時接続サーバ200A,200Bの負荷を調べる。そして、負荷分散サーバ400は、負荷が少ない方の常時接続サーバ200に優先的にデータを送信する。
あるいは、負荷分散サーバ400は、常時接続中のクライアント100の数が少ない常時接続サーバ200に優先的にデータを送信してもよい。あるいは、負荷分散サーバ400は、ランダムにデータを送信してもよい。あるいは、負荷分散サーバ400と時間帯の常時接続サーバ200の優先順位を記憶しておき、時間帯ごとに優先順位が高い常時接続サーバ200に優先的にデータを送信してもよい。
第1の実施の形態と同様に、本実施形態においても、常時接続サーバ200Aは、負荷分散サーバ400からデータを受信したときに、当該データが常時接続サーバ200Aと常時接続中の家電に向けたものであるかを判断する。そして、当該データが常時接続サーバ200Aと常時接続中の家電(たとえば、掃除機100A)に向けたものである場合、常時接続サーバ200Aは、WebSocketプロトコルを利用して、当該データを掃除機100Aに送信する。
一方、当該データが常時接続サーバ200Aと常時接続中の家電に向けたものでない場合、常時接続サーバ200Aは、当該データの送信先としての家電(たとえば、エアコン100D)が常時接続中の常時接続サーバ200Bを特定する。常時接続サーバ200Aは、当該データを、送信先に指定されたエアコン100Bが常時接続中の常時接続サーバ200Bへと転送する。常時接続サーバ200Bは、当該データが自身と常時接続中のエアコン100Bに向けたものであるため、WebSocketプロトコルを利用して、当該データをエアコン100Bに送信する。
ただし、負荷分散サーバ400が、対応関係DB500を参照することによって、データの送信先である家電と常時接続中の常時接続サーバ200を特定するものであってもよい。この場合、負荷分散サーバ400が、データの送信先である家電(たとえば、エアコン100D)と常時接続中の常時接続サーバ200Bにデータを送信することができるため、常時接続サーバ200Aに第1の実施の形態のようなWS接続バランシング機能211を搭載する必要がない。
図9を参照して、掃除機100Aと常時接続中の常時接続サーバ200Aが正常に稼働しなくなる場合がある。すなわち、掃除機100Aが常時接続サーバ200Aと常時接続通信を行えなくなる場合がある。
このような場合は、図10を参照して、掃除機100Aは、他の常時接続サーバ200Bと常時接続を開始するために、まず、HTTPプロトコルを利用して、負荷分散サーバ600を介して常時接続サーバ200のいずれかに、複数の稼働中の常時接続サーバ200のアドレスが格納されたノードリストを要求する。掃除機100Aは、当該ノードリストに基づいて、WebSocketプロトコルを利用して、稼働中のノード2としての常時接続サーバ200Bと常時接続を開始する。
これによって、掃除機100Aは、常時接続サーバ200Bを介して、再度、掃除機用のアプリケーションサーバ300Aにデータを送信することができる。逆に、掃除機用のアプリケーションサーバ300Aも、常時接続サーバ200Bを介して、再度、掃除機100Aにデータをプッシュすることができる。
このように、本実施形態にかかるネットワークシステム1Bでは、クライアントが1つの常時接続サーバと通信できなくなった場合でも、アプリケーションサーバが別の常時接続サーバを介してクライアントに情報をプッシュできるようにすることができる。なお、本実施形態にかかるネットワークシステム1Bにおいても、第1の実施の形態と同様に、クライアント100が常時接続サーバ200と常時接続するシステムであるにかかわらず、負荷分散サーバ400が複数の常時接続サーバ200にかかる負荷を分散することができる。
以下、このような機能を実現するためのネットワークシステム1Bの具体的な構成について詳述する。
<クライアント100のハードウェア構成>
クライアント100のハードウェア構成は、第1の実施の形態のそれと同様であるため、ここでは説明を繰り返さない。
<常時接続サーバ200のハードウェア構成>
常時接続サーバ200のハードウェア構成も、第1の実施の形態のそれと同様であるため、ここでは説明を繰り返さない。
<アプリケーションサーバ300のハードウェア構成>
アプリケーションサーバ300のハードウェア構成も、第1の実施の形態のそれと同様であるため、ここでは説明を繰り返さない。
<対応関係DB>
対応関係DBの構成も、第1の実施の形態のそれと同様であるため、ここでは説明を繰り返さない。
<負荷分散サーバ400のハードウェア構成>
負荷分散サーバ400のハードウェア構成も、第1の実施の形態のそれと同様であるため、ここでは説明を繰り返さない。
<負荷分散サーバ600のハードウェア構成>
負荷分散サーバ600のハードウェア構成の一態様について説明する。図11は、本実施の形態にかかる負荷分散サーバ600のハードウェア構成を表わすブロック図である。
図11を参照して、負荷分散サーバ600は、主たる構成要素として、CPU610と、メモリ620と、入出力部630と、通信インターフェイス660とを含む。負荷分散サーバ600のハードウェア構成は、常時接続サーバ200のハードウェア構成と比較して、CPU610の動作、メモリ620に格納されているデータに関して異なる。よって、以下では、CPU610の動作と、メモリ620が記憶するデータとについて説明するものとし、その他のハードウェア構成については説明を繰り返さない。
CPU610は、メモリ620あるいは外部の記憶媒体に記憶されているプログラムを実行することによって、負荷分散サーバ600の各部を制御する。具体的には、CPU610は、メモリ620に記憶されているプログラムを実行することによって、HTTPプロトコルを利用してクライアント100および他の装置から受信したデータを複数の常時接続サーバ200や複数のアプリケーションサーバ300に割り振る。
メモリ620は、CPU610によって実行されるプログラムや、CPU610によるプログラムの実行により生成されたデータ、入出力部630を介して入力されたデータ、対応関係DB500から取得した稼働中の常時接続サーバ200の情報を格納するノードリストを記憶する。
<ネットワークシステム1Bの機能構成>
次に、本実施の形態にかかるネットワークシステム1B全体の機能構成について説明する。図12は、本実施の形態にかかるネットワークシステム1B全体の機能構成を示すブロック図である。なお、本実施形態にかかるクライアント100、常時接続サーバ200、アプリケーションサーバ300、負荷分散サーバ400は、第1の実施の形態のそれらが有する機能と同様の機能を有している。よって、以下では、第1の実施の形態と比較して本実施形態にのみ追加された機能について説明する。
図12を参照して、クライアントAPI112は、常時接続サーバ200A,200Bのいずれかと常時接続を開始する際に、通信インターフェイス160を利用することによって、負荷分散サーバ600を介して常時接続サーバ200A,200Bのいずれかにノードリストを要求する。
常時接続サーバ200A,200BのWSサーバコア212A,212Bは、予め、あるいはノードリスト要求を受けた際に、対応関係DB500から複数の常時接続サーバ200のアドレスのリスト(ノードリスト)を取得する。WSサーバコア212A,212Bは、ノードリスト要求を受けた際に、当該ノードリストをクライアント100に送信する。
あるいは、WSサーバコア212A,212Bは、ノードリスト要求を受けた際に、予めメモリ220に記憶されている複数の常時接続サーバ200のアドレスのリストをノードリストとしてクライアント100に送信する。
あるいは、WSサーバコア212A,212Bは、予め、あるいはノードリスト要求を受けた際に、複数の常時接続サーバ200A,200Bに接続確認用データ(ping)を送信し、その応答に応じて稼働中の常時接続サーバ200のみのアドレスを含むノードリストを作成する。WSサーバコア212A,212Bは、ノードリスト要求を受けた際に、当該ノードリストをクライアント100に送信する。
あるいは、WSサーバコア212A,212Bは、予め、あるいはノードリスト要求を受けた際に、複数の常時接続サーバ200に接続確認用データ(ping)を送信し、その応答として複数の常時接続サーバ200の負荷および/または接続中のクライアント100の数を取得する。WSサーバコア212A,212Bは、ノードリストとして、稼働中の常時接続サーバ200のみに関する、負荷および/または接続中のクライアント100の数を格納するリストを作成する。あるいは、WSサーバコア212A,212Bは、ノードリストとして、予め登録されている常時接続サーバ200に関する、負荷および/または接続中のクライアント100の数を格納するリストを作成する。WSサーバコア212A,212Bは、ノードリスト要求を受けた際に、当該ノードリストをクライアント100に送信する。
あるいは、WSサーバコア212A,212Bは、予め、あるいはノードリスト要求を受けた際に、常時接続サーバ200の負荷に基づいて、負荷の小さい順に常時接続サーバ200をソートしたリストをノードリストとして作成する。WSサーバコア212A,212Bは、ノードリスト要求を受けた際に、当該ノードリストをクライアント100に送信する。
あるいは、WSサーバコア212A,212Bは、予め、あるいはノードリスト要求を受けた際に、常時接続サーバ200に接続中のクライアント100の数に基づいて、接続中のクライアントが少ない順に常時接続サーバ200をソートしたリストをノードリストとして作成する。WSサーバコア212A,212Bは、ノードリスト要求を受けた際に、当該ノードリストをクライアント100に送信する。
WSサーバコア212A,212Bは、ノードリストをクライアント100に送信する際に、他の常時接続サーバ200が参照可能なように、対応関係DB500に格納(更新)してもよい。
クライアントAPI112は、ノードリストに格納されている稼働中の常時接続サーバ200と接続する。
そして、再接続可能な常時接続サーバが複数あった時は、例えば、クライアントAPI112は、常時接続サーバ200でソートされているノードリストの一番目の常時接続サーバ200を選択する。あるいは、クライアントAPI112は、負荷が最も小さい常時接続サーバ200を選択する。あるいは、クライアントAPI112は、接続中のクライアント100の数が最も少ない常時接続サーバ200を選択する。あるいは、クライアントAPI112は、ランダムに常時接続サーバ200を選択する。クライアントAPI112は、選択された常時接続サーバ200と常時接続を開始する。
<常時接続に関する装置間のデータのやり取り>
次に、本実施の形態にかかるネットワークシステム1Bにおける常時接続に関する装置間のデータのやり取りの概要について説明する。本実施の形態に係る常時接続に関する装置間のデータのやり取りは、第1の実施の形態のそれと比較して、クライアント100が常時接続サーバ200と再接続を開始するときの動作のみが異なる。その他の動作は第1の実施の形態のそれらと同様であるため、ここでは説明を繰り返さない。
まず、クライアント100のクライアントAPI112は、常時接続を開始する際に、負荷分散サーバ600を介して常時接続サーバ200のいずれかにノードリストを要求する。クライアントAPI112は、ノードリストを参照して、常時接続する常時接続サーバ200を選択する。
図7を参照して、クライアントAPI112は、HTTPプロトコルを使用して、通信インターフェイス160を介して、アプリケーションサーバ300に認証情報を要求する(ステップS002)。このとき、クライアントAPI112は、アプリケーションサーバ300に、認証に利用されるクライアントIDと選択された常時接続サーバ200を特定するための情報とを送信する。アプリケーションサーバ300のサーバAPI312は、当該要求に応じてHTTPプロトコルを使用して、通信インターフェイス360を介して認証情報を送信する(ステップS004)。
サーバAPI312は、通信インターフェイス360を介して、選択された常時接続サーバ200にも認証情報を送信する(ステップS006)。常時接続サーバ200のWSサーバコア212は、アプリケーションサーバ300から受信した認証情報を保存する(ステップS008)。これ以降の動作(ステップS010〜ステップS046)は第1の実施の形態のそれと同様であるため、ここでは説明を繰り返さない。
本実施形態においては、クライアントAPI112が、常時接続サーバ200との常時接続通信が行えなくなったときに、再度、負荷分散サーバ600を介して常時接続サーバ200に最新のノードリストを要求する。クライアントAPI112は、最新のノードリストを参照して、常時接続する常時接続サーバ200を選択する。そして、クライアントAPI112は、ステップS002からの処理を繰り返す。
このように、本実施形態にかかるネットワークシステム1Bでは、クライアントが常時接続サーバと通信できなくなった場合でも、アプリケーションサーバがクライアントに情報をプッシュできるようにすることができる。そして、クライアント100が常時接続サーバ200と常時接続するシステムであるにもかかわらず、負荷分散サーバ400が複数の常時接続サーバ200の間で負荷を分散することができる。
<第3の実施の形態>
上記の第2の実施の形態では、ネットワークシステム1Bが、2つの負荷分散サーバ400,600とWS接続バランシング機能211を含むものであった。
しかしながら、第3の実施の形態として、ネットワークシステムは、負荷分散サーバ600のみを含み、負荷分散サーバ400とWS接続バランシング機能211(第1の実施の形態に含まれる部分)を有さない構成であっても良い。すなわち、クライアント100が常時接続サーバ200Aと通信できなくなった場合に、クライアント100が別の常時接続サーバ200Bと常時接続できる構成だけであってもよい。
<第4の実施の形態>
上記の第1および第2の実施の形態では、負荷分散サーバ400は、アプリケーションサーバ300A,300Bのいずれかからデータを受信したときに、常時接続サーバ200A,200Bの負荷および/または接続中のクライアント100の数を調べるものであった。
しかしながら、第4の実施の形態として、負荷分散サーバ400は、定期的に常時接続サーバ200A,200Bの負荷を調べてもよい。あるいは、負荷分散サーバ400は、同様の構成にした系を複数用意して処理要求を順番に割り振る、いわゆるラウンドロビン方式でデータを常時接続サーバ200A,200Bに割り振ってもよい。
<第5の実施の形態>
上記の第1および第2の実施の形態では、接続IDと常時接続サーバ200を特定する情報とアプリケーションサービスを特定する情報との対応関係を常時接続サーバ200の外部の対応関係DB500に格納するものであった。そして、常時接続サーバ200が、他の常時接続サーバ200にデータを転送する際に、対応関係DB500を参照して他の常時接続サーバ200を選択していた。
しかしながら、第5の実施の形態として、接続IDと常時接続サーバ200を特定する情報とアプリケーションサービスを特定する情報との対応関係を常時接続サーバ200が自身のメモリ220に格納してもよい。そして、常時接続サーバ200同士で当該対応関係をやり取りしてもよい。
<第6の実施の形態>
上記の第2の実施の形態では、常時接続サーバ200のいずれかが複数の稼働中の常時接続サーバ200のアドレスが格納されたノードリストをクライアント100に送信するものであった。そして、クライアント100が、ノードリストに基づいて、常時接続を開始する常時接続サーバ200を選択するものであった。
しかしながら、第6の実施の形態として、常時接続サーバ200のいずれかが、複数の常時接続サーバ200のアドレスが格納されたノードリストに基づいて、クライアント100と常時接続すべき(たとえば、現在の負荷が小さい)常時接続サーバ200を選択してもよい。この場合は、常時接続サーバ200のいずれかは、選択された常時接続サーバ200を特定する情報をクライアント100に送信する。そして、クライアント100は、常時接続サーバ200のいずれかに指定された常時接続サーバ200と常時接続を開始する。
<第7の実施の形態>
上記の第2の実施の形態では、常時接続サーバ200が、予め、あるいはノードリストの要求があったときに、複数の常時接続サーバ200に接続確認用データ(ping)を送信し、その応答に基づいてノードリストを更新していた。
しかしながら、対応関係DB500のコンピュータが、予め、あるいはノードリストの要求があったときに、複数の常時接続サーバ200に接続確認用データ(ping)を送信し、その応答に基づいてノードリストを更新してもよい。この場合、ノードリストのソートは、常時接続サーバ200が行ってもよいし、対応関係DB500のコンピュータが行ってもよい。
<その他の応用例>
本発明は、システム或いは装置にプログラムを供給することによって達成される場合にも適用できることはいうまでもない。そして、本発明を達成するためのソフトウェアによって表されるプログラムを格納した記憶媒体(あるいはメモリ)を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の効果を享受することが可能となる。
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わる他の記憶媒体に書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1 :ネットワークシステム
100 :クライアント
110 :CPU
112 :クライアントAPI
120 :メモリ
150 :家電制御回路
160 :通信インターフェイス
200 :常時接続サーバ
210 :CPU
211 :WSサーバコア
212 :WS接続バランシング機能
220 :メモリ
260 :通信インターフェイス
300 :アプリケーションサーバ
310 :CPU
311 :サーバAPP
312 :サーバAPI
320 :メモリ
360 :通信インターフェイス
400 :負荷分散サーバ
410 :CPU
411 :負荷分散機能
420 :メモリ
460 :通信インターフェイス
500 :対応関係データベース
600 :負荷分散サーバ
610 :CPU
611 :リスト提供機能
620 :メモリ
660 :通信インターフェイス

Claims (20)

  1. 複数の常時接続サーバと、
    前記複数の常時接続サーバの少なくともいずれかと常時接続可能な電子機器とを備え、
    前記電子機器は、前記複数の常時接続サーバのいずれかから前記複数の常時接続サーバの少なくともいずれかに関する情報を取得し、前記情報に基づいて前記複数の常時接続サーバのいずれかとの常時接続を開始する、ネットワークシステム。
  2. 前記常時接続サーバは、前記複数の常時接続サーバのリストを取得する、請求項1に記載のネットワークシステム。
  3. 前記常時接続サーバは、前記情報として前記リストを送信し、
    前記電子機器は、前記リストに基づいて前記複数の常時接続サーバから1つの常時接続サーバを選択する、請求項2に記載のネットワークシステム。
  4. 前記常時接続サーバは、
    前記リストに基づいて前記複数の常時接続サーバから1つの常時接続サーバを選択し、
    前記情報として、前記1つの常時接続サーバを特定する情報を前記電子機器に送信する、請求項2に記載のネットワークシステム。
  5. 前記常時接続サーバは、前記電子機器からの要求を受けたときに前記リストを取得する、請求項2から4のいずれか1項に記載のネットワークシステム。
  6. 前記常時接続サーバは、定期的に前記リストを取得する、請求項2から4のいずれか1項に記載のネットワークシステム。
  7. 前記常時接続サーバは、前記リストとして、複数の稼働中の常時接続サーバのリストを取得する、請求項2から6のいずれか1項に記載のネットワークシステム。
  8. 前記常時接続サーバは、前記リストとして、接続中の電子機器の数に基づいて前記複数の常時接続サーバがソートされたリストを作成する、請求項2から7のいずれか1項に記載のネットワークシステム。
  9. 前記常時接続サーバは、前記リストとして、負荷に基づいて前記複数の常時接続サーバがソートされたリストを作成する、請求項2から7のいずれか1項に記載のネットワークシステム。
  10. 複数の常時接続サーバのいずれかが、前記複数の常時接続サーバに関する情報を電子機器に送信するステップと、
    前記電子機器が、前記情報に基づいて前記複数の常時接続サーバのいずれかとの常時接続を開始するステップとを備える、常時接続方法。
  11. 複数の常時接続サーバのいずれかと常時接続するための通信インターフェイスと、
    前記通信インターフェイスを利用することによって、前記複数の常時接続サーバのいずれかから前記複数の常時接続サーバに関する情報を取得し、前記情報に基づいて前記複数の常時接続サーバのいずれかとの常時接続を開始するためのプロセッサとを備える、電子機器。
  12. 電子機器と通信するための通信インターフェイスと、
    複数の常時接続サーバに関する情報を記憶するメモリと、
    前記電子機器からの要求に応じて、前記通信インターフェイスを利用することによって、前記複数の常時接続サーバに関する情報を前記電子機器に送信するためのプロセッサとを備える、サーバ。
  13. プロセッサと通信インターフェイスとを含む電子機器で利用されるプログラムであって、
    前記通信インターフェイスを利用することによって、複数の常時接続サーバのいずれかから前記複数の常時接続サーバに関する情報を取得するステップと、
    前記通信インターフェイスを利用することによって、前記情報に基づいて前記複数の常時接続サーバのいずれかとの常時接続を開始するステップとを前記プロセッサに実行させる、プログラム。
  14. プロセッサとメモリと通信インターフェイスとを含むサーバで利用されるプログラムであって、
    前記通信インターフェイスを利用して、複数の常時接続サーバに関する情報を取得するステップと、
    電子機器からの要求に応じて、前記通信インターフェイスを利用することによって、前記複数の常時接続サーバに関する情報を前記電子機器に送信するステップとを前記プロセッサに実行させる、プログラム。
  15. 電子機器と、
    前記電子機器と常時接続可能な複数の常時接続サーバと、
    前記複数の常時接続サーバのいずれかを介して前記電子機器と情報を送受信するアプリケーションサーバと、
    前記アプリケーションサーバからのデータを前記複数の常時接続サーバに割り振る負荷分散サーバとを備え、
    前記複数の常時接続サーバの各々は、前記データの送信先に指定されている前記電子機器と常時接続中の他の常時接続サーバに前記データを転送する、ネットワークシステム。
  16. 前記複数の常時接続サーバと複数の電子機器との常時接続関係を格納するデータベースをさらに備え、
    前記データを割り振られた前記複数の常時接続サーバの各々は、前記データベースを参照することによって、前記データの送信先に指定されている前記電子機器と常時接続中の他の常時接続サーバを特定する、請求項15に記載のネットワークシステム。
  17. 前記常時接続サーバの各々は、前記複数の常時接続サーバと複数の電子機器との常時接続関係を格納し、
    前記データを割り振られた前記複数の常時接続サーバの各々は、前記常時接続関係を参照することによって、前記データの送信先に指定されている前記電子機器と常時接続中の他の常時接続サーバを特定する、請求項15に記載のネットワークシステム。
  18. アプリケーションサーバが負荷分散サーバにデータを送信するステップと、
    前記負荷分散サーバが、前記データを複数の常時接続サーバのいずれかに割り振るステップと、
    前記複数の常時接続サーバのいずれかが、前記データの送信先に指定されている電子機器と常時接続中の他の常時接続サーバに前記データを転送するステップとを備える、常時接続方法。
  19. 電子機器と常時接続するための通信インターフェイスと、
    前記通信インターフェイスを利用することによって、負荷分散されたデータを受信し、前記データの送信先に指定されている電子機器と常時接続中の他の常時接続サーバに前記データを転送するプロセッサとを備える、サーバ。
  20. 電子機器と常時接続するための通信インターフェイスとプロセッサとを含む常時接続サーバで利用されるプログラムであって、
    前記通信インターフェイスを利用することによって、負荷分散されたデータを受信するステップと、
    前記通信インターフェイスを利用することによって、前記データの送信先に指定されている前記電子機器と常時接続中の他の常時接続サーバに前記データを転送するステップとを前記プロセッサに実行させる、プログラム。
JP2013244547A 2013-11-27 2013-11-27 ネットワークシステム、常時接続方法、電子機器、サーバ、プログラム Expired - Fee Related JP6057879B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013244547A JP6057879B2 (ja) 2013-11-27 2013-11-27 ネットワークシステム、常時接続方法、電子機器、サーバ、プログラム
US14/555,653 US20150149524A1 (en) 2013-11-27 2014-11-27 Network system, constant connection method, electronic device, server, and program
CN201410694568.8A CN104683435B (zh) 2013-11-27 2014-11-27 网络系统、保持连接方法、电子设备、服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013244547A JP6057879B2 (ja) 2013-11-27 2013-11-27 ネットワークシステム、常時接続方法、電子機器、サーバ、プログラム

Publications (2)

Publication Number Publication Date
JP2015103124A true JP2015103124A (ja) 2015-06-04
JP6057879B2 JP6057879B2 (ja) 2017-01-11

Family

ID=53378751

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013244547A Expired - Fee Related JP6057879B2 (ja) 2013-11-27 2013-11-27 ネットワークシステム、常時接続方法、電子機器、サーバ、プログラム

Country Status (1)

Country Link
JP (1) JP6057879B2 (ja)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002158665A (ja) * 2000-11-16 2002-05-31 Nec Eng Ltd 通信経路指定機能付き端末装置
JP2003087424A (ja) * 2001-09-07 2003-03-20 Nobuyoshi Sakatani インターネット接続サーバ、初期設定サーバ、ホストサーバ、およびインターネット接続サーバの遠隔管理システム
JP2004193694A (ja) * 2002-12-09 2004-07-08 Hitachi Ltd ゲートウェイ装置、情報機器装置及び通信制御方法
JP2009089326A (ja) * 2007-10-03 2009-04-23 Hitachi Communication Technologies Ltd 負荷分散機能パケット転送システム
JP2009188610A (ja) * 2008-02-05 2009-08-20 Hitachi Ltd 通信ゲートウェイ装置及び中継方法
JP2012134780A (ja) * 2010-12-22 2012-07-12 Hitachi Ltd ゲートウェイシステム、ゲートウェイ装置、負荷分散方法
WO2013094013A1 (ja) * 2011-12-20 2013-06-27 三菱電機株式会社 通信システムおよび自動検針システム

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002158665A (ja) * 2000-11-16 2002-05-31 Nec Eng Ltd 通信経路指定機能付き端末装置
JP2003087424A (ja) * 2001-09-07 2003-03-20 Nobuyoshi Sakatani インターネット接続サーバ、初期設定サーバ、ホストサーバ、およびインターネット接続サーバの遠隔管理システム
JP2004193694A (ja) * 2002-12-09 2004-07-08 Hitachi Ltd ゲートウェイ装置、情報機器装置及び通信制御方法
JP2009089326A (ja) * 2007-10-03 2009-04-23 Hitachi Communication Technologies Ltd 負荷分散機能パケット転送システム
JP2009188610A (ja) * 2008-02-05 2009-08-20 Hitachi Ltd 通信ゲートウェイ装置及び中継方法
JP2012134780A (ja) * 2010-12-22 2012-07-12 Hitachi Ltd ゲートウェイシステム、ゲートウェイ装置、負荷分散方法
WO2013094013A1 (ja) * 2011-12-20 2013-06-27 三菱電機株式会社 通信システムおよび自動検針システム

Also Published As

Publication number Publication date
JP6057879B2 (ja) 2017-01-11

Similar Documents

Publication Publication Date Title
CN104219127B (zh) 一种虚拟网络实例的创建方法以及设备
JP3805725B2 (ja) 相異なるミドルウェアを使用するホームネットワーク上のデバイス間のメッセージの受け渡しを可能にするゲートウェイ、ホームネットワークシステム及びメッセージ受け渡し方法
EP2840741B1 (en) Method and apparatus for using service of home network device based on remote access
JP2018530214A (ja) ネットワークサービスをデプロイするための方法及び装置
US20150149524A1 (en) Network system, constant connection method, electronic device, server, and program
KR101587500B1 (ko) 클라우드 기반 스마트 디바이스 협업 플랫폼 구축 시스템 및 그 시스템을 이용한 스마트 디바이스 협업 서비스 제공 방법
CN103401954B (zh) 虚拟dhcp的实现方法
CN112689029A (zh) 一种获取群组用户的ip地址的方法和装置及设备
CN116996908A (zh) 主从网关和无线ap的融合管理方法、装置、设备和介质
US9288664B2 (en) Relay device and method for providing device management service
TW201811093A (zh) 雲端資料傳輸系統及其動態分流方法
KR20120050367A (ko) 개인 네트워크를 이용한 서비스 제공 방법 및 장치
JP6057879B2 (ja) ネットワークシステム、常時接続方法、電子機器、サーバ、プログラム
JP6000231B2 (ja) ネットワークシステム、常時接続方法、電子機器、常時接続サーバ、アプリケーションサーバ、プログラム
KR102560548B1 (ko) 액세스 포인트, 홈 게이트웨이 및 홈 네트워크 시스템과, 상기 홈 네트워크 시스템에서의 ip 통신 수행 방법
KR101869519B1 (ko) 스마트 게이트웨이를 포함하는 사물기기 시스템
CN109617817A (zh) 一种mlag组网的转发表项的生成方法及装置
TW201705737A (zh) 一種建構於實體通訊協定中的虛擬通訊協定
JP5940566B2 (ja) ネットワークシステム、常時接続方法、サーバ、電子機器、プログラム
WO2018107671A1 (zh) 一种共享认证方法及系统、智能设备及控制方法
JP2010128512A (ja) 情報通信システム、及びソフトウェア更新方法
JP2008524912A (ja) バス型ネットワーク構造の通信ネットワークシステム及びこれを用いたサービス間のデータ送受信方法
JP6069474B2 (ja) ネットワークシステム、常時接続方法、電子機器、サーバ、プログラム
KR20130015980A (ko) Cpns시스템에서 개인망과 cpns서버의 접속 관리 방법
JP5896975B2 (ja) ネットワークシステム、データ通信方法、電子機器、およびプログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150602

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150728

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160202

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160304

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160726

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160928

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20161004

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161115

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161206

R150 Certificate of patent or registration of utility model

Ref document number: 6057879

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees