JP2010009380A - バスシステム - Google Patents

バスシステム Download PDF

Info

Publication number
JP2010009380A
JP2010009380A JP2008168951A JP2008168951A JP2010009380A JP 2010009380 A JP2010009380 A JP 2010009380A JP 2008168951 A JP2008168951 A JP 2008168951A JP 2008168951 A JP2008168951 A JP 2008168951A JP 2010009380 A JP2010009380 A JP 2010009380A
Authority
JP
Japan
Prior art keywords
agent
server
user
application
communication destination
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
JP2008168951A
Other languages
English (en)
Other versions
JP5104591B2 (ja
Inventor
Mitsuhiko Miwa
光彦 三輪
Masahiko Ohashi
正彦 大橋
Miyuki Sato
美幸 佐藤
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2008168951A priority Critical patent/JP5104591B2/ja
Priority to US12/403,530 priority patent/US8082296B2/en
Priority to EP09003810A priority patent/EP2139203A1/en
Priority to CN200910133398.5A priority patent/CN101616050B/zh
Publication of JP2010009380A publication Critical patent/JP2010009380A/ja
Application granted granted Critical
Publication of JP5104591B2 publication Critical patent/JP5104591B2/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/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1029Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
    • 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/1012Server selection for load balancing based on compliance of requirements or conditions with available server resources
    • 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/1017Server selection for load balancing based on a round robin mechanism
    • 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/51Discovery or management thereof, e.g. service location protocol [SLP] or web 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/50Network services
    • H04L67/55Push-based network 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
    • 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/1031Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests
    • 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/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • 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
    • H04L67/563Data redirection of data network streams
    • 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/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)

Abstract

【課題】バスシステムのスケールアウトを容易に行うことができるとともに、対象となるアプリケーションが決まらなくても通信を行えるようにする。
【解決手段】サーバアプリケーション毎に設けた複数のサーバエージェントと、ユーザアプリケーション毎に設けた複数のユーザエージェントとを備え、前記サーバエージェントは、対応する前記サーバアプリケーションと通信する手段と、前記サーバエージェントもしくは前記ユーザエージェントと通信する手段と、通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段とを有し、前記ユーザエージェントは、対応する前記ユーザアプリケーションと通信する手段と、前記サーバエージェントもしくは前記ユーザエージェントと通信する手段と、通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段とを有する。
【選択図】図5

Description

本発明は、ネットワーク上に構築されるESB(Enterprise Service Bus)等のバスシステムに関する。
図1はインターネットで用いられている従来のWeb版ネットワークシステムの構成例を示す図である。図1において、データベース(データベースサーバ)1を用いた業務アプリケーション群(アプリケーションサーバ群)2に対し、Webブラウザ群(クライアント群)3からリクエストを行い、レスポンスを受け取ることにより、プル(Pull)型の通信を実現している。なお、このWeb版ネットワークシステムでは、Webブラウザ群3からのリクエストを通信の契機とするものであり、サーバ側の業務アプリケーション群2からWebブラウザ群3に対するプッシュ(Push)型の通信は実現することができない。
サーバ側からのプッシュ型通信の要求に対応するために、例えば、バスシステムが利用されている。
公知のバスの概念の一例として、ESBがあり、様々な検討がなされている(http://www.atmarkit.co.jp/aig/04biz/esb.html等を参照。)。ESBは、SOA(Service Oriented Architecture)に基づいたアプリケーション統合を“バス”の概念でデザインするアーキテクチャパターン、あるいはそれを実現するための基盤となるソフトウェア製品をいう。ESB概念は、サービス(アプリケーションやコンポーネント)へのアクセスを行い、複数のサービスを協調・連携動作するSOAシステムを、論理的なソフトウェアバスに基づいて構成するというソフトウェア設計上の考え方である。従って、具体的な機能や実装は個別の製品やシステムによって異なるが、一般的に標準的なSOAインタフェースを備えたEAI(Enterprise Application Integration)製品、ないしはマルチプロトコルをサポートする高機能なメッセージバス、それを含む統合型ミドルウェアテクノロジ、ミドルウェア製品などを指す。また、WebサービスやJCA(J2EE Connector Architecture)などのオープンな標準仕様に準拠して開発されたサービスを相互連携させるインテグレーションブローカである。中核となるメッセージバスは、HTTP(Hyper Text Transfer Protocol)、SOAP(Simple Object Access Protocol)、JMS(Java(登録商標) Message Service)など標準的プロトコルに対応し、パブリッシュ&サブスクライブ、ストアフォワードメッセージ、ルーティングなどの機能を提供し、サービス同士を同期/非同期に連携させる。完全なSOA環境においては分散処理構成とできるが、実際の製品にはレガシー接続、データ変換などの機能を併せ持つものも多く、広義のEAIとして使用できる。更に、セキュリティ、負荷分散、プロセスモデリングなどの機能を提供する製品もある。
図2は従来のバスシステムの構成例を示す図であり、アプリケーションAP1〜AP6、・・の間にバスシステムBSを介在させ、アプリケーション間の通信が必要な場合は全てバスシステムBSを通信経路として通信を行うことで、プル型通信およびプッシュ型通信のいずれも自由に行えるようにしている。なお、各アプリケーションAP1〜AP6、・・とバスシステムBSの間は、汎用的なHTTP、SOAP、JMS等により通信を行うようになっている。
ところで、従来のネットワークにおけるバスシステムは、バスシステムにつながるサーバアプリケーションやユーザアプリケーションを、一度には1対1で通信することにより処理していた。そのため、バスシステムにつながるサーバアプリケーションやユーザアプリケーションが増えるほどバスシステムに負荷が生じ、バスシステムはその負荷に耐える必要があった。
負荷分散を実現する方式の一例として、バスシステムを複数のプロセスにより構成し、プロセス間通信を行うことにより分散させる方式が存在する。負荷分散の具体例として、「ESB Muleモデル」「エンドポイントESB」「Artix」「Celtix」等がある。「ESB Muleモデル」は、アプリケーション間のコミュニケーションを管理するための分散オブジェクトブローカを有する、軽量のメッセージングフレームワークである(http://www.mulesource.org/display/JPNDOC/Architecture+Overview)。「エンドポイントESB」は、エンドポイントにすべてを集約する考え方でエンドポイントを組み合わせることでESBを構成するものである(http://www.mulesource.org/display/JPNDOC/Mule+Endpoints、http://blogs.iona.com/essence/2006/11/esb_1.html)。エンドポイントESBの実装の一例として、「Artix」がある。「Artix」は、CORBA(Common Object Request Broker Architecture)の文化を引き継いだESBである。「Celtix」はオープンソースESBである(http://celtix.objectweb.org/)。
図3は複数のプロセスにより負荷分散を実現した従来のバスシステムの構成例を示す図である。図3においては、アプリケーションAP1〜AP5がアクセスするバスシステムBSをプロセスP1〜P5によって構成している。そして、それぞれのプロセスP1〜P5の間をプロセス間通信することにより通信の交通整理を行い、その結果、負荷分散を実現している。これにより、アプリケーションが増えても、バスシステムBSのスケールアウト(プロセスを増やすことでバスシステム全体のパフォーマンスを向上させること)を実現することができる。
特開平9−307583号公報
近年、既存の通話サービスや電子メールなどのデータ系サービスを組み合わせ、新しい通信サービスを開発し実行するための基盤が検討されてきている。この新しい基盤では、既存の回線交換サービスをSIP(Session Initiation Protocol)ベースのパケット網で実現するだけでなく、今までにない機能を新たに追加することも可能になる予定である。一例として、NGN(Next Generation Network)上で実現するSDP(Service Delivery Platform)がある。
このような場面では、多数のユーザがバスシステムを介してサーバアプリケーションにアクセスすることが考えられる。特に、あるサービスに人気が出ると、その1つのサービスに対し多数のユーザのアクセスが一時に集中することがしばしば起こる。このような場面では、前述のバスシステムの各既存技術や実装にてスケールアウトを実現しようとしても限界が生じてくる。すなわち、ユーザ側が急激に増加し、アクセスが特定のアプリケーションに集中してしまうと、やはり限界が生じてしまう。
図4は特定のサーバアプリケーションとプロセスに負荷集中が起こる様子を示す図である。図4においては、複数プロセスP1〜P5でバスシステムBSを構成し、その上層側にはサーバアプリケーション群(サーバアプリケーションA1、A2、B1、C1、・・)が、また、下層側にはユーザアプリケーション群(ユーザアプリケーションU1〜U4、・・)があり、各アプリケーションは、バスシステムBSを構成しているいずれかのプロセスP1〜P5とつながっている。また、バスシステムBSを構成しているプロセスP1〜P5同士は、プロセス間のルーティングにより負荷分散を実現している。なお、サーバアプリケーションA1、A2は同じサービス(アプリケーションA)を提供しているものとしている。
今、アプリケーションAに人気が出ると、ユーザアプリケーション群(ユーザアプリケーションU1〜U4、・・)からのアクセスが人気のあるアプリケーションA(サーバアプリケーションA1、A2)に一斉に集中し、そのトラヒックが多くなる。また、ユーザアプリケーション群は、アプリケーションAに人気があるとの噂やトレンドから、ユーザアプリケーション自体が増加していく。その数は、場合により数十万〜数百万オーダにも達する。それらのユーザアプリケーションU1〜U4、・・が一斉にサーバアプリケーションA1、A2に向かってアクセスを開始することになる。
これらのトラヒックを、バスシステムBSを構成している複数のプロセスP1〜P5が処理することになるが、各プロセスP1〜P5が担う負荷の偏りが生じてくる。特に、サーバアプリケーションA1、A2と直接に通信を行う末端のプロセスP1に負荷が集中してくる。そして、この負荷集中を回避することができず、結局、バスシステムBS自体のスケールアウトが困難になる。
このように、従来のバスシステムでは、負荷が集中するとバスシステムに限界が生じ、バスシステムのスケールアウトができないという問題があった。
また、特許文献1には、データベースを持つサーバ間において、各々の共通メモリ間でデータ送受信を行うスーパーエージェントが開示されている。しかし、この手法においても、ルータ間の通信やスーパーエージェント自体に負荷が集中し、スケールアウトの実現は困難である。
一方、上述した負荷集中とは異なる観点からの不都合として、各アプリケーションは通信対象となるアプリケーションが決まらないと通信できないという問題があった。例えば、一般にユーザはサーバアプリケーションが提供するサービスを欲するのであり、必ずしも所望のサービスを提供するサーバアプリケーションを特定できているとは限らない。特に、同様なサービス(例:検索サービス)を提供するサーバアプリケーションが頻繁に新設されたり消滅したりする場合には、対象となるサーバアプリケーションを常に特定することを期待することは困難である。
上記の従来の問題点に鑑み、スケールアウトを容易に行うことができるとともに、対象となるアプリケーションが決まらなくても通信を行うことのできるバスシステムを提供することを目的とする。
このバスシステムの一実施態様では、サーバアプリケーション毎に設けた複数のサーバエージェントと、ユーザアプリケーション毎に設けた複数のユーザエージェントとを備え、前記サーバエージェントは、対応する前記サーバアプリケーションと通信する手段と、前記サーバエージェントもしくは前記ユーザエージェントと通信する手段と、通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段とを有し、前記ユーザエージェントは、対応する前記ユーザアプリケーションと通信する手段と、前記サーバエージェントもしくは前記ユーザエージェントと通信する手段と、通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段とを有する。
好ましくは、前記ユーザエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段は、前記ユーザアプリケーションから受信したサービスURIから辞書に問い合わせることで、負荷に余裕のある前記サーバエージェントを通信先として決定する。
好ましくは、前記ユーザエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段は、前記ユーザアプリケーションから受信したサービスURIに基づいて辞書に問い合わせることで、通信先候補の前記サーバエージェントの中から巡回的に前記サーバエージェントを通信先として決定する。
好ましくは、前記サーバエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段は、前記サーバアプリケーションから受信したサービスURIに基づいて辞書に問い合わせることで、配信先となる前記ユーザアプリケーションに対応する前記ユーザエージェントを通信先として決定する。
好ましくは、前記サーバエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段は、前記サーバアプリケーションから受信したサービスURIに基づいて辞書に問い合わせることで、同サービスを提供する他のサーバエージェントを通信先として決定し、前記サーバエージェントにおける前記サーバエージェントもしくは前記ユーザエージェントと通信する手段は、決定されたサーバエージェントに配信コンテンツもしくはそのURIのレプリカを送信することで、当該サーバエージェントから他のユーザエージェントに配信コンテンツもしくはそのURIを送信させる。
好ましくは、 前記ユーザエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段は、前記ユーザアプリケーションから受信したシナリオの記述に基づいてシナリオ解釈部に問い合わせることで、当該シナリオを処理可能な前記サーバアプリケーションに対応する前記サーバエージェントを通信先として決定する。
開示のバスシステムにあっては、スケールアウトを容易に行うことができるとともに、対象となるアプリケーションが決まらなくても通信を行うことができる。
以下、本発明の好適な実施形態につき説明する。
<基本構成>
図5は本発明の一実施形態にかかるバスシステムの構成例を示す図である。
図5において、バスシステム100の上層にはサーバアプリケーション群(サーバアプリケーションA1〜A3、B1、・・)があり、下層にはユーザアプリケーション群(ユーザアプリケーションU1〜U4、・・)がある。サーバアプリケーションA1〜A3は同一のサーバアプリケーションAを提供しているものとしている。
バスシステム100は、サーバアプリケーションA1〜A3、B1、・・毎に設けられたサーバエージェントa1〜a3、b1、・・と、ユーザアプリケーションU1〜U4、・・毎に設けられたユーザエージェントu1〜u4、・・とを備えている。各エージェント(サーバエージェントa1〜a3、b1、・・、ユーザエージェントu1〜u4、・・)は、単一もしくは分散された複数のサーバ上で実行されるコンピュータプログラムにより実現される。
また、バスシステム100には、各エージェントの生成・消滅等の管理を行うエージェント管理部110と、エージェントの通信先等を管理するNS(Network Service)辞書120と、シナリオ(サービス内容を表すキーワード等)を解釈してエージェントの通信先等を決定するシナリオ解釈部130とを備えている。なお、NS辞書120は各エージェントに同内容を分散して保持することで省略することもできる。
図6はエージェント(サーバエージェントa1〜a3、b1、・・、ユーザエージェントu1〜u4、・・)の構成例を示す図である。図6において、エージェントは、アプリケーション向け通信部11と、エージェント向け通信部12と、NS辞書問い合わせ部13と、URI変換部14と、保持データ15とを有している。
アプリケーション向け通信部11は、サーバアプリケーションやユーザアプリケーションと通信する機能を有している。エージェント向け通信部12は、他のエージェントと通信する機能を有している。NS辞書問い合わせ部13は、ユーザアプリケーションもしくはサーバアプリケーションからURI(Uniform Resource Identifier)を受け取ると、対応するエージェント名をNS辞書120に問い合わせる機能を有している。URI変換部14は、NS辞書問い合わせ部13から得たエージェント名を用いて、URIを読み替える機能を有している。
保持データ15としては、当該エージェントを識別する名称を保持する「エージェント名」と、参照するNS辞書120を特定する名称を保持する「辞書名」と、NS辞書120への問い合わせの結果として得られたエージェントの識別子を保持する「対応エージェント識別子」と、対応するアプリケーションの識別子を保持する「対応アプリケーション識別子」とを有している。図7は保持データ15の例を示す図であり、(a)はサーバエージェントにおける保持データ15の例、(b)はユーザエージェントにおける保持データ15の例である。
図5において、サーバエージェントa1〜a3、b1、・・は対応するサーバアプリケーションA1〜A3、B1、・・と通信を行う。サーバエージェントとサーバアプリケーションの間の通信方式インタフェースは、既存のバスシステムに変更を加えることなく、汎用的なインタフェースを用いる。
ユーザエージェントu1〜u4、・・は対応するユーザアプリケーションU1〜U4、・・と通信を行う。ユーザエージェントとユーザアプリケーションの間の通信方式インタフェースは、既存のバスシステムに変更を加えることなく、汎用的なインタフェースを用いる。
各エージェントはエージェント同士の通信を行い、通信経路を決めることで負荷分散を行い、特定のサーバアプリケーションおよび対応するサーバエージェントに負荷が集中するのを防止する。通信経路の決定は、NS辞書120を参照することで通信相手となる他のエージェントを決定することで行うほか、直接エージェント同士が通信して行うことができる。
このような基本機能を備えることで、プル型およびプッシュ型のいずれの通信方式にも柔軟に対応することができるとともに、負荷分散を実現することができる。
また、ユーザアプリケーションU1〜U4、・・からの通信においてシナリオを記述することで、シナリオ解釈部130により通信経路が決定されるようにすることができ、対象となるアプリケーションが決まらなくても通信を行うことができる。
<プル型>
図8はプル型に適用した場合のNS辞書120の例を示す図である。図8において、NS辞書120は、ユーザアプリケーションから指定されるサービス提供のURIを示す「サービスURI」と、当該サービスURIに対応するサーバエージェントを特定する「サーバエージェント名」と、当該サーバエージェントおよび対応するサーバアプリケーションの負荷状態(負荷小、負荷大等)を示す「状態」と、問い合わせに当該サーバエージェントを返答した履歴(タイムスタンプもしくは連番等)を示す「返答履歴」とを含んでいる。
図9はプル型における動作例を示す図であり、図10はそのシーケンス図である。なお、図9における構成は、NS辞書120が実装されている点とシナリオ解釈部130が省略されている点の他は、図5に示した構成と同様である。
ここでは、サーバアプリケーションA1〜A3の提供するサービス(アプリケーションA)の人気があり、たくさんのユーザアプリケーションU1〜U4、・・からアプリケーションAが呼び出される場合を想定している。また、その過程で、サーバアプリケーションA1およびサーバエージェントa1の状態が負荷小から負荷大となり、その旨がNS辞書120に記録されるものとしている。
図9および図10において、ユーザアプリケーションU1から対応するユーザエージェントu1に「URI://A/」が送信されると(ステップS101)、ユーザエージェントu1はNS辞書120に対してサービスURI「A」を指定してエージェント名を問い合わせる(ステップS102)。NS辞書120はサービスURI「A」から、図8の対応関係に従い、「サーバエージェントa1」「サーバエージェントa2」「サーバエージェントa3」が該当することを認識するが、更にその状態と返答履歴を参照し、登録順に従い、状態が負荷大でなく、かつラウンドロビン方式に基づいて返答履歴の古いものからサーバエージェントを特定する。ここでは、先頭の「サーバエージェントa1」の状態が「負荷小」で返答履歴が古いものとすると、NS辞書120は「サーバエージェントa1」を対応エージェント名として返送する(ステップS103)。
次いで、ユーザエージェントu1はNS辞書120から取得した対応エージェント名にURIを読み替え(ステップS104)、読み替えたURIの示すサーバエージェントa1に通信する(ステップS105)。そして、サーバエージェントa1は対応するサーバアプリケーションA1に通信を行う(ステップS106)。これにより、サーバアプリケーションA1からの応答として、所望のコンテンツがサーバエージェントa1およびユーザエージェントu1を介してユーザアプリケーションU1に返される。
図11は図10におけるステップS101〜S106のエージェント(ユーザエージェントu1およびサーバエージェントa1)内の処理を詳細に示すシーケンス図である。
図11において、ユーザアプリケーションU1から対応するユーザエージェントu1にURIが送信されると(ステップS131)、アプリケーション向け通信部11がこれを受信する。アプリケーション向け通信部11はNS辞書問い合わせ部13に受信した情報を引き渡し(ステップS132)、NS辞書問い合わせ部13はNS辞書120に対してサービスURIを指定してエージェント名を問い合わせ(ステップS133)、対応エージェント名の返送を受信する(ステップS134)。
次いで、NS辞書問い合わせ部13は受信した情報をURI変換部14に引き渡し(ステップS135)、URI変換部14はNS辞書120から取得した対応エージェント名にURIを読み替え(ステップS136)、読み替えたURIをエージェント向け通信部12に引き渡す(ステップS137)。そして、エージェント向け通信部12は読み替えたURIの示すサーバエージェントa1に通信し(ステップS138)、サーバエージェントa1では、エージェント向け通信部12がこれを受信する。そして、エージェント向け通信部12はアプリケーション向け通信部11に受信した情報を引き渡し(ステップS139)、アプリケーション向け通信部11は対応するサーバアプリケーションA1に通信を行う(ステップS140)。
図9および図10に戻り、同様にユーザアプリケーションU2から対応するユーザエージェントu2に「URI://A/」が送信されると(ステップS107)、ユーザエージェントu2はNS辞書120に対してサービスURI「A」を指定してエージェント名を問い合わせる(ステップS108)。NS辞書120はサービスURI「A」から、図8の対応関係に従い、「サーバエージェントa1」「サーバエージェントa2」「サーバエージェントa3」が該当することを認識するが、更にその状態と返答履歴を参照し、登録順に従い、状態が負荷大でなく、かつラウンドロビン方式に基づいて返答履歴の古いものからサーバエージェントを特定する。ここでは、先頭の「サーバエージェントa1」が返答履歴から直前に返答されていることがわかり、NS辞書120は「サーバエージェントa2」を対応エージェント名として返送する(ステップS109)。
次いで、ユーザエージェントu2はNS辞書120から取得した対応エージェント名にURIを読み替え(ステップS110)、読み替えたURIの示すサーバエージェントa2に通信する(ステップS111)。そして、サーバエージェントa2は対応するサーバアプリケーションA2に通信を行う(ステップS112)。これにより、サーバアプリケーションA2からの応答として、所望のコンテンツがサーバエージェントa2およびユーザエージェントu2を介してユーザアプリケーションU2に返される。
同様にユーザアプリケーションU3から対応するユーザエージェントu3に「URI://A/」が送信されると(ステップS113)、ユーザエージェントu3はNS辞書120に対してサービスURI「A」を指定してエージェント名を問い合わせる(ステップS114)。NS辞書120はサービスURI「A」から、図8の対応関係に従い、「サーバエージェントa1」「サーバエージェントa2」「サーバエージェントa3」が該当することを認識するが、更にその状態と返答履歴を参照し、登録順に従い、状態が負荷大でなく、かつラウンドロビン方式に基づいて返答履歴の古いものからサーバエージェントを特定する。ここでは、先頭の「サーバエージェントa1」と次の「サーバエージェントa2」が返答履歴から順次に返答されていることがわかり、NS辞書120は「サーバエージェントa3」を対応エージェント名として返送する(ステップS115)。
次いで、ユーザエージェントu3はNS辞書120から取得した対応エージェント名にURIを読み替え(ステップS116)、読み替えたURIの示すサーバエージェントa3に通信する(ステップS117)。そして、サーバエージェントa3は対応するサーバアプリケーションA3に通信を行う(ステップS118)。これにより、サーバアプリケーションA3からの応答として、所望のコンテンツがサーバエージェントa3およびユーザエージェントu3を介してユーザアプリケーションU3に返される。
同様にユーザアプリケーションU4から対応するユーザエージェントu4に「URI://A/」が送信されると(ステップS119)、ユーザエージェントu4はNS辞書120に対してサービスURI「A」を指定してエージェント名を問い合わせる(ステップS120)。NS辞書120はサービスURI「A」から、図8の対応関係に従い、「サーバエージェントa1」「サーバエージェントa2」「サーバエージェントa3」が該当することを認識するが、更にその状態と返答履歴を参照し、登録順に従い、状態が負荷大でなく、かつラウンドロビン方式に基づいて返答履歴の古いものからサーバエージェントを特定する。ここでは、「サーバエージェントa1」「サーバエージェントa2」「サーバエージェントa3」が返答履歴から順次に返答されていることがわかり、先頭の「サーバエージェントa1」が候補となるが、この時点でサーバエージェントa1の状態が負荷大になっていたとすると、NS辞書120は次の「サーバエージェントa2」を対応エージェント名として返送する(ステップS121)。
次いで、ユーザエージェントu4はNS辞書120から取得した対応エージェント名にURIを読み替え(ステップS122)、読み替えたURIの示すサーバエージェントa2に通信する(ステップS123)。そして、サーバエージェントa2は対応するサーバアプリケーションA2に通信を行う(ステップS124)。これにより、サーバアプリケーションA2からの応答として、所望のコンテンツがサーバエージェントa2およびユーザエージェントu4を介してユーザアプリケーションU4に返される。
このように、サーバアプリケーションA1〜A3の提供するサービス(アプリケーションA)に対してユーザアプリケーションU1〜U4、・・からのアクセスが集中しても、サーバエージェントa1〜a3に負荷分散が行われ、従来のように特定のプロセスに負荷が集中することがないため、サーバアプリケーションA1〜A3および対応するサーバエージェントa1〜a3の数を増やすことで容易にバスシステム100のスケールアウトを実現することができる。
<プッシュ型>
図12はプッシュ型に適用した場合のNS辞書120の例を示す図である。図12において、NS辞書120は、サーバアプリケーションから指定されるサービス提供のURIを示す「サービスURI」と、当該サービスURIに対応するサーバエージェントを特定する「サーバエージェント名」と、予め当該サービスに加入手続により登録されたユーザアプリケーションを特定する「ユーザアプリケーション名」と、当該ユーザアプリケーションに対応するユーザエージェントを特定する「ユーザエージェント名」とを含んでいる。
図13はプッシュ型における動作例を示す図であり、図14はそのシーケンス図である。なお、図13における構成は、NS辞書120が実装されている点とシナリオ解釈部130が省略されている点の他は、図5に示した構成と同様である。
図13および図14において、サーバアプリケーションA1から対応するサーバエージェントa1に「URI://X/」が送信されると(ステップS201)、サーバエージェントa1のアプリケーション向け通信部11がこれを受信する。アプリケーション向け通信部11はNS辞書問い合わせ部13に受信した情報を引き渡し(ステップS202)、NS辞書問い合わせ部13はNS辞書120に対してサービスURIを指定してエージェント名を問い合わせ(ステップS203)、対応エージェント名の返送を受信する(ステップS204)。ここでは、図12のNS辞書120における対応関係に基づき、サービスURI「X」に対して、問い合わせをしたサーバエージェントa1を除く「サーバエージェントa2」「サーバエージェントa3」と、問い合わせをしたサーバエージェントa1が自ら処理すべきユーザに対応する「ユーザエージェントu1」「ユーザエージェントu4」(ラウンドロビン方式に従い、先頭のユーザエージェントu1を選択し、続くユーザエージェントu2、u3はサーバエージェントa2、a3にまかせ、その次のユーザエージェントu4を選択)を取得する。
次いで、NS辞書問い合わせ部13は受信した情報をURI変換部14に引き渡し(ステップS205)、URI変換部14はNS辞書120から取得した対応エージェント名にURIを読み替え(ステップS206)、読み替えたURIをエージェント向け通信部12に引き渡す(ステップS207)。
次いで、エージェント向け通信部12はサーバエージェントa2に対して宛先となるユーザエージェントu2を指定してコンテンツのレプリカを配信し(ステップS208)、同様にサーバエージェントa3に対して宛先となるユーザエージェントu3を指定してコンテンツのレプリカを配信する(ステップS209)。
また、エージェント向け通信部12はユーザエージェントu1に対して通信を行い(ステップS210)、ユーザエージェントu1ではこれをエージェント向け通信部12が受信し、アプリケーション向け通信部11に情報を引き渡し(ステップS211)、アプリケーション向け通信部11は対応するユーザアプリケーションU1に通信を行う(ステップS212)。同様に、サーバエージェントa1のエージェント向け通信部12はユーザエージェントu4に対して通信を行い(ステップS213)、ユーザエージェントu4は対応するユーザアプリケーションU4に通信を行う(ステップS214)。
一方、サーバエージェントa2はユーザエージェントu2に通信を行い(ステップS215)、ユーザエージェントu2は対応するユーザアプリケーションU2に通信を行う(ステップS216)。同様に、サーバエージェントa3はユーザエージェントu3に通信を行い(ステップS217)、ユーザエージェントu3は対応するユーザアプリケーションU3に通信を行う(ステップS218)。
これらの動作により、サーバアプリケーションA1からユーザアプリケーションU1〜U4へのプッシュ型通信が実現される。
<シナリオ対応>
図15はシナリオに対応した動作例を示す図である。なお、図15においては、ユーザ側としてユーザアプリケーションU1を、サーバ側としてサーバアプリケーションA1、B1、C1を示し、バスシステム100内はユーザアプリケーションU1に対応するユーザエージェントu1と、サーバアプリケーションA1、B1、C1にそれぞれ対応するサーバエージェントa1、b1、c1と、シナリオ解釈部130とを示している。
動作にあっては、ユーザアプリケーションU1からバスシステム100のユーザエージェントu1にシナリオを送信する。シナリオは、例えば「<シナリオ>検索</シナリオ>」という形式で記述する。「<シナリオ>」はシナリオの開始位置を示すタグ、「</シナリオ>」はシナリオの終了位置を示すタグであり、ここでのシナリオは「検索」という文字列である。また、検索のキーワードとして併せて「<Key>FJT</Key>」を送信する。ここで、「<Key>」はキーワードの開始位置を示すタグ、「</Key>」はキーワードの終了位置を示すタグであり、ここでのキーワードは「FJT」という文字列である。
ユーザエージェントu1はシナリオを受信すると、シナリオ(上記の例では「検索」)を指定してシナリオ解釈部130に問い合わせを行い、返答を得る。シナリオ解釈部130は図16に示すような対応テーブルを有しており、サービス名「検索」に対し、同様な検索サービスを提供するサーバアプリケーションA1、B1、C1に対応するサーバエージェントa1、b1、c1が、サーバアプリケーションA1、B1、C1からサーバエージェントa1、b1、c1を介した要求に基づいて登録されている。従って、シナリオ解釈部130はシナリオ「検索」につき問い合わせを受けると、検索サービスを提供するサーバアプリケーションA1、B1、C1に対応するサーバエージェントa1、b1、c1をユーザエージェントu1に返答する。
ユーザエージェントu1はシナリオ解釈部130から取得したサーバエージェントa1、b1、c1に対してキーワード「FJT」を指定した検索依頼を送信し、これを受信したサーバエージェントa1、b1、c1は対応するサーバアプリケーションA1、B1、C1にキーワード「FJT」を指定した検索依頼を送信する。そして、サーバエージェントa1、b1、c1は対応するサーバアプリケーションA1、B1、C1から検索結果を受信すると、ユーザエージェントu1に検索結果を送信する。ユーザエージェントu1は検索結果をまとめ、ユーザアプリケーションU1に返送する。
これにより、ユーザアプリケーションU1を操作するユーザは「検索」というシナリオを特定することにより、それが処理されるサーバアプリケーションA1、B1、C1を意識することなく、たとえ検索サービスを提供するアプリケーションが増減しても、サービスの提供を受けることができる。
<総括>
上述した実施形態によれば、次のような利点がある。
(1)プル型通信、プッシュ型通信のいずれにも対応することができる。
(2)バスシステムの負荷分散を実現することができる。
(3)ユーザアプリケーションが増加(数十万、数百万オーダレベルでの増加)しても、それに対応したバスシステムのスケールアウトの実現が可能となる。特に、スケーラビリティを要求されるNGN等のネットワークシステムに適する。
(4)シナリオを用いることによって、サービスを抽象化した形で記述することができ、対象サーバアプリケーションが決まらなくても通信を開始することができる。また、アプリケーションの造りをシンプルにすることができる。
以上、本発明の好適な実施の形態により本発明を説明した。ここでは特定の具体例を示して本発明を説明したが、特許請求の範囲に定義された本発明の広範な趣旨および範囲から逸脱することなく、これら具体例に様々な修正および変更を加えることができることは明らかである。すなわち、具体例の詳細および添付の図面により本発明が限定されるものと解釈してはならない。
(付記1)
サーバアプリケーション毎に設けた複数のサーバエージェントと、ユーザアプリケーション毎に設けた複数のユーザエージェントとを備え、
前記サーバエージェントは、対応する前記サーバアプリケーションと通信する手段と、前記サーバエージェントもしくは前記ユーザエージェントと通信する手段と、通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段とを有し、
前記ユーザエージェントは、対応する前記ユーザアプリケーションと通信する手段と、前記サーバエージェントもしくは前記ユーザエージェントと通信する手段と、通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段とを有することを特徴とするバスシステム。
(付記2)
前記ユーザエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段は、前記ユーザアプリケーションから受信したサービスURIから辞書に問い合わせることで、負荷に余裕のある前記サーバエージェントを通信先として決定することを特徴とする付記1に記載のバスシステム。
(付記3)
前記ユーザエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段は、前記ユーザアプリケーションから受信したサービスURIに基づいて辞書に問い合わせることで、通信先候補の前記サーバエージェントの中から巡回的に前記サーバエージェントを通信先として決定することを特徴とする付記2に記載のバスシステム。
(付記4)
前記サーバエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段は、前記サーバアプリケーションから受信したサービスURIに基づいて辞書に問い合わせることで、配信先となる前記ユーザアプリケーションに対応する前記ユーザエージェントを通信先として決定することを特徴とする付記1に記載のバスシステム。
(付記5)
前記サーバエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段は、前記サーバアプリケーションから受信したサービスURIに基づいて辞書に問い合わせることで、同サービスを提供する他のサーバエージェントを通信先として決定し、
前記サーバエージェントにおける前記サーバエージェントもしくは前記ユーザエージェントと通信する手段は、決定されたサーバエージェントに配信コンテンツもしくはそのURIのレプリカを送信することで、当該サーバエージェントから他のユーザエージェントに配信コンテンツもしくはそのURIを送信させることを特徴とする付記4に記載のバスシステム。
(付記6)
前記ユーザエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段は、前記ユーザアプリケーションから受信したシナリオの記述に基づいてシナリオ解釈部に問い合わせることで、当該シナリオを処理可能な前記サーバアプリケーションに対応する前記サーバエージェントを通信先として決定することを特徴とする付記1に記載のバスシステム。
(付記7)
サーバアプリケーション毎に設けた複数のサーバエージェントと、ユーザアプリケーション毎に設けた複数のユーザエージェントとを備えたバスシステムの制御方法であって、
前記ユーザエージェントが、対応する前記ユーザアプリケーションと通信する工程と、通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する工程と、決定された前記サーバエージェントもしくは前記ユーザエージェントと通信する工程と、
前記サーバエージェントが、対応する前記サーバアプリケーションと通信する工程とを備えたことを特徴とするバス制御方法。
(付記8)
前記ユーザエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する工程は、前記ユーザアプリケーションから受信したサービスURIから辞書に問い合わせることで、負荷に余裕のある前記サーバエージェントを通信先として決定することを特徴とする付記7に記載のバス制御方法。
(付記9)
前記ユーザエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する工程は、前記ユーザアプリケーションから受信したサービスURIに基づいて辞書に問い合わせることで、通信先候補の前記サーバエージェントの中から巡回的に前記サーバエージェントを通信先として決定することを特徴とする付記8に記載のバス制御方法。
(付記10)
サーバアプリケーション毎に設けた複数のサーバエージェントと、ユーザアプリケーション毎に設けた複数のユーザエージェントとを備えたバスシステムの制御方法であって、
前記サーバエージェントが、対応する前記サーバアプリケーションと通信する工程と、通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する工程と、決定された前記サーバエージェントもしくは前記ユーザエージェントと通信する工程と、
前記ユーザエージェントが、対応する前記ユーザアプリケーションと通信する工程とを備えたことを特徴とするバス制御方法。
(付記11)
前記サーバエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する工程は、前記サーバアプリケーションから受信したサービスURIに基づいて辞書に問い合わせることで、配信先となる前記ユーザアプリケーションに対応する前記ユーザエージェントを通信先として決定することを特徴とする付記10に記載のバス制御方法。
(付記12)
前記サーバエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する工程は、前記サーバアプリケーションから受信したサービスURIに基づいて辞書に問い合わせることで、同サービスを提供する他のサーバエージェントを通信先として決定し、
前記サーバエージェントにおける前記サーバエージェントもしくは前記ユーザエージェントと通信する工程は、決定されたサーバエージェントに配信コンテンツもしくはそのURIのレプリカを送信することで、当該サーバエージェントから他のユーザエージェントに配信コンテンツもしくはそのURIを送信させることを特徴とする付記11に記載のバス制御方法。
(付記13)
前記ユーザエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する工程は、前記ユーザアプリケーションから受信したシナリオの記述に基づいてシナリオ解釈部に問い合わせることで、当該シナリオを処理可能な前記サーバアプリケーションに対応する前記サーバエージェントを通信先として決定することを特徴とする付記7に記載のバス制御方法。
(付記14)
サーバアプリケーション毎に設けた複数のサーバエージェントと、ユーザアプリケーション毎に設けた複数のユーザエージェントとを備えたバスシステムの制御プログラムであって、
前記バスシステムを構成するコンピュータを、
前記サーバエージェントにつき、対応する前記サーバアプリケーションと通信する手段、前記サーバエージェントもしくは前記ユーザエージェントと通信する手段、および、通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段として機能させ、
前記ユーザエージェントにつき、対応する前記ユーザアプリケーションと通信する手段、前記サーバエージェントもしくは前記ユーザエージェントと通信する手段、および、通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段として機能させるバス制御プログラム。
(付記15)
前記ユーザエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段は、前記ユーザアプリケーションから受信したサービスURIから辞書に問い合わせることで、負荷に余裕のある前記サーバエージェントを通信先として決定する付記14に記載のバス制御プログラム。
(付記16)
前記ユーザエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段は、前記ユーザアプリケーションから受信したサービスURIに基づいて辞書に問い合わせることで、通信先候補の前記サーバエージェントの中から巡回的に前記サーバエージェントを通信先として決定する付記15に記載のバス制御プログラム。
(付記17)
前記サーバエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段は、前記サーバアプリケーションから受信したサービスURIに基づいて辞書に問い合わせることで、配信先となる前記ユーザアプリケーションに対応する前記ユーザエージェントを通信先として決定する付記14に記載のバス制御プログラム。
(付記18)
前記サーバエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段は、前記サーバアプリケーションから受信したサービスURIに基づいて辞書に問い合わせることで、同サービスを提供する他のサーバエージェントを通信先として決定し、
前記サーバエージェントにおける前記サーバエージェントもしくは前記ユーザエージェントと通信する手段は、決定されたサーバエージェントに配信コンテンツもしくはそのURIのレプリカを送信することで、当該サーバエージェントから他のユーザエージェントに配信コンテンツもしくはそのURIを送信させる付記17に記載のバス制御プログラム。
(付記19)
前記ユーザエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段は、前記ユーザアプリケーションから受信したシナリオの記述に基づいてシナリオ解釈部に問い合わせることで、当該シナリオを処理可能な前記サーバアプリケーションに対応する前記サーバエージェントを通信先として決定する付記14に記載のバス制御プログラム。
従来のWeb版ネットワークシステムの構成例を示す図である。 従来のバスシステムの構成例を示す図(その1)である。 従来のバスシステムの構成例を示す図(その2)である。 従来のバスシステムの構成例を示す図(その3)である。 本発明の一実施形態にかかるバスシステムの構成例を示す図である。 エージェントの構成例を示す図である。 保持データの例を示す図である。 プル型に適用した場合のNS辞書の例を示す図である。 プル型における動作例を示す図である。 プル型の処理例を示すシーケンス図である。 エージェント内の処理を詳細に示すシーケンス図である。 プッシュ型に適用した場合のNS辞書の例を示す図である。 プッシュ型における動作例を示す図である。 プッシュ型の処理例を示すシーケンス図である。 シナリオに対応した動作例を示す図である。 シナリオ解釈部内部の対応テーブルの例を示す図である。
符号の説明
100 バスシステム
110 エージェント管理部
120 NS辞書
130 シナリオ解釈部
A1〜A3、B1、C1 サーバアプリケーション
U1〜U4 ユーザアプリケーション
a1〜a3、b1、c1 サーバエージェント
u1〜u4 ユーザエージェント
11 アプリケーション向け通信部
12 エージェント向け通信部
13 NS辞書問い合わせ部
14 URI変換部
15 保持データ

Claims (13)

  1. サーバアプリケーション毎に設けた複数のサーバエージェントと、ユーザアプリケーション毎に設けた複数のユーザエージェントとを備え、
    前記サーバエージェントは、対応する前記サーバアプリケーションと通信する手段と、前記サーバエージェントもしくは前記ユーザエージェントと通信する手段と、通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段とを有し、
    前記ユーザエージェントは、対応する前記ユーザアプリケーションと通信する手段と、前記サーバエージェントもしくは前記ユーザエージェントと通信する手段と、通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段とを有することを特徴とするバスシステム。
  2. 前記ユーザエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段は、前記ユーザアプリケーションから受信したサービスURIから辞書に問い合わせることで、負荷に余裕のある前記サーバエージェントを通信先として決定することを特徴とする請求項1に記載のバスシステム。
  3. 前記ユーザエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段は、前記ユーザアプリケーションから受信したサービスURIに基づいて辞書に問い合わせることで、通信先候補の前記サーバエージェントの中から巡回的に前記サーバエージェントを通信先として決定することを特徴とする請求項2に記載のバスシステム。
  4. 前記サーバエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段は、前記サーバアプリケーションから受信したサービスURIに基づいて辞書に問い合わせることで、配信先となる前記ユーザアプリケーションに対応する前記ユーザエージェントを通信先として決定することを特徴とする請求項1に記載のバスシステム。
  5. 前記サーバエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段は、前記サーバアプリケーションから受信したサービスURIに基づいて辞書に問い合わせることで、同サービスを提供する他のサーバエージェントを通信先として決定し、
    前記サーバエージェントにおける前記サーバエージェントもしくは前記ユーザエージェントと通信する手段は、決定されたサーバエージェントに配信コンテンツもしくはそのURIのレプリカを送信することで、当該サーバエージェントから他のユーザエージェントに配信コンテンツもしくはそのURIを送信させることを特徴とする請求項4に記載のバスシステム。
  6. 前記ユーザエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する手段は、前記ユーザアプリケーションから受信したシナリオの記述に基づいてシナリオ解釈部に問い合わせることで、当該シナリオを処理可能な前記サーバアプリケーションに対応する前記サーバエージェントを通信先として決定することを特徴とする請求項1に記載のバスシステム。
  7. サーバアプリケーション毎に設けた複数のサーバエージェントと、ユーザアプリケーション毎に設けた複数のユーザエージェントとを備えたバスシステムの制御方法であって、
    前記ユーザエージェントが、対応する前記ユーザアプリケーションと通信する工程と、通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する工程と、決定された前記サーバエージェントもしくは前記ユーザエージェントと通信する工程と、
    前記サーバエージェントが、対応する前記サーバアプリケーションと通信する工程とを備えたことを特徴とするバス制御方法。
  8. 前記ユーザエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する工程は、前記ユーザアプリケーションから受信したサービスURIから辞書に問い合わせることで、負荷に余裕のある前記サーバエージェントを通信先として決定することを特徴とする請求項7に記載のバス制御方法。
  9. 前記ユーザエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する工程は、前記ユーザアプリケーションから受信したサービスURIに基づいて辞書に問い合わせることで、通信先候補の前記サーバエージェントの中から巡回的に前記サーバエージェントを通信先として決定することを特徴とする請求項8に記載のバス制御方法。
  10. サーバアプリケーション毎に設けた複数のサーバエージェントと、ユーザアプリケーション毎に設けた複数のユーザエージェントとを備えたバスシステムの制御方法であって、
    前記サーバエージェントが、対応する前記サーバアプリケーションと通信する工程と、通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する工程と、決定された前記サーバエージェントもしくは前記ユーザエージェントと通信する工程と、
    前記ユーザエージェントが、対応する前記ユーザアプリケーションと通信する工程とを備えたことを特徴とするバス制御方法。
  11. 前記サーバエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する工程は、前記サーバアプリケーションから受信したサービスURIに基づいて辞書に問い合わせることで、配信先となる前記ユーザアプリケーションに対応する前記ユーザエージェントを通信先として決定することを特徴とする請求項10に記載のバス制御方法。
  12. 前記サーバエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する工程は、前記サーバアプリケーションから受信したサービスURIに基づいて辞書に問い合わせることで、同サービスを提供する他のサーバエージェントを通信先として決定し、
    前記サーバエージェントにおける前記サーバエージェントもしくは前記ユーザエージェントと通信する工程は、決定されたサーバエージェントに配信コンテンツもしくはそのURIのレプリカを送信することで、当該サーバエージェントから他のユーザエージェントに配信コンテンツもしくはそのURIを送信させることを特徴とする請求項11に記載のバス制御方法。
  13. 前記ユーザエージェントにおける通信先の前記サーバエージェントもしくは前記ユーザエージェントを決定する工程は、前記ユーザアプリケーションから受信したシナリオの記述に基づいてシナリオ解釈部に問い合わせることで、当該シナリオを処理可能な前記サーバアプリケーションに対応する前記サーバエージェントを通信先として決定することを特徴とする請求項7に記載のバス制御方法。
JP2008168951A 2008-06-27 2008-06-27 バスシステム Expired - Fee Related JP5104591B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2008168951A JP5104591B2 (ja) 2008-06-27 2008-06-27 バスシステム
US12/403,530 US8082296B2 (en) 2008-06-27 2009-03-13 Bus system
EP09003810A EP2139203A1 (en) 2008-06-27 2009-03-17 Bus system
CN200910133398.5A CN101616050B (zh) 2008-06-27 2009-04-09 总线系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008168951A JP5104591B2 (ja) 2008-06-27 2008-06-27 バスシステム

Publications (2)

Publication Number Publication Date
JP2010009380A true JP2010009380A (ja) 2010-01-14
JP5104591B2 JP5104591B2 (ja) 2012-12-19

Family

ID=41228419

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008168951A Expired - Fee Related JP5104591B2 (ja) 2008-06-27 2008-06-27 バスシステム

Country Status (4)

Country Link
US (1) US8082296B2 (ja)
EP (1) EP2139203A1 (ja)
JP (1) JP5104591B2 (ja)
CN (1) CN101616050B (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5136238B2 (ja) * 2008-06-25 2013-02-06 富士通株式会社 サービスバス連携方法及びサービスバス
US8433746B2 (en) * 2010-05-25 2013-04-30 Red Hat, Inc. Aspect oriented programming for an enterprise service bus
CN101976062B (zh) * 2010-08-12 2012-08-22 华南理工大学 基于lsoa构架的开放式控制方法
CN101986614B (zh) * 2010-08-30 2012-07-18 华南理工大学 一种面向物流应用的通用行业服务总线系统及其实现方法
CN102638567B (zh) * 2012-03-02 2015-05-20 深圳市朗科科技股份有限公司 多应用云存储平台和云存储终端
WO2013170470A1 (zh) * 2012-05-17 2013-11-21 华为技术有限公司 传输数据的方法及装置
US9940112B2 (en) * 2014-11-06 2018-04-10 Capgemini Technology Services India Limited Efficient framework for deploying middleware services
US9785480B2 (en) * 2015-02-12 2017-10-10 Netapp, Inc. Load balancing and fault tolerant service in a distributed data system
CN106790227B (zh) * 2017-01-16 2020-01-17 重庆金美通信有限责任公司 一种在ip通信网络中采用服务+代理模式构建网络管控总线的方法
CN108462731B (zh) * 2017-02-20 2021-04-09 阿里巴巴集团控股有限公司 数据代理方法、装置以及电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07160647A (ja) * 1993-12-08 1995-06-23 Oki Electric Ind Co Ltd 分散処理システム
JPH11259438A (ja) * 1998-03-12 1999-09-24 Matsushita Giken Kk エージェント間通信路確立方法およびエージェント間通信路確立システム
JP2000259537A (ja) * 1999-03-10 2000-09-22 Ntt Data Corp 接続管理システム、方法及び記録媒体
JP2002334033A (ja) * 2001-05-07 2002-11-22 Ntt Docomo Inc 情報配信方法、システム、装置、及びプログラム、並びに記録媒体
JP2005056114A (ja) * 2003-08-04 2005-03-03 Nippon Telegr & Teleph Corp <Ntt> ワークフロー処理方法とこの方法を実現するためのサーバ装置、サーバ検索装置及びクライアント装置、並びにこれらの装置で使用されるプログラム
JP2006171822A (ja) * 2004-12-13 2006-06-29 Nippon Telegr & Teleph Corp <Ntt> コンテンツ配信方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09307583A (ja) 1996-05-10 1997-11-28 Hitachi Ltd エージェント型通信方法、及び、エージェント型通信システム
FI109756B (fi) * 1998-09-21 2002-09-30 Nokia Corp Menetelmä tiedonsiirtojärjestelmässä paikallisten resurssien hyödyntämiseksi, tiedonsiirtojärjestelmä ja langaton viestin
US6195696B1 (en) 1998-10-01 2001-02-27 International Business Machines Corporation Systems, methods and computer program products for assigning, generating and delivering content to intranet users
US6735169B1 (en) * 1999-07-02 2004-05-11 Cisco Technology, Inc. Cascading multiple services on a forwarding agent
JP2002157238A (ja) * 2000-09-06 2002-05-31 Seiko Epson Corp 閲覧情報作成システム、ディジタルコンテンツ作成システム及びディジタルコンテンツ配信システム、並びにディジタルコンテンツ作成プログラム
US7139551B2 (en) * 2002-01-19 2006-11-21 Sasken Communication Technologies Ltd. System and method for automatically downloading software applications to a remote terminal
CA2519327A1 (en) 2003-03-19 2004-09-30 British Telecommunications Public Limited Company Flexible multi-agent system architecture
JP4759269B2 (ja) 2003-05-16 2011-08-31 株式会社エヌ・ティ・ティ・ドコモ 個別サービス選択
US8156217B2 (en) * 2003-11-24 2012-04-10 Hewlett-Packard Development Company, L.P. Dynamically balancing load for servers
JP4438510B2 (ja) * 2004-05-25 2010-03-24 株式会社日立製作所 通信システム及び通信制御装置
JP4626395B2 (ja) * 2004-08-30 2011-02-09 オンキヨー株式会社 センターサーバーおよびその動作方法
JP3859667B2 (ja) * 2004-10-26 2006-12-20 株式会社日立製作所 データ通信方法およびシステム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07160647A (ja) * 1993-12-08 1995-06-23 Oki Electric Ind Co Ltd 分散処理システム
JPH11259438A (ja) * 1998-03-12 1999-09-24 Matsushita Giken Kk エージェント間通信路確立方法およびエージェント間通信路確立システム
JP2000259537A (ja) * 1999-03-10 2000-09-22 Ntt Data Corp 接続管理システム、方法及び記録媒体
JP2002334033A (ja) * 2001-05-07 2002-11-22 Ntt Docomo Inc 情報配信方法、システム、装置、及びプログラム、並びに記録媒体
JP2005056114A (ja) * 2003-08-04 2005-03-03 Nippon Telegr & Teleph Corp <Ntt> ワークフロー処理方法とこの方法を実現するためのサーバ装置、サーバ検索装置及びクライアント装置、並びにこれらの装置で使用されるプログラム
JP2006171822A (ja) * 2004-12-13 2006-06-29 Nippon Telegr & Teleph Corp <Ntt> コンテンツ配信方法

Also Published As

Publication number Publication date
US8082296B2 (en) 2011-12-20
CN101616050A (zh) 2009-12-30
JP5104591B2 (ja) 2012-12-19
EP2139203A1 (en) 2009-12-30
US20090327406A1 (en) 2009-12-31
CN101616050B (zh) 2011-12-28

Similar Documents

Publication Publication Date Title
JP5104591B2 (ja) バスシステム
CN109618005B (zh) 调用服务器的方法和代理服务器
JP5270697B2 (ja) publish/subscribeメッセージ・ブローカ
EP1606917B1 (en) System and method for publish/subscribe messaging
US8447808B2 (en) Virtual presence server
RU2409846C2 (ru) Организация ресурсов в коллекции, способствующая более эффективному и надежному доступу к ресурсам
TWI420870B (zh) 管理豐富的在場收集
US20150019754A1 (en) Method and apparatus to accomplish peer-to-peer application data routing between service consumers and service providers within a service oriented architecture
US20050027882A1 (en) Systems and methods for direction of communication traffic
CN102047242A (zh) 内容管理
CA2644124A1 (en) Managing rich presence collections
CN102047243A (zh) 基于类别请求路由
US20090287805A1 (en) System &amp; method for non-http session based publish/subscribe support using pre-emptive subscriptions
CN101355492B (zh) 简单对象访问协议路由方法及路由系统以及相关设备
US7934218B2 (en) Interprocess communication management using a socket layer
Kookarinrat et al. Design and implementation of a decentralized message bus for microservices
US20120158564A1 (en) System and method for account management based on open application programming interface using restful web services
JP2006244100A (ja) プレゼンス情報配布システム
JP2011154703A (ja) トランスレーション・エージェント・サーバ
US11546405B2 (en) Methods for exposing mainframe data as a web service and devices thereof
US8307112B2 (en) Mediated information flow
US20090094314A1 (en) Reroute of a web service in a web based application
Nunn Distributed software architectures using middleware
Sahingoz et al. AGVENT: Agent Based Distributed Event System
CN117971516A (zh) 消息队列的访问方法、系统、设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110315

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120530

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120605

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120806

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

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120917

R150 Certificate of patent or registration of utility model

Ref document number: 5104591

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20151012

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees