JP2015170286A - 接続管理装置、通信システム、接続管理方法およびプログラム - Google Patents

接続管理装置、通信システム、接続管理方法およびプログラム Download PDF

Info

Publication number
JP2015170286A
JP2015170286A JP2014046696A JP2014046696A JP2015170286A JP 2015170286 A JP2015170286 A JP 2015170286A JP 2014046696 A JP2014046696 A JP 2014046696A JP 2014046696 A JP2014046696 A JP 2014046696A JP 2015170286 A JP2015170286 A JP 2015170286A
Authority
JP
Japan
Prior art keywords
connection
relay
terminal device
request
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014046696A
Other languages
English (en)
Other versions
JP6279938B2 (ja
Inventor
博史 川添
Hiroshi Kawazoe
博史 川添
大介 安次富
Daisuke Ajifu
大介 安次富
圭祐 南
Keisuke Minami
圭祐 南
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2014046696A priority Critical patent/JP6279938B2/ja
Priority to EP15151102.9A priority patent/EP2919441A1/en
Priority to US14/605,414 priority patent/US9900385B2/en
Publication of JP2015170286A publication Critical patent/JP2015170286A/ja
Application granted granted Critical
Publication of JP6279938B2 publication Critical patent/JP6279938B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Monitoring And Testing Of Exchanges (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】複数の中継サーバのうち端末装置が接続を確立すべき中継サーバを適切に決定することができる接続管理装置、通信システム、接続管理方法およびプログラムを提供する。
【解決手段】実施形態の接続管理装置は、第1記憶部と、更新部と、要求受付部と、決定部と、を備える。第1記憶部は、複数の中継装置それぞれについて、負荷状態と端末接続数との少なくとも一方を含む状態情報を記憶する。更新部は、所定の規則に従って前記第1記憶部を更新する。要求受付部は、任意の端末装置から、当該端末装置が接続を確立すべき中継装置の決定要求を受け付ける。決定部は、前記第1記憶部が記憶する前記状態情報に基づき、前記決定要求の要求元の端末装置が接続を確立すべき中継装置を決定する。
【選択図】図3

Description

本発明の実施形態は、接続管理装置、通信システム、接続管理方法およびプログラムに関する。
従来、確立した通信接続を維持することで再接続コストをなくし、低遅延化を実現するWeb標準の通信プロトコルとして、WebSocketが知られている。WebSocketは、例えば、スマートフォンなどの携帯端末から中継サーバを介して、ネットワークに接続された宅内機器などに制御コマンドを送信して機器を制御する、いわゆるスマートリモコンなどのアプリケーションで利用されている。
このようなアプリケーションをサービスとして提供する事業者は、多数のクライアントによる同時接続に対応できるようにするために、中継サーバを複数台設けて、携帯端末や宅内機器などの端末装置との間のWebSocket接続を、複数の中継サーバに分散させる場合がある。この場合、端末装置による通信のパフォーマンスが接続先の中継サーバの負荷状態や端末接続数などに依存して変化することがある。このため、新たに接続を要求する端末装置をどの中継サーバに接続させるかを適切に決定する仕組みの構築が求められている。
特開2012−175606号公報 特開2013−218452号公報 特開2012−37944号公報
I.Fette,A.Melnikov,"The WebSocket Protocol",[online],December 2011,IETF RFC6455,[平成26年2月27日検索],インターネット<URL:http://tools.ietf.org/html/rfc6455> 山口 秀夫,宮里 系一郎,"「WebSocket」の活用でリモコンをスマートに",日経エレクトロニクス no.1108,日本,日経BP社,2013年5月13日,p.71−79
本発明が解決しようとする課題は、複数の中継サーバのうち端末装置が接続を確立すべき中継サーバを適切に決定することができる接続管理装置、通信システム、接続管理方法およびプログラムを提供することである。
実施形態の接続管理装置は、予め対応付けられた2つの端末装置間の通信を中継する中継装置が複数設けられた通信システムにおいて、端末装置が接続を確立すべき中継装置を決定して当該端末装置に通知する。実施形態の接続管理装置は、第1記憶部と、更新部と、要求受付部と、決定部と、を備える。第1記憶部は、複数の中継装置それぞれについて、負荷状態と端末接続数との少なくとも一方を含む状態情報を記憶する。更新部は、所定の規則に従って前記第1記憶部を更新する。要求受付部は、任意の端末装置から、当該端末装置が接続を確立すべき中継装置の決定要求を受け付ける。決定部は、前記第1記憶部が記憶する前記状態情報に基づき、前記決定要求の要求元の端末装置が接続を確立すべき中継装置を決定する。
実施形態の通信システムの概要を説明する図。 WebSocket接続を確立するまでの処理の概要を示すシーケンス図。 実施形態の通信システムの機能的な構成例を示すブロック図。 状態記憶部が記憶する状態情報の一例を示す図。 管理情報記憶部が記憶する管理情報の一例を示す図。 定期更新の概要を示すシーケンス図。 状態情報が書き換わる様子を示す図。 不定期更新を含む接続管理サーバの処理手順を示すフローチャート。 実施形態の通信システムにおける具体的な動作例を示すシーケンス図。 実施形態の通信システムにおける具体的な動作例を示すシーケンス図。 記憶装置を含まない通信システムの構成を説明する図。 接続管理装置のハードウェア構成の一例を示す図。
図1は、本実施形態の通信システムの概要を説明する図である。本実施形態の通信システムは、図1に示すように、接続管理サーバ100(接続管理装置)と、複数の中継サーバ200A,200B,・・・(中継装置)と、複数の端末装置300A,300B,・・・とを含む。なお、図1では2つの中継サーバ200A,200Bおよび2つの端末装置300A,300Bを図示しているが、中継サーバの数および端末装置の数は任意である。また、接続管理サーバ100を複数設けて冗長性を持たせるようにしてもよい。
端末装置300Aと端末装置300Bは、双方向通信を行うペアとして予め対応付けられているものとする。ここで、本実施形態の通信システムにおいて、端末装置300Aと端末装置300BとがWebSocketによる双方向通信を行う際の手順の概要を説明する。なお、以下では、複数の中継サーバ200A,200B,・・・を総称する場合は中継サーバ200と表記し、複数の端末装置300A,300B,・・・を総称する場合は端末装置300と表記する。
1つ目の端末装置300Aは、ウェブ上の中継サーバ200Aに対してWebSocketによる接続確立を行い、接続された状態を維持する。2つ目の端末装置300Bも同様に、中継サーバ200Aに対してWebSocketによる接続を確立する。中継サーバ200Aは、これら2つの端末装置300A,300Bの間で双方向通信を行うことを予め認識しているものとする。中継サーバ200Aは、2つの端末装置300A,300Bの双方との接続が確立された後、一方の端末装置300(例えば端末装置300B)からWebSocket接続を介してデータが送出されると、このデータを他方の端末装置300(例えば端末装置300A)との間のWebSocket接続へ転送する。転送されたデータを受信した端末装置300(例えば端末装置300A)は、このデータを利用する。
このように、中継サーバ200Aにおいて端末装置300A,300BのWebSocket接続の対を収容することにより、端末装置300A,300BがNAT(Network Address Translation)の内側にいる場合など、端末装置300A,300B同士の直接接続が困難な場合においても、端末装置300A,300B間の双方向通信を実現することができる。このような仕組みは、例えば携帯端末から宅内機器を遠隔制御するスマートリモコンなどのアプリケーションに応用できる。
以上の説明では、端末装置300A,300Bが、WebSocket接続を確立すべき中継サーバ200Aを認識していることを前提としている。しかし、本実施形態の通信システムでは、多数のクライアント(端末装置300)による同時接続に対応するために、複数の中継サーバ200を設けている。このような構成では、端末装置300はどの中継サーバ200に対してWebSocket接続を確立すべきかを知る必要がある。そこで、本実施形態の通信システムでは、端末装置300からの要求に応じて端末装置300がWebSocket接続を確立すべき中継サーバ200を決定し、例えばその中継サーバ200の識別情報であるサーバIDを要求元の端末装置300に通知する接続管理サーバ100を設けている。
図2は、本実施形態の通信システムにおいて、端末装置300が中継サーバ200に対してWebSocket接続を確立するまでの処理の概要を示すシーケンス図である。
端末装置300は、まず初めに接続管理サーバ100に対して接続先決定要求を行い(ステップS101)、WebSocket接続を確立すべき中継サーバ200のサーバIDを取得する(ステップS102)。そして、端末装置300は、取得したサーバIDによって識別される中継サーバ200に対してWebSocket接続要求を行う(ステップS103)。これにより、中継サーバ200は、端末装置300からの接続要求に応じて、端末装置300との間のWebSocket接続を確立する処理を行う(ステップS104)。
接続管理サーバ100は、上記ステップS101における端末装置300からの接続先決定要求を受け付けると、複数の中継サーバ200のうち、端末装置300がWebSocket接続を確立すべき中継サーバ200を決定して、その中継サーバ200のサーバIDを端末装置300に通知する。この際、接続管理サーバ100は、複数の中継サーバ200それぞれについて、現時点での負荷状態(例えばリソース使用状況)や端末接続数(すでにWebSocket接続を確立している端末装置300の数)などの情報(以下、状態情報という。)に応じ、特定の中継サーバ200に負荷が集中しないよう配慮して、端末装置300の接続先となる中継サーバ200を決定する。これにより、多数の端末装置300が通信システムを利用する場合であっても、負荷の分散を図ることが可能となる。
しかし、このような通信システムでは、複数の中継サーバ200のいずれかに障害が生じた際に、接続管理サーバ100がそのことを知らずに、障害が生じた中継サーバ200を端末装置300の接続先として決定してしまう可能性がある。ここで、接続管理サーバ100が中継サーバ200の状態情報を適当な時間間隔で取得することで、中継サーバ200の異常を検出することは可能である。しかし、状態情報の取得と取得の間のタイミングで障害が生じたときに、接続管理サーバ100は、次に状態情報を取得する時刻までは中継サーバ200の障害を認識することができない。このため、それまでに端末装置300から接続先決定要求があった場合に、その端末装置300の接続先として障害のある中継サーバ200を決定し、その中継サーバ200のサーバIDを端末装置300に通知してしまう可能性がある。また、接続管理サーバ100が中継サーバ200の状態情報を取得する時間間隔を小さくすることで、障害を認識するまでの時間を短縮することが可能となるが、この場合は、接続管理サーバ100と中継サーバ200双方の負荷増加を招いてしまう。
そこで、本実施形態では、接続管理サーバ100が定期的に複数の中継サーバ200の状態情報を取得することに加えて、必要に応じて中継サーバ200の状態情報を不定期に取得して、記憶している状態情報を更新する。これにより、接続管理サーバ100と中継サーバ200の双方の負荷増加を抑えつつ、中継サーバ200に障害が生じた際には接続管理サーバ100がそのことを速やかに認識できるようにして、端末装置300がWebSocket接続を確立すべき中継サーバ200を適切に決定できるようにしている。
図3は、本実施形態の通信システムの機能的な構成例を示すブロック図である。本実施形態では、接続管理サーバ100と中継サーバ200および端末装置300とが、HTTP(Hypertext Transfer Protocol)ベースの要求(HTTPリクエスト)と応答(HTTPレスポンス)のやり取りを行うことを想定する。また、本実施形態では、図3に示すように、接続管理サーバ100および複数の中継サーバ200のそれぞれがアクセス可能な記憶装置400が設けられている。
まず、中継サーバ200について説明する。複数の中継サーバ200には、それぞれ固有の識別情報であるサーバIDが与えられている。本実施形態では、一例として、中継サーバ200のIP(Internet Protocol)アドレスを、その中継サーバ200のサーバIDとして用いるものとする。なお、サーバIDはIPアドレスに限らず、中継サーバ200を一意に識別できる情報であればよい。
中継サーバ200は、WebSocketサーバとして機能するものであり、例えば図3に示すように、状態取得部210と、取得要求受付部220と、接続確立部230とを備える。なお、複数の中継サーバ200の構成は共通である。
状態取得部210は、予め定められた時間間隔で定期的に当該中継サーバ200の状態情報を取得し、中継サーバ200のサーバIDと対応付けて記憶装置400に登録する。また、状態取得部210は、取得要求受付部220からの依頼に応じて当該中継サーバ200の状態情報を不定期に取得し、取得した状態情報を取得要求受付部220に返す。
取得要求受付部220は、接続管理サーバ100から状態情報の取得要求があったときに、この取得要求を受け付けて、状態取得部210に対して状態情報の取得を依頼する。そして、取得要求受付部220は、状態取得部210が取得要求受付部220からの依頼に応じて不定期に取得した状態情報を、取得要求に対する応答として接続管理サーバ100に通知する。
接続確立部230は、端末装置300からWebSocket接続要求があったときに、このWebSocket接続要求を受け付けて、RFC6455で定められた手順により(非特許文献1参照)、要求元の端末装置300との間のWebSocket接続を確立する。なお、接続確立部230は、要求元の端末装置300との間のWebSocket接続の確立に失敗した場合、要求元の端末装置300に対し、接続失敗を示すステータス情報を通知する。
次に、端末装置300について説明する。複数の端末装置300には、それぞれ固有の識別情報である端末IDが与えられている。本実施形態では、一例として、端末装置300のIPアドレスを、その端末装置300の端末IDとして用いるものとする。なお、端末IDはIPアドレスに限らず、端末装置300を一意に識別できる情報であればよい。なお、中継サーバ200を介して双方向通信する端末装置300のペアは、それらの端末装置300の端末IDが対応付けられて、接続管理装置100および中継サーバ200に予め登録されているものとする。
端末装置300は、WebSocketクライアントとして機能するものであり、例えば図3に示すように、決定要求部310と、接続要求部320とを備える。なお、複数の端末装置300は、WebSocetクライアントとしての機能については、共通の構成である。
決定要求部310は、接続管理サーバ100に対して、当該端末装置300がWebSocket接続を確立すべき中継サーバ200の決定要求(接続先決定要求)を行う。そして、決定要求部310は、この接続先決定要求に対する応答として接続管理サーバ100から通知された、WebSocket接続を確立すべき中継サーバ200のサーバIDを取得して、取得したサーバIDを接続要求部320に渡す。
接続要求部320は、決定要求部310から渡されたサーバIDをもとに、当該サーバIDで識別される中継サーバ200に対してWebSocket接続要求を行って、中継サーバ200に当該端末装置300とのWebSocket接続を確立させる。この際、中継サーバ200からWebSocket接続の確立に失敗したことを示す接続失敗のステータス情報が通知された場合、接続要求部320は、そのステータス情報を中継サーバ200のサーバIDとともに決定要求部310に渡す。
接続要求部320から接続失敗のステータス情報を渡された決定要求部310は、接続管理サーバ100に対して、接続先決定要求を再度行う。この際、決定要求部310は、接続管理サーバ100に対して、接続要求部320からステータス情報とともに渡されたサーバID、つまり、WebSocket接続の確立に失敗した中継サーバ200のサーバIDを含む接続先決定要求を行う。
また、決定要求部310は、中継サーバ200との間ですでに確立されていたWebSocket接続が切断された場合にも、接続管理サーバ100に対して、WebSocket接続が切断された中継サーバ200のサーバIDを含む接続先決定要求を行う。このようなWebSocket接続の切断の要因としては、例えば、中継サーバ200の障害発生や、端末装置300と中継サーバ200との間に介在するネットワーク機器の障害発生などが挙げられる。また、詳細を後述するように、接続管理サーバ100から中継サーバ200に対して切断要求が行われることによって、WebSocket接続が切断される場合もある。
次に、接続管理サーバ100について説明する。接続管理サーバ100は、HTTPサーバとして機能するものであり、例えば図3に示すように、状態記憶部110(第1記憶部)と、更新部120と、取得要求部130と、要求受付部140と、管理情報記憶部150(第2記憶部)と、決定部160とを備える。
状態記憶部110は、複数の中継サーバ200それぞれの状態情報を記憶する。図4は、状態記憶部110が記憶する状態情報の一例を示す図である。状態記憶部110は、複数の中継サーバ200それぞれの状態情報として、例えば図4に示すように、CPU使用率および使用可能メモリ量などの負荷状態と端末接続数とを、中継サーバ200のサーバIDに対応付けて記憶している。
更新部120は、所定の規則に従って状態記憶部110を更新する。本実施形態では、この更新部120が、定期更新部121(第1更新部)と、不定期更新部122(第2更新部)とを含んだ構成となっている。
定期更新部121は、予め定められた時間間隔で定期的に記憶装置400にアクセスし、複数の中継サーバ200のそれぞれが定期的に記憶装置400に登録した状態情報を取得して、状態記憶部110を更新する。なお、定期更新部121が記憶装置400にアクセスするタイミングや周期は、複数の中継サーバ200が記憶装置400に状態情報を登録するタイミングや周期と一致させる必要はない。
不定期更新部122は、例えば要求受付部140が端末装置300から特定の中継サーバ200のサーバIDを含む接続先決定要求を受け付けた場合など、不定期なタイミングで中継サーバ300から状態情報を取得して、状態記憶部110を更新する。具体的には、不定期更新部122は、要求受付部140から例えばサーバIDを指定した状態情報の更新依頼があると、取得要求部130に対して、そのサーバIDで識別される中継サーバ200に対する状態情報の取得要求を依頼する。そして、不定期更新部122は、取得要求部130が中継サーバ200から通知された状態情報を受け取って、状態記憶部110を更新する。
取得要求部130は、不定期更新部122からの依頼に応じて、指定された中継サーバ200に対して状態情報の取得要求を行う。そして、取得要求部130は、この取得要求に対する応答として中継サーバ200から通知された状態情報を受け取り、不定期更新部122に渡す。
要求受付部140は、端末装置300からの接続先決定要求を受け付けて、決定部160に対して、要求元の端末装置300がWebSocket接続を確立すべき中継サーバ200の決定を依頼する。そして、要求受付部140は、決定部160によって中継サーバ200が決定されると、その中継サーバ200のサーバIDを、接続先決定要求に対する応答として要求元の端末装置300に通知する。
また、要求受付部140は、端末装置300からの接続先決定要求に中継サーバ200のサーバIDが含まれていた場合には、このサーバIDを指定して、不定期更新部122に対して状態情報の更新を依頼する。
管理情報記憶部150は、すでにWebSocket接続が確立されている端末装置300と中継サーバ200との対応関係を示す管理情報を記憶する。図5は、管理情報記憶部150が記憶する管理情報の一例を示す図である。管理情報記憶部150は、例えば図5に示すように、WebSocket接続が確立されている端末装置300の端末IDと中継サーバ200のサーバIDとを対応付けた管理情報を記憶している。この管理情報には、接続先決定要求を行った端末装置300がWebSocket接続を確立すべき中継サーバ200が決定部160によって決定されるたびに、その端末装置300の端末IDと中継サーバ300のサーバIDとを対応付けた新たなレコードが追加される。また、端末装置300と中継サーバ200とのWebSocket接続の切断が端末装置300または中継サーバ200から通知されると、この管理情報の対応するレコードが削除される。
決定部160は、要求受付部140からの依頼を受けて、複数の中継サーバ200のうち、接続先決定要求の要求元の端末装置300がWebSocket接続を確立すべき中継サーバ200を決定する。この際、決定部160は、状態記憶部110が記憶する状態情報と、管理情報記憶部150が記憶する管理情報とに基づき、端末装置300がWebSocket接続を確立すべき中継サーバ200を決定する。
具体的には、決定部160は、双方向通信を行う端末装置300のペア(図1に示した端末装置300A,300B)のうち、先に接続先決定要求を行った端末装置300(端末装置300A)に対しては、状態記憶部110が記憶する状態情報を参照し、複数の中継サーバ200のうち、負荷状態が低い中継サーバ200または端末接続数が少ない中継サーバ200を、WebSocket接続を確立すべき中継サーバ200として決定する。
一方、後に接続先決定要求を行った端末装置300(端末装置300B)に対しては、決定部160は、管理情報記憶部150が記憶する管理情報を参照し、先に接続先決定要求を行った端末装置300(端末装置300A)がWebSocket接続を確立している中継サーバ200を、後に接続先決定要求を行った端末装置300(端末装置300B)がWebSocket接続を確立すべき中継サーバ200として決定する。つまり、双方向通信を行う端末装置300のペアを同じ中継サーバ200に接続させる。
また、このとき決定部160は、状態記憶部110が記憶する状態情報を参照して、先に接続先決定要求を行った端末装置300(端末装置300A)がWebSocket接続を確立している中継サーバ200の負荷状態または端末接続数を確認する。そして、この中継サーバ200の負荷状態または端末接続数が予め定めた閾値を超えている場合は、決定部160は、この中継サーバ200に対して、端末装置300(端末装置300A)とのWebSocket接続の切断を指示する。そして、決定部160は、中継サーバ200とのWebSocket接続が切断された端末装置300(端末装置300A)からの接続先決定要求を要求受付部140が受け付けたときに、双方の端末装置300(端末装置300A,300B)がWebSocket接続を確立すべき中継サーバ200として、負荷状態が低いまたは端末接続数が少ない同一の中継サーバ200を決定する。
決定部160は、以上のように決定した中継サーバ200のサーバIDを、要求受付部140に渡す。また、決定部160は、接続決定要求の要求元の端末装置300の端末IDと、決定した中継サーバ200のサーバIDとを対応付けて、管理情報記憶部150が記憶する管理情報に、新たなレコードを追加する。
次に、本実施形態の通信システムにより行われる処理について、図面を適宜参照しながら具体的に説明する。以下では、端末装置300と中継サーバ200との間のWebSocket接続を確立する処理(接続確立)、接続管理サーバ100が中継サーバ200の状態情報を定期的に取得して状態記憶部110を更新する処理(定期更新)、接続管理サーバ100が不定期に中継サーバ200から状態情報を取得して状態記憶部110を更新する処理(不定期更新)の順に、各処理の説明を行う。
なお、以下では、端末装置300A(端末ID(IPアドレス)=192.168.0.3)と、端末装置300B(端末ID(IPアドレス)=192.168.0.4)とが双方向通信を行うものとして説明する。これら双方向通信を行う端末装置300Aと端末装置300Bとの対応関係は、上述したように、例えば端末IDを対応付けた情報として、接続管理サーバ100および中継サーバ200に予め静的に登録されているものとする。なお、端末装置300Aと端末装置300Bとの対応関係は、必ずしもこのような形態で接続管理サーバ100および中継サーバ200に認識させる必要はない。例えば、端末装置300Aと端末装置300Bとの双方に同一のグループIDを割り当てることにより、これら端末装置300Aと端末装置300Bとが双方向通信を行うペアであることを識別できる。この場合、端末装置300と接続管理サーバ100や中継サーバ200との間の通信において、端末装置300の端末IDとは別にこのグループIDを合わせて通知することにより、双方向通信を行う端末装置300の対応関係を接続管理サーバ100や中継サーバ200に認識させることができる。
(接続確立)
まず、端末装置300Aが接続管理サーバ100によって決定された中継サーバ200にWebSocket接続要求を行って、端末装置300Aと中継サーバ200との間のWebSocket接続が確立されるまでの処理の流れを説明する。
端末装置300Aは、例えば端末装置300Aを使用するユーザによるユーザインタフェースの操作など、任意のタイミングを契機として処理を開始する。まず、端末装置300Aの決定要求部310が、接続管理サーバ100に対して、接続先決定要求を表すHTTPリクエストを送出する。送出されたHTTPリクエストは、接続管理サーバ100の要求受付部140によって受信される。要求受付部140は、端末装置300AからのHTTPリクエストを受け取ると、決定部160に対して、端末装置300AがWebSocket接続を確立すべき中継サーバ200の決定を依頼する。
決定部160は、要求受付部140からの依頼を受けて、まず状態記憶部110に記憶された状態情報の読み出しを行う。状態記憶部110には、図4に示したように、複数の中継サーバ200それぞれの状態情報(図4の例ではCPU使用率、使用可能メモリ量、および端末接続数)が、各中継サーバ200のサーバID(図4の例ではIPアドレス)に対応付けて記憶されている。決定部160は、状態記憶部110から読み出した状態情報に基づき、複数の中継サーバ200のうち、負荷状態が低い中継サーバ200または端末接続数が少ない中継サーバ200を、WebSocket接続を確立すべき中継サーバ200として決定する。
例えば、決定部160は、端末接続数が最小となる中継サーバ200を、端末装置300AがWebSocket接続を確立すべき中継サーバ200として決定する。図4に示した例の場合、サーバID=192.168.0.2の中継サーバ200の方が、サーバID=192.168.0.1の中継サーバ200よりも端末接続数が少ないため、サーバID=192.168.0.2の中継サーバ200が選択される。
決定部160は、端末装置300AがWebSocket接続を確立すべき中継サーバ200を決定すると、その中継サーバ200のサーバID=192.168.0.2を、要求受付部140に渡す。また、決定部160は、端末装置300Aの端末ID=192.168.0.3と、決定した中継サーバ200のサーバID=192.168.0.2とを対応付けて、管理情報記憶部150が記憶する管理情報のレコードに追加する。これにより、図5に示したように、端末ID=192.168.0.3とサーバID=192.168.0.2との組みが、管理情報として管理情報記憶部150に記憶される。
要求受付部140は、決定部160から中継サーバ200のサーバID=192.168.0.2が渡されると、このサーバIDを含むHTTPレスポンスを、端末装置300Aに対して応答する。
端末装置300Aの決定要求部310は、接続先決定要求を表すHTTPリクエストの応答として、サーバID=192.168.0.2を含むHTTPレスポンスを受信すると、このHTTPレスポンスに含まれるサーバID=192.168.0.2を接続要求部320に渡す。接続要求部320は、決定要求部310からサーバID=192.168.0.2が渡されると、このサーバIDで識別される中継サーバ200に対し、WebSocket接続要求として、WebSocket接続確立のためのハンドシェイク要求を送出する。以降、RFC6455で定められた手順に従って接続確立の処理が行われ、端末装置300Aと中継サーバ200との間のWebSocket接続が確立される。
次に、端末装置300Aと中継サーバ200との間のWebSocket接続が確立されている状態で、端末装置300Bが接続管理サーバ100によって決定された中継サーバ200にWebSocket接続要求を行って、端末装置300Bと中継サーバ200との間のWebSocket接続が確立されるまでの処理の流れを説明する。
端末装置300Bは、端末装置300Aと同様の手順により、接続管理サーバ100に対してHTTPリクエストを送出する。送出されたHTTPリクエストは、接続管理サーバ100の要求受付部140によって受信される。要求受付部140は、端末装置300BからのHTTPリクエストを受け取ると、決定部160に対して、端末装置300BがWebSocket接続を確立すべき中継サーバ200の決定を依頼する。
決定部160は、要求受付部140からの依頼を受けて、まず管理情報記憶部150を参照し、端末装置300Bとペアとなる端末装置300Aの端末ID=192.168.0.3を含むレコードが存在するかどうかを確認する。ここでは、管理情報記憶部150に、図5に示した管理情報が記憶されているものとする。そこで決定部160は、端末装置300Aの端末ID=192.168.0.3と対応付けられているサーバID=192.168.0.2を持つ中継サーバ200を、端末装置300BがWebSocket接続を確立すべき中継サーバ200として決定する。
決定部160は、端末装置300BがWebSocket接続を確立すべき中継サーバ200を決定すると、その中継サーバ200のサーバID=192.168.0.2を、要求受付部140に渡す。また、決定部160は、端末装置300Bの端末ID=192.168.0.4と、決定した中継サーバ200のサーバID=192.168.0.2とを対応付けて、管理情報記憶部150が記憶する管理情報のレコードに追加する。
要求受付部140は、決定部160から中継サーバ200のサーバID=192.168.0.2が渡されると、このサーバIDを含むHTTPレスポンスを、端末装置300Bに対して応答する。
端末装置300Bの決定要求部310は、サーバID=192.168.0.2を含むHTTPレスポンスを受信すると、このHTTPレスポンスに含まれるサーバID=192.168.0.2を接続要求部320に渡す。接続要求部320は、決定要求部310からサーバID=192.168.0.2が渡されると、このサーバIDで識別される中継サーバ200に対し、WebSocket接続要求として、WebSocket接続確立のためのハンドシェイク要求を送出する。以降、RFC6455で定められた手順に従って接続確立の処理が行われ、端末装置300Bと中継サーバ200との間のWebSocket接続が確立される。
(定期更新)
次に、接続管理サーバ100が中継サーバ200の状態情報を定期的に取得して状態記憶部110を更新する処理の流れを、図6を参照しながら説明する。図6は、定期更新の概要を示すシーケンス図である。なお、図6では一つの中継サーバ200の処理のみを記載しているが、複数の中継サーバ200で同様の処理が行われる。
中継サーバ200の状態取得部210は、予め定められた定期的なタイミングで処理を開始し、任意の手段で自身の状態情報を取得する。例えば状態取得部210は、OS(Operating System)が提供するAPI(Application Programming Interface)を利用してCPU使用率やメモリ使用量の値を取得したり、接続確立部230に対して問い合わせを行って現在接続状態にあるWebSocket接続の個数の値を取得したりする。
状態取得部210は、状態情報の取得を完了すると、取得した状態情報を自身のサーバIDとともに記憶装置400に出力し、登録を依頼する。状態取得部210は、予め定められた定期的なタイミングで以上の処理を繰り返し行う(ステップS201−1、ステップS201−2、ステップS201−3)。記憶装置400は、中継サーバ200から状態情報登録の依頼を受けるたびに、中継サーバ200から送られた状態情報をサーバIDと対応付けて記憶する。このとき、記憶装置400は、中継サーバ200から送られたサーバIDに対応する状態情報がすでに存在する場合は、この状態情報を新たに送られた状態情報で上書き更新する。
一方、接続管理サーバ100の定期更新部121は、予め定められた定期的なタイミングで処理を開始し、記憶装置400に対して状態情報の読み出しを要求する。そして、定期更新部121は、記憶装置400から読み出された状態情報を取得して(ステップS202)、取得した状態情報により状態記憶部110を更新する(ステップS203)。定期更新部121は、予め定められた定期的なタイミングで以上の処理を繰り返し行う。定期更新部121が以上の処理を行うタイミングや周期は、中継サーバ200が状態情報を記憶装置400に登録するタイミングや周期と一致させる必要はない。定期更新部121が以上の処理を行う周期を長くすることで、接続管理サーバ100の負荷を低減させることができる。
(不定期更新)
次に、接続管理サーバ100が不定期に中継サーバ200から状態情報を取得して状態記憶部110を更新する処理の流れを説明する。
接続管理サーバ100の不定期更新部122は、例えば、端末装置300と中継サーバ200との間のWebSocet接続確立が失敗したことを契機として、不定期に処理を開始する。すなわち、端末装置300の決定要求部310は、上述したように、中継サーバ200から接続失敗のステータス情報が通知されると、接続管理サーバ100に対して再度、接続先決定要求を表すHTTPリクエストを送出する。この際、決定要求部310は送出するHTTPリクエストに、先に接続確立失敗した中継サーバ200のサーバID(上述した例ではサーバID=192.168.0.2)を付加する。
接続管理サーバ100の要求受付部140は、端末装置300からのHTTPリクエストを受信した際に、このHTTPリクエストにサーバIDの情報が付加されているか否かを確認する。そして、受信したHTTPリクエストにサーバIDが付加されている場合、要求受付部140は、このサーバIDを不定期更新部122に渡して状態情報の更新を依頼する。これを受けて不定期更新部122は、サーバIDを取得要求部130に渡して状態情報の取得要求を依頼する。これを受けて取得要求部130は、当該サーバIDで識別される中継サーバ200に対し、状態情報の取得要求を表すHTTPリクエストを送出する。
中継サーバ200の取得要求受付部220は、接続管理サーバ100からのHTTPリクエストを受信すると、状態取得部210に対して状態情報の取得を依頼する。これを受けて状態取得部210は、自身の状態情報を取得して取得要求受付部220に渡す。取得要求受付部220は、この状態情報を含むHTTPレスポンスを生成し、HTTPリクエストに対する応答として接続管理サーバ100に送出する。
接続管理装置100の取得要求部130は、中継サーバ200からのHTTPレスポンスを受信すると、このHTTPレスポンスから状態情報を取り出して不定期更新部122に渡す。そして、不定期更新部122は、取得要求部130から受け取った状態情報により状態記憶部110を更新する。この処理によって状態記憶部110が記憶する状態情報が書き換わる様子を図7に示す。図7の例では、不定期更新部122による状態情報の更新の結果、サーバID=192.168.02の中継サーバ200の端末接続数に大幅な増加がみられ、CPU使用率の余力や、使用可能メモリ量に低下が見られている様子が示されている。
以上述べた方法により、接続管理サーバ100は、定期更新部121による状態記憶部110の定期的な更新とは別に、端末装置300と中継サーバ200との間のWebSocet接続確立が失敗したことを契機として、不定期更新部122による状態記憶部110の不定期な更新が行われる。このような不定期更新が行われた後は、サーバIDが付加されていないHTTPリクエストを受信した場合と同様に、決定部160による中継サーバ200の決定が行われ、この中継サーバ200のサーバIDを含むHTTPレスポンスが端末装置300に対して送出される。このとき、例えば状態記憶部110が記憶する状態情報が図7のように更新されていたとすると、決定部160は、端末装置300がWebSocket接続を確立すべき中継サーバ200として、サーバID=192.168.0.1の中継サーバ200を選択する。その結果、端末装置300は、サーバID=192.168.0.1を含むHTTPレスポンスを受信し、サーバID=192.168.0.1の中継サーバ200に対してWebSocket接続要求を行う。
図8は、不定期更新を含む接続管理サーバ100の処理手順を示すフローチャートである。以下、このフローチャートに沿って、接続管理サーバ100におる処理の要点を説明する。
まず、要求受付部140が、端末装置300からのHTTPリクエストを受信し(ステップS301)、受信したHTTPリクエストにサーバIDが付加されているか否かを確認する(ステップS302)。そして、HTTPリクエストにサーバIDが付加されている場合には(ステップS302:Yes)、取得要求部130が、このサーバIDで識別される中継サーバ200に対して状態情報の取得要求を行う(ステップS303)。そして、不定期更新部122が、状態情報の取得要求の応答として中継サーバ200から送られた状態情報を取得し、状態記憶部110を更新する(ステップS304)。一方、ステップS301で受信したHTTPリクエストにサーバIDが付加されていない場合は(ステップS302:No)、ステップS303およびステップS304の処理は行われない。
次に、決定部160が、状態記憶部110が記憶する状態情報および管理情報記憶部150が記憶する管理情報に基づいて、HTTPリクエストを送出した端末装置300の接続先の中継サーバ200を決定する(ステップS305)。このとき、ステップS303およびステップS303で状態記憶部110の不定期更新が行われていれば、決定部160は、この不定期更新により更新された状態記憶部110の状態情報に基づいて、端末装置300の接続先の中継サーバ200を決定することになる。その後、要求受付部140は、決定部160によって決定された中継サーバ200のサーバIDを含むHTTPレスポンスを作成し、このHTTPレスポンスをHTTPリクエストに対する応答として端末装置300に対して送出し(ステップS306)、一連の処理を終了する。
次に、本実施形態の通信システムにおける具体的な動作例について、図9および図10を参照して説明する。
図9は、端末装置300と中継サーバ200BとのWebSocket接続の確立が失敗した後、中継サーバ200Aとの間でWebSocket接続が確立されるまでの動作例を示すシーケンス図である。
まず、端末装置300が、接続管理サーバ100に対して接続先決定要求を行う(ステップS401)。接続管理サーバ100は、端末装置300からの接続先決定要求に応じて、中継サーバ200Bを端末装置300の接続先として決定し、中継サーバ200BのサーバID=192.168.02を端末装置300に通知する(ステップS402)。
端末装置300は、接続管理サーバ100から通知されたサーバID=192.168.02で識別される中継サーバ200Bに対して、WebSocket接続要求を行う(ステップS403)。中継サーバ200Bは、端末装置300からのWebSocket接続要求に応じてWebSocket接続の確立を試みるが、接続に失敗したため接続失敗のステータス情報を端末装置300に通知する(ステップS404)。
中継サーバ200Bから接続失敗のステータス情報を受け取った端末装置300は、接続管理サーバ100に対して、中継サーバ200BのサーバID=192.168.02を付加した接続先決定要求を行う(ステップS405)。接続管理サーバ100は、端末装置300からの接続先決定要求に中継サーバ200BのサーバID=192.168.02が含まれているため、中継サーバ200Bに対して、状態情報の取得要求を行う(ステップS406)。
中継サーバ200Bは、接続管理サーバ100からの状態情報の取得要求に応じて、自身の状態情報を取得し、接続管理サーバ100に通知する(ステップS407)。接続管理サーバ100は、中継サーバ200Bから受け取った状態情報により状態記憶部110を更新した上で、ステップS405の接続先決定要求に応じて、端末装置300の接続先となる中継サーバ200を決定する処理を行う。その結果、接続管理サーバ100は、中継サーバ200Aを端末装置300の接続先として決定し、中継サーバ200AのサーバID=192.168.01を端末装置300に通知する(ステップS408)。
端末装置300は、接続管理サーバ100から通知されたサーバID=192.168.01で識別される中継サーバ200Aに対して、WebSocket接続要求を行う(ステップS409)。中継サーバ200Aは、端末装置300からのWebSocket接続要求に応じて、端末装置300との間のWebSocket接続を確立する(ステップS410)。
図10は、端末装置300Aと中継サーバ200BとがWebSocket接続を確立している状態で、端末装置300Bと中継サーバ200BとのWebSocket接続の確立が失敗した場合に、端末装置300Aと端末装置300Bとの双方と中継サーバ200Aとの間でWebSocket接続が確立されるまでの動作例を示すシーケンス図である。
まず、端末装置300Bが、接続管理サーバ100に対して接続先決定要求を行う(ステップS501)。接続管理サーバ100は、端末装置300Bからの接続先決定要求に応じて、端末装置300Aとの間ですでにWebSocket接続を確立している中継サーバ200Bを端末装置300の接続先として決定する。そして、接続管理サーバ100は、中継サーバ200BのサーバID=192.168.02を端末装置300Bに通知する(ステップS502)。
端末装置300Bは、接続管理サーバ100から通知されたサーバID=192.168.02で識別される中継サーバ200Bに対して、WebSocket接続要求を行う(ステップS503)。中継サーバ200Bは、端末装置300BからのWebSocket接続要求に応じてWebSocket接続の確立を試みるが、接続に失敗したため接続失敗のステータス情報を端末装置300Bに通知する(ステップS504)。
中継サーバ200Bから接続失敗のステータス情報を受け取った端末装置300Bは、接続管理サーバ100に対して、中継サーバ200BのサーバID=192.168.02を付加した接続先決定要求を行う(ステップS505)。接続管理サーバ100は、端末装置300Bからの接続先決定要求に中継サーバ200BのサーバID=192.168.02が含まれているため、中継サーバ200Bに対して、状態情報の取得要求を行う(ステップS506)。
中継サーバ200Bは、接続管理サーバ100からの状態情報の取得要求に応じて、自身の状態情報を取得し、接続管理サーバ100に通知する(ステップS507)。接続管理サーバ100は、中継サーバ200Bから受け取った状態情報により状態記憶部110を更新する。また、接続管理サーバ100は、中継サーバ200Bに対して、すでに確立している端末装置300AとのWebSocket接続を切断する旨の切断要求を行う(ステップS508)。接続管理サーバ100から切断要求を受けた中継サーバ200Bは、この切断要求に応じて、端末装置300Aとの間のWebSocket接続を切断する(ステップS509)。なお、ステップS508およびステップS509の処理は、ステップS506およびステップS507の処理よりも前に行われてもよい。
中継サーバ200Bとの間のWebSocket接続が切断された端末装置300Aは、この切断を検知して、接続管理サーバ100に対して接続先決定要求を行う(ステップS510)。接続管理サーバ100は、端末装置300Aからの接続先決定要求に応じて、中継サーバ200Aを端末装置300Aの新たな接続先として決定し、中継サーバ200AのサーバID=192.168.01を端末装置300Aに通知する(ステップS511)。
端末装置300Aは、接続管理サーバ100から通知されたサーバID=192.168.01で識別される中継サーバ200Aに対して、WebSocket接続要求を行う(ステップS512)。中継サーバ200Aは、端末装置300AからのWebSocket接続要求に応じて、端末装置300Aとの間のWebSocket接続を確立する(ステップS513)。
また、接続管理サーバ100は、中継サーバ200Aを端末装置300Aの新たな接続先として決定した後、ステップS505の端末装置300Bからの接続先決定要求に応じて、端末装置300Bの接続先を、端末装置300Aと同一の接続先となる中継サーバ200Aに決定し、中継サーバ200AのサーバID=192.168.01を端末装置300Bに通知する(ステップS514)。
端末装置300Bは、接続管理サーバ100から通知されたサーバID=192.168.01で識別される中継サーバ200Aに対して、WebSocket接続要求を行う(ステップS515)。中継サーバ200Aは、端末装置300BからのWebSocket接続要求に応じて、端末装置300Bとの間のWebSocket接続を確立する(ステップS516)。
以上、具体的な例を挙げながら詳細に説明したように、本実施形態では、複数の中継サーバ200それぞれの状態情報を記憶する状態記憶部110を接続管理サーバ100に設けている。そして、接続管理サーバ100が所定の規則に従って状態記憶部110を更新しながら、状態記憶部110が記憶する状態情報に基づいて、端末装置300がWebSocket接続を確立すべき中継サーバ200を決定する。したがって、本実施形態によれば、いずれかの中継サーバ200に障害や急激な負荷の増加などが生じた際に接続管理サーバ100がすみやかにそのことを認識し、障害や急激な負荷の増加などが生じた中継サーバ200を選ばないようにして、端末装置300がWebSocket接続を確立すべき中継サーバ200を適切に決定することができる。
特に本実施形態では、定期更新部121による状態記憶部110の定期的な更新と、不定期更新部122による状態記憶部110の不定期な更新、例えば中継サーバ200とのWebSocket接続の確立が失敗した端末装置300から再度の接続先決定要求を受けたタイミングでの状態記憶部110の更新とを併用する。したがって、通常時は状態情報の取得に関わる接続管理サーバ100および中継サーバ200双方の負荷を抑えることができるとともに、中継サーバ200に障害や急激な負荷の増加などが生じた場合には、接続管理サーバ100がすみやかにそのことを認識して、端末装置300がWebSocket接続を確立すべき中継サーバ200を適切に決定することができる。
なお、上述した実施形態では、接続管理サーバ100の不定期更新部122が中継サーバ200から状態情報を直接取得するようにしているが、これに限らない。例えば、中継サーバ200の状態取得部210が取得要求受付部220からの依頼に応じて不定期に取得した状態情報を記憶装置400に格納し、接続管理サーバ100の不定期更新部122が、定期更新部121と同様に、記憶装置400から中継サーバ200の状態情報を取得するようにしてもよい。
また、上述した実施形態では、接続管理サーバ100の定期更新部121が記憶装置400を介して中継サーバ200の状態情報を取得するようにしているが、これに限らない。例えば、接続管理サーバ100の定期更新部121は、複数の中継サーバ200それぞれから直接、定期的に状態情報を取得するようにしてもよい。この場合の構成例を図11に示す。図11に示す構成例は、図3に示した構成例から記憶装置400を除いたものである。この図11に示す構成の場合、各中継サーバ200の状態取得部210は、予め定められた定期的なタイミングで状態情報を取得し、取得した状態情報に自身のサーバIDを付加して、接続管理サーバ100に送出する。接続管理サーバ100の定期更新部121は、各中継サーバ200からの状態情報を受信して、状態記憶部110を更新する。なお、中継サーバ200から接続管理サーバ100に状態情報を送る方法は、上述したようなプッシュ型に限らず、接続管理サーバ100の定期更新部121が中継サーバ200に対して定期的に状態情報の取得要求を行い、その応答として中継サーバ200から送られる状態情報を取得するプル型であってもよい。
また、上述した実施形態では、中継サーバ200と端末装置300との間でWebSocketによる接続を行うものとしたが、これに限らない。中継サーバ200と端末装置300との間の通信接続は、コネクション型の通信プロトコルによる任意の方式を適用することができる。また、上述した実施形態では、接続管理サーバ100と中継サーバ200および端末装置300との間の種々の要求やその応答をHTTPリクエストとレスポンスで行うものとしたが、これに限らない。
また、上述した実施形態では、中継サーバ200のCPU使用率、使用可能メモリ量、および端末接続数の組み合わせを状態情報としたが、これに限らない。中継サーバ200の状態情報は、中継サーバ200の負荷状態と端末接続数との少なくとも一方を含んだ情報であればよい。例えば、中継サーバ200のネットワーク状況やディスク読み書き状況といった情報を状態情報に含めてもよい。また、状態取得部210が実行した中継サーバ200のステータスチェックの結果(サービス提供可能か否かを表す真偽値など)を状態情報に含めてもよい。また、接続管理サーバ100の取得要求部130が中継サーバ200に対して状態情報の取得要求を行ったときの応答成否の真偽値を状態情報に含めてもよい。また、接続管理サーバ100から中継サーバ200に対して行うpingの試行結果を状態情報に含めてもよい。また、中継サーバ200の端末接続数の過去一定期間内の増加数や減少数、過去の接続失敗の回数、接続済の端末装置300との間で行われたpingの試行結果の統計値などの情報を状態情報に含めてもよい。
また、上述した実施形態では、接続管理サーバ100の不定期更新部122が、端末装置300と中継サーバ200との間のWebSocket接続の確立が失敗したことを契機として状態記憶部110を更新するようにしているが、これに限らない。例えば、端末装置300と中継サーバ200との間でWebSocket接続が確立されたがその処理に時間がかかった場合、WebSocket接続の確立に失敗したものとみなして、接続管理サーバ100の不定期更新部122による状態記憶部110の更新が行われるように構成してもよい。
また、上述した実施形態では、中継サーバ200とのWebSocket接続の確立に失敗した端末装置300が接続管理サーバ100に対して接続先決定要求を再度行う場合に、WebSocket接続の確立に失敗した中継サーバ200のサーバIDを付加したHTTPリクエストを送出するようにしているが、これに限らない。例えば、接続先決定要求とは異なる通知を接続管理サーバ100と端末装置300との間で定義し、接続先決定要求を表すHTTPリクエストとは別に、この通知によって、端末装置300がWebSocket接続の確立に失敗した中継サーバ200のサーバIDを接続管理サーバ100に伝えるようにしてもよい。また、この場合、接続先決定要求を表すHTTPリクエストと、中継サーバ200のサーバIDの通知とを、異なるタイミングで端末装置300から接続管理サーバ100に送出するようにしてもよい。
また、上述した実施形態では、接続管理サーバ100の不定期更新部122が、端末装置300からの接続先決定要求に中継サーバ200のサーバIDが含まれている場合に、このサーバIDで識別される中継サーバ200から不定期に状態情報を取得するようにしているが、これに限らない。例えば、端末装置300が接続管理サーバ100に対して接続先決定要求を行う場合に、状態記憶部110の更新が必要か否かを示す真偽値の情報を付加し、接続管理サーバ100の不定期更新部122は、この接続先決定要求に含まれる値が真である場合、つまり接続先決定要求に状態記憶部110の更新要求が含まれている場合に、複数の中継サーバ200それぞれから状態情報を取得して状態記憶部110を更新するように構成してもよい。また、中継サーバ200とのWebSocket接続の確立に失敗した端末装置300が接続管理サーバ100に対して再度行う接続先決定要求を、通常の接続先決定要求と異なる形式とし、接続管理サーバ100の不定期更新部122は、端末装置300から再度の接続先決定要求があった場合に、複数の中継サーバ200それぞれから状態情報を取得して状態記憶部110を更新するように構成してもよい。
また、上述した実施形態では、接続管理サーバ100の不定期更新部122が、端末装置300からの再度の接続先決定要求を契機として状態記憶部110の不定期な更新を行うようにしているが、これに限らない。例えば、接続管理サーバ100から中継サーバ200に対して例えば1秒間隔でpingを実行し、到達性の確認結果が失敗となったことを契機に、不定期更新部122がこの中継サーバ200から状態情報を取得して状態記憶部110を更新するように構成してもよい。また、予め接続管理サーバ100と各中継サーバ200との間でTCP(Transmission Control Protocol)などのコネクション型の通信を確立しておき、ある中継サーバ200との間の通信の切断通知を受けたことを契機として、不定期更新部122がこの中継サーバ200から状態情報を取得して状態記憶部110を更新するように構成してもよい。
なお、上述した接続管理サーバ100の各処理機能(更新部120、取得要求部130、要求受付部140および決定部160)は、例えば、汎用のコンピュータシステムを基本ハードウェアとして用いて実行されるプログラム(ソフトウェア)により実現することができる。また、上述した接続管理サーバ100の状態記憶部110および管理情報記憶部150は、コンピュータシステムが備えるメモリ資源を利用して実現することができる。
図12は、接続管理サーバ100のハードウェア構成の一例を示す図である。接続管理サーバ100は、図12に示すように、CPU10と、主記憶部20と、補助記憶部30と、通信インタフェース40と、各部を接続するバス50とを含んだ汎用のコンピュータシステムとして構成される。なお、補助記憶装置30は、有線または無線によるLAN(Local Area Network)などで各部に接続されてもよい。
上述した接続管理サーバ100の各処理機能は、例えば、CPU10が、主記憶部20を利用して、補助記憶部30などに格納されたプログラムを実行することによって実現される。このプログラムは、上述した接続管理サーバ100の各処理機能(更新部120、取得要求部130、要求受付部140および決定部160)を含むモジュール構成となっており、CPU10がこのプログラムを適宜読み出して実行することにより、上述した接続管理サーバ100の各処理機能が主記憶部20上にロードされ、主記憶部20上に生成されるようになっている。
また、上述した中継サーバ200の各処理機能(状態取得部210、取得要求受付部220および接続確立部230)は、接続管理サーバ100と同様に、図12に示すようなコンピュータシステムを基本ハードウェアとして用いて実行されるプログラム(ソフトウェア)により実現することができる。このプログラムは、上述した中継サーバ200の各処理機能を含むモジュール構成となっており、CPU10がこのプログラムを適宜読み出して実行することにより、上述した中継サーバ200の各処理機能が主記憶部20上にロードされ、主記憶部20上に生成されるようになっている。
また、上述した端末装置300の各処理機能(決定要求部310および接続要求部320)は、接続管理サーバ100や中継サーバ200と同様に、図12に示すようなコンピュータシステムを基本ハードウェアとして用いて実行されるプログラム(ソフトウェア)により実現することができる。このプログラムは、上述した端末装置300の各処理機能を含むモジュール構成となっており、CPU10がこのプログラムを適宜読み出して実行することにより、上述した端末装置300の各処理機能が主記憶部20上にロードされ、主記憶部20上に生成されるようになっている。
上記の各プログラムは、例えば、磁気ディスク(フレキシブルディスク、ハードディスクなど)、光ディスク(CD−ROM、CD−R、CD−RW、DVD−ROM、DVD±R、DVD±RW、Blu−ray(登録商標)Discなど)、半導体メモリ、またはこれに類する記録媒体に記録されて提供される。プログラムを記録する記録媒体は、コンピュータシステムが読み取り可能な記録媒体であれば、その記憶形式は何れの形態であってもよい。
また、上記の各プログラムを、コンピュータシステムに予めインストールすることで実現してもよいし、ネットワークを介して配布される上記のプログラムをコンピュータシステムに適宜インストールするように構成してもよい。また、上記の各プログラムを外部のサーバコンピュータ上で実行させ、ネットワークを介してその結果をクライアントコンピュータとして構成された接続管理サーバ100、中継サーバ200、端末装置300がそれぞれ受け取る構成としてもよい。
なお、上述した接続管理サーバ100の各処理機能は、プログラム(ソフトウェア)により実現するだけでなく、その一部または全部を、ASIC(Application Specific Integrated Circuit)やFPGA(Field-Programmable Gate Array)などの専用のハードウェアにより実現することもできる。同様に、中継サーバ200の処理機能の一部または全部を、ASICやFPGAなどの専用のハードウェアにより実現することもできる。同様に、端末装置300の処理機能の一部または全部を、ASICやFPGAなどの専用のハードウェアにより実現することもできる。
以上、本発明の実施形態を説明したが、ここで説明した実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。ここで説明した新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。ここで説明した実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
100 接続管理装置
110 状態記憶部
120 更新部
121 第1更新部
122 第2更新部
130 取得要求部
140 要求受付部
150 管理情報記憶部
160 決定部
200(200A,200B) 中継サーバ
210 状態取得部
220 取得要求受付部
230 接続確立部
300(300A,300B) 端末装置
310 決定要求部
320 接続要求部

Claims (19)

  1. 予め対応付けられた2つの端末装置間の通信を中継する中継装置が複数設けられた通信システムにおいて、端末装置が接続を確立すべき中継装置を決定して当該端末装置に通知する接続管理装置であって、
    複数の中継装置それぞれについて、負荷状態と端末接続数との少なくとも一方を含む状態情報を記憶する第1記憶部と、
    所定の規則に従って前記第1記憶部を更新する更新部と、
    任意の端末装置から、当該端末装置が接続を確立すべき中継装置の決定要求を受け付ける要求受付部と、
    前記第1記憶部が記憶する前記状態情報に基づき、前記決定要求の要求元の端末装置が接続を確立すべき中継装置を決定する決定部と、を備える接続管理装置。
  2. 前記更新部は、前記状態情報を定期的に取得して前記第1記憶部を更新する第1更新部と、前記状態情報を不定期に取得して前記第1記憶部を更新する第2更新部と、を含む請求項1に記載の接続管理装置。
  3. 前記第2更新部は、前記決定要求に中継装置の識別情報が含まれている場合に、当該識別情報で識別される中継装置から前記状態情報を取得して前記第1記憶部を更新し、
    前記決定部は、前記第2更新部による更新後の前記第1記憶部が記憶する前記状態情報に基づき、前記決定要求の要求元の端末装置が接続を確立すべき中継装置を決定する、請求項2に記載の接続管理装置。
  4. 前記第2更新部は、前記決定要求に前記状態情報の更新要求が含まれている場合に、前記状態情報を取得して前記第1記憶部を更新し、
    前記決定部は、前記第2更新部による更新後の前記第1記憶部が記憶する前記状態情報に基づき、前記決定要求の要求元の端末装置が接続を確立すべき中継装置を決定する、請求項2に記載の接続管理装置。
  5. 前記第2更新部は、さらに、中継装置との間の通信不良が検出されたときに前記第1記憶部を更新する、請求項3または4に記載の接続管理装置。
  6. 前記第2更新部は、中継装置との間の接続の切断が検出されたときに前記第1記憶部を更新する、請求項5に記載の接続管理装置。
  7. 前記第2更新部は、中継装置との間の疎通確認の失敗が検出されたときに前記第1記憶部を更新する、請求項5に記載の接続管理装置。
  8. 前記決定部は、複数の中継装置のうち、負荷状態が低い中継装置または端末接続数が少ない中継装置を、前記決定要求の要求元の端末装置が接続を確立すべき中継装置として決定する、請求項1〜7のいずれか一項に記載の接続管理装置。
  9. すでに接続が確立されている端末装置と中継装置との対応関係を示す管理情報を記憶する第2記憶部をさらに備え、
    前記決定部は、前記第1記憶部が記憶する前記状態情報および前記第2記憶部が記憶する前記管理情報に基づき、前記決定要求の要求元の端末装置が接続を確立すべき中継装置を決定する、請求項1〜8のいずれか一項に記載の接続管理装置。
  10. 前記決定部は、予め対応付けられた2つの端末装置のうちの一方の端末装置がすでに中継装置と接続を確立している状態で、他方の端末装置からの前記決定要求を前記要求受付部が受け付けた場合に、一方の端末装置が接続を確立している中継装置を、他方の端末装置が接続を確立すべき中継装置として決定する、請求項9に記載の接続管理装置。
  11. 前記決定部は、他方の端末装置からの前記決定要求を前記要求受付部が受け付けたときに、一方の端末装置が接続を確立している中継装置の負荷状態または端末接続数が閾値を超えている場合は、一方の端末装置が接続を確立している中継装置に対して一方の端末装置との接続の切断を指示し、中継装置との接続が切断された一方の端末装置からの前記決定要求を前記要求受付部が受け付けたときに、前記第1記憶部が記憶する前記状態情報に基づき、一方の端末装置と他方の端末装置とが接続を確立すべき中継装置として同一の中継装置を決定する、請求項10に記載の接続管理装置。
  12. 請求項1〜11のいずれか一項に記載の接続管理装置と、
    複数の端末装置と、
    複数の中継装置と、を含み、
    前記端末装置は、
    前記接続管理装置に対して前記決定要求を行う決定要求部と、
    前記接続管理装置から通知された中継装置に対して接続要求を行う接続要求部と、を備え、
    前記中継装置は、前記接続要求を受け付けて、端末装置との接続を確立する接続確立部を備える、通信システム。
  13. 前記接続確立部は、前記接続要求の要求元の端末装置とのWebSocketによる接続を確立する、請求項12に記載の通信システム。
  14. 前記接続管理装置は、請求項3に記載の接続管理装置であり、
    前記決定要求部は、前記接続管理装置から通知された中継装置との接続に失敗したときに、当該中継装置の識別子を含む前記決定要求を前記接続管理装置に対して行う、請求項12または13に記載の通信システム。
  15. 前記決定要求部は、さらに、中継装置との接続が切断されたときに、当該中継装置の識別子を含む前記決定要求を前記接続管理装置に対して行う、請求項14に記載の通信システム。
  16. 前記接続管理装置は、請求項4に記載の接続管理装置であり、
    前記決定要求部は、前記接続管理装置から通知された中継装置との接続に失敗したときに、前記更新要求を含む前記決定要求を前記接続管理装置に対して行う、請求項12または13に記載の通信システム。
  17. 前記決定要求部は、さらに、中継装置との接続が切断されたときに、前記更新要求を含む前記決定要求を前記接続管理装置に対して行う、請求項16に記載の通信システム。
  18. 予め対応付けられた2つの端末装置間の通信を中継する中継装置が複数設けられた通信システムにおいて、端末装置が接続を確立すべき中継装置を決定して当該端末装置に通知する接続管理装置により実行される接続管理方法であって、
    前記接続管理装置は、複数の中継装置それぞれについて、負荷状態と端末接続数との少なくとも一方を含む状態情報を記憶する記憶部を備え、
    所定の規則に従って前記記憶部を更新する工程と、
    任意の端末装置から、当該端末装置が接続を確立すべき中継装置の決定要求を受け付ける工程と、
    前記記憶部が記憶する前記状態情報に基づき、前記決定要求の要求元の端末装置が接続を確立すべき中継装置を決定する工程と、を含む接続管理方法。
  19. 予め対応付けられた2つの端末装置間の通信を中継する中継装置が複数設けられた通信システムにおいて、端末装置が接続を確立すべき中継装置を決定して当該端末装置に通知する接続管理装置として用いるコンピュータにより実行されるプログラムであって、
    前記コンピュータは、複数の中継装置それぞれについて、負荷状態と端末接続数との少なくとも一方を含む状態情報を記憶する記憶部を備え、
    前記コンピュータに、
    所定の規則に従って前記記憶部を更新する機能と、
    任意の端末装置から、当該端末装置が接続を確立すべき中継装置の決定要求を受け付ける機能と、
    前記記憶部が記憶する前記状態情報に基づき、前記決定要求の要求元の端末装置が接続を確立すべき中継装置を決定する機能と、を実現させるためのプログラム。
JP2014046696A 2014-03-10 2014-03-10 接続管理装置、通信システム、接続管理方法およびプログラム Expired - Fee Related JP6279938B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2014046696A JP6279938B2 (ja) 2014-03-10 2014-03-10 接続管理装置、通信システム、接続管理方法およびプログラム
EP15151102.9A EP2919441A1 (en) 2014-03-10 2015-01-14 Connection management device, communication system, connection management method, and computer program product
US14/605,414 US9900385B2 (en) 2014-03-10 2015-01-26 Connection management device, communication system, connection management method, and computer program product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014046696A JP6279938B2 (ja) 2014-03-10 2014-03-10 接続管理装置、通信システム、接続管理方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2015170286A true JP2015170286A (ja) 2015-09-28
JP6279938B2 JP6279938B2 (ja) 2018-02-14

Family

ID=52394908

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014046696A Expired - Fee Related JP6279938B2 (ja) 2014-03-10 2014-03-10 接続管理装置、通信システム、接続管理方法およびプログラム

Country Status (3)

Country Link
US (1) US9900385B2 (ja)
EP (1) EP2919441A1 (ja)
JP (1) JP6279938B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017135611A (ja) * 2016-01-28 2017-08-03 株式会社東芝 通信装置、通信システムおよび通信プログラム
JP2017524287A (ja) * 2014-06-02 2017-08-24 アイデバイシーズ エルエルシー リンキングアドレスを用いたネットワーク上でのセキュア通信のためのシステムと方法
US10027743B2 (en) 2014-11-13 2018-07-17 Kabushiki Kaisha Toshiba Connection control device, connection control system, and non-transitory computer readable medium
US10187284B2 (en) 2014-12-24 2019-01-22 Kabushiki Kaisha Toshiba Communication device, server device, communication method, and non-transitory computer readable medium
US11115464B2 (en) 2016-06-21 2021-09-07 Kabushiki Kaisha Toshiba Server apparatus, information processing method, and computer program product

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016033811A (ja) * 2014-07-30 2016-03-10 富士通株式会社 セッション管理方法、セッション管理装置、セッション管理プログラム、および通話処理方法
WO2016153326A1 (ko) * 2015-03-26 2016-09-29 엘지전자 주식회사 방송 신호 송신 장치, 방송 신호 수신 장치, 방송 신호 송신 방법, 및 방송 신호 수신 방법
CN108306844B (zh) * 2016-10-09 2020-07-24 上海思立微电子科技有限公司 用于服务器与客户端之间的api通信的方法
US10523556B2 (en) * 2017-08-08 2019-12-31 Versa Networks, Inc. Method and system for routing connections in a software-defined wide area network
CN112511595B (zh) * 2020-11-04 2022-03-04 华云数据控股集团有限公司 一种消息推送方法及消息服务系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030118004A1 (en) * 2001-12-24 2003-06-26 Huang-Ming Pan Method and system for connecting to a proxy server with the lowest workload through a load balancing proxy server
JP2008028996A (ja) * 2006-06-21 2008-02-07 Nec Corp 通信システム、通信方法、およびプログラム
JP2012198669A (ja) * 2011-03-18 2012-10-18 Ricoh Co Ltd 割当装置、通信装置、仲介装置、仲介システム、割当方法、プログラム及び記録媒体

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7757236B1 (en) * 2004-06-28 2010-07-13 Oracle America, Inc. Load-balancing framework for a cluster
JP5564661B2 (ja) * 2010-03-25 2014-07-30 富士通株式会社 中継ノード及び中継処理プログラム
JP2012037944A (ja) 2010-08-03 2012-02-23 Canon Inc 画像形成装置、代行運転システム、画像形成装置の制御方法、プログラム
JP2012175606A (ja) 2011-02-24 2012-09-10 Sumitomo Electric Ind Ltd プログラム、携帯端末、映像受信装置、映像受信システム、携帯端末の制御方法、及び映像受信装置の制御方法
US9185152B2 (en) * 2011-08-25 2015-11-10 Ustream, Inc. Bidirectional communication on live multimedia broadcasts
JP5721659B2 (ja) 2012-04-06 2015-05-20 キヤノン株式会社 管理装置、管理システム、及び制御方法
CN103067292B (zh) * 2012-12-26 2016-12-28 华为技术有限公司 一种基于WebSocket传输的负载均衡方法和装置
JP6193155B2 (ja) 2014-03-05 2017-09-06 株式会社東芝 通信装置、通信システム、通信方法およびプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030118004A1 (en) * 2001-12-24 2003-06-26 Huang-Ming Pan Method and system for connecting to a proxy server with the lowest workload through a load balancing proxy server
JP2008028996A (ja) * 2006-06-21 2008-02-07 Nec Corp 通信システム、通信方法、およびプログラム
JP2012198669A (ja) * 2011-03-18 2012-10-18 Ricoh Co Ltd 割当装置、通信装置、仲介装置、仲介システム、割当方法、プログラム及び記録媒体

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017524287A (ja) * 2014-06-02 2017-08-24 アイデバイシーズ エルエルシー リンキングアドレスを用いたネットワーク上でのセキュア通信のためのシステムと方法
US10027743B2 (en) 2014-11-13 2018-07-17 Kabushiki Kaisha Toshiba Connection control device, connection control system, and non-transitory computer readable medium
US10484464B2 (en) 2014-11-13 2019-11-19 Kabushiki Kaisha Toshiba Connection control device, connection control system, and non-transitory computer readable medium
US10187284B2 (en) 2014-12-24 2019-01-22 Kabushiki Kaisha Toshiba Communication device, server device, communication method, and non-transitory computer readable medium
JP2017135611A (ja) * 2016-01-28 2017-08-03 株式会社東芝 通信装置、通信システムおよび通信プログラム
US11115464B2 (en) 2016-06-21 2021-09-07 Kabushiki Kaisha Toshiba Server apparatus, information processing method, and computer program product

Also Published As

Publication number Publication date
US20150256622A1 (en) 2015-09-10
EP2919441A1 (en) 2015-09-16
JP6279938B2 (ja) 2018-02-14
US9900385B2 (en) 2018-02-20

Similar Documents

Publication Publication Date Title
JP6279938B2 (ja) 接続管理装置、通信システム、接続管理方法およびプログラム
JP5364671B2 (ja) ネットワーク認証における端末接続状態管理
JP6106494B2 (ja) 通信制御装置、サーバ装置、通信システム及びプログラム
CN110838991B (zh) 网关连接方法、装置、存储介质、电子设备及网关设备
JP6470966B2 (ja) 通信装置、サーバ装置、通信方法およびプログラム
JP5865277B2 (ja) 認証スイッチまたはネットワークシステム
US9231907B2 (en) Method for establishing connection between communication apparatuses, communication apparatus, and server apparatus
JP5255035B2 (ja) フェイルオーバシステム、記憶処理装置及びフェイルオーバ制御方法
JPWO2017169283A1 (ja) スライス情報変更方法および通信システム
JP2016063425A (ja) 通信装置、通信システムおよび通信方法
US9729428B2 (en) Peer-to-peer connection system with capability of peer-to-peer connection path routing, path routing method of peer-to-peer connection and computer application program thereof
US9596326B2 (en) Communication apparatus, communication method, and non-transitory computer-readable medium
WO2015059849A1 (ja) 通信システム、共通サービス制御装置、データ送信方法及び非一時的なコンピュータ可読媒体
US20150156164A1 (en) Communication system, communication control method, communication relay system, and communication relay control method
KR101730403B1 (ko) 네트워크 경로를 관리하는 방법 및 이를 수행하는 네트워크 엔티티
JP7338250B2 (ja) 移動通信システム、ゲートウェイ装置、通信方法、及び、プログラム
JP2014096685A (ja) 通信システムおよび通信方法
JP6554431B2 (ja) セッション制御方法および通信システム
JP2017028383A (ja) センサ収容システム、ゲートウェイ、管理サーバ、センサ収容方法及びセンサ収容プログラム
JP6215089B2 (ja) 機器情報収集システム及び機器情報収集方法
JP5851919B2 (ja) 呼制御システムおよび呼制御に利用する情報の冗長化方法
JP6381038B2 (ja) 通信制御装置、通信システム、名前解決方法及びプログラム
JP6358650B2 (ja) 中継装置、中継方法及びプログラム
JP5842657B2 (ja) 呼制御装置
JP2009098985A (ja) セッション管理方法、通信システムおよび通信装置

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20151102

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160829

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170630

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170711

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170907

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180118

R151 Written notification of patent or utility model registration

Ref document number: 6279938

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees