JP2024173034A - Information processing method and server system - Google Patents
Information processing method and server system Download PDFInfo
- Publication number
- JP2024173034A JP2024173034A JP2023091149A JP2023091149A JP2024173034A JP 2024173034 A JP2024173034 A JP 2024173034A JP 2023091149 A JP2023091149 A JP 2023091149A JP 2023091149 A JP2023091149 A JP 2023091149A JP 2024173034 A JP2024173034 A JP 2024173034A
- Authority
- JP
- Japan
- Prior art keywords
- server
- information
- component
- limitation
- rpc
- 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.)
- Pending
Links
- 230000010365 information processing Effects 0.000 title claims abstract description 35
- 238000003672 processing method Methods 0.000 title claims abstract description 20
- 238000000034 method Methods 0.000 claims abstract description 281
- 238000004891 communication Methods 0.000 claims abstract description 222
- 230000008569 process Effects 0.000 claims description 131
- 230000003321 amplification Effects 0.000 claims description 26
- 238000003199 nucleic acid amplification method Methods 0.000 claims description 26
- 238000012546 transfer Methods 0.000 claims description 10
- 238000012545 processing Methods 0.000 abstract description 158
- 238000007726 management method Methods 0.000 description 38
- 230000006870 function Effects 0.000 description 30
- 230000005540 biological transmission Effects 0.000 description 27
- 238000010586 diagram Methods 0.000 description 25
- 230000000694 effects Effects 0.000 description 17
- 238000012986 modification Methods 0.000 description 10
- 230000004048 modification Effects 0.000 description 10
- 230000004044 response Effects 0.000 description 8
- 238000007796 conventional method Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 241000412611 Consul Species 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000002716 delivery method Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005401 electroluminescence Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000004366 reverse phase liquid chromatography Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
【課題】プロセス間通信を行うサーバシステムの可用性向上を実現する。【解決手段】第1サーバから少なくとも第2サーバへのプロセス間通信を行うサーバシステムの情報処理方法であって、サーバシステムは、プロセス間通信におけるプロセス間通信先を特定することに関する処理を実行する解決サーバを含み、第1サーバは、第2サーバを特定するための第1情報を解決サーバから受信し、第1情報に基づき、第2サーバにプロセス間通信の処理を要求するための第2情報を送信し、第2サーバは、第1サーバから第2情報を受信し、第2情報に基づく第1処理を実行する。【選択図】図1-1[Problem] To improve the availability of a server system that performs inter-process communication. [Solution] An information processing method for a server system that performs inter-process communication from a first server to at least a second server, the server system includes a resolution server that executes processing related to identifying an inter-process communication destination in the inter-process communication, the first server receives first information for identifying the second server from the resolution server, and transmits second information for requesting processing of the inter-process communication to the second server based on the first information, and the second server receives the second information from the first server and executes the first processing based on the second information. [Selected Figure] Figure 1-1
Description
本開示は、情報処理方法、サーバシステム等に関する。 This disclosure relates to information processing methods, server systems, etc.
クラウドコンピューティング等における分散アプリケーション処理を実現するために、複数のアプリケーション間において協調動作を行う仕組みとしてメッセージ通信が必要とされている。例えば、特許文献1には、メッセージキューを制御してメッセージ通信を実現するシステムが開示されている。
To realize distributed application processing in cloud computing and the like, message communication is required as a mechanism for cooperative operation between multiple applications. For example,
本発明の第1の態様によると、第1サーバから少なくとも第2サーバへのプロセス間通信を行うサーバシステムの情報処理方法であって、サーバシステムは、プロセス間通信におけるプロセス間通信先を特定することに関する処理を実行する解決サーバを含み、第1サーバは、第2サーバを特定するための第1情報を解決サーバから受信し、第1情報に基づき、第2サーバにプロセス間通信の処理を要求するための第2情報を送信し、第2サーバは、第1サーバから第2情報を受信し、第2情報に基づく第1処理を実行する。
本発明の第2の態様によると、第1サーバから少なくとも第2サーバへのプロセス間通信を行うサーバシステムであって、サーバシステムは、プロセス間通信におけるプロセス間通信先を特定することに関する処理を実行する解決サーバを含み、第1サーバは、第2サーバを特定するための第1情報を解決サーバから受信し、第1情報に基づき、第2サーバにプロセス間通信の処理を要求するための第2情報を送信する通信部を備え、第2サーバは、第1サーバから第2情報を受信する通信部と、第2情報に基づく第1処理を実行する制御部とを備える。
According to a first aspect of the present invention, there is provided an information processing method for a server system performing inter-process communication from a first server to at least a second server, the server system including a resolution server that performs processing related to identifying an inter-process communication destination in the inter-process communication, the first server receives first information for identifying the second server from the resolution server and transmits second information to the second server based on the first information for requesting processing of the inter-process communication, and the second server receives the second information from the first server and performs the first processing based on the second information.
According to a second aspect of the present invention, there is provided a server system that performs inter-process communication from a first server to at least a second server, the server system including a resolution server that performs processing related to identifying an inter-process communication destination in the inter-process communication, the first server having a communication unit that receives first information for identifying the second server from the resolution server and transmits second information to the second server based on the first information for requesting processing of the inter-process communication, and the second server having a communication unit that receives the second information from the first server and a control unit that performs first processing based on the second information.
<法的事項の遵守>
本明細書に記載の開示は、通信の秘密など、本開示の実施に必要な実施国の法的事項遵守を前提とすることに留意されたい。
<Compliance with legal matters>
It should be noted that the disclosures described herein are subject to compliance with the laws of the country of implementation, such as communications secrecy, as necessary for the implementation of the disclosure.
<実施形態>
本明細書では、分かり易いように「限定ではなく例として」と記載する箇所があるが、該当箇所ばかりでなく、以下説明する実施形態の全体について、その記載内容に限定されるものではないことに留意されたい。
<Embodiment>
In this specification, for ease of understanding, there are some places where the phrase "by way of example and not by way of limitation" is used, but please note that not only these places but also the entire embodiment described below are not limited to the contents of the description.
本開示に係るプログラム等を実施するための実施形態について、図面を参照して説明する。 An embodiment for implementing the program etc. related to this disclosure will be described with reference to the drawings.
本願請求項に係る発明の端末(本願発明の端末)の生産は、限定ではなく例として、ユーザが所有(所持)している端末で、本明細書に記載したプログラム(限定ではなく例として、アプリケーションプログラム)等が受信されることによって(または受信されて端末に記憶されることによって)、本端末において、本願請求項に係る発明の機能が実現可能となる状態が作り出される(本願請求項に係る発明が実行可能になる状態が作り出される)という概念を含んでもよい。 The production of a terminal of the claimed invention (terminal of the claimed invention) may include, by way of example and not limitation, the concept of a terminal owned (possessed) by a user receiving (or receiving and storing in the terminal) a program (by way of example and not limitation) described in this specification (an application program) and the like, thereby creating a state in which the functions of the claimed invention are realizable in the terminal (creating a state in which the claimed invention is executable).
また、本願請求項に係る発明のシステム(本願発明のシステム)の生産は、限定ではなく例として、本願システムに含まれるサーバから送信された本明細書に記載されたプログラム(限定ではなく例として、アプリケーションプログラム)等を、本願システムに含まれる端末で受信することによって(または受信されたプログラムが端末に記憶されることによって)、本願請求項に係るシステムの発明の機能が実現可能となる状態が作り出される(本願請求項に係る発明が実行可能になる状態が作り出される)という概念を含んでもよい。 Furthermore, the production of the system of the invention claimed in the present application (the system of the invention of the present application) may include, by way of example and not limitation, the concept of creating a state in which the functions of the invention of the system claimed in the present application can be realized (a state in which the invention claimed in the present application can be executed) by receiving, at a terminal included in the system of the present application, a program described in this specification (by way of example and not limitation, an application program) transmitted from a server included in the system of the present application (or by storing the received program in the terminal).
また、本明細書において、システムとは、限定ではなく例として、複数の装置を有して構成されるものとすることができる。
複数の装置は、同じ種類の装置の組合せとしてもよいし、異なる種類の装置の組合せとしてもよいし、同じ種類の装置と異なる種類の装置との組合せとしてもよい。
なお、システムとは、限定ではなく例として、複数の装置が協働して何らかの処理を行うもの、と考えることもできる。
In addition, in this specification, a system may be, for example and not by way of limitation, configured to include a plurality of devices.
The multiple devices may be a combination of devices of the same type, a combination of devices of different types, or a combination of devices of the same type and devices of different types.
Note that a system can be considered, for example and not by way of limitation, as a plurality of devices working together to perform some kind of processing.
また、クライアント(クライアント装置)とサーバとに関するシステムとは、限定ではなく例として、少なくとも以下のいずれかと考えることができる。
(1)端末&サーバ
(2)サーバ
(3)端末
Furthermore, a system relating to a client (client device) and a server can be considered to be, by way of example and not limitation, at least one of the following:
(1) Terminal & Server (2) Server (3) Terminal
(1)は、限定ではなく例として、少なくとも1つの端末と、少なくとも1つのサーバとを含むシステムである。この一例は、クライアントサーバシステムである。 (1) is, by way of example and not limitation, a system that includes at least one terminal and at least one server. One example of this is a client-server system.
サーバは、限定ではなく例として、以下の装置によって構成されており、単独の装置であってもよいし、複数の装置の組合せであってもよいものとする。 The server is, by way of example and not limitation, composed of the following devices, which may be a single device or a combination of multiple devices:
具体的には、サーバは、限定ではなく例として、少なくとも1つのプロセッサー(限定ではなく例として、CPU:Central Processing Unit、GPU:Graphics Processing Unit、APU:Accelerated Processing Unit、DSP:Digital Signal Processor(限定ではなく例として、ASIC:Application Specific Integrated Circuit、FPGA:Field Programmable Gate Array)等)、コンピュータ装置(プロセッサー+メモリ)、制御装置、演算装置、処理装置等のいずれかを有して構成され、いずれか1つの装置の同種を複数備える構成(限定ではなく例として、CPU+CPU、ホモジニアスマルチコアプロセッサー等)や、いずれか1つの装置の異種を複数備える構成(限定ではなく例として、CPU+DSP、ヘテロジニアスマルチコアプロセッサー等)としてもよいし、複数の装置の組み合わせ(限定ではなく例として、プロセッサー+コンピュータ装置、プロセッサー+演算装置、複数の装置をヘテロジニアス化したもの等)であってもよい。
なお、プロセッサーは、仮想プロセッサーとしてもよい。
Specifically, the server is configured to have at least one processor (for example and not limitation, a CPU: Central Processing Unit, a GPU: Graphics Processing Unit, an APU: Accelerated Processing Unit, a DSP: Digital Signal Processor (for example and not limitation, an ASIC: Application Specific Integrated Circuit, an FPGA: Field Programmable Gate Array), etc.), a computer device (processor + memory), a control device, an arithmetic device, a processing device, etc., and may be a configuration having multiple of the same type of any one device (for example and not limitation, a CPU + CPU, a homogeneous multi-core processor, etc.), or a configuration having multiple different types of any one device (for example and not limitation, a CPU + DSP, a heterogeneous multi-core processor, etc.), or may be a combination of multiple devices (for example and not limitation, a processor + computer device, a processor + arithmetic device, a heterogeneous combination of multiple devices, etc.).
The processor may be a virtual processor.
また、サーバによって何らかの処理を実行する場合に、単一の装置で構成される場合は、単一の装置によって実施例に記載されている処理が実行される。また、複数の装置を有して構成されている場合には、一部の処理を一方の装置が実行し、その他の処理を他方の装置が実行するように構成されていてもよい。限定ではなく例として、プロセッサーと、演算装置とを有して構成される場合、第1処理をプロセッサーが実行し、第2処理を演算装置が実行するように構成されていてもよい。
また、複数の装置で構成する場合には、各々の装置が互いに物理的に離れた位置に配置されて構成されてもよい。
Furthermore, when a server executes some processing, if the server is configured with a single device, the processing described in the embodiment is executed by the single device. If the server is configured with multiple devices, the server may be configured to execute some processing by one device and execute other processing by the other device. As a non-limiting example, if the server is configured with a processor and an arithmetic device, the server may be configured to execute a first processing by the processor and execute a second processing by the arithmetic device.
Furthermore, when a configuration is made up of a plurality of devices, the devices may be arranged in locations physically separated from one another.
また、サーバの機能は、限定ではなく例として、クラウドコンピューティングにおけるPaaSやIaaS、SaaSの形態で提供されるようにしてもよい。 Furthermore, the server functions may be provided in the form of PaaS, IaaS, or SaaS in cloud computing, for example and without limitation.
また、システムの制御部は、端末の制御部とサーバの制御部とのうちの少なくともいずれか一方とすることができる。つまり、限定ではなく例として、(1A)端末の制御部のみ、(1B)サーバの制御部のみ、(1C)端末の制御部とサーバの制御部との両方、のうちのいずれかを、システムの制御部とすることができる。 The control unit of the system can be at least one of the control unit of the terminal and the control unit of the server. In other words, by way of example and not limitation, the control unit of the system can be any of the following: (1A) only the control unit of the terminal, (1B) only the control unit of the server, or (1C) both the control unit of the terminal and the control unit of the server.
また、システムの制御部が行う制御や処理(以下、包括的に「制御等」と称する。)は、(1A)端末の制御部のみによって行うようにしてもよいし、(1B)サーバの制御部のみによって行うようにしてもよいし、(1C)端末の制御部とサーバの制御部との両方によって行うようにしてもよい。
また、(1C)では、限定ではなく例として、システムが制御部によって行う制御等のうちの一部の制御等を端末の制御部によって行うようにし、残りの制御等をサーバの制御部によって行うようにしてもよい。この場合、制御等の割り当て(割り振り)は、等分であってもよいし、等分ではなく異なる割合で割り当ててもよい。
In addition, the control and processing (hereinafter collectively referred to as "control, etc.") performed by the control unit of the system may be (1A) performed only by the control unit of the terminal, (1B) performed only by the control unit of the server, or (1C) performed by both the control unit of the terminal and the control unit of the server.
In addition, in (1C), as an example and not a limitation, some of the controls performed by the control unit of the system may be performed by the control unit of the terminal, and the remaining controls may be performed by the control unit of the server. In this case, the allocation (allocation) of the controls may be equal or may be allocated in different proportions.
また、サーバの通信部という場合、サーバが単一の装置によって構成されている場合には、単一の装置が備える通信部そのものであってもよい。また、サーバが複数の装置を有して構成されている場合には、サーバの通信部は、各々の装置が備える各々の通信部を含む構成であってもよい。
限定ではなく例として、サーバは、第1装置と第2装置とを備え、第1装置は第1通信部を有し、第2装置は第2通信部を有する場合、サーバの通信部は、第1通信部と第2通信部とを含む概念としてもよい。
Furthermore, when referring to a communication unit of a server, if the server is configured with a single device, it may be the communication unit itself that the single device has, or, if the server is configured with multiple devices, the communication unit of the server may be configured to include each communication unit that each device has.
As an example and not by way of limitation, if a server comprises a first device and a second device, the first device having a first communication unit and the second device having a second communication unit, the communication unit of the server may be conceptualized as including the first communication unit and the second communication unit.
(2)は、限定ではなく例として、複数のサーバによって構成されるシステム(以下、「サーバシステム」と称する。)とすることができる。この場合、各々のサーバの構成としては、前述した構成を同様に適用することができる。 (2) As an example and not a limitation, the system may be a system made up of multiple servers (hereinafter referred to as a "server system"). In this case, the configuration of each server may be the same as that described above.
サーバシステムが行う制御等は、複数のサーバのうち、(2A)一のサーバのみによって行うようにしてもよいし、(2B)他のサーバのみによって行うようにしてもよいし、(2C)一のサーバと他のサーバとが行うようにしてもよい。
また、(2C)では、限定ではなく例として、サーバシステムが行う制御等のうちの一部の制御等を一のサーバが行うようにし、残りの制御等を他のサーバが行うようにしてもよい。この場合、制御等の割り当て(割り振り)は、等分であってもよいし、等分ではなく異なる割合で割り当ててもよい。
The control etc. performed by the server system may be performed by only one of the multiple servers (2A), by only the other servers (2B), or by both the one server and the other servers (2C).
In addition, in (2C), as an example and not a limitation, one server may perform part of the control etc. performed by the server system, and another server may perform the remaining control etc. In this case, the allocation (allocation) of the control etc. may be equal or may be allocated in different proportions.
(3)は、限定ではなく例として、複数の端末によって構成されるシステムとすることができる。
このシステムは、限定ではなく例として、以下のようなシステムとすることができる。
・サーバの機能を端末に持たせるシステム(分散システム)。これは、限定ではなく例として、ブロックチェーンの技術を用いて実現することが可能である。
・端末同士が無線通信を行うシステム。これは、限定ではなく例として、ブルートゥース(登録商標)等の近距離無線通信技術を用いてP2P(ピアツーピア)方式等で通信を行うことで実現可能である。
(3) By way of example and not limitation, the system may be comprised of multiple terminals.
The system may be, by way of example and not limitation, a system such as the following:
A system that provides server functions to terminals (distributed system). This can be realized, for example and without limitation, by using blockchain technology.
A system in which terminals communicate wirelessly with each other. This can be realized, for example and without limitation, by communicating in a peer-to-peer (P2P) manner using short-range wireless communication technology such as Bluetooth (registered trademark).
なお、上記は、制御部に限らず、システムの構成要素となり得る入出力部、通信部、記憶部、時計部等の各機能部についても同様である。 The above is not limited to the control unit, but also applies to each functional unit, such as the input/output unit, communication unit, memory unit, clock unit, etc., which may be components of the system.
以下の実施形態では、限定ではなく例として、端末とサーバとを含むシステム(限定ではなく例として、クライアントサーバシステム)を例示する。
なお、サーバとして、上記(2)のサーバシステムを適用することも可能である。
In the following embodiment, a system including a terminal and a server (a client-server system) is illustrated as an example and not as a limitation.
Incidentally, the server system described above in (2) can also be applied as the server.
また、端末とサーバとを含むシステムに代えて、サーバを含まないシステム、限定ではなく例として、上記(3)のシステムを適用することも可能である。
この場合の実施形態は、前述したブロックチェーンの技術等に基づいて構成することが可能である。具体的には、限定ではなく例として、以下の実施形態で説明するサーバに記憶されて管理されるデータを、ブロックチェーン上に保管(格納)する。そして、端末が、ブロックチェーンへのトランザクションを生成し、トランザクションがブロックチェーン上で承認されると、ブロックチェーン上に保管されたデータが更新されるようにすることができる。
Also, instead of a system including a terminal and a server, a system not including a server, such as the above-mentioned system (3) as an example and not a limitation, may be applied.
In this case, the embodiment can be configured based on the above-mentioned blockchain technology. Specifically, by way of example and not limitation, data stored and managed in a server described in the following embodiment is stored on the blockchain. Then, the terminal generates a transaction to the blockchain, and when the transaction is approved on the blockchain, the data stored on the blockchain can be updated.
なお、端末と表現した場合でも、これは、クライアントサーバにおけるクライアントの装置としての端末の意味に限定されるものではない。
つまり、端末は、クライアントサーバにおけるものではない装置の概念を含むこともあり得る。
It should be noted that even when the term "terminal" is used, this is not limited to the meaning of a terminal as a client device in a client server.
That is, a terminal may include the concept of a device other than in a client-server context.
また、本明細書では、適宜「通信I/Fによって」という表現を用いる。これは、限定ではなく例として、装置が、制御部(プロセッサー等)の制御に基づいて、通信I/Fを介して(通信部を介して)、各種の情報やデータを送受信することを示してもよいものとする。 In addition, the expression "through a communication I/F" is used appropriately in this specification. This is not intended to be limiting, but may be taken as an example to indicate that a device transmits and receives various types of information and data through a communication I/F (through a communication unit) based on the control of a control unit (such as a processor).
また、本明細書において「関する」、「関連する」と記載された用語について、「Aに関するB」や「Aに関連するB」という場合、限定ではなく例として、「A」と何らかの関係性を有する「B」を意味してよいものとする。この具体例については後述する。 In addition, in this specification, when the terms "related to" and "associated" are used, such as "B related to A" or "B related to A," this may mean, by way of example and not limitation, that "B" has some kind of relationship with "A." Specific examples of this will be described later.
また、本明細書において、「AとBとを送信する」、「AとBとを受信する」といったように、装置が2以上のものを対象として処理を行うことには、「A」と「B」とをタイミングを合わせて行うもの(以下、「同時」という。)と、「A」と「B」とをタイミングをずらして行うもの(以下、「非同時」という。)とを含めてよいものとする。
限定ではなく例として、第1情報と第2情報とを送信するという場合、第1情報と第2情報とをタイミングを合わせて送信するものと、第1情報と第2情報とをタイミングをずらして送信するものとの両方の概念を含めてよいものとする。
なお、ラグ(タイムラグ)を考慮し、「同時」には「ほぼ同時」を含めてよいものとする。
In addition, in this specification, when a device performs processing on two or more objects, such as "transmitting A and B" or "receiving A and B," this may include performing "A" and "B" in a synchronized manner (hereinafter referred to as "simultaneous"), and performing "A" and "B" with a different timing (hereinafter referred to as "non-simultaneous").
As an example and not a limitation, when referring to transmitting first information and second information, this may include both concepts of transmitting the first information and the second information in a synchronized manner and transmitting the first information and the second information with a lag in timing.
In addition, taking into consideration the lag (time lag), "simultaneous" may include "almost simultaneously."
なお、「A」と「B」とをタイミングをずらして行うといっても、これはあくまでも「A」と「B」とを対象として処理を行うものであればよく、その目的は必ずしも同じでなくてもよいものとする。
限定ではなく例として、上記のように第1情報と第2情報とを送信するという場合、第1情報と第2情報とを送信しさえすればよく、同じ目的で第1情報と第2情報とを送信する場合の他、異なる目的で第1情報と第2情報とを送信する場合も含めてよいものとする。
Note that, even if "A" and "B" are performed at different times, this only needs to be the processing targeting "A" and "B," and the purpose does not necessarily have to be the same.
As an example and not a limitation, when the first information and the second information are transmitted as described above, it is sufficient to transmit the first information and the second information, and this may include cases where the first information and the second information are transmitted for the same purpose as well as cases where the first information and the second information are transmitted for different purposes.
<実施例>
以下、本発明を適用した実施例の一例について説明する。
一例であるが、あるソフトウエアコンポーネントが複数のサーバによる分散処理によって動作する場合、ソフトウエアコンポーネントがプロセス間通信(限定ではなく例として、RPC(Remote Procedure Call))を行うために、メッセージキューによって情報(メッセージ)をやり取りする場合がある。この場合、メッセージキューを管理するMQシステム(限定ではなく例として、ActiveMQやRabbitMQ(登録商標)等)に障害が発生すると、発生中のプロセス間通信を巻き込んでプロセス間通信が断絶するため、ソフトウエアコンポーネントの動作に甚大な影響を与える場合が生じる。
<Example>
An example of an embodiment to which the present invention is applied will be described below.
For example, when a software component operates by distributed processing using multiple servers, the software component may exchange information (messages) through a message queue to perform inter-process communication (for example, but not limited to, RPC (Remote Procedure Call)). In this case, if a failure occurs in an MQ system (for example, but not limited to, ActiveMQ or RabbitMQ (registered trademark)) that manages the message queue, the inter-process communication that is currently occurring will be involved and the inter-process communication will be interrupted, which may have a significant impact on the operation of the software component.
また、限定ではなく例として、クラウドコンピューティングを実現するためのソフトウエアコンポーネント群であるOpenStack(登録商標)等において、各ソフトウエアコンポーネント(限定ではなく例として、NOVAやNEUTRON等)を動作させるサーバ群(クラスタ)を構成するサーバ数は、クラウドコンピューティングにおいて提供されるサービスが複雑化するにつれて莫大な数となる。
限定ではなく例として、クラスタを構成するサーバ数(限定ではなく例として、物理サーバ群で制御される仮想サーバの総数)が40,000を超える場合、MQシステムの動作負荷が上がり、プロセス間通信に遅延等が発生するため、ソフトウエアコンポーネントの安定動作が困難となる場合が生じる。
Also, as a non-limiting example, in OpenStack (registered trademark), which is a group of software components for realizing cloud computing, the number of servers constituting a server group (cluster) that runs each software component (as a non-limiting example, NOVA, NEUTRON, etc.) becomes enormous as the services provided in cloud computing become more complex.
As a non-limiting example, if the number of servers constituting a cluster (as a non-limiting example, the total number of virtual servers controlled by the group of physical servers) exceeds 40,000, the operating load of the MQ system increases, causing delays in inter-process communication, etc., which may make it difficult to ensure stable operation of software components.
以下説明する実施例では、クラスタを構成するサーバ間においてプロセス間通信を行う場合、MQシステムを介さずに直接メッセージの送受信を可能とすることで、単一障害点(SPOF:Single Point of Failure)をなくし、高可用性を実現することを可能とする。また、クラスタを構成するサーバ数が莫大な数となる場合においても、プロセス間通信をサーバ間において直接行うことで、クラスタで動作するソフトウエアコンポーネントの動作の高速化と、クラスタ全体の負荷低減を実現する。 In the embodiment described below, when inter-process communication is performed between servers constituting a cluster, messages can be sent and received directly without going through an MQ system, eliminating single points of failure (SPOF) and achieving high availability. Even when the number of servers constituting a cluster is enormous, inter-process communication can be performed directly between the servers, thereby speeding up the operation of software components running in the cluster and reducing the load on the entire cluster.
以下では、限定ではなく例として、ソフトウエアコンポーネントを動作させるクラスタに属する(クラスタを構成する)サーバのうち、ソフトウエアコンポーネントの処理に直接的に関わるサーバを「コンポーネントサーバ」と称する。コンポーネントサーバは、仮想サーバ(仮想マシン)としてもよいし、物理サーバ(物理マシン)としてもよい。 In the following, as an example and not a limitation, among the servers that belong to (constitute) a cluster that runs a software component, a server that is directly involved in processing the software component is referred to as a "component server." A component server may be a virtual server (virtual machine) or a physical server (physical machine).
また、以下では、限定ではなく例として、プロセス間通信はRPCに従って実行されることとする。なお、プロセス間通信は、限定ではなく例として、RMI(Remote Method Invocation)に従って実行されるようにしてもよい。また、プロセス間通信は、同一プログラムを利用した複数のプロセス間の通信に限定されない。 In the following, it is assumed, by way of example and not limitation, that inter-process communication is performed according to RPC. Note that, by way of example and not limitation, inter-process communication may be performed according to RMI (Remote Method Invocation). In addition, inter-process communication is not limited to communication between multiple processes using the same program.
また、以下では、限定ではなく例として、ソフトウエアコンポーネントは、各種のソフトウェアモジュールを内包することとする。そして、限定ではなく例として、ソフトウエアコンポーネントにおけるプロセス間通信を実現するためのソフトウェアモジュールを「メッセージングモジュール」と称する。 Furthermore, in the following, by way of example and not limitation, a software component will be taken to include various software modules. And, by way of example and not limitation, a software module for realizing inter-process communication in a software component will be referred to as a "messaging module."
限定ではなく例として、ソフトウエアコンポーネントがOpenStackのコンポーネントである場合、メッセージングモジュールは、限定ではなく例として、OpenStackの共用ライブラリ「Oslo」の「oslo.messaging」モジュールによって実現(実装)されるようにしてもよい。 By way of example and not limitation, if the software component is an OpenStack component, the messaging module may be implemented by, by way of example and not limitation, the "oslo.messaging" module of the OpenStack shared library "Oslo".
また、以下では、限定ではなく例として、メッセージングモジュールは、ソフトウエアコンポーネントからのプロセス間通信を種々のメッセージ伝達方法で送受信するためのメッセージングドライバを内包することとする。限定ではなく例として、本発明において提供されるメッセージングドライバを「httpメッセージングドライバ」と称する。
ソフトウエアコンポーネントは、メッセージングモジュールがメッセージングドライバを介してプロセス間通信を実現することで、メッセージングドライバのメッセージ伝達方法(使用するトランスポート層と言ってもよい。)に依存せずにメッセージングモジュールへの呼び出しと応答とを実現することができる。
Also, hereinafter, by way of example and not by way of limitation, the messaging module includes a messaging driver for sending and receiving inter-process communications from software components using various message delivery methods. By way of example and not by way of limitation, the messaging driver provided in the present invention will be referred to as an "http messaging driver."
By having the messaging module realize inter-process communication via the messaging driver, software components can make calls to and respond to the messaging module without depending on the messaging driver's message transmission method (which may also be called the transport layer used).
限定ではなく例として、「oslo.messaging」モジュールにおいて、MQシステムを用いる「AMQP(Advanced Message Queuing Protocol)ドライバ」から「httpメッセージングドライバ」にメッセージングドライバを変更することで、ソフトウエアコンポーネントの修正を行わずにメッセージ伝達方法を変更することができる。 By way of example and not limitation, in the "oslo.messaging" module, by changing the messaging driver from an "Advanced Message Queuing Protocol (AMQP) driver" that uses an MQ system to an "http messaging driver," the method of message delivery can be changed without modifying the software components.
なお、「httpメッセージングドライバ」は、本発明による情報処理手法を適用したプログラム(ソフトウェアドライバ)全般を指し、「oslo.messaging」モジュールにおけるメッセージングドライバに限定されない。 Note that the "http messaging driver" refers to any program (software driver) that applies the information processing method of the present invention, and is not limited to the messaging driver in the "oslo.messaging" module.
メッセージングモジュールは、限定ではなく例として、プロセス間通信を行うためのトランスポート層(限定ではなく例として、メッセージキューイングサービスやhttp送受信サービス)と、ソフトウエアコンポーネントとの間に位置するミドルウェアと言ってもよい。
メッセージングドライバは、ミドルウェアとトランスポート層とを橋渡しするソフトウエアドライバプログラムと言ってもよい。
The messaging module may be referred to as, for example and not limitation, middleware located between a transport layer for inter-process communication (for example and not limitation, a message queuing service or an HTTP sending and receiving service) and a software component.
A messaging driver may be said to be a software driver program that bridges the middleware and the transport layer.
また、以下では、限定ではなく例として、プロセス間通信の送信元となるコンポーネントサーバを「インヴォーカ(Invoker)」、プロセス間通信の送信先となるコンポーネントサーバを「ワーカ(Worker)」とそれぞれ称する。
インヴォーカは、関数の呼び出し元や呼び出し側と言ってもよい。また、ワーカは関数の呼び出し先や手続き側と言ってもよい。
In the following, by way of example and not limitation, a component server that is the source of inter-process communication will be referred to as an "invoker," and a component server that is the destination of inter-process communication will be referred to as a "worker."
An invoker may be referred to as the caller or invoker of a function, and a worker may be referred to as the callee or procedure of a function.
なお、限定ではなく例として、クライアントサーバモデルに当てはめて、インヴォーカを「クライアント」、ワーカを「サーバ」と言ってもよい。 As an example and not a limitation, we can refer to the invoker as the "client" and the worker as the "server" in a client-server model.
<第1実施例>
第1実施例は、限定ではなく例として、インヴォーカが、プロセス間通信の送信先を解決するための呼び出し先解決サーバを用いて適切なワーカを探索する。そして、インヴォーカとワーカとが、限定ではなく例として、http(Hypertext Transfer Protocol)によって通信することで、プロセス間通信を実現する実施例である。
First Example
In the first embodiment, as an example and not as a limitation, an invoker searches for an appropriate worker using a call destination resolution server for resolving the destination of inter-process communication, and the invoker and the worker communicate with each other by means of http (Hypertext Transfer Protocol), as an example and not as a limitation, to realize inter-process communication.
第1実施例に記載の内容は、他の各実施例や他の各変形例のいずれにも適用可能である。
また、既出の構成要素と同一の構成要素については同一の符号を付して、再度の説明を省略する。
The contents described in the first embodiment are applicable to any of the other embodiments and other modified examples.
Furthermore, the same components as those already mentioned are given the same reference numerals and will not be described again.
<システム構成>
図1-1は、本開示の実施形態における通信システム1のシステム構成の一例を示す図である。
通信システム1では、限定ではなく例として、ネットワーク30を介して、呼び出し先解決サーバ10と、一斉呼び出しサーバ40と、複数のコンポーネントサーバ20(コンポーネントサーバ20A,コンポーネントサーバ20B,コンポーネントサーバ20C,・・・)とが接続される。
<System Configuration>
FIG. 1A is a diagram illustrating an example of a system configuration of a
In the
コンポーネントサーバ20は、ネットワーク30を介して、限定ではなく例として、ソフトウエアコンポーネントを利用するユーザが所有する不図示の端末および/または他のソフトウエアコンポーネントを実現する不図示のサーバに、所定のサービス(限定ではなく例として、ユーザ認証サービス、仮想ネットワークサービス等)を提供する機能を有する。
以下では、コンポーネントサーバ20を、単に「サーバ20(サーバ20A,サーバ20B,サーバ20C,・・・)」と呼ぶことがある。なお、各コンポーネントサーバ20A,コンポーネントサーバ20B,コンポーネントサーバ20C,・・・は、仮想サーバとしてもよいし、物理サーバとしてもよい。
The component server 20 has the function of providing predetermined services (for example, but not limited to, a user authentication service, a virtual network service, etc.) via the
Hereinafter, the component servers 20 may be simply referred to as "servers 20 (
呼び出し先解決サーバ10は、ネットワーク30を介して、コンポーネントサーバ20に、所定のサービス(限定ではなく例として、プロセス間通信呼び出し先解決サービス等)を提供する機能を有する。呼び出し先解決サーバ10は、限定ではなく例として、クラスタ(コンポーネントサーバクラスタ)管理サーバ等のように表現することもできる。
以下では、呼び出し先解決サーバ10を、単に「サーバ10」と呼ぶことがある。
The
Hereinafter, the call
なお、呼び出し先解決サーバ10は、限定ではなく例として、単一の物理サーバまたは仮想サーバとしてもよいし、複数の物理サーバおよび/または仮想サーバで構成されるクラスタ(サーバシステム)としてもよい。
The call
一斉呼び出しサーバ40は、ネットワーク30を介して、コンポーネントサーバ20に、所定のサービス(限定ではなく例として、プロセス間通信一斉呼び出しサービス等)を提供する機能を有する。一斉呼び出しサーバ40は、限定ではなく例として、ブロードキャストサーバやブロードキャスタ等のように表現することもできる。
以下では、一斉呼び出しサーバ40を、単に「サーバ40」と呼ぶことがある。
The
Hereinafter, the
なお、一斉呼び出しサーバ40は、限定ではなく例として、単一の物理サーバまたは仮想サーバとしてもよいし、複数の物理サーバおよび/または仮想サーバで構成されるクラスタ(サーバシステム)としてもよい。
Note that the
本実施形態では、限定ではなく例として、コンポーネントサーバ20と、呼び出し先解決サーバ10と、一斉呼び出しサーバ40とで構成されるサーバシステムの事業者(運営者)を、それぞれコンポーネントサーバ20のユーザ、呼び出し先解決サーバ10のユーザ、一斉呼び出しサーバ40のユーザと言ってもよい。また、限定ではなく例として、コンポーネントサーバ20と呼び出し先解決サーバ10と一斉呼び出しサーバ40とで構成されるサーバシステムの利用者を、不図示の端末のユーザ、または他のソフトウエアコンポーネントのユーザと言ってもよい。
In this embodiment, by way of example and not limitation, the operator of the server system consisting of the component server 20, the call
コンポーネントサーバ20(コンポーネントサーバ20A,コンポーネントサーバ20B,コンポーネントサーバ20C、・・・)(限定ではなく、サーバ、情報処理装置、情報管理装置、サーバシステム、クラスタの一例)は、各実施例において記載する機能を実現できる情報処理装置であればどのような端末であってもよい。
コンポーネントサーバ20は、限定ではなく例として、サーバ装置、コンピュータ(限定ではなく例として、デスクトップ、ラップトップ、タブレットなど)、メディアコンピュータプラットホーム(限定ではなく例として、ケーブル、衛星セットトップボックス、デジタルビデオレコーダ)、ハンドヘルドコンピュータデバイス(限定ではなく例として、PDA、電子メールクライアントなど)、あるいは他種のコンピュータ、ハイパーバイザ、またはコミュニケーションプラットホームを含む。
コンポーネントサーバ20および/または呼び出し先解決サーバ10および/または一斉呼び出しサーバ40を区別する必要がない場合は、コンポーネントサーバ20および/または呼び出し先解決サーバ10および/または一斉呼び出しサーバ40は、それぞれ情報処理装置と表現されてもよいし、されなくてもよい。
The component server 20 (
Component server 20 may include, by way of example and not limitation, a server appliance, a computer (by way of example and not limitation, a desktop, laptop, tablet, etc.), a media computing platform (by way of example and not limitation, a cable, satellite set-top box, digital video recorder, etc.), a handheld computing device (by way of example and not limitation, a PDA, email client, etc.), or any other type of computer, hypervisor, or communications platform.
If there is no need to distinguish between the component server 20 and/or the call
コンポーネントサーバ20A、コンポーネントサーバ20Bおよびコンポーネントサーバ20Cの構成は、限定ではなく例として、同一とするようにしてもよい。
また、必要に応じて、コンポーネントサーバ20Xに対応づけられた、所定のサービス(プロセス)におけるサーバ情報をサーバ情報Xと表現してもよいし、しなくてもよい。
なお、サーバ情報とは、所定のサービス(プロセス)においてサーバに対応付けられたサーバの情報である。サーバ情報は、限定でなく例として、ユーザにより入力される、または、所定のサービスにより付与される、サーバの名前、サーバのIPアドレス、サーバのMACアドレス、サーバの処理能力(限定ではなく例として、MIPSやFLOPS)、サーバの構成情報(限定ではなく例として、プロセッサーコア数および/またはRAM容量等)、サーバの識別子などのサーバに対応づけられた情報を含み、これらのいずれか一つまたは、組み合わせであってもよいし、そうでなくてもよい。
The
Furthermore, server information in a specific service (process) associated with the component server 20X may or may not be expressed as server information X, as necessary.
The server information is information associated with a server in a specific service (process). The server information includes, for example and without limitation, information associated with a server, such as the name of the server, the IP address of the server, the MAC address of the server, the processing capacity of the server (for example and without limitation, MIPS or FLOPS), configuration information of the server (for example and without limitation, the number of processor cores and/or RAM capacity, etc.), and a server identifier, which are input by a user or assigned by a specific service, and may be any one of these, or a combination of these, or may not be the same.
ネットワーク30は、1以上のコンポーネントサーバ20と、1以上の呼び出し先解決サーバ10と、1以上の一斉呼び出しサーバ40とを接続する役割を担う。すなわち、ネットワーク30は、上記の各種の装置が接続した後、データを送受信することができるように接続経路を提供する通信網を意味する。
The
なお、ネットワーク30に接続される呼び出し先解決サーバ10の数や一斉呼び出しサーバ40の数、コンポーネントサーバ20の数は限定されない。
The number of call
ネットワーク30のうちの1つまたは複数の部分は、有線ネットワークや無線ネットワークであってもよいし、そうでなくてもよい。ネットワーク30は、限定ではなく例として、アドホック・ネットワーク(ad hoc network)、イントラネット、エクストラネット、仮想プライベート・ネットワーク(virtual private network:VPN)、ローカル・エリア・ネットワーク(local area network:LAN)、ワイヤレスLAN(wireless LAN:WLAN)、広域ネットワーク(wide area network:WAN)、ワイヤレスWAN(wireless WAN:WWAN)、大都市圏ネットワーク(metropolitan area network:MAN)、インターネットの一部、公衆交換電話網(Public Switched Telephone Network:PSTN)の一部、携帯電話網、ISDN(integrated service digital networks)、無線LAN、LTE(long term evolution)、CDMA(code division multiple access)、ブルートゥース(Bluetooth(登録商標))、衛星通信など、または、これらの2つ以上の組合せを含むことができる。ネットワーク30は、1つまたは複数のネットワーク30を含むことができる。
One or more portions of
呼び出し先解決サーバ10(限定ではなく、サーバ、情報処理装置、情報管理装置、サーバシステム、クラスタの一例)は、コンポーネントサーバ20に対して、所定のサービスを提供する機能を備える。呼び出し先解決サーバ10は、各実施形態において記載する機能を実現できる情報処理装置であればどのような装置であってもよい。呼び出し先解決サーバ10は、限定ではなく例として、サーバ装置、コンピュータ(限定ではなく例として、デスクトップ、ラップトップ、タブレットなど)、メディアコンピュータプラットホーム(限定ではなく例として、ケーブル、衛星セットトップボックス、デジタルビデオレコーダ)、ハンドヘルドコンピュータデバイス(限定ではなく例として、PDA、電子メールクライアントなど)、あるいは他種のコンピュータ、ハイパーバイザ、またはコミュニケーションプラットホームを含む。
The callee resolution server 10 (which is an example, but not limited to, of a server, information processing device, information management device, server system, or cluster) has a function of providing a specific service to the component server 20. The
限定ではなく例として、呼び出し先解決サーバ10とコンポーネントサーバ20とを区別する必要がない場合は、呼び出し先解決サーバ10とコンポーネントサーバ20とは、それぞれ情報処理装置と表現されてもよいし、されなくてもよい。
By way of example and not limitation, if there is no need to distinguish between the called
一斉呼び出しサーバ40(限定ではなく、サーバ、情報処理装置、情報管理装置、サーバシステム、クラスタの一例)は、コンポーネントサーバ20に対して、所定のサービスを提供する機能を備える。一斉呼び出しサーバ40は、各実施形態において記載する機能を実現できる情報処理装置であればどのような装置であってもよい。一斉呼び出しサーバ40は、限定ではなく例として、サーバ装置、コンピュータ(限定ではなく例として、デスクトップ、ラップトップ、タブレットなど)、メディアコンピュータプラットホーム(限定ではなく例として、ケーブル、衛星セットトップボックス、デジタルビデオレコーダ)、ハンドヘルドコンピュータデバイス(限定ではなく例として、PDA、電子メールクライアントなど)、あるいは他種のコンピュータ、ハイパーバイザ、またはコミュニケーションプラットホームを含む。
The mass call server 40 (which is an example, but not limited to, of a server, information processing device, information management device, server system, or cluster) has a function of providing a predetermined service to the component server 20. The
限定ではなく例として、呼び出し先解決サーバ10と一斉呼び出しサーバ40とを区別する必要がない場合は、呼び出し先解決サーバ10と一斉呼び出しサーバ40とは、それぞれ情報処理装置と表現されてもよいし、されなくてもよい。
また、限定ではなく例として、一斉呼び出しサーバ40とコンポーネントサーバ20とを区別する必要がない場合は、一斉呼び出しサーバ40とコンポーネントサーバ20とは、それぞれ情報処理装置と表現されてもよいし、されなくてもよい。
As an example and not as a limitation, if there is no need to distinguish between the call
Also, by way of example and not limitation, if there is no need to distinguish between the
[各装置のハードウェア(HW)構成]
通信システム1に含まれる各装置のHW構成について説明する。
[Hardware (HW) configuration of each device]
The HW configuration of each device included in the
(1)サーバのHW構成
図1-1には、呼び出し先解決サーバ10とコンポーネントサーバ20と一斉呼び出しサーバ40とのHW構成の一例を示している。
呼び出し先解決サーバ10は、制御部11(CPU)、記憶部15、通信I/F14(インタフェース)、入出力部12、時計部19を備える。呼び出し先解決サーバ10のHWの各構成要素は、限定ではなく例として、バスBを介して相互に接続される。なお、呼び出し先解決サーバ10のHWは、呼び出し先解決サーバ10のHWの構成として、全ての構成要素を含むことは必須ではない。限定ではなく例として、呼び出し先解決サーバ10のHWは、個々の構成要素、または複数の構成要素を取り外すような構成であってもよいし、そうでなくてもよい。
(1) HW Configuration of Servers FIG. 1A shows an example of the HW configuration of a call
The call
制御部11は、プログラム内に含まれたコードまたは命令によって実現する機能を実行するために物理的に構造化された回路を有し、限定ではなく例として、ハードウェアに内蔵されたデータ処理装置により実現される。
The
制御部11は、代表的には中央処理装置(CPU)、であり、その他にマイクロプロセッサー、プロセッサーコア、マルチプロセッサー、ASIC、FPGAであってもよいし、そうでなくてもよい。本開示において、制御部11は、これらに限定されない。
The
記憶部15は、呼び出し先解決サーバ10が動作するうえで必要とする各種プログラムや各種データを記憶する機能を有する。記憶部15は、HDD、SSD、フラッシュメモリなど各種の記憶媒体により実現される。ただし、本開示において、記憶部15は、これらに限定されない。また、記憶部15は、メモリ(memory)と表現されてもよいし、されなくてもよい。
The
通信I/F14は、ネットワーク30を介して各種データの送受信を行う。通信は、有線、無線のいずれで実行されてもよく、互いの通信が実行できるのであれば、どのような通信プロトコルを用いてもよい。通信I/F14は、ネットワーク30を介してコンポーネントサーバ20等の各種装置との通信を実行する機能を有する。通信I/F14は、各種データを制御部11からの指示に従って、コンポーネントサーバ20等の各種装置に送信する。また、通信I/F14は、コンポーネントサーバ20等の各種装置から送信された各種データを受信し、制御部11に伝達する。また、通信I/F14を単に通信部と表現する場合もある。また、通信I/F14が物理的に構造化された回路で構成される場合には、通信回路と表現する場合もある。
The communication I/
入出力部12は、呼び出し先解決サーバ10に対する各種操作を入力する装置や、呼び出し先解決サーバ10で処理された処理結果を出力する装置等を含む。入出力部12は、入力部と出力部が一体化していてもよいし、入力部と出力部に分離していてもよいし、そうでなくてもよい。
The input/
入力部は、ユーザからの入力を受け付けて、入力に係る情報を制御部11に伝達できる全ての種類の装置のいずれかまたはその組み合わせにより実現される。入力部は、代表的にはキーボード等に代表されるハードウェアキーや、マウス等のポインティングデバイスで実現される。なお、入力部は、限定ではなく例として、タッチパネルやカメラ(動画像を介した操作入力)、マイク(音声による操作入力)を含んでいてもよいし、そうでなくてもよい。
The input unit is realized by any one or combination of all types of devices that can accept input from a user and transmit information related to the input to the
出力部は、制御部11で処理された処理結果を出力することができる全ての種類の装置のいずれかまたはその組み合わせにより実現される。出力部は、限定ではなく例として、 タッチパネル、タッチディスプレイ、スピーカ(音出力)、レンズ(限定ではなく例として3D(three dimensions)出力や、ホログラム出力)、プリンターなどを含む。
The output unit is realized by any one or a combination of any type of device capable of outputting the results of processing by the
あくまでも一例であるが、入出力部12は、限定ではなく例として、表示部13を備える。
By way of example only, the input/
表示部13は、ディスプレイ等で実現される。ディスプレイは、代表的にはモニタ(限定ではなく例として、液晶ディスプレイやOELD(organic electroluminescence display)で実現される。なお、ディスプレイは、ヘッドマウントディスプレイ(HDM)などであってもよいし、そうでなくてもよい。なお、これらのディスプレイは、3Dで表示データを表示可能であってもよいし、そうでなくてもよい。本開示において、ディスプレイは、これらに限定されない。
The
時計部19は、呼び出し先解決サーバ10の内蔵時計であり、時刻情報(計時情報)を出力する。時計部19は、限定ではなく例として、ハードウェアクロックとしてのRTC(Real Time Clock)やシステムクロック等を有して構成される。時計部19は、限定ではなく例として、計時部や時刻情報検出部と表現することもできる。
The
限定ではなく例として、コンポーネントサーバ20と、一斉呼び出しサーバ40とについても呼び出し先解決サーバ10と同様に構成することができる。
By way of example and not limitation, the component server 20 and the
(2)その他
呼び出し先解決サーバ10は、プログラムPを記憶部15に記憶し、このプログラムPを実行することで、制御部11が、制御部11に含まれる各部としての処理を実行する。つまり、記憶部15に記憶されるプログラムPは、呼び出し先解決サーバ10に、制御部11が実行する各機能を実現させる。このプログラムPは、プログラムモジュールと表現されてもよいし、されなくてもよい。
他の装置についても同様である。
(2) Others The call
The same applies to other devices.
本開示の各実施形態においては、コンポーネントサーバ20および/または呼び出し先解決サーバ10および/または一斉呼び出しサーバ40のCPUがプログラムPを実行することにより、実現するものとして説明する。
In each embodiment of the present disclosure, the CPU of the component server 20 and/or the call
なお、コンポーネントサーバ20の制御部21、および/または、呼び出し先解決サーバ10の制御部11、および/または、一斉呼び出しサーバ40の制御部41は、制御回路を有するCPUだけでなく、集積回路(IC(Integrated Circuit)チップ、LSI(Large Scale Integration))等に形成された論理回路(ハードウェア)や専用回路によって各処理を実現してもよいし、そうでなくてもよい。また、これらの回路は、1または複数の集積回路により実現されてよく、各実施形態に示す複数の処理を1つの集積回路により実現されることとしてもよいし、そうでなくてもよい。また、LSIは、集積度の違いにより、VLSI、スーパーLSI、ウルトラLSIなどと呼称されることもある。そのため、限定ではなく例として、制御部21は、制御回路と表現されてもよいし、されなくてもよい。
他の装置についても同様である。
In addition, the
The same applies to other devices.
また、本開示の各実施形態のプログラムP(限定ではなく例として、ソフトウェアプログラム、コンピュータプログラム、またはプログラムモジュール)は、コンピュータに読み取り可能な記憶媒体に記憶された状態で提供されてもよいし、されなくてもよい。記憶媒体は、「一時的でない有形の媒体」に、プログラムPを記憶可能である。また、プログラムPは、本開示の各実施形態の機能の一部を実現するためのものであってもよいし、そうでなくてもよい。さらに、本開示の各実施形態の機能を記憶媒体にすでに記録されているプログラムPとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよいし、そうでなくてもよい。 In addition, the program P (which may be, for example and not by way of limitation, a software program, computer program, or program module) of each embodiment of the present disclosure may or may not be provided in a state stored in a computer-readable storage medium. The storage medium is capable of storing the program P in a "non-transitory tangible medium." The program P may or may not be for realizing part of the functions of each embodiment of the present disclosure. Furthermore, the program P may or may not be a so-called difference file (difference program) that can realize the functions of each embodiment of the present disclosure in combination with a program P already recorded in a storage medium.
また、システムのプログラム(システムによって実行されるプログラム)という場合、システムについては前述した通りである。そして、前述したシステムのプログラムとは、システム全体で実行可能なプログラムであって、このプログラムは、限定ではなく例として、システムを構成する装置個々のプログラムで構成されてもよく、システムを構成する個々の装置に保存されるプログラムは、各々異なっていてもよいものとする。つまり、システムを構成する個々の装置で共通のプログラムでなくてもよいものとする。
限定ではなく例として、システムが複数のサーバ(サーバシステムやクラスタ)で構成されている場合、システムのプログラムをP1とすると、システムのプログラムP1は、呼び出し先解決サーバ10に保存されたプログラムP2と、コンポーネントサーバ20に保存されたプログラムP3とで構成され、P2とP3とは、システムのプログラムを実行するためのものであり、それぞれ異なるプログラムとなっていてもよい。限定ではなく例として、呼び出し先解決サーバ10に保存されたプログラムP2は、第1の処理を実行し、第1の処理をした結果をサーバに送信するプログラムであり、コンポーネントサーバ20に保存されたプログラムP3は、受信した第1の処理をした結果に対して第2の処理を行い、第2の処理を行った結果を呼び出し先解決サーバ10に送信するプログラムであってもよい。
他の装置についても同様である。
Furthermore, when referring to a system program (a program executed by the system), the system is as described above. The above-mentioned system program is a program that can be executed by the entire system, and this program may be composed of individual programs of the devices that make up the system, for example and without limitation, and the programs stored in each device that makes up the system may be different from each other. In other words, it is not necessary for the programs to be common to the individual devices that make up the system.
As an example and not a limitation, when a system is composed of multiple servers (server system or cluster), the system program P1 is composed of a program P2 stored in the call
The same applies to other devices.
記憶媒体は、1つまたは複数の半導体ベースの、または他の集積回路(IC)(限定ではなく例として、フィールド・プログラマブル・ゲート・アレイ(FPGA)または特定用途向けIC(ASIC)など)、ハード・ディスク・ドライブ(HDD)、ハイブリッド・ハード・ドライブ(HHD)、光ディスク、光ディスクドライブ(ODD)、光磁気ディスク、光磁気ドライブ、フロッピィ・ディスケット、フロッピィ・ディスク・ドライブ(FDD)、磁気テープ、固体ドライブ(SSD)、RAMドライブ、セキュア・デジタル・カード、またはドライブ、任意の他の適切な記憶媒体、またはこれらの2つ以上の適切な組合せを含むことができる。記憶媒体は、適切な場合、揮発性、不揮発性、または揮発性と不揮発性の組合せでよい。なお、記憶媒体はこれらの例に限られず、プログラムPを記憶可能であれば、どのようなデバイスまたは媒体であってもよい。また、記憶媒体をメモリ(memory)と表現されてもよいし、されなくてもよい。 The storage medium may include one or more semiconductor-based or other integrated circuits (ICs) (such as, by way of example and not limitation, a field programmable gate array (FPGA) or an application specific IC (ASIC)), a hard disk drive (HDD), a hybrid hard drive (HHD), an optical disk, an optical disk drive (ODD), a magneto-optical disk, a magneto-optical drive, a floppy diskette, a floppy disk drive (FDD), a magnetic tape, a solid-state drive (SSD), a RAM drive, a secure digital card, or a drive, any other suitable storage medium, or a suitable combination of two or more thereof. The storage medium may be volatile, non-volatile, or a combination of volatile and non-volatile, as appropriate. It should be noted that the storage medium is not limited to these examples and may be any device or medium capable of storing the program P. Also, the storage medium may or may not be referred to as a memory.
呼び出し先解決サーバ10および/または一斉呼び出しサーバ40および/またはコンポーネントサーバ20は、限定ではなく例として、記憶媒体に記憶されたプログラムPを読み出し、読み出したプログラムPを実行することによって、各実施形態に示す複数の機能部の機能を実現することができる。
By way of example and not limitation, the call
また、本開示のプログラムPは、プログラムを伝送可能な任意の伝送媒体(通信ネットワークや放送波等)を介して、呼び出し先解決サーバ10および/または一斉呼び出しサーバ40および/またはコンポーネントサーバ20に提供されてもよいし、されなくてもよい。呼び出し先解決サーバ10および/または一斉呼び出しサーバ40および/またはコンポーネントサーバ20は、限定ではなく例として、インターネット等を介してダウンロードしたプログラムPを実行することにより、各実施形態に示す複数の機能部の機能を実現する。
In addition, the program P of the present disclosure may or may not be provided to the call
また、本開示の各実施形態は、プログラムPが電子的な伝送によって具現化されたデータ信号の形態でも実現され得る。
呼び出し先解決サーバ10および/または一斉呼び出しサーバ40および/またはコンポーネントサーバ20における処理の少なくとも一部は、1以上のコンピュータにより構成されるクラウドコンピューティングにより実現されていてもよいし、そうでなくてもよい。
コンポーネントサーバ20における処理の少なくとも一部、または全部を、呼び出し先解決サーバ10および/または一斉呼び出しサーバ40により行う構成としてもよいし、そうでなくてもよい。この場合、コンポーネントサーバ20の制御部21の各機能部の処理のうち少なくとも一部の処理、または全部の処理を、呼び出し先解決サーバ10および/または一斉呼び出しサーバ40で行う構成としてもよいし、そうでなくてもよい。
呼び出し先解決サーバ10および/または一斉呼び出しサーバ40における処理の少なくとも一部、または全部を、コンポーネントサーバ20により行う構成としてもよいし、そうでなくてもよい。この場合、呼び出し先解決サーバ10の制御部11および/または一斉呼び出しサーバ40の制御部41の各機能部の処理のうち少なくとも一部の処理、または全部の処理を、コンポーネントサーバ20で行う構成としてもよいし、そうでなくてもよい。
In addition, each embodiment of the present disclosure may be realized in the form of a data signal in which the program P is embodied by electronic transmission.
At least a part of the processing in the call
At least a part or all of the processing in the component server 20 may or may not be performed by the call
At least a part or all of the processing in the call
呼び出し先解決サーバ10における処理の少なくとも一部、または全部を、一斉呼び出しサーバ40により行う構成としてもよいし、そうでなくてもよい。この場合、呼び出し先解決サーバ10の制御部11の各機能部の処理のうち少なくとも一部の処理、または全部の処理を、一斉呼び出しサーバ40で行う構成としてもよいし、そうでなくてもよい。
一斉呼び出しサーバ40における処理の少なくとも一部、または全部を、呼び出し先解決サーバ10により行う構成としてもよいし、そうでなくてもよい。この場合、一斉呼び出しサーバ40の制御部41の各機能部の処理のうち少なくとも一部の処理、または全部の処理を、呼び出し先解決サーバ10で行う構成としてもよいし、そうでなくてもよい。
At least a part or all of the processing in the call
At least a part or all of the processing in the
明示的な言及のない限り、本開示の実施形態における判定の構成は必須でなく、判定条件を満たした場合に所定の処理が動作されたり、判定条件を満たさない場合に所定の処理がされたりしてもよいし、そうでなくてもよい。 Unless explicitly stated, the judgment configuration in the embodiments of the present disclosure is not essential, and a specified process may or may not be executed when the judgment condition is satisfied, or when the judgment condition is not satisfied.
なお、本開示のプログラムは、限定ではなく例として、ActionScript、JavaScript(登録商標)などのスクリプト言語、Go、Objective-C、Java(登録商標)などのコンパイラ言語、HTML Living Standardなどのマークアップ言語などを用いて実装される。 The programs disclosed herein may be implemented using, by way of example and not limitation, scripting languages such as ActionScript and JavaScript (registered trademark), compiler languages such as Go, Objective-C and Java (registered trademark), and markup languages such as HTML Living Standard.
<機能構成>
(1)コンポーネントサーバ20の機能構成
図1-2は、本実施例においてコンポーネントサーバ20の制御部21によって実現される機能の一例を示す図である。
制御部21は、限定ではなく例として、記憶部25に記憶されたコンポーネント処理プログラム251に従ってコンポーネントプログラム処理を実行するためのコンポーネントプログラム処理部211を機能部として含む。
また、制御部21は、限定ではなく例として、記憶部25に記憶されたhttpデーモンプログラム253に従ってhttpによる情報の送受信を行うためのhttpデーモン処理を実行するためのhttpデーモン処理部213を機能部として含む。
<Functional configuration>
(1) Functional Configuration of the Component Server 20 FIG. 1B is a diagram showing an example of functions realized by the
The
The
図1-3は、本実施例においてコンポーネントサーバ20の記憶部25に記憶される情報の一例を示す図である。
記憶部25には、限定ではなく例として、制御部21によってコンポーネントプログラム処理として実行されるコンポーネント処理プログラム251と、制御部21によってhttpデーモン処理として実行されるhttpデーモンプログラム253と、サーバID255とが記憶される。
FIG. 1C is a diagram showing an example of information stored in the
The
限定ではなく例として、コンポーネント処理プログラム251は、ソフトウエアコンポーネントと言ってもよい。
By way of example and not limitation, the
httpデーモンプログラム253は、限定ではなく例として、Apache(登録商標) HTTP Serverやnginx(登録商標)、WSGI(Web Server Gateway Interface) Server等で実現(実装)されるようにしてもよい。
The
コンポーネント処理プログラム251は、限定ではなく例として、メッセージングモジュール2513を備える。また、メッセージングモジュール2513は、限定ではなく例として、httpメッセージングドライバ2515を備える。
The
サーバID255は、限定ではなく例として、コンポーネント処理プログラムを実行するクラスタ(サーバシステム)のうち、特定のコンポーネントサーバ20を識別するための情報である。
限定ではなく例として、あるコンポーネントサーバ20がコンポーネントプログラム処理を開始する場合、コンポーネント処理プログラム251に従ってコンポーネントサーバ20ごとに割り振られる識別情報がサーバID255に記憶されるようにしてもよい。
The
For example and not limitation, when a component server 20 starts a component program process, identification information assigned to each component server 20 in accordance with the
(2)呼び出し先解決サーバ10の機能構成
図1-4は、本実施例において呼び出し先解決サーバ10の制御部11によって実現される機能の一例を示す図である。
制御部11は、限定ではなく例として、記憶部15に記憶された呼び出し先解決処理プログラム151に従って、コンポーネントサーバ20間におけるプロセス間通信の呼び出し先解決処理を実行するための呼び出し先解決処理部111を機能部として含む。
なお、制御部11は、限定ではなく例として、記憶部15に記憶されたhttpデーモンプログラムに従ってhttpによる情報の送受信を行うためのhttpデーモン処理を実行するためのhttpデーモン処理部を機能部として含むようにしてもよい。
(2) Functional Configuration of the Call
The
In addition, the
図1-5は、本実施例において呼び出し先解決サーバ10の記憶部15に記憶される情報の一例を示す図である。
記憶部15には、限定ではなく例として、制御部11によって呼び出し先解決処理として実行される呼び出し先解決処理プログラム151と、呼び出し先管理データ153とが記憶される。
なお、記憶部15に、httpデーモンプログラムを記憶させるようにしてもよい。
FIG. 1-5 is a diagram showing an example of information stored in the
In the
The
呼び出し先管理データ153は、コンポーネントプログラム(限定ではなく例として、OpenStackにおけるNOVAやNEUTRON等)を実行するクラスタ(サーバシステム)内の個々のコンポーネントサーバ20に関する登録データであり、そのデータ構成の一例を図1-6に示す。
呼び出し先管理データ153には、限定ではなく例として、サーバIDと、バインドキー情報と、その他登録情報とが関連付けて記憶される。
The
In the call
サーバIDは、コンポーネント処理プログラムを実行するクラスタを構成するコンポーネントサーバ20の識別情報であり、限定ではなく例として、コンポーネントサーバ20がコンポーネント処理プログラムを実行する際にコンポーネントサーバ20から送信されるサーバIDが記憶される。 The server ID is identification information of the component server 20 that constitutes the cluster that executes the component processing program, and as a non-limiting example, the server ID sent from the component server 20 when the component server 20 executes the component processing program is stored.
なお、サーバIDは、コンポーネントサーバ20が識別可能な情報(限定ではなく例として、IPアドレスやポート番号、MACアドレス、URI等)としてもよい。
また、サーバIDは、RPCエンドポイント情報と言ってもよい。
The server ID may be information that can be identified by the component server 20 (for example, but not limited to, an IP address, a port number, a MAC address, a URI, etc.).
The server ID may also be called RPC endpoint information.
また、サーバIDは、限定ではなく例として、コンポーネントサーバ20がコンポーネント処理プログラムを実行する際に呼び出し先解決サーバ10によってコンポーネントサーバ20ごとに一意な値(固有の値)が設定されて記憶されるようにしてもよい。
この場合、呼び出し先解決サーバ10は、設定したサーバIDをコンポーネントサーバ20に送信するようにしてもよい。そして、コンポーネントサーバ20は、受信したサーバIDを記憶部25に記憶させるようにしてもよい。
In addition, as an example and not a limitation, the server ID may be set and stored as a unique value (proper value) for each component server 20 by the
In this case, the call
バインドキー情報は、限定ではなく例として、RPCにおけるプロセス間通信の呼び出し先を定めるための情報である。このバインドキー情報は、限定ではなく例として、コンポーネントサーバ20がコンポーネント処理プログラムを実行する際にコンポーネントサーバ20から送信されるバインドキー情報が記憶される。 The bind key information is, by way of example and not by way of limitation, information for determining the call destination of inter-process communication in an RPC. As an example and not by way of limitation, this bind key information stores the bind key information sent from the component server 20 when the component server 20 executes a component processing program.
なお、バインドキー情報は、限定ではなく例として、コンポーネントサーバ20がコンポーネント処理プログラムを実行する際に呼び出し先解決サーバ10によって設定され、記憶されるようにしてもよい。
In addition, as a non-limiting example, the bind key information may be set and stored by the called
また、バインドキー情報は、限定ではなく例として、メッセージングモジュール2513がRPCに従ってプロセス間通信を受け付けるために必要となる情報であり、限定ではなく例として、RPCとの互換性を保つ必要がない場合、バインドキー情報は記憶させないようにしてもよい。
In addition, the bind key information is, by way of example and not limitation, information required for the
また、バインドキー情報には、限定ではなく例として、文字列のパターンを示す表現(限定ではなく例として、1ワードマッチ(限定ではなく例として、「*」)や複数ワードマッチ(限定ではなく例として、「#」)等)を含めるようにしてもよい。バインドキー情報には、限定ではなく例として、複数のバインドキー文字列を含めるようにしてもよい。 The bind key information may also include, by way of example and not limitation, an expression indicating a string pattern (by way of example and not limitation, one word match (by way of example and not limitation, "*") or multiple word match (by way of example and not limitation, "#")). The bind key information may also include, by way of example and not limitation, multiple bind key strings.
その他登録情報には、限定ではなく例として、コンポーネントサーバ20に関するサーバ情報やコンポーネントサーバ20の構成情報(限定ではなく例として、CPUコア数やメインメモリ容量等)、アップタイムやロードアベレージといった各種の情報を含めるようにすることができる。また、その他登録情報には、呼び出し先解決サーバ10による各コンポーネントサーバ20への死活監視に関する情報を含めるようにしてもよい。
The other registered information may include, by way of example and not limitation, server information about the component server 20, configuration information about the component server 20 (by way of example and not limitation, the number of CPU cores, main memory capacity, etc.), and various other information such as uptime and load average. The other registered information may also include information regarding alive monitoring of each component server 20 by the called
なお、その他登録情報に、サーバの役割を識別するための情報(以下、「サーバ役割情報」と称する。)として、限定ではなく例として、RPCを受付可能であることを示す「ワーカ」等を設定可能であるようにしてもよい。 In addition, other registration information may include information for identifying the role of the server (hereinafter referred to as "server role information"), such as "worker" indicating that RPCs can be accepted, as an example and not a limitation.
なお、呼び出し先管理データ153に、一斉呼び出しサーバ40の登録情報を記憶させるようにしてもよい。
この場合、限定ではなく例として、サーバ役割情報に、限定ではなく例として、「ブロードキャスタ」と設定可能であるようにしてもよい。関連付けられるバインドキー情報はあってもよいし、無くてもよい。
また、サーバIDは、一斉呼び出しサーバ40によって設定されることとしてもよいし、呼び出し先解決サーバ10によって設定されることとしてもよい。
The call
In this case, for example and not for limitation, the server role information may be set to, for example and not for limitation, "broadcaster." There may or may not be associated bind key information.
The server ID may be set by the
なお、限定ではなく例として、ある一斉呼び出しサーバ40が後述のRPCメッセージ情報増幅送信処理を実行中の間、その一斉呼び出しサーバ40に関するレコード(サーバID等)を呼び出し先管理データ153から一時的に削除するようにしてもよい。
As an example and not a limitation, while a certain
なお、呼び出し先解決処理プログラム151は、限定ではなく例として、サービス・ディスカバリシステムであるConsulや、DNS(Domain Name System)等に基づいて実装されるようにしてもよい。
The call destination
(3)一斉呼び出しサーバ40の機能構成
図1-7は、本実施例において一斉呼び出しサーバ40の制御部41によって実現される機能の一例を示す図である。
制御部41は、限定ではなく例として、記憶部45に記憶された一斉呼び出し処理プログラム451に従って、複数のコンポーネントサーバ20へのプロセス間通信を実行するための一斉呼び出しプログラム処理部411を機能部として含む。
また、制御部41は、限定ではなく例として、記憶部45に記憶されたhttpデーモンプログラム453に従ってhttpによる情報の送受信を行うためのhttpデーモン処理を実行するためのhttpデーモン処理部413を機能部として含む。
(3) Functional Configuration of the
The
The
図1-8は、本実施例において一斉呼び出しサーバ40の記憶部45に記憶される情報の一例を示す図である。
記憶部45には、限定ではなく例として、制御部41によって一斉呼び出し処理として実行される一斉呼び出し処理プログラム451と、制御部41によってhttpデーモン処理として実行されるhttpデーモンプログラム453と、コンポーネントサーバ一覧情報455とが記憶される。
FIG. 1-8 is a diagram showing an example of information stored in the
The
コンポーネントサーバ一覧情報455は、インヴォーカであるコンポーネントサーバ20がプロセス間通信において一斉呼び出し(限定ではなく例として、rpc.fanout)を実行する場合、一斉呼び出し先として指定されるワーカであるコンポーネントサーバ20の一覧情報であり、限定ではなく例として、各コンポーネントサーバ20のサーバID(サーバ識別情報)が記憶され保管されている。
The component
なお、一斉呼び出しサーバ40は、限定ではなく例として、http通信を仲介し増幅するためのAPIサーバと言ってもよい。
In addition, the
<処理>
図1-9は、本実施例において各装置が実行する処理の流れの一例を示すフローチャートである。本フローチャートでは、限定ではなく例として、手続き側からの応答を期待するrpc.call通信について説明する。また、本フローチャートでは、限定ではなく例として、コンポーネントサーバ20Aをrpcの呼び出し側(インヴォーカ)、コンポーネントサーバ20Bをrpcの手続き側(ワーカ)とする。
この図では、左側から順にインヴォーカとなるコンポーネントサーバ20Aの制御部21が実行する処理、呼び出し先解決サーバ10の制御部11が実行する処理、ワーカとなるコンポーネントサーバ20Bの制御部21が実行する処理をそれぞれ示している。
<Processing>
1-9 is a flowchart showing an example of the flow of processing executed by each device in this embodiment. In this flowchart, as an example and not a limitation, an RPC.call communication in which a response is expected from the procedure side is described. Also, in this flowchart, as an example and not a limitation, the
This figure shows, from the left, the processing performed by the
フローチャートに先立ち、各コンポーネントサーバ20の制御部21は、限定ではなく例として、コンポーネント処理プログラム251とhttpデーモンプログラム253とに従って、コンポーネントプログラム処理とhttpデーモン処理とを開始する。すると、各コンポーネントサーバ20の制御部21は、限定ではなく例として、httpメッセージングドライバ2515に従って、記憶部25に記憶されるサーバID255を含むコンポーネントプログラム起動情報を通信I/F22によって呼び出し先解決サーバ10に送信する。
Prior to the flowchart, the
なお、コンポーネントプログラム起動情報に、限定ではなく例として、各コンポーネントサーバ20に関する構成情報等のサーバ情報を含めるようにしてもよい。また、コンポーネントプログラム起動情報に、限定ではなく例として、コンポーネントプログラム処理の起動時に設定されるバインドキー情報を含めるようにしてもよい。 In addition, the component program startup information may include, by way of example and not by way of limitation, server information such as configuration information regarding each component server 20. In addition, the component program startup information may include, by way of example and not by way of limitation, bind key information that is set when the component program process is started.
通信I/F14によってコンポーネントサーバ20からコンポーネントプログラム起動情報を受信すると、呼び出し先解決サーバ10の制御部11は、限定ではなく例として、ワーカ更新処理を実行する(S110)。
ワーカ更新処理において、呼び出し先解決サーバ10の制御部11は、限定ではなく例として、受信したコンポーネントプログラム起動情報に基づいて、各コンポーネントサーバ20を「ワーカ」とするように呼び出し先管理データ153を更新し登録する。
When the component program start information is received from the component server 20 via the communication I/
In the worker update process, the
なお、各コンポーネントサーバ20の制御部21は、限定ではなく例として、コンポーネントプログラム処理を開始すると、限定ではなく例として、コンポーネントプログラム起動情報を所定時刻(限定ではなく例として、「毎時00分」)または所定期間(限定ではなく例として、「7200秒」)ごとに呼び出し先解決サーバ10に送信するようにしてもよい。
そして、呼び出し先解決サーバ10の制御部11は、コンポーネントサーバ20からコンポーネントプログラム起動情報を受信すると、受信したコンポーネントプログラム起動情報に基づいて、呼び出し先管理データ153を更新するようにしてもよい。
In addition, by way of example and not limitation, when the
Then, when the
また、呼び出し先解決サーバ10の制御部11は、限定ではなく例として、各々のコンポーネントサーバ20がワーカとして稼働していることを確認するためのコンポーネントプログラム稼働確認情報を所定時刻(限定ではなく例として、「毎分00秒」)または所定期間(限定ではなく例として、「60秒」)ごとに各コンポーネントサーバ20に送信するようにしてもよい。
通信I/F24によって呼び出し先解決サーバ10からコンポーネントプログラム稼働確認情報を受信すると、コンポーネントサーバ20の制御部21は、限定ではなく例として、コンポーネントプログラム起動情報を呼び出し先解決サーバ10に送信するようにしてもよい。
そして、呼び出し先解決サーバ10の制御部11は、コンポーネントサーバ20からコンポーネントプログラム起動情報を受信すると、受信したコンポーネントプログラム起動情報に基づいて、呼び出し先管理データ153を更新するようにしてもよい。
In addition, the
When component program operation confirmation information is received from the called
Then, when the
なお、呼び出し先解決サーバ10の制御部11は、あるコンポーネントサーバ20からコンポーネントプログラム起動情報を受信不能と判定する場合、そのコンポーネントサーバ20を呼び出し先管理データ153から削除するようにしてもよい。
When the
これにより、呼び出し先解決サーバ10において、各コンポーネントサーバ20の稼働状態に応じた死活監視を実現することができる。
This allows the called
その後、インヴォーカであるコンポーネントサーバ20Aの制御部21は、限定ではなく例として、コンポーネントプログラムにおけるrpc.call手続きに基づいて、rpc.call処理を実行開始する(A110)。
rpc.call処理において、コンポーネントサーバ20Aのコンポーネントプログラム処理部211は、限定ではなく例として、httpメッセージングドライバ2515が組み込まれているメッセージングモジュール2513のRPCクライアント(狭義のインヴォーカ)を呼び出す。
Thereafter, the
In the rpc.call process, the component
以下では、コンポーネント処理プログラム251からメッセージングモジュール2513の呼び出し引数において指定されるrpc処理の内容を、限定ではなく例として、「rpc処理要求情報」と称する。
In the following, the content of the RPC processing specified in the calling arguments of the
rpc処理要求情報は、限定ではなく例として、以下の要素で構成されることとしてもよい。
・rpcメッセージ情報:手続き側で行う具体例処理内容(関数と言ってもよい)。
・ターゲット:手続き側のコンポーネントサーバ20を探索する方法を識別するための情報。
・ルーティングキー:コンポーネントサーバ20を探索する際に用いる、バインドキー情報と照合するための情報。
The RPC processing request information may be composed of the following elements, by way of example and not limitation:
RPC message information: Specific processing contents (which may be called functions) performed on the procedure side.
Target: Information for identifying a method for searching for a procedural component server 20.
Routing key: Information used when searching for the component server 20 and for matching with the bind key information.
なお、rpc処理要求情報は、限定ではなく例として、より簡潔に、ルーティングキーと、rpcメッセージ情報とで構成されることとしてもよい。 In addition, by way of example and not limitation, the RPC processing request information may be more simply composed of a routing key and RPC message information.
また、以下では、rpcメッセージ情報に基づく手続き側でのrpc処理の結果(関数の返り値と言ってもよい)に関する情報を「rpc処理結果情報」と称する。 In addition, below, information regarding the result of RPC processing on the procedure side based on RPC message information (which can also be said to be the return value of the function) is referred to as "RPC processing result information."
すると、コンポーネントサーバ20Aの制御部21は、限定ではなく例として、httpメッセージングドライバ2515に従って、RPCの手続き先を特定するために必要な情報であるワーカ一覧要求情報を通信I/F24によって呼び出し先解決サーバ10に送信する(A120)。
なお、呼び出し先解決サーバ10を識別するための情報(限定ではなく例として、IPアドレスやAPIサーバのURI等)は、限定ではなく例として、httpメッセージングドライバ2515が記憶することとしてもよい。また、呼び出し先解決サーバ10を識別するための情報は、随時呼び出し先解決サーバ10がコンポーネントサーバ20に送信するようにしてもよい。
Then, the
Note that, by way of example and not limitation, the information for identifying the call destination resolution server 10 (such as an IP address or a URI of an API server) may be stored by the
通信I/F14によってコンポーネントサーバ20Aからワーカ一覧要求情報を受信すると、呼び出し先解決サーバ10の制御部11は、呼び出し先管理データ153を参照し、限定ではなく例として、サーバ役割情報が「ワーカ」であるサーバIDと、バインドキー情報とを含むワーカ一覧情報を通信I/F14によってコンポーネントサーバ20Aに送信する(S130)。
なお、ワーカ一覧情報に、各コンポーネントサーバ20の構成情報やロードアベレージといった各種のサーバ情報を含めるようにしてもよい。
When worker list request information is received from
The worker list information may include various types of server information such as configuration information and load average of each component server 20 .
なお、ワーカ一覧要求情報とワーカ一覧情報との送受信は、限定ではなく例として、httpプロトコルに従って行われるようにしてもよいし、DNSに従って行われるようにしてもよい。 Note that the sending and receiving of worker list request information and worker list information may be performed according to the HTTP protocol or according to DNS, but this is not a limitation of the present invention.
また、コンポーネントサーバ20Aの制御部21は、限定ではなく例として、呼び出し先解決サーバ10を示すURIに、限定ではなく例として、REST API(RESTful API)を介してワーカ一覧情報を取得するようにしてもよい。
In addition, the
通信I/F24によって呼び出し先解決サーバ10からワーカ一覧情報を受信すると、コンポーネントサーバ20Aの制御部21は、ワーカ探索処理を実行する(A130)。
ワーカ探索処理において、コンポーネントサーバ20Aの制御部21は、限定ではなく例として、受信したワーカ一覧情報とrpc処理要求情報とに基づいて、rpcメッセージ情報を送信するワーカ(この例では、コンポーネントサーバ20B)を決定する。
When the worker list information is received from the call
In the worker search process, the
より具体例には、コンポーネントサーバ20Aの制御部21は、限定ではなく例として、rpc処理要求情報におけるターゲットおよびルーティングキーの条件を満たすバインドキー情報を持つコンポーネントサーバ20のサーバIDを探索するようにしてもよい。
More specifically, the
限定ではなく例として、ターゲットが「ダイレクト」である場合、コンポーネントサーバ20Aの制御部21は、バインドキー情報がルーティングキーとマッチするサーバIDのコンポーネントサーバ20をワーカとするようにしてもよい。
また、限定ではなく例として、ターゲットが「トピック」である場合、コンポーネントサーバ20Aの制御部21は、バインドキー情報における文字列のパターンを示す表現を利用し、ルーティングキーと条件マッチするサーバIDのコンポーネントサーバ20をワーカとするようにしてもよい。
また、限定ではなく例として、ターゲットが「null(無指定)」である場合、コンポーネントサーバ20Aの制御部21は、バインドキー情報がルーティングキーと完全一致するサーバIDのコンポーネントサーバ20をワーカとするようにしてもよい。
As an example and not by way of limitation, when the target is "direct", the
Also, as an example and not a limitation, when the target is a “topic”, the
Also, as a non-limiting example, when the target is “null (unspecified)”, the
なお、ワーカ探索処理において、コンポーネントサーバ20Aの制御部21は、複数のサーバIDを探索結果として出力するようにしてもよい。
In addition, in the worker search process, the
ワーカとなるサーバIDが探索されると、コンポーネントサーバ20Aの制御部21は、探索されたサーバIDに基づいて、rpcメッセージ情報を通信I/F24によってコンポーネントサーバ20Bに送信する(A150)。
また、コンポーネントサーバ20Bの制御部21は、通信I/F24によってコンポーネントサーバ20Aからrpcメッセージ情報を受信する(B110)。
When the server ID to be a worker is found, the
Furthermore, the
rpcメッセージ情報の送受信において、限定ではなく例として、コンポーネントサーバ20のhttpデーモン処理部213は、httpに従って情報の送受信を行うようにしてもよい。この場合、コンポーネントサーバ20Aの制御部21は、POSTメソッドによってコンポーネントサーバ20Bにrpcメッセージ情報を送信するようにしてもよい。また、コンポーネントサーバ20Bの制御部21は、GETメソッドによってコンポーネントサーバ20Aからrpcメッセージ情報を受信するようにしてもよい。
In sending and receiving rpc message information, as a non-limiting example, the http
なお、用いるプロトコルはhttp/1.0としてもよいし、http/1.1としてもよいし、http/2としてもよいし、その他のバージョンとしてもよい。 The protocol used may be http/1.0, http/1.1, http/2, or any other version.
限定ではなく例として、rpcメッセージ情報の送受信にhttpを用いることで、呼び出し側のコンポーネントサーバ20A(インヴォーカ)は、手続き側のコンポーネントサーバ20(ワーカ)にrpcメッセージ情報が届いたか否かを判定することができる。
As an example and not a limitation, by using HTTP to send and receive RPC message information, the
また、rpcメッセージ情報の送受信において、http以外のプロトコル(限定ではなく例として、SSH(Secure Shell)等)を用いて通信するようにしてもよい。 In addition, when sending and receiving RPC message information, communication may be performed using a protocol other than HTTP (such as, but not limited to, SSH (Secure Shell)).
なお、コンポーネントサーバ20Bの制御部21は、通信I/F24によってコンポーネントサーバ20Aからrpcメッセージ情報を受信すると、RPC処理中情報を通信I/F22によって呼び出し先解決サーバ10に送信するようにしてもよい。
通信I/F14によってコンポーネントサーバ20BからRPC処理中情報を受信すると、呼び出し先解決サーバ10の制御部11は、限定ではなく例として、受信したRPC処理中情報に基づいて、呼び出し先管理データ153を更新する(限定ではなく例として、サーバ役割情報を「ビジー」とする)ようにしてもよい。
そして、呼び出し先解決サーバ10の制御部11は、限定ではなく例として、サーバ役割情報が「ビジー」となっているコンポーネントサーバ20をワーカ一覧情報に含めないようにしてもよい。
これにより、rpcによる手続き中のコンポーネントサーバ20Bをワーカ一覧から一時的に外し、他のコンポーネントサーバ20から重複して手続き側として選択されることを防ぐことができる。
In addition, when the
When RPC processing in progress information is received from the
Then, the
This makes it possible to temporarily remove the
通信I/F24によってコンポーネントサーバ20Aからrpcメッセージ情報を受信すると、コンポーネントサーバ20Bの制御部21は、コンポーネントプログラム処理を実行する(B130)。
コンポーネントプログラム処理において、コンポーネントサーバ20Bの制御部21は、受信したrpcメッセージ情報に基づいて、httpメッセージングドライバ2515が組み込まれているメッセージングモジュール2513のRPCサーバ(狭義のワーカ)を呼び出す。
すると、コンポーネントサーバ20Bのコンポーネントプログラム処理部211は、メッセージングモジュール2513を介して受信したrpcメッセージ情報で指定される手続き(処理)を実行する。
When the rpc message information is received from the
In the component program processing, the
Then, the component
限定ではなく例として、コンポーネントプログラム処理が終了すると、コンポーネントサーバ20Bの制御部21は、コンポーネントプログラム処理の処理結果を含むrpc処理結果情報を通信I/F24によってコンポーネントサーバ20Aに送信する(B150)。
また、コンポーネントサーバ20Aの制御部21は、通信I/F24によってコンポーネントサーバ20Bからrpc処理結果情報を受信する(A170)。
As an example and not a limitation, when the component program processing is completed, the
Furthermore, the
rpc処理結果情報の送受信において、限定ではなく例として、コンポーネントサーバ20の制御部21は、rpcメッセージ情報の送受信と同様に、httpに従って情報の送受信を行うようにしてもよい。
rpc処理結果情報の送受信にhttpを用いることで、手続き側のコンポーネントサーバ20(ワーカ)は、呼び出し側のコンポーネントサーバ20A(インヴォーカ)にrpc処理結果情報が届いたか否かを判定することができる。
In transmitting and receiving RPC processing result information, as an example and not a limitation, the
By using HTTP to send and receive the RPC processing result information, the component server 20 (worker) on the procedure side can determine whether or not the RPC processing result information has arrived at the
なお、rpcメッセージ情報とrpc処理結果情報との送受信において、それぞれhttpリクエストが発生するようにしてもよいし、rpcメッセージ情報の送受信によるhttpリクエストのレスポンスとしてrpc処理結果情報の送受信が行われるようにしてもよい。 Note that an HTTP request may be generated for each transmission and reception of RPC message information and RPC processing result information, or the RPC processing result information may be transmitted and received as a response to an HTTP request generated by the transmission and reception of RPC message information.
また、rpc処理結果情報の送受信において、http以外のプロトコル(限定ではなく例として、SSH(Secure Shell)等)を用いて通信するようにしてもよい。 In addition, when sending and receiving RPC processing result information, communication may be performed using a protocol other than HTTP (such as, but not limited to, SSH (Secure Shell)).
なお、コンポーネントサーバ20Bの制御部21は、通信I/F24によってコンポーネントサーバ20Aにrpc処理結果情報を送信すると、RPC処理終了情報を通信I/F22によって呼び出し先解決サーバ10に送信するようにしてもよい。
通信I/F14によってコンポーネントサーバ20BからRPC処理終了情報を受信すると、呼び出し先解決サーバ10の制御部11は、限定ではなく例として、受信したコンポーネントプログラム処理終了情報に基づいて、呼び出し先管理データ153を更新する(限定ではなく例として、サーバ役割情報を「ワーカ」とする)ようにしてもよい。
In addition, when the
When RPC processing end information is received from the
また、コンポーネントサーバ20Aの制御部21は、通信I/F24によってコンポーネントサーバ20Bからrpc処理結果情報を受信すると、RPC処理終了情報を通信I/F22によって呼び出し先解決サーバ10に送信するようにしてもよい。
通信I/F14によってコンポーネントサーバ20AからRPC処理終了情報を受信すると、呼び出し先解決サーバ10の制御部11は、限定ではなく例として、受信したコンポーネントプログラム処理終了情報に基づいて、呼び出し先管理データ153を更新する(限定ではなく例として、サーバ役割情報を「ワーカ」とする)ようにしてもよい。
In addition, when the
When RPC processing end information is received from the
これらの処理により、RPCからタスク解放されたコンポーネントサーバ20を再びワーカ一覧に復帰させ、他のコンポーネントサーバ20から手続き側として選択させることができる。 By performing these processes, the component server 20 that has been released from the RPC can be returned to the worker list and can be selected as the procedure side by other component servers 20.
なお、手続き側からの応答を期待しないrpc.cast通信については、限定ではなく例として、B150とA170とのステップを省略することで実現するようにしてもよい。
rpc.cast通信についても、インヴォーカからワーカにrpcメッセージ情報が届いたか否かを判定することができる。
Note that, for rpc.cast communication that does not expect a response from the procedure side, as an example and not a limitation, it may be realized by omitting steps B150 and A170.
For rpc.cast communication, it can also be determined whether or not rpc message information has been received from the invoker to the worker.
また、本例ではワーカ探索処理においてコンポーネントサーバ20BのサーバIDが探索された場合について例示したが、ワーカ探索処理において複数のサーバIDが探索された場合についても同様に複数のワーカに対するrpcメッセージ情報および/またはrpc処理結果情報の送受信を行うようにしてもよい。
In addition, in this example, the case where the server ID of
図1-10は、本発明における提案手法と、従来手法であるAMQP利用時とにおけるソフトウェアモジュール間の協調動作の対比を示すブロック図である。
図1-10の上側には、提案手法であるhttpメッセージングドライバを用いる場合の動作を、下側にはAMQPライバを用いる場合の動作をそれぞれ示す。
ブロック図中において、丸印に数字で書かれる内容を、文中では便宜上「((数字))」と表記することとする。
FIG. 1-10 is a block diagram showing a comparison of the cooperative operations between software modules in the method proposed in the present invention and the conventional method using AMQP.
The upper part of FIG. 1-10 shows the operation when using the proposed method, that is, an HTTP messaging driver, and the lower part shows the operation when using an AMQP driver.
In the block diagrams, the contents written in numbers in circles will be represented as "((number))" for convenience in the text.
提案手法における動作は、限定ではなく例として、以下の通りである。なお、提案手法における動作は、以下の動作に限定されない。
((1)).インヴォーカ側のアプリケーションプロセス(限定ではなく例として、コンポーネントプログラム処理の一例)がRPC通信を行うためにRPCメッセージングクライアントモジュール(限定ではなく例として、メッセージングモジュールの一例)のRPCクライアントと通信。また、RPCクライアントからhttpメッセージングドライバへrpc処理要求情報を送信。
((2)).httpメッセージングドライバが呼び出し先解決サーバ10で提供される呼び出し先解決サービスに通信。
((3)).呼び出し先解決サービスからhttpメッセージングドライバへRPCの手続き先を特定するために必要な情報を送信。限定ではなく例として、httpメッセージングドライバが手続き先となるサーバ20Bを特定(Exchange and Bind)。
((4)).インヴォーカ側のhttpメッセージングドライバがワーカであるサーバ20Bにrpcメッセージ情報を送信。また、rpcメッセージ情報が送信されると、送信が完了したことを示す情報を、限定ではなく例として、RPCクライアントを介してアプリケーションプロセスに伝達可能。
((5)).ワーカ側のRPCメッセージングサーバモジュール(限定ではなく例として、メッセージングモジュールの一例)において、httpメッセージングドライバが受信したrpcメッセージ情報をRPCサーバに送信。RPCサーバはワーカ側のアプリケーションプロセス(限定ではなく例として、コンポーネントプログラム処理の一例)にrpcメッセージ情報に基づく処理を要求。
((6)).ワーカ側のアプリケーションプロセスがrpc処理結果情報をRPCメッセージングサーバモジュールに送信。RPCサーバを介してhttpメッセージングドライバに伝達。
((7)).ワーカ側のhttpメッセージングドライバがインヴォーカであるサーバ20Aにrpc処理結果情報を送信。また、rpc処理結果情報が送信されると、送信が完了したことを示す情報を、限定ではなく例として、RPCサーバを介してアプリケーションプロセスに伝達可能。
((8)).インヴォーカ側のRPCメッセージングクライアントモジュールにおいて、httpメッセージングドライバが受信したrpc処理結果情報をRPCクライアントに送信。RPCクライアントはインヴォーカ側のアプリケーションプロセスにrpc処理結果情報を戻り値として渡す。
The operations in the proposed method are, by way of example and not by way of limitation, as follows: Note that the operations in the proposed method are not limited to the following operations.
((1)) An application process (for example, but not limited to, an example of a component program process) on the invoker side communicates with an RPC client of an RPC messaging client module (for example, but not limited to, an example of a messaging module) to perform RPC communication. Also, the RPC client sends RPC processing request information to an HTTP messaging driver.
((2)) The HTTP messaging driver communicates with the callee resolution service provided by the
((3)) The callee resolution service transmits information necessary to identify the destination of the RPC procedure to the http messaging driver. As an example and not a limitation, the http messaging driver identifies the
((4)) The HTTP messaging driver on the invoker side sends the RPC message information to the
((5)) In the RPC messaging server module on the worker side (for example, but not limited to, an example of a messaging module), the HTTP messaging driver sends the received RPC message information to the RPC server. The RPC server requests the application process on the worker side (for example, but not limited to, an example of a component program process) to perform processing based on the RPC message information.
((6)) The application process on the worker side sends the RPC processing result information to the RPC messaging server module. The information is transmitted to the HTTP messaging driver via the RPC server.
((7)) The worker-side http messaging driver sends the RPC processing result information to the invoker,
((8)) In the RPC messaging client module on the invoker side, the HTTP messaging driver sends the received RPC processing result information to the RPC client. The RPC client passes the RPC processing result information to the application process on the invoker side as a return value.
また、従来手法における動作は、限定ではなく例として、以下の通りである。
((1)).インヴォーカ側のアプリケーションプロセスがRPC通信を行うためにRPCメッセージングクライアントモジュールのRPCクライアントと通信。また、RPCクライアントからAMQPドライバへrpc処理要求情報を送信。
((2)).AMQPドライバがメッセージキューイングサービス(限定ではなく例として、RabbitMQ等)にrpc処理要求情報に基づくrpc処理要求を発行。メッセージキューイングサービスにおいて、手続き先となるサーバ20Bに紐づけられるキューを特定し、キューにrpcメッセージ情報を保管(Exchange, Bind and Queue)。
((3)).ワーカ側のRPCメッセージングサーバモジュールにおいて、AMQPドライバがメッセージキューイングサービスのキューを定期的にフェッチ。
((4)).キューにサーバ20B宛のrpcメッセージ情報が存在する場合、AMQPドライバがキューからrpcメッセージ情報を読み出し。
((5)).AMQPドライバが受信したrpcメッセージ情報をRPCサーバに送信。RPCサーバはワーカ側のアプリケーションプロセスにrpcメッセージ情報に基づく処理を要求。
((6)).ワーカ側のアプリケーションプロセスがrpc処理結果情報をRPCメッセージングサーバモジュールに送信。RPCサーバを介してAMQPドライバに伝達。
((7)).ワーカ側のAMQPドライバがメッセージキューイングサービスにrpc処理結果情報を送信(キューイング)。
((8)).メッセージキューイングサービスがインヴォーカ側のAMQPドライバにrpc処理結果情報を送信。
((9)).インヴォーカ側のRPCメッセージングクライアントモジュールにおいて、AMQPドライバが受信したrpc処理結果情報をRPCクライアントに送信。RPCクライアントはインヴォーカ側のアプリケーションプロセスにrpc処理結果情報を戻り値として渡す。
Also, the operation of the conventional approach is as follows, by way of example and not by way of limitation.
((1)) The application process on the invoker side communicates with the RPC client of the RPC messaging client module to perform RPC communication. Also, the RPC client sends RPC processing request information to the AMQP driver.
((2)) The AMQP driver issues an RPC processing request based on the RPC processing request information to a message queuing service (such as, for example and not limitation, RabbitMQ). In the message queuing service, a queue linked to the
((3)) In the RPC messaging server module on the worker side, the AMQP driver periodically fetches the queue of the message queuing service.
((4)) If RPC message information addressed to
((5)) The AMQP driver sends the received RPC message information to the RPC server. The RPC server requests the worker application process to process the RPC message information.
((6)) The application process on the worker side sends the RPC processing result information to the RPC messaging server module. The information is transmitted to the AMQP driver via the RPC server.
((7)) The AMQP driver on the worker side sends the RPC processing result information to the message queuing service (queueing).
((8)) The message queuing service sends the RPC processing result information to the AMQP driver on the invoker side.
((9)) In the RPC messaging client module on the invoker side, the AMQP driver sends the received RPC processing result information to the RPC client. The RPC client passes the RPC processing result information to the application process on the invoker side as a return value.
これらの動作から、提案手法では、インヴォーカ側のhttpメッセージングドライバとワーカ側のhttpメッセージングドライバとにおいて直接rpcメッセージ情報できることがわかる。rpc処理結果情報についても同様である。
このため、インヴォーカ側のhttpメッセージングドライバにおいて送信先となるワーカの解決が終了していれば、それ以降のプロセス間通信に支障が生じない。また、呼び出し先解決サービスが停止した場合においても、インヴォーカ側でrpcメッセージ情報の送信前にトラブルを検知することができる。このため、アプリケーションプロセスに例外処理等を実行させることが容易となる。
From these operations, it can be seen that in the proposed method, RPC message information can be directly exchanged between the HTTP messaging driver on the invoker side and the HTTP messaging driver on the worker side. The same is true for RPC processing result information.
Therefore, if the HTTP messaging driver on the invoker side has completed the resolution of the worker to be the destination, there will be no problems with subsequent inter-process communication. Also, even if the call destination resolution service stops, the invoker side can detect the problem before sending the RPC message information. This makes it easy to have the application process execute exception handling, etc.
対して、従来手法では、全てのrpcメッセージ情報およびrpc処理結果情報は、メッセージキューイングサービスを経由する必要が生じる(メッセージキューイングサービスがSPOFとなる)。
このため、メッセージキューイングサービスが停止すると、送受信中のrpcメッセージ情報およびrpc処理結果情報を含めて、プロセス間通信全般に支障が生じる。また、メッセージキューイングサービスのキューに何らかの改変が発生した場合等において、プロセス間通信に混乱が生じ、原因の特定が困難なアプリケーションプロセスのエラーが生じる可能性がある。
In contrast, in the conventional method, all RPC message information and RPC processing result information must go through a message queuing service (the message queuing service is an SPOF).
For this reason, when the message queuing service stops, it causes problems in inter-process communication in general, including RPC message information being sent and received and RPC processing result information. In addition, if some kind of modification occurs to the queue of the message queuing service, it may cause confusion in inter-process communication, resulting in an error in the application process whose cause is difficult to identify.
また、従来手法において、ワーカ側のAMQPドライバはインヴォーカから送信されたrpcメッセージ情報を受信するために、メッセージキューイングサービスのキューへのフェッチが随時必要とされる。
対して、提案手法では、インヴォーカ側のアプリケーションプロセスからワーカ側のアプリケーションプロセスまでrpcメッセージ情報がソフトウェアモジュール間を一路に伝達されていることがわかる。rpc処理結果情報についても同様である。
このため、提案手法では、処理にフェッチを行うためのオーバーヘッドが生じず、アプリケーションプロセスを実行するクラスタ全体の負荷を低減させることができる。
Furthermore, in the conventional method, the AMQP driver on the worker side needs to fetch from the queue of the message queuing service from time to time in order to receive the RPC message information sent from the invoker.
On the other hand, in the proposed method, it can be seen that RPC message information is transmitted between software modules in a straight line from the application process on the invoker side to the application process on the worker side. The same is true for RPC processing result information.
Therefore, the proposed method does not incur overhead for fetching during processing, and can reduce the load on the entire cluster running application processes.
また、提案手法では、インヴォーカ側のアプリケーションプロセスはワーカにrpcメッセージ情報が到達したことを、ワーカ側のアプリケーションプロセスはインヴォーカにrpc処理結果情報が到達したことを、それぞれ検知可能である。
対して、従来手法では、メッセージキューイングサービスにrpcメッセージ情報および/またはrpc処理結果情報がキューイングされたか否かのみを検知することができる。
このため、提案手法では、プロセス間通信の進行度合を的確に把握することができ、限定ではなく例として、アプリケーションプロセスにおける投機的実行等を効率的に進めることができる。また、アプリケーションプロセスのデバッグ操作がより容易となる。
In addition, in the proposed method, the application process on the invoker side can detect that RPC message information has arrived at the worker, and the application process on the worker side can detect that RPC processing result information has arrived at the invoker.
In contrast, the conventional method can only detect whether or not RPC message information and/or RPC processing result information has been queued in a message queuing service.
Therefore, the proposed method can accurately grasp the progress of inter-process communication, and by way of example and not limitation, can efficiently perform speculative execution in application processes. In addition, debugging operations of application processes becomes easier.
また、従来手法におけるメッセージキューイングサービスは、呼び出し先解決サービスと比べて複雑な処理を必要とする。このため、提案手法では、プロセス間通信を実現するためのサービスを含めたアプリケーションプロセスを実行するクラスタ全体のリソースを低減することができる。また、メッセージキューイングサービスに比べて簡潔な呼び出し先解決サービスは、平均故障間隔(MTBF:Mean Time Between Failures)が長く、また、平均復旧時間(MTTR:Mean Time To Recovery)が短くなることが期待できる。結果として、アプリケーションプロセスを実行するクラスタ全体の信頼性をより向上させることができる。 In addition, the message queuing service in the conventional method requires more complex processing than the callee resolution service. As a result, the proposed method can reduce the resources of the entire cluster that runs application processes, including services for implementing inter-process communication. In addition, the callee resolution service is simpler than the message queuing service, so it is expected to have a longer mean time between failures (MTBF) and a shorter mean time to recovery (MTTR). As a result, the reliability of the entire cluster that runs application processes can be improved.
なお、本発明におけるプロセス間通信は、rpc.call通信やrpc.cast通信に限定されない。 Note that inter-process communication in the present invention is not limited to rpc.call communication or rpc.cast communication.
図1-11は、本実施例において各装置が実行する処理の流れの別例を示すフローチャートである。本フローチャートでは、限定ではなく例として、手続き側からの応答を期待しないrpc.fanout通信について説明する。また、本フローチャートでは、限定ではなく例として、コンポーネントサーバ20Aをrpcの呼び出し側(インヴォーカ)、コンポーネントサーバ20B、コンポーネントサーバ20C、コンポーネントサーバ20D、・・・をrpcの手続き側(ワーカ)とする。
この図では、左側から順にインヴォーカとなるコンポーネントサーバ20Aの制御部21が実行する処理、呼び出し先解決サーバ10の制御部11が実行する処理、一斉呼び出しサーバ40の制御部41が実行する処理、ワーカとなるコンポーネントサーバ20Bの制御部21が実行する処理をそれぞれ示している。なお、他のワーカについては、限定ではなく例として、コンポーネントサーバ20Bの制御部21が実行する処理と同様に実行することができる。
1-11 is a flowchart showing another example of the flow of processing executed by each device in this embodiment. In this flowchart, as an example and not a limitation, an RPC.fanout communication that does not expect a response from the procedure side is described. Also, in this flowchart, as an example and not a limitation, the
In this figure, from the left, there are shown a process executed by the
なお、説明を簡略化するため、限定ではなく例として、本フローチャートでは一斉呼び出しサーバ40が一つ(ブロードキャスタが一つ)の場合について例示する。限定ではなく例として、一斉呼び出しサーバ40は複数(限定ではなく例として、一斉呼び出しサーバ40A,一斉呼び出しサーバ40B,一斉呼び出しサーバ40C,・・・等)あってもよい。この場合、各一斉呼び出しサーバ40には、異なるバインドキー情報が割り振られるようにしてもよい。
For the sake of simplicity, this flowchart illustrates, by way of example and not limitation, a case in which there is one mass call server 40 (one broadcaster). By way of example and not limitation, there may be multiple mass call servers 40 (by way of example and not limitation, mass call server 40A, mass call server 40B, mass call server 40C, ..., etc.). In this case, different bind key information may be assigned to each
フローチャートに先立ち、前述のように、各コンポーネントサーバ20の制御部21は、呼び出し先解決サーバ10にコンポーネントプログラム起動情報を送信する。
また、呼び出し先解決サーバ10の制御部11は、限定ではなく例として、受信したコンポーネントプログラム起動情報に基づいて、各コンポーネントサーバ20を「ワーカ」とするように呼び出し先管理データ153を更新する。
Prior to the flow chart, as described above, the
Furthermore, the
一斉呼び出しサーバ40の制御部41は、限定ではなく例として、ワーカ一覧要求情報を通信I/F44によって呼び出し先解決サーバ10に送信する。そして、通信I/F14によって一斉呼び出しサーバ40からワーカ一覧要求情報を受信すると、呼び出し先解決サーバ10の制御部11は、通信I/F14によって一斉呼び出しサーバ40にワーカ一覧情報を送信する。なお、一斉呼び出しサーバ40に送信するワーカ一覧情報には、サーバ役割情報が「ビジー」となっているコンポーネントサーバ20を含めるようにしてもよい。
また、呼び出し先解決サーバ10の制御部11は、限定ではなく例として、呼び出し先管理データ153を参照し、ワーカ一覧要求情報を送信した一斉呼び出しサーバ40のサーバ役割情報を「ブロードキャスタ」に更新する。
通信I/F44によって呼び出し先解決サーバ10からワーカ一覧情報を受信すると、一斉呼び出しサーバ40の制御部41は、受信したワーカ一覧情報に基づいて、コンポーネントサーバ一覧情報455を更新する。
The
Furthermore, the
When the communication I/
なお、一斉呼び出しサーバ40にバインドキー情報が割り当てられる場合、一斉呼び出しサーバ40の制御部41は、受信したワーカ一覧情報のうち、一斉呼び出しサーバ40のバインドキー情報とマッチするコンポーネントサーバ20のサーバID一覧をコンポーネントサーバ一覧情報455に記憶させるようにしてもよい。
限定ではなく例として、図1-6において、一斉呼び出しサーバ40のバインドキー情報が「apple」である場合、コンポーネントサーバ一覧情報455には、「apple」を含むサーバID「SID20A」~「SID20D」までの各コンポーネントサーバ20に関する識別情報が格納されるようにしてもよい。
In addition, when bind key information is assigned to the
As a non-limiting example, in FIG. 1-6, if the bind key information of the
また、一斉呼び出しサーバ40の制御部41は、限定ではなく例として、ワーカ一覧要求情報を所定時刻(限定ではなく例として、「毎時00分」)または所定期間(限定ではなく例として、「7200秒」)ごとに呼び出し先解決サーバ10に送信することで、コンポーネントサーバ一覧情報455を更新するようにしてもよい。
In addition, the
なお、各コンポーネントサーバ20の制御部21は、一斉呼び出しサーバ40にコンポーネントプログラム起動情報を送信するようにしてもよい。そして、一斉呼び出しサーバ40の制御部41は、受信したコンポーネントプログラム起動情報に基づいて、コンポーネントサーバ一覧情報455を更新するようにしてもよい。
The
まず、インヴォーカであるコンポーネントサーバ20Aの制御部21は、限定ではなく例として、コンポーネントプログラムにおけるrpc.fanout手続きに基づいて、rpc.fanout処理を実行開始する(A210)。
rpc.fanout処理において、コンポーネントサーバ20Aのコンポーネントプログラム処理部211は、限定ではなく例として、httpメッセージングドライバ2515が組み込まれているメッセージングモジュール2513のRPCクライアントを呼び出す。
First, the
In the rpc.fanout process, the component
すると、コンポーネントサーバ20Aの制御部21は、限定ではなく例として、httpメッセージングドライバ2515に従って、RPCの手続き先を特定するために必要な情報を要求するブロードキャスタ要求情報を通信I/F24によって呼び出し先解決サーバ10に送信する(A230)。
Then, the
すると、呼び出し先解決サーバ10の制御部11は、呼び出し先管理データ153を参照し、限定ではなく例として、サーバ役割情報が「ブロードキャスタ」であるサーバIDと、バインドキー情報とを含むブロードキャスタ情報を通信I/F14によってコンポーネントサーバ20Aに送信する(S210)。なお、ブロードキャスタ情報に、各一斉呼び出しサーバ40のロードアベレージといった各種の情報を含めるようにしてもよい。
The
なお、呼び出し先解決サーバ10の制御部11は、通信I/F14によってコンポーネントサーバ20Aからブロードキャスタ要求情報を受信すると、呼び出し先解決サーバ10の制御部11は、ワーカ更新処理を実行するようにしてもよい。
When the
また、コンポーネントサーバ20Aの制御部21は、限定ではなく例として、呼び出し先解決サーバ10を示すURIに、限定ではなく例として、REST APIを介してブロードキャスタ情報を取得するようにしてもよい。
In addition, the
通信I/F24によって呼び出し先解決サーバ10からブロードキャスタ情報を受信すると、コンポーネントサーバ20Aの制御部21は、ブロードキャスタ探索処理を実行する(A250)。
ブロードキャスタ探索処理において、コンポーネントサーバ20Aの制御部21は、限定ではなく例として、受信したブロードキャスタ情報とrpc処理要求情報とに基づいて、rpcメッセージ情報を送信するブロードキャスタ(この例では、一斉呼び出しサーバ40)を決定する。
When the broadcaster information is received from the call
In the broadcaster search process, the
より具体例には、コンポーネントサーバ20Aの制御部21は、限定ではなく例として、rpc処理要求情報におけるターゲットおよびルーティングキーの条件を満たすバインドキー情報を持つ一斉呼び出しサーバ40のサーバIDを探索するようにしてもよい。
限定ではなく例として、ターゲットが「ファンアウト」である場合、コンポーネントサーバ20Aの制御部21は、バインドキー情報がルーティングキーとマッチするサーバIDの一斉呼び出しサーバ40をブロードキャスタとするようにしてもよい。
また、限定ではなく例として、ターゲットが「ファンアウト」であり、ルーティングキーが「null(無指定)」である場合、コンポーネントサーバ20Aの制御部21は、任意のサーバIDの一斉呼び出しサーバ40をブロードキャスタとするようにしてもよいし、ロードアベレージが最も低いサーバIDの一斉呼び出しサーバ40をブロードキャスタとするようにしてもよい。
As a more specific example, the
As an example and not of limitation, when the target is "fan out", the
Also, as a non-limiting example, when the target is "fan out" and the routing key is "null (unspecified)," the
なお、ブロードキャスタの識別情報(限定ではなく例として、IPアドレスやAPIサーバのURI等)は、限定ではなく例として、httpメッセージングドライバ2515が記憶することとしてもよい。探索されたサーバIDは、ブロードキャスタの識別情報と言ってもよい。ブロードキャスタの識別情報は、限定ではなく例として、一斉呼び出しサーバ40が随時各コンポーネントサーバ20に送信するようにしてもよい。
The broadcaster identification information (such as, for example and not limitation, an IP address or an API server URI) may be stored by the
ブロードキャスタとなるサーバIDが探索されると、コンポーネントサーバ20Aの制御部21は、探索されたサーバIDに基づいて、rpcメッセージ情報を通信I/F24によって一斉呼び出しサーバ40に送信する(A270)。
また、一斉呼び出しサーバ40の制御部41は、通信I/F44によってコンポーネントサーバ20Aからrpcメッセージ情報を受信する(L210)。
When the server ID to be the broadcaster is found, the
Furthermore, the
rpcメッセージ情報の送受信において、限定ではなく例として、コンポーネントサーバ20Aのhttpデーモン処理部213と、一斉呼び出しサーバ40のhttpデーモン処理部413とは、httpに従って、情報の送受信を行うようにしてもよい。この場合、コンポーネントサーバ20Aの制御部21は、POSTメソッドによって一斉呼び出しサーバ40にrpcメッセージ情報を送信するようにしてもよい。また、一斉呼び出しサーバ40の制御部21は、GETメソッドによってコンポーネントサーバ20Aからrpcメッセージ情報を受信するようにしてもよい。
In sending and receiving rpc message information, as a non-limiting example, the http
なお、rpcメッセージ情報の送受信において、限定ではなく例として、コンポーネントサーバ20Aの制御部21は、一斉呼び出しサーバ40を示すURIに、限定ではなく例として、REST APIを介してrpcメッセージ情報を送信するようにしてもよい。
In addition, when sending and receiving RPC message information, as an example and not a limitation, the
また、rpcメッセージ情報の送受信において、http以外のプロトコル(限定ではなく例として、SSH(Secure Shell)等)を用いて通信するようにしてもよい。 In addition, when sending and receiving RPC message information, communication may be performed using a protocol other than HTTP (such as, but not limited to, SSH (Secure Shell)).
限定ではなく例として、rpcメッセージ情報の送受信にhttpを用いることで、呼び出し側のコンポーネントサーバ20A(インヴォーカ)は、一斉呼び出しサーバ40(ブロードキャスタ)にrpcメッセージ情報が届いたか否かを判定することができる。
By way of example and not limitation, by using HTTP to send and receive RPC message information, the
通信I/F44によってコンポーネントサーバ20Aからrpcメッセージ情報を受信すると、一斉呼び出しサーバ40の制御部41は、rpcメッセージ情報増幅送信処理を実行する(L230)。
rpcメッセージ情報増幅送信処理において、一斉呼び出しサーバ40の制御部41は、限定ではなく例として、コンポーネントサーバ一覧情報455を参照し、rpcメッセージ情報を通信I/F44によってブロードキャスタが送信するコンポーネントサーバ(ワーカ)一覧として登録された各コンポーネントサーバ20(限定ではなく例として、コンポーネントサーバ20A,コンポーネントサーバ20B,コンポーネントサーバ20C、・・・)に送信する。
また、コンポーネントサーバ20Bの制御部21は、通信I/F44によって一斉呼び出しサーバ40からrpcメッセージ情報を受信する(B110)。そして、一斉呼び出しサーバ40からrpcメッセージ情報を受信すると、コンポーネントサーバ20Bの制御部21は、コンポーネントプログラム処理を実行する(B130)。
When the RPC message information is received from the
In the RPC message information amplification and transmission process, the
The
rpcメッセージ情報の送受信において、限定ではなく例として、一斉呼び出しサーバ40のhttpデーモン処理部413と、コンポーネントサーバ20Bのhttpデーモン処理部213とは、httpに従って、情報の送受信を行うようにしてもよい。この場合、一斉呼び出しサーバ40の制御部41は、POSTメソッドによってコンポーネントサーバ20Bにrpcメッセージ情報を送信するようにしてもよい。また、コンポーネントサーバ20Bの制御部21は、GETメソッドによって一斉呼び出しサーバ40からrpcメッセージ情報を受信するようにしてもよい。
In sending and receiving rpc message information, as a non-limiting example, the http
なお、rpcメッセージ情報増幅送信処理において、一斉呼び出しサーバ40の制御部41は、rpcメッセージ情報の送信先がインヴォーカ(この場合、コンポーネントサーバ20A)である場合、rpcメッセージ情報を送信しないようにしてもよい。
In addition, in the rpc message information amplification and transmission process, the
また、rpcメッセージ情報の送受信において、http以外のプロトコル(限定ではなく例として、SSH(Secure Shell)等)を用いて通信するようにしてもよい。 In addition, when sending and receiving RPC message information, communication may be performed using a protocol other than HTTP (such as, but not limited to, SSH (Secure Shell)).
限定ではなく例として、rpcメッセージ情報の送受信にhttpを用いることで、一斉呼び出しサーバ40(ブロードキャスタ)は、手続き側の各コンポーネントサーバ20(ワーカ)にrpcメッセージ情報が届いたか否かを判定することができる。 By way of example and not limitation, by using HTTP to send and receive RPC message information, the mass call server 40 (broadcaster) can determine whether the RPC message information has reached each component server 20 (worker) on the procedure side.
なお、一斉呼び出しサーバ40の制御部41は、限定ではなく例として、手続き側の各コンポーネントサーバ20にrpcメッセージ情報が届いたと判定する場合、呼び出し側のコンポーネントサーバ20A(インヴォーカ)にrpcメッセージ情報が届いたことを示すrpcメッセージ到達情報を送信するようにしてもよい。
rpcメッセージ到達情報は、各ワーカにrpcメッセージ情報が届いたと判定するごとに送信するようにしてもよいし、すべてのワーカにrpcメッセージ情報が届いたと判定する場合、送信するようにしてもよい。
これにより、rpc.fanout通信においても、呼び出し側のコンポーネントサーバ20A(インヴォーカ)は、手続き側の各コンポーネントサーバ20(ワーカ)にrpcメッセージ情報が届いたか否かを判定することができる。
In addition, as a non-limiting example, when the
The RPC message arrival information may be sent each time it is determined that the RPC message information has reached each worker, or it may be sent when it is determined that the RPC message information has reached all workers.
As a result, even in rpc.fanout communication, the
また、一斉呼び出しサーバ40の制御部41は、限定ではなく例として、通信I/F44によってコンポーネントサーバ20Aからrpcメッセージ情報を受信すると、ワーカ一覧要求情報を呼び出し先解決サーバ10に送信することで、コンポーネントサーバ一覧情報455を更新するようにしてもよい。
Also, as a non-limiting example, when the
限定ではなく例として、rpc.fanout通信において、多数のワーカと通信する必要が生じる場合、インヴォーカは、ブロードキャスタを介して各ワーカにrpcメッセージ情報を送信することができる。このため、インヴォーカが直接各ワーカにrpcメッセージ情報を送信する(もしくはメッセージングキューを発行する)場合に比べて、インヴォーカの負荷を下げることができる。インヴォーカの通信負荷をコンポーネントプログラム処理に直接関わらないブロードキャスタに肩代わりさせることで、結果として、ソフトウエアコンポーネントを動作させるクラスタの負荷が下がり、ソフトウエアコンポーネントの動作安定性向上と処理の高速化を実現することができる。 By way of example and not limitation, in RPC.fanout communication, when it is necessary to communicate with multiple workers, the invoker can send RPC message information to each worker via a broadcaster. This reduces the load on the invoker compared to when the invoker sends RPC message information directly to each worker (or issues a messaging queue). By offloading the communication load of the invoker to a broadcaster that is not directly involved in component program processing, the load on the cluster that runs the software component is reduced, improving the operational stability of the software component and speeding up processing.
<第1実施例の効果>
本実施例は、インヴォーカであるコンポーネントサーバ20A(限定ではなく、第1サーバの一例)からワーカである少なくともコンポーネントサーバ20B(限定ではなく、第2サーバの一例)へのRPC(限定ではなく、プロセス間通信の一例)を行うサーバシステムにおいて、サーバシステムは、ワーカ一覧情報送信処理(限定ではなく、プロセス間通信先を特定することに関する処理の一例)を実行する呼び出し先解決サーバ10(限定ではなく、解決サーバの一例)を含む。そして、コンポーネントサーバ20Aの制御部21は、コンポーネントサーバ20Bを特定するためのワーカ一覧情報(限定ではなく、第1情報の一例)を呼び出し先解決サーバ10から受信すると、ワーカ一覧情報に基づいて、コンポーネントサーバ20Bにrpcメッセージ情報(限定ではなく、第2情報の一例)を送信する。また、コンポーネントサーバ20Bの制御部21は、コンポーネントサーバ20Aからrpcメッセージ情報を受信すると、rpcメッセージ情報に基づくコンポーネントプログラム処理(限定ではなく、第1処理の一例)を行う構成を示している。
このような構成により得られる実施例の効果の一例として、第1サーバは、解決サーバから受信する第1情報からプロセス間通信を行う相手の第2サーバを特定することができる。そして、第1サーバは、第2サーバにプロセス間通信の処理を要求するための第2情報を直接送信することができる。そして、第2サーバは、第1サーバから第2情報を直接受信し、第2情報に基づく第1処理を実行することができる。
結果として、サーバシステムの可用性を向上させることができる。
Effects of the First Embodiment
In this embodiment, in a server system that performs an RPC (not limited to, but an example of inter-process communication) from a
As an example of the effect of the embodiment obtained by such a configuration, the first server can identify the second server with which to perform inter-process communication from the first information received from the solution server. The first server can then directly transmit the second information for requesting processing of the inter-process communication to the second server. The second server can then directly receive the second information from the first server and execute the first processing based on the second information.
As a result, the availability of the server system can be improved.
また、本実施例は、rpcメッセージ情報がhttpに基づいて送受信される構成を示している。
このような構成により得られる実施例の効果の一例として、第2情報を、ステートレス性を持つプロトコルであるhttpに基づいて送受信することで、第1サーバと第2サーバとの制御部における通信負荷を下げることができる。そのため、ステートフル性を持つTCP(Transmission Control Protocol)やSSHに基づいて通信を行う場合に比べて、送受信処理に係る負荷を軽減することができる。
なお、AMQPでは、限定ではなく例として、TCPに基づいて通信を実行する。
Moreover, this embodiment shows a configuration in which RPC message information is transmitted and received based on HTTP.
As an example of an effect of the embodiment obtained by such a configuration, by transmitting and receiving the second information based on HTTP, which is a stateless protocol, the communication load on the control units of the first server and the second server can be reduced, and therefore the load related to the transmission and reception process can be reduced compared to the case where communication is based on TCP (Transmission Control Protocol) or SSH, which are stateful.
It should be noted that, by way of example and not limitation, AMQP performs communications based on TCP.
また、本実施例は、インヴォーカであるコンポーネントサーバ20Aの制御部21は、ワーカであるコンポーネントサーバ20Bがrpcメッセージ情報を受信したことを判定する構成を示している。
このような構成により得られる実施例の効果の一例として、第1サーバにおいて、第2サーバが第2情報を受信したか否かに基づく例外処理等を実行することが実現可能となる。結果として、サーバシステムの可用性を向上させることができる。
In addition, this embodiment shows a configuration in which the
As an example of an effect of the embodiment obtained by such a configuration, it is possible to realize the first server performing exception processing based on whether the second server has received the second information, thereby improving the availability of the server system.
また、本実施例は、コンポーネントサーバ20Aの制御部21は、RPC通信を制御するメッセージングモジュール2513(限定ではなく、ミドルウェアの一例)に組み込まれたhttpメッセージングドライバ2515(限定ではなく、メッセージングドライバの一例)を介して(httpメッセージングドライバに従って)ワーカ一覧情報を受信し、rpcメッセージ情報を送信する制御を行う。そして、コンポーネントサーバ20Bの制御部21は、httpメッセージングドライバ2515を介して(httpメッセージングドライバに従って)rpcメッセージ情報を受信する制御を行う構成を示している。
このような構成により得られる実施例の効果の一例として、第1サーバと第2サーバとで、ミドルウェアのメッセージングドライバを変更することで、容易にプロセス間通信の実現方法を変更することができる。そのため、サーバシステムのユーザは、メッセージングドライバを選択することで、プロセス間通信の実現方法を迅速かつ柔軟に調整することができる。
In this embodiment, the
As an example of the effect of the embodiment obtained by such a configuration, by changing the messaging driver of the middleware between the first server and the second server, the method of realizing inter-process communication can be easily changed. Therefore, the user of the server system can quickly and flexibly adjust the method of realizing inter-process communication by selecting the messaging driver.
また、本実施例は、ワーカであるコンポーネントサーバ20Bの制御部21は、rpcメッセージ情報に基づくコンポーネントプログラム処理に基づいて、rpc処理結果情報(限定ではなく、第3情報の一例)を送信する。そして、コンポーネントサーバ20Aの制御部21は、コンポーネントサーバ20Bからrpc処理結果情報を受信する構成を示している。
このような構成により得られる実施例の効果の一例として、第2サーバは、第1サーバにプロセス間通信の処理結果である第3情報を直接送信することができる。そして、第1サーバは、第2サーバから第3情報を直接受信し、プロセス間通信の処理を完了することができる。
結果として、サーバシステムの可用性を向上させることができる。
In this embodiment, the
As an example of an effect of the embodiment obtained by such a configuration, the second server can directly transmit the third information, which is the processing result of the inter-process communication, to the first server, and the first server can directly receive the third information from the second server and complete the processing of the inter-process communication.
As a result, the availability of the server system can be improved.
また、本実施例は、rpcメッセージ情報とrpc処理結果情報とがhttpに基づいて送受信される構成を示している。
このような構成により得られる実施例の効果の一例として、第2情報と第3情報とを、ステートレス性を持つプロトコルであるhttpに基づいて送受信することで、第1サーバと第2サーバとの制御部における通信負荷を下げることができる。そのため、ステートフル性を持つSMTP(Simple Mail Transfer Protocol)やFTP(File Transfer Protocol)に基づいて通信を行う場合に比べて、迅速に送受信の処理を実行することができる。
Moreover, this embodiment shows a configuration in which RPC message information and RPC processing result information are transmitted and received based on HTTP.
As an example of an effect of the embodiment obtained by such a configuration, the second information and the third information are transmitted and received based on HTTP, which is a stateless protocol, so that the communication load on the control units of the first server and the second server can be reduced, and therefore the transmission and reception process can be executed more quickly than when communication is performed based on SMTP (Simple Mail Transfer Protocol) or FTP (File Transfer Protocol), which are stateful.
また、本実施例は、ワーカであるコンポーネントサーバ20Bの制御部21は、インヴォーカであるコンポーネントサーバ20Aがrpc処理結果情報を受信したことを判定する構成を示している。
このような構成により得られる実施例の効果の一例として、第2サーバにおいて、第1サーバが第3情報を受信したか否かに基づく例外処理等を実行することが実現可能となる。結果として、サーバシステムのユーザがシステムデバッグ等を実行することをより容易とし、ユーザの利便性を向上させることができる。
In addition, this embodiment shows a configuration in which the
As an example of an effect of the embodiment obtained by such a configuration, it is possible to realize the second server to execute exception processing or the like based on whether the first server has received the third information or not. As a result, it becomes easier for the user of the server system to execute system debugging or the like, and the user convenience can be improved.
また、本実施例は、コンポーネントサーバ20Aの制御部21は、RPC通信を制御するメッセージングモジュール2513(限定ではなく、ミドルウェアの一例)に組み込まれたhttpメッセージングドライバ2515(限定ではなく、メッセージングドライバの一例)を介して(httpメッセージングドライバに従って)ワーカ一覧情報を受信し、rpcメッセージ情報を送信し、rpc処理結果情報を受信する制御を行う。そして、コンポーネントサーバ20Bの制御部21は、httpメッセージングドライバ2515を介して(httpメッセージングドライバに従って)rpcメッセージ情報を送信し、rpc処理結果情報を受信する制御を行う構成を示している。
このような構成により得られる実施例の効果の一例として、第1サーバと第2サーバとで、ミドルウェアのメッセージングドライバを変更することで、容易にプロセス間通信の実現方法を変更することができる。そのため、サーバシステムのユーザは、メッセージングドライバを選択することで、プロセス間通信の実現方法を迅速かつ柔軟に調整することができる。
In this embodiment, the
As an example of the effect of the embodiment obtained by such a configuration, by changing the messaging driver of the middleware between the first server and the second server, the method of realizing inter-process communication can be easily changed. Therefore, the user of the server system can quickly and flexibly adjust the method of realizing inter-process communication by selecting the messaging driver.
また、本実施例は、サーバシステムは、ワーカである少なくともコンポーネントサーバ20Bとコンポーネントサーバ20C(限定ではなく、第3サーバの一例)とにrpcメッセージ情報増幅送信処理(限定ではなく、プロセス間通信の処理を要求することに関する処理の一例)を実行する一斉呼び出しサーバ40(限定ではなく、増幅サーバの一例)を含む。そして、インヴォーカであるコンポーネントサーバ20Aの制御部21は、一斉呼び出しサーバ40を特定するためのブロードキャスタ情報(限定ではなく、第4情報の一例)を呼び出し先解決サーバ10から受信し、ブロードキャスタ情報に基づいて、一斉呼び出しサーバ40にrpcメッセージ情報(限定ではなく、第5情報の一例)を送信する。また、一斉呼び出しサーバ40の制御部41は、コンポーネントサーバ20Aからrpcメッセージ情報を受信すると、少なくともコンポーネントサーバ20Bとコンポーネントサーバ20Cとにrpcメッセージ情報を送信する。コンポーネントサーバ20Bとコンポーネントサーバ20Cとの制御部21は、rpcメッセージ情報を受信すると、rpcメッセージ情報に基づくコンポーネントプログラム処理(限定ではなく、第5情報に基づく処理の一例)を実行する構成を示している。
このような構成により得られる実施例の効果の一例として、第1サーバは、解決サーバから受信する第4情報から増幅サーバを特定することができる。そして、第1サーバは、プロセス間通信の処理を要求するための第5情報を1度だけ増幅サーバに送信することで、増幅サーバを中継して第2サーバと第3サーバとに第5情報を送信することができる。
また、第1サーバは、増幅サーバに第5情報を直接送信することができる。そして、増幅サーバは、少なくとも第2サーバと第3サーバとに、第5情報を直接送信することができる。
結果として、複数のサーバに対してプロセス間通信の処理を要求する場合、第1サーバが直接複数のサーバに対して第5情報を送信する場合に比べて、第1サーバの負荷を下げることができる。そして、サーバシステムの可用性を向上させることができる。
In addition, in this embodiment, the server system includes a simultaneous call server 40 (not limited to, but an example of an amplification server) that executes an RPC message information amplification and transmission process (not limited to, but an example of a process related to requesting a process for inter-process communication) to at least the
As an example of the effect of the embodiment obtained by such a configuration, the first server can identify the amplification server from the fourth information received from the resolution server. Then, the first server can transmit the fifth information for requesting the processing of the inter-process communication to the amplification server only once, and can transmit the fifth information to the second server and the third server via the amplification server.
Also, the first server can directly transmit the fifth information to the amplification server, and the amplification server can directly transmit the fifth information to at least the second server and the third server.
As a result, when a request for inter-process communication processing is made to a plurality of servers, the load on the first server can be reduced compared to when the first server directly transmits the fifth information to the plurality of servers, and the availability of the server system can be improved.
また、本実施例は、rpcメッセージ情報がhttpに基づいて送受信される構成を示している。
このような構成により得られる実施例の効果の一例として、第5情報を、ステートレス性を持つプロトコルであるhttpに基づいて送受信することで、第1サーバと第2サーバとの制御部における通信負荷を下げることができる。そのため、ステートフル性を持つプロトコルに基づいて通信を行う場合に比べて、迅速に送受信の処理を実行することができる。
Moreover, this embodiment shows a configuration in which RPC message information is transmitted and received based on HTTP.
As an example of an effect of the embodiment obtained by such a configuration, by transmitting and receiving the fifth information based on HTTP, which is a stateless protocol, the communication load on the control units of the first server and the second server can be reduced, and therefore, the transmission and reception process can be executed more quickly than in the case of communication based on a stateful protocol.
また、本実施例は、コンポーネントサーバ20Aの制御部21は、RPC通信を制御するメッセージングモジュール2513(限定ではなく、ミドルウェアの一例)に組み込まれたhttpメッセージングドライバ2515(限定ではなく、メッセージングドライバの一例)を介して(httpメッセージングドライバに従って)ブロードキャスタ情報を受信し、rpcメッセージ情報を送信する制御を行う。そして、コンポーネントサーバ20Bとコンポーネントサーバ20Cとの制御部21は、httpメッセージングドライバ2515を介して(httpメッセージングドライバに従って)rpcメッセージ情報を受信する制御を行う構成を示している。
このような構成により得られる実施例の効果の一例として、第1サーバと第2サーバとで、ミドルウェアのメッセージングドライバを変更することで、容易にプロセス間通信の実現方法を変更することができる。そのため、サーバシステムのユーザは、メッセージングドライバを選択することで、プロセス間通信の実現方法を迅速かつ柔軟に調整することができる。
In this embodiment, the
As an example of the effect of the embodiment obtained by such a configuration, by changing the messaging driver of the middleware between the first server and the second server, the method of realizing inter-process communication can be easily changed. Therefore, the user of the server system can quickly and flexibly adjust the method of realizing inter-process communication by selecting the messaging driver.
また、本実施例は、プロセス間通信がRPCに基づく構成を示している。
このような構成により得られる実施例の効果の一例として、RFC(Request For Comments)で規定され、標準化された技術として種々のシステムにおいて広く用いられているRPCに基づいて、プロセス間通信を実現することができる。そのため、ユーザの利便性を向上させることができる。
Furthermore, this embodiment shows a configuration in which inter-process communication is based on RPC.
As an example of the effect of the embodiment obtained by such a configuration, inter-process communication can be realized based on RPC, which is defined in RFC (Request For Comments) and is widely used in various systems as a standardized technology, thereby improving user convenience.
<第1変形例(1)>
上記の実施例では、ワーカ探索処理はインヴォーカとなったコンポーネントサーバ20Aにおいて実行することとしたが、これに限定されない。限定ではなく例として、ワーカ探索処理を呼び出し先解決サーバ10で実行するようにしてもよい。
<First Modification (1)>
In the above embodiment, the worker search process is executed in the
この場合、限定ではなく例として、図1-9において、コンポーネントサーバ20Aの制御部21は、限定ではなく例として、rpc.call処理を実行開始すると(A110)、限定ではなく例として、rpc処理要求情報におけるターゲットとルーティングキーとを含むワーカ探索要求情報を通信I/F24によって呼び出し先解決サーバ10に送信するようにしてもよい。
In this case, as an example and not a limitation, in FIG. 1-9, when the
通信I/F14によってコンポーネントサーバ20Aからワーカ探索要求情報を受信すると、呼び出し先解決サーバ10の制御部11は、限定ではなく例として、呼び出し先管理データ153を参照し、限定ではなく例として、サーバ役割情報が「ワーカ」であるサーバIDの各レコードと、ワーカ探索要求情報とに基づいて、ワーカ探索処理を実行する。
ワーカ探索処理については、限定ではなく例として、コンポーネントサーバ20Aの制御部21におけるワーカ探索処理と同様に実行するようにしてもよい。
When worker search request information is received from the
The worker search process may be executed in the same manner as the worker search process in the
ワーカ探索処理を実行すると、呼び出し先解決サーバ10の制御部11は、限定ではなく例として、探索されたサーバIDを含むワーカ解決情報を通信I/F14によってコンポーネントサーバ20Aに送信するようにしてもよい。
そして、コンポーネントサーバ20Aの制御部21は、受信したワーカ解決情報に基づいて、rpcメッセージ情報を通信I/F24によってコンポーネントサーバ20Bに送信するようにしてもよい。
When the worker search process is executed, the
Then, the
ワーカ探索処理を呼び出し先解決サーバ10において実行することにより、各コンポーネントサーバ20の処理負荷を呼び出し先解決サーバ10に負荷分散させ、ソフトウエアコンポーネントの処理速度を向上させることができるとともに、より柔軟なスケーリングに対応可能とすることが期待できる。
By executing the worker search process on the called
<第1変形例(2)>
上記の実施例では、ワーカとなったコンポーネントサーバ20Bがrpcメッセージ情報を受信すると、rpcメッセージ情報に基づくコンポーネントプログラム処理を実行することとしたが、これに限定されない。
限定ではなく例として、インヴォーカとなったコンポーネントサーバ20Aの制御部21は、コンポーネントサーバ20Bがrpcメッセージ情報を受信したと判定し、その後所定時間(限定ではなく例として、「60秒」)が経過した後もrpc処理結果情報を受信しない場合、ワーカに何らかのトラブルが発生したと判定するようにしてもよい。
<First Modification (2)>
In the above embodiment, when the
As an example and not as a limitation, the
この場合、コンポーネントサーバ20Aの制御部21は、限定ではなく例として、ワーカに送信したrpcメッセージ情報に基づく処理を中止させるためのRPC中止要求情報を、限定ではなく例として、httpメッセージングドライバを介して通信I/F24によってコンポーネントサーバ20Bに送信するようにしてもよい。
In this case, the
また、コンポーネントサーバ20Aの制御部21は、限定ではなく例として、メッセージングモジュールにおいて、要求されたrpc.call処理に基づくrpc処理要求情報を再生成し、限定ではなく例として、ワーカ探索処理とrpcメッセージ情報送信処理とをやり直すようにしてもよい。
In addition, the
なお、やり直しのワーカ探索処理において、コンポーネントサーバ20Aの制御部21は、前回探索されたワーカ(例えば、コンポーネントサーバ20B)とは異なるワーカを送信先として決定するようにしてもよい。
In addition, in a retry worker search process, the
これにより、プロセス間通信におけるデッドロックを防ぐとともに、プロセス間通信のリトライをメッセージングモジュールのレベル(レイヤー)で実行させることができる。 This prevents deadlocks in inter-process communication and allows inter-process communication retries to be performed at the messaging module level (layer).
<第1変形例(3)>
上記の実施例では、rpc.fanout処理において、インヴォーカとなったコンポーネントサーバ20Aの制御部21は、一の一斉呼び出しサーバ40にrpcメッセージ情報を送信することとしたが、これに限定されない。
限定ではなく例として、ブロードキャスタ探索処理において、コンポーネントサーバ20Aの制御部21は、複数のサーバIDを探索結果として出力するようにしてもよい。
そして、コンポーネントサーバ20Aの制御部21は、探索結果となった複数のサーバIDに対応する一斉呼び出しサーバ40(限定ではなく例として、一斉呼び出しサーバ40A,一斉呼び出しサーバ40B,・・・等)にrpcメッセージ情報を送信するようにしてもよい。
<First Modification (3)>
In the above embodiment, in the rpc.fanout process, the
As a non-limiting example, in the broadcaster search process, the
Then, the
これにより、fanout先のワーカが膨大な数となる場合においても、ブロードキャスタの負荷を分散させることで迅速にプロセス間通信の仲介を行うことができる。 This makes it possible to distribute the load on the broadcaster and quickly mediate inter-process communication even when there are a huge number of fanout workers.
また、限定ではなく例として、異なる一斉呼び出しサーバ40ごとに異なるバインドキー情報を与えるようにしてもよい。そして、ブロードキャスタ探索処理において、コンポーネントサーバ20Aの制御部21は、ワーカ探索処理と同様にルーティングキーとマッチする複数の一斉呼び出しサーバ40を探索結果として出力できるようにしてもよい。
Also, as a non-limiting example, different bind key information may be provided for each different
これにより、インヴォーカは多くの異なるワーカに対して柔軟にかつ簡潔にプロセス間通信を実現することができる。 This allows the invoker to implement inter-process communication flexibly and succinctly across many different workers.
<第1変形例(4)>
上記の実施例では、一斉呼び出しサーバ40の制御部41は、予めコンポーネントサーバ一覧情報455を更新することとしたが、これに限定されない。
<First Modification (4)>
In the above embodiment, the
限定ではなく例として、一斉呼び出しサーバ40の制御部41は、インヴォーカであるコンポーネントサーバ20Aからrpcメッセージ情報を受信すると、ワーカ一覧要求情報を通信I/F44によって呼び出し先解決サーバ10に送信するようにしてもよい。そして、一斉呼び出しサーバ40からワーカ一覧要求情報を受信すると、呼び出し先解決サーバ10の制御部11は、通信I/F14によって一斉呼び出しサーバ40にワーカ一覧情報を送信するようにしてもよい。
通信I/F44によって呼び出し先解決サーバ10からワーカ一覧情報を受信すると、一斉呼び出しサーバ40の制御部41は、受信したワーカ一覧情報に基づいて、コンポーネントサーバ一覧情報455を更新するようにしてもよい。
As a non-limiting example, when the
When the communication I/
一斉呼び出しサーバ40の制御部41は、限定ではなく例として、コンポーネントサーバ一覧情報455を更新すると、rpcメッセージ情報増幅送信処理を実行するようにしてもよい。
By way of example and not limitation, the
これにより、一斉呼び出しサーバ40の制御部41は、逐次最新のワーカ一覧情報に基づいて、rpcメッセージ情報増幅送信処理を実行することができ、rpcメッセージ情報の送信漏れやワーカとしての機能を停止しているコンポーネントサーバ20へのrpcメッセージ情報の誤送信を防ぐことができる。
This allows the
<第1変形例(5)>
上記の実施例では、手続き側からの応答を期待しないrpc.fanout通信について例示したが、これに限定されない。限定ではなく例として、rpc.fanout通信において、手続き側からの応答を受け取るようにしてもよい。
<First Modification (5)>
In the above embodiment, the rpc.fanout communication is exemplified, in which no response is expected from the procedure side, but the present invention is not limited to this. As a non-limiting example, the rpc.fanout communication may receive a response from the procedure side.
この場合、限定ではなく例として、図1-11において、コンポーネントサーバ20Bの制御部21は、コンポーネントプログラム処理を実行すると(B130)、コンポーネントプログラム処理の処理結果を含むrpc処理結果情報を通信I/F24によってコンポーネントサーバ20Aに送信するようにしてもよい。他のワーカとなるコンポーネントサーバについても同様である。
In this case, by way of example and not limitation, in FIG. 1-11, when the
なお、コンポーネントサーバ20Bの制御部21は、コンポーネントプログラム処理を実行すると、限定ではなく例として、rpc処理結果情報を通信I/F24によってrpcメッセージ情報を受信した一斉呼び出しサーバ40に送信するようにしてもよい。そして、一斉呼び出しサーバ40の制御部41は、コンポーネントサーバ20Bからrpc処理結果情報を受信すると、rpcメッセージ情報を受信したコンポーネントサーバ20Aにrpc処理結果情報を送信するようにしてもよい。他のワーカとなるコンポーネントサーバについても同様である。
When the
また、一斉呼び出しサーバ40の制御部41は、rpcメッセージ情報増幅送信処理におけるrpcメッセージ情報の送受信が完了すると(L230)、インヴォーカであるコンポーネントサーバ20Aに、rpcメッセージ情報の送受信(A270:L210)に伴うhttpリクエストのレスポンスを送受信するようにしてもよい。
In addition, when the transmission and reception of the RPC message information in the RPC message information amplification and transmission process is completed (L230), the
すなわち、手続き側からの応答を期待するrpc.fanout通信として、限定ではなく例として、以下の2パターンの実装が可能である。
(1).rpc.callのfanout。
(2).rpc.castのfanoutにおける実行完了確認。
That is, as an example, but not limited to, the following two patterns of implementation are possible for rpc.fanout communication that expects a response from the procedure side.
(1). RPC. Call fanout.
(2) Confirm completion of execution of .rpc.cast in fanout.
<第2実施例>
クラウドコンピューティングでは、システムの可用性を向上させるためや、災害対策として、物理サーバが設置されている場所(限定ではなく例として、データセンタ等)ごとに分離したシステムを冗長して分散運用することがある(いわゆるマルチリージョンやマルチゾーン)。
第2実施例は、限定ではなく例として、インヴォーカが、リージョンやゾーン(可用性ゾーン)をまたいでワーカを呼び出し可能な実施例である。
Second Example
In cloud computing, in order to improve system availability or as a disaster prevention measure, systems are sometimes operated in a redundant and distributed manner (so-called multi-region or multi-zone) by separating them into separate systems for each location where a physical server is installed (for example, but not limited to, a data center).
A second embodiment is an embodiment, by way of example and not limitation, in which an invoker can invoke workers across regions and zones (availability zones).
第2実施例に記載の内容は、他の各実施例や他の各変形例のいずれにも適用可能である。
また、既出の構成要素と同一の構成要素については同一の符号を付して、再度の説明を省略する。
The contents described in the second embodiment are applicable to any of the other embodiments and other modified examples.
Furthermore, the same components as those already mentioned are given the same reference numerals and will not be described again.
第2実施例では、限定ではなく例として、データセンタ間をまたいだマルチリージョン構成について例示する。
以下では、データセンタAに属する呼び出し先解決サーバ10を「呼び出し先解決サーバ10´」、データセンタBに属する呼び出し先解決サーバ10を「呼び出し先解決サーバ10´´」、データセンタCに属する呼び出し先解決サーバ10を「呼び出し先解決サーバ10´´´」、・・・と「´」の数で区別することとする。他のコンポーネントサーバ20や一斉呼び出しサーバ40についても同様である。
In the second embodiment, a multi-region configuration spanning data centers will be illustrated as an example and not a limitation.
In the following, the call
図2-1は、本実施例におけるマルチリージョン通信システム構成と処理の流れの概念を示すブロック図である。
なお、図の簡略化のため、各サーバ間を結ぶネットワーク30については図示を省略する。また、ブロック図中において、丸印に数字で書かれる内容を、文中では便宜上「((数字))」と表記することとする。
また、本ブロック図では、限定ではなく例として、データセンタAのコンポーネントサーバ20A´をrpcの呼び出し側(インヴォーカ)、データセンタBのコンポーネントサーバ20B´´をrpcの手続き側(ワーカ)とする。
FIG. 2A is a block diagram showing the concept of the multi-region communication system configuration and processing flow in this embodiment.
In order to simplify the diagram, the
In addition, in this block diagram, as an example and not a limitation, the
また、以下では、限定ではなく例として、各データセンタ内における接続をネットワーク30X(ネットワーク30A、ネットワーク30B、ネットワーク30C、・・・)、各データセンタ間を接続するためのネットワーク30を「グローバルネットワーク30」とそれぞれ称する。
Furthermore, in the following, as an example and not a limitation, the connections within each data center will be referred to as network 30X (network 30A, network 30B, network 30C, ...), and the
一般に、各データセンタ内におけるネットワーク30Xに比べて、グローバルネットワーク30の接続性能は低くなる(限定ではなく例として、レイテンシが大きい、および/または、スループットが小さい)。
In general, the
マルチリージョン通信システムでは、限定ではなく例として、データセンタAにおいて、ネットワーク30Aを介して、呼び出し先解決サーバ10´と、一斉呼び出しサーバ40´と、複数のコンポーネントサーバ20´(コンポーネントサーバ20A´,コンポーネントサーバ20B´,コンポーネントサーバ20C´,・・・)とが接続される。
また、限定ではなく例として、データセンタBにおいて、ネットワーク30Bを介して、呼び出し先解決サーバ10´´と、一斉呼び出しサーバ40´´と、複数のコンポーネントサーバ20´´(コンポーネントサーバ20A´´,コンポーネントサーバ20B´´,コンポーネントサーバ20C´´,・・・)とが接続される。
また、限定ではなく例として、データセンタCにおいて、ネットワーク30Cを介して、呼び出し先解決サーバ10´´´と、一斉呼び出しサーバ40´´´と、複数のコンポーネントサーバ20´´´(コンポーネントサーバ20A´´´,コンポーネントサーバ20B´´,コンポーネントサーバ20C´´´,・・・)とが接続される。
In a multi-region communication system, as an example and not a limitation, in a data center A, a call destination resolution server 10', a mass call server 40', and multiple component servers 20' (
Also, as an example and not a limitation, in data center B, a call destination resolution server 10'', a mass call server 40'', and multiple component servers 20'' (
Also, as an example and not a limitation, in data center C, a call destination resolution server 10'''', a mass call server 40'''', and a plurality of component servers 20''' (
他のデータセンタについても同様である。 The same applies to other data centers.
以下に、本実施例において各装置が実行する処理の流れの一例を示す。
なお、処理に先立ち、前述したように、各データセンタにおいて、各コンポーネントサーバ20の制御部21は、コンポーネントプログラム処理とhttpデーモン処理とを開始する。そして、呼び出し先解決サーバ10の制御部11は、限定ではなく例として、データセンタ内の各サーバ20について、呼び出し先管理データ153を更新する。また、一斉呼び出しサーバ40の制御部41は、限定ではなく例として、データセンタをまたいだ各サーバ20について、コンポーネントサーバ一覧情報455を更新する。
An example of the flow of processing executed by each device in this embodiment will be shown below.
Prior to the processing, as described above, in each data center, the
((1)).各データセンタの呼び出し先解決サーバ10(呼び出し先解決サーバ10´,呼び出し先解決サーバ10´´,呼び出し先解決サーバ10´´´,・・・)の制御部11は、限定ではなく例として、グローバルネットワーク30を介して、各々の呼び出し先管理データ153を同期させる。
なお、呼び出し先解決サーバ10の制御部11は、限定ではなく例として、呼び出し先管理データ153を所定時刻(限定ではなく例として、「毎分00秒」)または所定期間(限定ではなく例として、「60秒」)ごと同期するようにしてもよい。
((1)). The
In addition, the
((2)).データセンタAのサーバ20A´の制御部21は、限定ではなく例として、コンポーネントプログラムにおけるrpc.call手続きに基づいて、rpc.call処理を実行開始する。サーバ20A´の制御部21は、限定ではなく例として、httpメッセージングドライバ2515に従って、rpc処理要求情報に基づいて、ワーカ一覧要求情報を同じデータセンタ内の呼び出し先解決サーバ10´に送信する。
なお、呼び出し先解決サーバ10´が停止している場合、サーバ20A´の制御部21は、限定ではなく例として、ワーカ一覧要求情報を最も近しい(限定ではなく例として、サーバ10とのレイテンシが低い、および/または、物理サーバが設置されている距離が近い)データセンタの呼び出し先解決サーバ10に送信するようにしてもよい。
((2)). The
In addition, when the destination resolution server 10' is stopped, the
((3)).呼び出し先解決サーバ10´の制御部11は、限定ではなく例として、ワーカ更新処理を実行する。そして、呼び出し先解決サーバ10´の制御部11は、限定ではなく例として、ワーカ一覧情報をサーバ20A´に送信する。
呼び出し先管理データ153の同期のタイミング等の問題により、呼び出し先解決サーバ10´の呼び出し先管理データ153には、別データセンタのサーバ20B´´が登録されていない可能性が生じる。
呼び出し先解決サーバ10´からワーカ一覧情報を受信すると、コンポーネントサーバ20A´の制御部21は、ワーカ探索処理を実行する。ワーカ探索処理において、限定ではなく例として、別データセンタのサーバ20B´´が探索結果として探索できず、ワーカ探索処理が失敗するとする。
((3)) The
Due to a problem such as the timing of synchronization of the
When receiving the worker list information from the call
なお、ワーカ探索処理が成功した場合、コンポーネントサーバ20A´の制御部21は、rpcメッセージ情報送信処理を実行する。
If the worker search process is successful, the
((4)).ワーカ探索処理が失敗した場合、コンポーネントサーバ20A´の制御部21は、ワーカ一覧要求情報を最も近いデータセンタ内の呼び出し先解決サーバ10´´に送信する。
((4)) If the worker search process fails, the
((5)).呼び出し先解決サーバ10´´の制御部11は、限定ではなく例として、ワーカ更新処理を実行する。そして、呼び出し先解決サーバ10´´の制御部11は、限定ではなく例として、呼び出し先解決サーバ10´´の呼び出し先管理データ153に基づいて、ワーカ一覧要求情報をサーバ20A´に送信する。
((5)). The
((6)).呼び出し先解決サーバ10´´からワーカ一覧情報を受信すると、コンポーネントサーバ20A´の制御部21は、ワーカ探索処理を実行する。ワーカ探索処理が成功すると、コンポーネントサーバ20A´の制御部21は、rpcメッセージ情報をワーカであるコンポーネントサーバ20B´´に送信する。
((6)). Upon receiving the worker list information from the called resolution server 10'', the
なお、ワーカ探索処理が失敗した場合、コンポーネントサーバ20A´の制御部21は、再度ワーカ一覧要求情報を次に近いデータセンタ内の呼び出し先解決サーバ10´´´に送信する。
If the worker search process fails, the
これにより、ワーカであるサーバ20A´の制御部21は、接続性能が低いグローバルネットワーク30の使用を最小限に抑えることができる。また、各データセンタにおいて、呼び出し先解決サーバ10は自立して動作を行うため、冗長性を保つことができる。
This allows the
従来手法であるメッセージキューイングサービスを用いる場合と比較を行う。
限定ではなく例として、データセンタごとにコンポーネントサーバ20のクラスタを構成し、冗長化を行う場合、データセンタ間をまたいで一のメッセージキューイングサービスを構成する単一クラスタ方式では、メッセージキューイングサービスがデータセンタをまたいで通信を行うトラヒックが増大し、グローバルネットワーク30がボトルネックとなりクラスタ全体のパフォーマンスが頭打ちになるという問題が発生する。
A comparison is made with the conventional method using a message queuing service.
As a non-limiting example, when configuring a cluster of component servers 20 for each data center to provide redundancy, in a single cluster system in which one message queuing service is configured across data centers, the traffic of the message queuing service communicating across data centers increases, causing the
また、単一クラスタ方式では、メッセージキューイングサービスに複数データセンタに配置されるすべてのコンポーネントサーバ20が接続されるため、データセンタ数を増やすほどメッセージキューイングサービスに接続されるサーバ数が比例して増加し、メッセージキューイングサービスの負荷が増大するという問題が発生する。 In addition, in the single cluster system, all component servers 20 located in multiple data centers are connected to the message queuing service, so as the number of data centers increases, the number of servers connected to the message queuing service increases proportionally, resulting in a problem of increased load on the message queuing service.
データセンタごとにメッセージキューイングサービスを構成する複数クラスタ方式では、上記の問題を解決することが可能であるが、限定ではなく例として、メッセージングモジュール2513において複数のメッセージキューイングサービスをサポートしていることが望ましい。メッセージングモジュール2513において複数のメッセージキューイングサービスをサポートするためには、限定ではなく例として、データセンタごとのメッセージキューイングサービスのアクセス先とMQクラスタとのマッピングや、データセンタごとのメッセージキューイングサービスの動作状態等を管理する必要が生じる。このため、メッセージングモジュール2513の構成が複雑になり、プログラムコンポーネントクラスタ全体の負荷が上がるという問題が発生する。
The above problem can be solved by a multiple cluster method in which a message queuing service is configured for each data center, but by way of example and not limitation, it is desirable for the
また、限定ではなく例として、メッセージングモジュール2513において複数のメッセージキューイングサービスをサポートしていない場合(限定ではなく例として、「oslo.messaging」モジュール)、ソフトウエアコンポーネント側で複数のメッセージキューイングサービスをサポートする必要が生じ、メッセージングモジュール2513を介してプロセス間通信を実現する際の利便性が低下するという問題が発生する。
Furthermore, by way of example and not limitation, if
これに対して、提案手法では、各データセンタ間が自立的に動作可能な複数クラスタ方式を取りながら、インヴォーカが属するデータセンタの呼び出し先解決サーバ10を優先して呼び出すことで、データセンタ間をまたいだトラヒックの増加を最小限に抑えることができる。
In contrast, the proposed method uses a multiple cluster approach that allows each data center to operate autonomously, and prioritizes calling the call
また、httpメッセージングドライバ2515がデータセンタをまたいだ場合においてもプロセス間通信のエンドポイント(インヴォーカとワーカ)の識別情報を管理できるため、メッセージングモジュール2513やコンポーネント処理プログラム251を変更する必要が発生せず、メッセージングモジュール2513を介してプロセス間通信を実現する際の利便性を向上させることができる。
In addition, since the
<第2実施例の効果>
本実施例は、サーバシステムに、データセンタAに属する呼び出し先解決サーバ10´(限定ではなく、解決サーバ)とは異なるデータセンタB(限定ではなく、リージョンまたはゾーンの一例)に属する呼び出し先解決サーバ10´´(限定ではなく、第1解決サーバの一例)を含む。そして、インヴォーカであるコンポーネントサーバ20A´の制御部21は、呼び出し先解決サーバ10´から受信するワーカ一覧情報(限定ではなく、第1情報の一例)に基づいて、ワーカであるコンポーネントサーバ20B´´のサーバID(限定ではなく、識別情報の一例)が探索出来ない場合(限定ではなく、解決できない場合の一例)、コンポーネントサーバ20B´´を特定するためのワーカ一覧情報(限定ではなく例として、第6情報の一例)を呼び出し先解決サーバ10´´から受信する。すると、コンポーネントサーバ20Aの制御部21は、呼び出し先解決サーバ10´´から受信したワーカ一覧情報(限定ではなく、第6情報の一例)に基づいて、コンポーネントサーバ20B´´にrpcメッセージ情報を送信する構成。を示している。
このような構成により得られる実施例の効果の一例として、第1サーバは、解決サーバから受信した第1情報では第2サーバを識別できない場合、第1解決サーバから受信した第6情報を用いて第2サーバを識別することができる。そのため、第1サーバは、解決サーバと第1解決サーバとで異なるリージョンまたはゾーンをまたいで冗長構成される解決サーバシステムを利用してプロセス間通信の相手である第2サーバを特定することができる。
結果として、サーバシステムの可用性を向上させることができる。
<Effects of the Second Example>
In this embodiment, the server system includes a callee resolution server 10'' (not limited to, an example of a first resolution server) belonging to a data center B (not limited to, an example of a region or zone) different from the callee resolution server 10' (not limited to, a resolution server) belonging to the data center A. Then, when the
As an example of the effect of the embodiment obtained by such a configuration, when the first server cannot identify the second server by the first information received from the resolution server, the first server can identify the second server by using the sixth information received from the first resolution server. Therefore, the first server can specify the second server, which is the other party of the inter-process communication, by using the resolution server system in which the resolution server and the first resolution server are redundantly configured across different regions or zones.
As a result, the availability of the server system can be improved.
また、本実施例では、rpcメッセージ情報がhttpに基づいて送受信される。そして、インヴォーカであるコンポーネントサーバ20A´の制御部21はRPC通信を制御するメッセージングモジュール2513(限定ではなく、ミドルウェアの一例)に組み込まれたhttpメッセージングドライバ2515(限定ではなく、メッセージングドライバの一例)を介して(httpメッセージングドライバに従って)ワーカ一覧情報(限定ではなく、第1情報と第6情報との一例)を受信し、rpcメッセージ情報を送信する制御を行う。そして、コンポーネントサーバ20B´´の制御部21は、httpメッセージングドライバ2515を介して(httpメッセージングドライバに従って)rpcメッセージ情報を受信する制御を行う構成を示している。
このような構成により得られる実施例の効果の一例として、第1サーバと第2サーバとで、ミドルウェアのメッセージングドライバを変更することで、容易にプロセス間通信の実現方法を変更することができる。そのため、サーバシステムのユーザは、メッセージングドライバを選択することで、プロセス間通信の実現方法を容易に変更することができる。
In this embodiment, RPC message information is sent and received based on HTTP. The
As an example of the effect of the embodiment obtained by such a configuration, by changing the messaging driver of the middleware between the first server and the second server, the method of realizing inter-process communication can be easily changed. Therefore, the user of the server system can easily change the method of realizing inter-process communication by selecting the messaging driver.
また、本実施例は、コンポーネントサーバ20A´と呼び出し先解決サーバ10´とは同じデータセンタA(限定ではなく、同じリージョンまたはゾーンの一例)に属し、コンポーネントサーバ20A´の制御部21は、コンポーネントサーバ20A´との通信レイテンシが最も低い(限定ではなく、最も近しいリージョンまたはゾーンに属する一例)呼び出し先解決サーバ10´´からワーカ一覧情報を受信する構成を示している。
このような構成により得られる実施例の効果の一例として、リージョンまたはゾーンをまたぐ通信による処理の遅延を最小化することができる。また、リージョンまたはゾーンをまたぐ通信の発生を最小化することができる。結果として、リージョンまたはゾーンによる冗長化構成を保ちつつ、サーバシステム全体で発生する通信負荷を下げることができる。
In addition, in this embodiment, the
As an example of the effect of the embodiment obtained by such a configuration, it is possible to minimize the processing delay caused by communication across regions or zones. Also, it is possible to minimize the occurrence of communication across regions or zones. As a result, it is possible to reduce the communication load generated in the entire server system while maintaining a redundant configuration based on regions or zones.
<第2変形例(1)>
上記の実施例では、データセンタ間をまたいだマルチリージョン構成について例示したが、これに限定されない。限定ではなく例として、各データセンタを可用性ゾーンとみなすことで、マルチゾーンについても同様に実現することができる。
また、マルチリージョンとマルチゾーンとを併用するマルチサイトについても同様に実現可能である。
<Second Modification Example (1)>
In the above embodiment, a multi-region configuration across data centers is illustrated, but is not limited to this. By way of example and not limitation, a multi-zone configuration can be similarly realized by regarding each data center as an availability zone.
Similarly, a multi-site system using both multi-regions and multi-zones can be realized.
<第2変形例(2)>
上記の実施例では、ワーカ探索処理はインヴォーカとなったコンポーネントサーバ20A´において実行することとしたが、これに限定されない。限定ではなく例として、ワーカ探索処理を各データセンタの呼び出し先解決サーバ10で実行するようにしてもよい。
<Second Modification Example (2)>
In the above embodiment, the worker search process is executed in the
図2-2は、本変形例におけるマルチリージョン通信システム構成と処理の流れの概念を示すブロック図である。 Figure 2-2 is a block diagram showing the concept of the multi-region communication system configuration and processing flow in this modified example.
以下に、本変形例において各装置が実行する処理の流れの一例を示す。
なお、処理に先立ち、前述のように、限定ではなく例として、データセンタ内の各サーバ20について、呼び出し先管理データ153とコンポーネントサーバ一覧情報455とが更新されることとしてもよい。
An example of the flow of processes executed by each device in this modified example will be shown below.
Prior to the processing, as described above, by way of example and not limitation, the
((1)).各データセンタの呼び出し先解決サーバ10(呼び出し先解決サーバ10´,呼び出し先解決サーバ10´´,呼び出し先解決サーバ10´´´,・・・)の制御部11は、限定ではなく例として、グローバルネットワーク30を介して、各々の呼び出し先管理データ153を同期させる。
((1)). The
((2)).データセンタAのサーバ20A´の制御部21は、限定ではなく例として、コンポーネントプログラムにおけるrpc.call手続きに基づいて、rpc.call処理を実行開始する。サーバ20A´の制御部21は、限定ではなく例として、httpメッセージングドライバ2515に従って、rpc処理要求情報に基づいて、ワーカ探索要求情報を同じデータセンタ内の呼び出し先解決サーバ10´に送信する。
なお、呼び出し先解決サーバ10´が停止している場合、サーバ20A´の制御部21は、限定ではなく例として、ワーカ探索要求情報を最も近い(限定ではなく例として、サーバ10とのレイテンシが低い)データセンタの呼び出し先解決サーバ10に送信するようにしてもよい。
((2)). The
In addition, when the destination resolution server 10' is stopped, the
((3)).呼び出し先解決サーバ10´の制御部11は、限定ではなく例として、ワーカ更新処理を実行する。そして、呼び出し先解決サーバ10´の制御部11は、限定ではなく例として、呼び出し先解決サーバ10´の呼び出し先管理データ153を参照し、ワーカ探索処理を実行する。
ワーカ探索処理において、呼び出し先管理データ153の同期のタイミング等の問題により、呼び出し先解決サーバ10´の呼び出し先管理データ153から手続き側のサーバ(この例では、サーバ10B´´)が探索出来ない場合、呼び出し先解決サーバ10´の制御部11は、限定ではなく例として、ワーカ探索要求情報を最も近いデータセンタの呼び出し先解決サーバ10´´に送信する。
((3)) The
In the worker search process, if the procedure side server (in this example, server 10B") cannot be found from the
なお、ワーカ探索処理において、呼び出し先解決サーバ10´の呼び出し先管理データ153から手続き側のサーバが探索出来る場合、呼び出し先解決サーバ10´の制御部11は、ワーカ解決情報をサーバ20A´に送信する。
In addition, in the worker search process, if the procedure side server can be found from the
((4)).通信I/F14によって呼び出し先解決サーバ10´からワーカ探索要求情報を受信すると、呼び出し先解決サーバ10´´の制御部11は、限定ではなく例として、呼び出し先解決サーバ10´´の呼び出し先管理データ153を参照し、ワーカ探索処理を実行する。
ワーカ探索処理において、呼び出し先解決サーバ10´´の制御部11は、呼び出し先解決サーバ10´´の呼び出し先管理データ153から手続き側のサーバ(この例では、サーバ10B´´)が探索されると、ワーカ解決情報をサーバ20A´に送信する。
((4)) When worker search request information is received from the call
In the worker search process, when the
なお、呼び出し先解決サーバ10´´の制御部11は、ワーカ解決情報を呼び出し先解決サーバ10´を介してサーバ20A´に送信するようにしてもよい。
The
呼び出し先解決サーバ10´´からワーカ解決情報を受信すると、コンポーネントサーバ20A´の制御部21は、rpcメッセージ情報をワーカであるコンポーネントサーバ20B´´に送信する。
When worker resolution information is received from the called resolution server 10'', the
ワーカ探索処理を各データセンタの呼び出し先解決サーバ10において実行することにより、各コンポーネントサーバ20の処理負荷を呼び出し先解決サーバ10に負荷分散させることができる。
By executing the worker search process on the call
<第2変形例(3)>
上記の実施例では、呼び出し先解決サーバ10を用いる処理(限定ではなく例として、rpc.call通信やrpc.cast通信)について例示したが、これに限定されない。限定ではなく例として、一斉呼び出しサーバ40を用いるrpc.fanout通信についてもデータセンタ間で発生するトラヒックを最小限に抑えるように構成してもよい。
<Second Modification Example (3)>
In the above embodiment, the process using the call destination resolution server 10 (as an example and not a limitation, rpc.call communication and rpc.cast communication) is illustrated, but the present invention is not limited to this. As an example and not a limitation, rpc.fanout communication using the
この場合、限定ではなく例として、一斉呼び出しサーバ40´におけるコンポーネントサーバ一覧情報455は、限定ではなく例として、以下の要素(A)+(B)のようにrpcメッセージ情報を記述してもよい。
(A):一斉呼び出しサーバ40と同じデータセンタに存在する各コンポーネントサーバ20の識別情報。
(B):一斉呼び出しサーバ40と異なるデータセンタに存在する各一斉呼び出しサーバ40の識別情報。
In this case, by way of example and not limitation, the component
(A): Identification information of each component server 20 that exists in the same data center as the
(B): Identification information of each of the
インヴォーカ(限定ではなく例として、コンポーネントサーバ20A´)と同じデータセンタに存在する一斉呼び出しサーバ40´の制御部41は、は、インヴォーカからrpcメッセージ情報を受信すると、rpcメッセージ情報増幅送信処理において、限定ではなく例として、(A)と(B)とを対象としてrpcメッセージ情報を送信する。
When the
インヴォーカと異なるデータセンタに存在する一斉呼び出しサーバ40の制御部41は、一斉呼び出しサーバ40´からrpcメッセージ情報を受信すると、rpcメッセージ情報増幅送信処理において、限定ではなく例として、(A)を対象としてrpcメッセージ情報を送信する。
When the
このようにインヴォーカが存在するデータセンタの一斉呼び出しサーバ40を親とし、他のデータセンタの一斉呼び出しサーバ40を子として再帰的にrpcメッセージ情報を送信することで、データセンタ間で発生するトラヒックを最小化することができる。
In this way, the
<他の実施例>
(1)情報処理装置
上記の実施例では、本開示における情報処理装置を呼び出し先解決サーバ10および/または一斉呼び出しサーバ40として説明したが、これに限定されない。
<Other Examples>
(1) Information Processing Device In the above embodiment, the information processing device in the present disclosure has been described as the call
呼び出し先解決サーバ10および/または一斉呼び出しサーバ40を1つとするのではなく、呼び出し先解決サーバ10および/または一斉呼び出しサーバ40を複数のサーバに分け、これら各々のサーバを本開示における情報処理装置としてもよい。
Instead of having a single call
また、サーバではなく、ソフトウエアコンポーネントを利用する端末と通信する管理用のコンピュータ等の端末や管理用のスマートフォン等の端末を、本開示における情報処理装置としてもよい。 In addition, instead of a server, a terminal such as a management computer that communicates with a terminal that uses a software component, or a terminal such as a management smartphone, may be the information processing device in this disclosure.
また、複数の情報処理装置を含むシステムを構成し、このシステムが、上記の実施例で説明した呼び出し先解決サーバ10および/または一斉呼び出しサーバ40の各種の処理を行うようにしてもよい。
It is also possible to configure a system including multiple information processing devices, and have this system perform the various processes of the call
(2)その他
前述したように、上記の各々の実施例、各々の変形例、その他の実施例等で説明した内容は、それぞれ組み合わせて適用することが可能である。
(2) Others As described above, the contents described in the above embodiments, the respective modifications, and other embodiments can be applied in combination with each other.
<他の実施形態>
本発明の他の態様として、第1サーバから少なくとも第2サーバへのプロセス間通信を制御するミドルウェアに組み込まれるドライバプログラムであって、ドライバプログラムは、プロセス間通信におけるプロセス間通信先を特定することに関する処理を実行する解決サーバと通信させる処理を含み、ドライバプログラムは、第1サーバにおいて、第2サーバを特定するための第1情報を解決サーバから受信させ、第1情報に基づき、第2サーバにプロセス間通信の処理を要求するための第2情報を送信させ、第2サーバにおいて、第1サーバから第2情報を受信させるようにしてもよい。
<Other embodiments>
Another aspect of the present invention is a driver program incorporated into middleware that controls inter-process communication from a first server to at least a second server, the driver program including a process for communicating with a resolution server that executes a process related to identifying an inter-process communication destination in the inter-process communication, the driver program causing the first server to receive first information for identifying the second server from the resolution server, and based on the first information, transmitting second information to the second server for requesting processing of the inter-process communication, and causing the second server to receive the second information from the first server.
また、ドライバプログラムは、第2情報をハイパーテキスト・トランスファー・プロトコルに基づいて送受信させるようにしてもよい。 The driver program may also transmit and receive the second information based on the HyperText Transfer Protocol.
また、ドライバプログラムは、第2サーバにおいて、第1サーバに第2情報に基づく第1処理に関する第3情報を送信させ、第1サーバにおいて、第2サーバから第3情報を受信させるようにしてもよい。 The driver program may also cause the second server to transmit third information regarding the first process based on the second information to the first server, and cause the first server to receive the third information from the second server.
また、ドライバプログラムは、第2情報と第3情報とをハイパーテキスト・トランスファー・プロトコルに基づいて送受信させるようにしてもよい。 The driver program may also transmit and receive the second information and the third information based on the HyperText Transfer Protocol.
また、ドライバプログラムは、第2サーバと少なくとも第3サーバとにプロセス間通信の処理を要求することに関する処理を実行する増幅サーバと通信させる処理を含み、ドライバプログラムは、第1サーバにおいて、増幅サーバを特定するための第4情報を解決サーバから受信させ、第4情報に基づき、増幅サーバにプロセス間通信の処理を要求するための第5情報を送信させ、第2サーバと第3サーバとにおいて、増幅サーバから第5情報を受信させるようにしてもよい。 The driver program may also include a process for communicating with an amplification server that executes a process for requesting the second server and at least a third server to process inter-process communication, and the driver program may cause the first server to receive fourth information for identifying the amplification server from the resolution server, and based on the fourth information, transmit fifth information for requesting the amplification server to process the inter-process communication, and cause the second server and the third server to receive the fifth information from the amplification server.
また、ドライバプログラムは、第5情報をハイパーテキスト・トランスファー・プロトコルに基づいて送受信させるようにしてもよい。 The driver program may also transmit and receive the fifth information based on the HyperText Transfer Protocol.
1 通信システム
10 呼び出し先解決サーバ
20 コンポーネントサーバ
30 ネットワーク
40 一斉呼び出しサーバ
Claims (16)
前記サーバシステムは、前記プロセス間通信におけるプロセス間通信先を特定することに関する処理を実行する解決サーバを含み、
前記第1サーバは、
前記第2サーバを特定するための第1情報を前記解決サーバから受信し、
前記第1情報に基づき、前記第2サーバに前記プロセス間通信の処理を要求するための第2情報を送信し、
前記第2サーバは、
前記第1サーバから前記第2情報を受信し、
前記第2情報に基づく第1処理を実行する。 An information processing method for a server system performing inter-process communication from a first server to at least a second server, comprising the steps of:
the server system includes a resolution server that executes a process related to identifying an inter-process communication destination in the inter-process communication;
The first server
receiving first information for identifying the second server from the resolution server;
transmitting second information for requesting the second server to process the inter-process communication based on the first information;
The second server,
receiving the second information from the first server;
A first process is executed based on the second information.
前記第2情報はハイパーテキスト・トランスファー・プロトコルに基づいて送受信される。 2. The information processing method according to claim 1,
The second information is transmitted and received based on the HyperText Transfer Protocol.
前記第1サーバは、前記第2サーバが前記第2情報を受信したことを判定する。 3. The information processing method according to claim 2,
The first server determines that the second server has received the second information.
前記第1サーバは、
前記プロセス間通信を制御するミドルウェアに組み込まれたメッセージングドライバを介して前記第1情報を受信し、
前記メッセージングドライバを介して前記第2情報を送信し、
前記第2サーバは、
前記メッセージングドライバを介して前記第2情報を受信する。 3. The information processing method according to claim 2,
The first server
receiving the first information via a messaging driver incorporated in a middleware that controls the inter-process communication;
Sending the second information via the messaging driver;
The second server,
The second information is received via the messaging driver.
前記第2サーバは、前記第1サーバに前記第1処理に基づく第3情報を送信し、
前記第1サーバは、前記第2サーバから前記第3情報を受信する。 2. The information processing method according to claim 1,
the second server transmits third information based on the first process to the first server;
The first server receives the third information from the second server.
前記第2情報と前記第3情報とはハイパーテキスト・トランスファー・プロトコルに基づいて送受信される。 6. An information processing method according to claim 5,
The second information and the third information are transmitted and received based on the HyperText Transfer Protocol.
前記第2サーバは、前記第1サーバが前記第3情報を受信したことを判定する。 7. An information processing method according to claim 6,
The second server determines that the first server has received the third information.
前記第1サーバは、
前記プロセス間通信を制御するミドルウェアに組み込まれたメッセージングドライバを介して前記第1情報を受信し、
前記メッセージングドライバを介して前記第2情報を送信し、
前記メッセージングドライバを介して前記第3情報を受信し、
前記第2サーバは、
前記メッセージングドライバを介して前記第2情報を受信し、
前記メッセージングドライバを介して前記第3情報を送信する。 7. An information processing method according to claim 6,
The first server
receiving the first information via a messaging driver incorporated in a middleware that controls the inter-process communication;
Sending the second information via the messaging driver;
receiving the third information via the messaging driver;
The second server,
receiving the second information via the messaging driver;
The third information is sent via the messaging driver.
前記サーバシステムは、前記第2サーバと少なくとも第3サーバとに前記プロセス間通信の処理を要求することに関する処理を実行する増幅サーバを含み、
前記第1サーバは、
前記増幅サーバを特定するための第4情報を前記解決サーバから受信し、
前記第4情報に基づき、前記増幅サーバに前記プロセス間通信の処理を要求するための第5情報を送信し、
前記増幅サーバは、
前記第1サーバから前記第5情報を受信し、
少なくとも前記第2サーバと前記第3サーバとに前記第5情報を送信し、
前記第2サーバは、
前記増幅サーバから前記第5情報を受信し、
前記第5情報に基づく処理を実行し、
前記第3サーバは、
前記増幅サーバから前記第5情報を受信し、
前記第5情報に基づく処理を実行する。 2. The information processing method according to claim 1,
the server system includes an amplification server that executes a process for requesting the second server and at least a third server to process the inter-process communication;
The first server
receiving fourth information for identifying the amplification server from the resolution server;
transmitting fifth information for requesting the amplification server to process the inter-process communication based on the fourth information;
The amplification server includes:
receiving the fifth information from the first server;
Transmitting the fifth information to at least the second server and the third server;
The second server,
receiving the fifth information from the amplification server;
Executing a process based on the fifth information;
The third server,
receiving the fifth information from the amplification server;
A process based on the fifth information is executed.
前記第5情報はハイパーテキスト・トランスファー・プロトコルに基づいて送受信される。 10. The information processing method according to claim 9,
The fifth information is transmitted and received based on the hypertext transfer protocol.
前記第1サーバは、
前記プロセス間通信を制御するミドルウェアに組み込まれたメッセージングドライバを介して前記第4情報を受信し、
前記メッセージングドライバを介して前記第5情報を送信し、
前記第2サーバと前記第3サーバとは、前記メッセージングドライバを介して前記第5情報を受信する。 11. The information processing method according to claim 10,
The first server
receiving the fourth information via a messaging driver incorporated in the middleware that controls the inter-process communication;
Sending the fifth information via the messaging driver;
The second server and the third server receive the fifth information via the messaging driver.
前記サーバシステムは、前記解決サーバとは異なるリージョンまたはゾーンに属する第1解決サーバをさらに含み、
前記第1サーバは、
前記第1情報に基づき前記第2サーバの識別情報を解決できない場合、前記第2サーバを特定するための第6情報を前記第1解決サーバから受信し、
前記第6情報に基づき、前記第2サーバに前記第2情報を送信する。 2. The information processing method according to claim 1,
The server system further includes a first resolution server that belongs to a different region or zone from the resolution server;
The first server
receiving sixth information for identifying the second server from the first resolution server when the identification information of the second server cannot be resolved based on the first information;
The second information is transmitted to the second server based on the sixth information.
前記第2情報はハイパーテキスト・トランスファー・プロトコルに基づいて送受信され、
前記第1サーバは、
前記プロセス間通信を制御するミドルウェアに組み込まれたメッセージングドライバを介して前記第1情報と前記第6情報とを受信し、
前記メッセージングドライバを介して前記第2情報を送信し、
前記第2サーバは、
前記メッセージングドライバを介して前記第2情報を受信する。 13. The information processing method according to claim 12,
the second information is transmitted and received based on a hypertext transfer protocol;
The first server
receiving the first information and the sixth information via a messaging driver incorporated in a middleware that controls the inter-process communication;
Sending the second information via the messaging driver;
The second server,
The second information is received via the messaging driver.
前記第1サーバと前記解決サーバとは同じ前記リージョンまたは前記ゾーンに属し、
前記第1サーバは、前記第1サーバと最も近しい前記リージョンまたは前記ゾーンに属する前記第1解決サーバから前記第6情報を受信する。 13. The information processing method according to claim 12,
The first server and the resolution server belong to the same region or zone;
The first server receives the sixth information from the first resolution server that belongs to the region or zone that is closest to the first server.
前記プロセス間通信はリモートプロシージャコール・プロトコルに基づく。 15. An information processing method according to any one of claims 1 to 14, comprising:
The inter-process communication is based on the remote procedure call protocol.
前記サーバシステムは、前記プロセス間通信におけるプロセス間通信先を特定することに関する処理を実行する解決サーバを含み、
前記第1サーバは、前記第2サーバを特定するための第1情報を前記解決サーバから受信し、前記第1情報に基づき、前記第2サーバに前記プロセス間通信の処理を要求するための第2情報を送信する通信部を備え、
前記第2サーバは、
前記第1サーバから前記第2情報を受信する通信部と、
前記第2情報に基づく第1処理を実行する制御部とを備える。 A server system that performs inter-process communication from a first server to at least a second server,
the server system includes a resolution server that executes a process related to identifying an inter-process communication destination in the inter-process communication;
the first server includes a communication unit that receives first information for identifying the second server from the resolution server, and transmits second information for requesting the second server to process the inter-process communication based on the first information;
The second server,
A communication unit that receives the second information from the first server;
and a control unit that executes a first process based on the second information.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2023091149A JP2024173034A (en) | 2023-06-01 | 2023-06-01 | Information processing method and server system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2023091149A JP2024173034A (en) | 2023-06-01 | 2023-06-01 | Information processing method and server system |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2024173034A true JP2024173034A (en) | 2024-12-12 |
Family
ID=93799363
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023091149A Pending JP2024173034A (en) | 2023-06-01 | 2023-06-01 | Information processing method and server system |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2024173034A (en) |
-
2023
- 2023-06-01 JP JP2023091149A patent/JP2024173034A/en active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12072851B2 (en) | System and method for connection concentration in a database environment | |
CN107438060B (en) | A remote procedure calling method in a network device and network device | |
US10104167B2 (en) | Networking functions in a micro-services architecture | |
US8910185B2 (en) | Message queuing application access to specific API services through a generic API interface integrating a message queue | |
US9424144B2 (en) | Virtual machine migration to minimize packet loss in virtualized network | |
US7739391B2 (en) | Gateway for wireless mobile clients | |
KR102340296B1 (en) | System and method for supporting common transaction identifier (xid) optimization and transaction affinity based on resource manager (rm) instance awareness in a transactional environment | |
CN114787781A (en) | System and method for enabling a highly available managed failover service | |
KR102341809B1 (en) | System and method for supporting a bypass-domain model and a proxy model and updating service information for across-domain messaging in a transactional middleware machine environment | |
US10819641B2 (en) | Highly available servers | |
Saokar et al. | {ServiceRouter}: Hyperscale and minimal cost service mesh at meta | |
US11872497B1 (en) | Customer-generated video game player matchmaking in a multi-tenant environment | |
EP3912036B1 (en) | Technique for connection handling in a distributed system | |
US10223238B1 (en) | Multiple-stage crash reporting | |
JP2024173034A (en) | Information processing method and server system | |
US20240007340A1 (en) | Executing on-demand workloads initiated from cloud services in a software-defined data center | |
US11481397B1 (en) | Aggregating and emitting database activity record batches | |
US11544114B1 (en) | Methods for optimizing cloud-scale distributed asynchronous systems with idempotent workloads and devices thereof | |
US11431826B2 (en) | Secure demand-driven file distribution |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20231027 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20231108 |