Patent Publication Number: US-9891961-B2

Title: Load distribution apparatus, load distribution method, storage medium, and event-processing system

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application is a national stage application of International Application No. PCT/JP2014/003017 entitled “Load Balancer Distribution Apparatus, Load Balancing Distribution Method, Storage Medium, and Event-Processing System,” filed on Jun. 6, 2014, which claims priority to Japanese Patent Application No. 2013-124813, filed on Jun. 13, 2013, the disclosures of each which are hereby incorporated by reference in their entirety. 
     TECHNICAL FIELD 
     The present invention relates to an event-processing system, and a load distribution apparatus, a load distribution method, and a storage medium used in an event-processing system. 
     BACKGROUND ART 
     Over recent years, a large number of sensors are connected to a communication network (hereinafter, described as a “network”). These sensors collect various pieces of information (events) such as power consumption, traffic information, temperatures, stock price fluctuations, location information, or the like. 
     Further, recently, a large number of applications are connected to a network. These applications accept operations from operators or external apparatuses via the network. 
     On the basis of such backgrounds, a technology referred to as M2M (Machine to Machine) has attracted attention. According to the M2M technology, an application receives, via a network, events collected by sensors. The application determines a situation or executes processing on the basis of the received events. In this manner, according to the M2M technology, the application is autonomously controlled on the basis of the events collected by the sensors, without human control. 
     With an increase in the number of sensors connected to a communication network, a large increase in the size of M2M services is predicted. Therefore, an event-processing system capable of handling large-scale services is needed. 
     PTL 1 discloses one example of an event-processing system.  FIG. 28  is a diagram illustrating an outline of the event-processing system disclosed by PTL 1. 
     As illustrated in  FIG. 28 , the event-processing system disclosed by PTL 1 includes an application (AP)  5000 , a processing server  4000 , a context-dependent allocator  3000 , a device  2000 , an event-processing distribution control apparatus  6000 , and a context-independent allocator  7000 . 
     The processing server  4000  receives events from the context-dependent allocator  3000 , processes the received events, and notifies the application  5000  of the processing result of the events. The context-dependent allocator  3000  assigns events generated by the device  2000  to the processing server  4000 . The device  2000  generates events. 
     The event-processing distribution control apparatus  6000  executes the following processing on the basis of a request from the application  5000 . That is, the event-processing distribution control apparatus  6000  sets, for the processing server  4000 , a processing rule describing processing on the basis of contents (contexts) of events. The event-processing distribution control apparatus  6000  further sets an allocation rule for the context-dependent allocator  3000  so that events necessary to execute the processing rule are appropriately distributed to the processing server  4000 . 
     For the context-dependent allocator  3000 , an allocation rule is set in advance by the event-processing distribution control apparatus  6000 . The context-dependent allocator  3000  receives events. The context-dependent allocator  3000  determines, on the basis of contents (contexts) of the received events and the allocation rule, the processing server  4000  to which the received events are transferred among a plurality of processing servers  4000 . 
     For the processing server  4000 , the processing rule is set in advance by the event-processing distribution control apparatus  6000 . The processing server  4000  processes the transferred events on the basis of the processing rule and transmits the event processing result to the application  5000 . 
     The context-independent allocator  7000  disclosed by PTL 1 is configured to realize load distribution among a plurality of context-dependent allocators  3000 . The context-independent allocator  7000  receives events from the device  2000  and randomly transfers the received events to the context-dependent allocator  3000 . In this manner, the context-independent allocator  7000  mediates between the device  2000  and the context-dependent allocator  3000 , and thereby the number of events received by the context-dependent allocator  3000  is leveled. 
     CITATION LIST 
     Patent Literature 
     PTL 1: Japanese Patent No. 4161998 
     SUMMARY OF INVENTION 
     Technical Problem 
     It is predicted that in the context-independent allocator  7000  disclosed by PTL 1, events are concentrated in the context-independent allocator  7000  itself, in some cases. When events are concentrated in the context-independent allocator  7000  and a load of the context-independent allocator  7000  is increased, it is expected that processing of the context-independent allocator  7000  may be delayed. This results in a delay in a time ranging from generation of events by the device  2000  to reception of the event processing result by the application  5000 . 
     In this manner, it is difficult for the context-independent allocator  7000  to realize appropriate load distribution in an event-processing system. 
     A main object of the present invention is to provide a load distribution apparatus, a load distribution method, and a storage medium capable of realizing appropriate load distribution in an event-processing system. 
     Further, a main object of the present invention is to provide an event-processing system capable of realizing appropriate load distribution. 
     Solution to Problem 
     A first aspect of the present invention is a load distribution apparatus being used in a system that includes: a plurality of event generators that generate events and transmit the events to a specified allocation apparatus; and a plurality of allocation apparatuses that receive events from one or a plurality of event generators and transmit the received events to a processing apparatus, the load distribution apparatus including: an acquiring means for acquiring a reception status that is information representing a quantity or information size of events received by the allocation apparatus from a specific event generator among the plurality of event generators within a certain period, or a transmission status that is information representing a quantity or information size of events received by the allocation apparatus from the specific event generator and transmitted to the processing apparatus within a certain period; and an updating means for updating the allocation apparatus specified for the specific event generator to another allocation apparatus, on the basis of the reception status or the transmission status, so that a load applied to the allocation apparatus when the allocation apparatus receives or transmits the events is leveled among the plurality of allocation apparatuses. 
     A second aspect of the present invention is a load distribution method for a computer used in a system that includes: a plurality of event generators that generate events and transmit the events to a specified allocation apparatus; and a plurality of allocation apparatuses that receive events from one or a plurality of the event generators and transmit the received events to a processing apparatus, the load distribution method including: acquiring a reception status that is information representing a quantity or information size of events received by the allocation apparatus from a specific event generator among the plurality of event generators within a certain period, or a transmission status that is information representing a quantity or information size of events received by the allocation apparatus from the specific event generator and transmitted to the processing apparatus within a certain period; and updating the allocation apparatus specified for the specific event generator to another allocation apparatus on the basis of the reception status or the transmission status, so that a load applied to the allocation apparatus when the allocation apparatus receives or transmits the events is leveled among the plurality of allocation apparatuses. 
     A third aspect of the present invention is a computer-readable storage medium that is recorded with a computer program for a computer used in a system that includes: a plurality of event generators that generate events and transmit the events to a specified allocation apparatus; and a plurality of allocation apparatuses that receive events from one or a plurality of the event generators and transmit the received events to a processing apparatus, the computer program causing the computer to execute: processing for acquiring a reception status that is information representing a quantity or information size of events received by the allocation apparatus from a specific event generator among the plurality of event generators within a certain period, or a transmission status that is information representing a quantity or information size of events received by the allocation apparatus from the specific event generator and transmitted to the processing apparatus within a certain period; and processing for updating the allocation apparatus specified for the specific event generator to another allocation apparatus on the basis of the reception status or the transmission status, so that a load applied to the allocation apparatus when the allocation apparatus receives or transmits the events is leveled among the plurality of allocation apparatuses. 
     A fourth aspect of the present invention is an event-processing system including: a plurality of event generators that generate events and transmit the events to a specified allocation apparatus; a plurality of allocation apparatuses that receive events from one or a plurality of the event generators and transmit the received events to a processing apparatus; and a processing apparatus that receives events from the allocation apparatus and processes the received events, the system further including: a load distribution apparatus including: an acquiring means for acquiring a reception status that is information representing a quantity or information size of events received by the allocation apparatus from a specific event generator among the plurality of event generators within a certain period, or a transmission status that is information representing a quantity or information size of events received by the allocation apparatus from the specific event generator and transmitted to the processing apparatus within a certain period; and an updating means for updating the allocation apparatus specified for the specific event generator to another allocation apparatus on the basis of the reception status or the transmission status, so that a load applied to the allocation apparatus when the allocation apparatus receives or transmits the events is leveled among the plurality of allocation apparatuses. 
     Further, the objects of the present invention are achievable using a computer-readable storage medium that stores the program. 
     Advantageous Effects of Invention 
     According to the present invention, appropriate load distribution can be realized in an event-processing system. 
    
    
     
       BRIEF DESCRIPTION OF DRAWINGS 
         FIG. 1  is a diagram illustrating a configuration of an event-processing system  1000  according to a first exemplary embodiment of the present invention. 
         FIG. 2  is a diagram illustrating a configuration of an event generator  200  according to the first exemplary embodiment of the present invention. 
         FIG. 3  is a diagram illustrating a configuration of an allocation apparatus  300  according to the first exemplary embodiment of the present invention. 
         FIG. 4  is an explanatory diagram illustrating one example of an allocation rule according to the first exemplary embodiment of the present invention. 
         FIG. 5  is an explanatory diagram illustrating one example of a transfer status according to the first exemplary embodiment of the present invention. 
         FIG. 6  is a diagram illustrating a configuration of a processing apparatus  400  according to the first exemplary embodiment of the present invention. 
         FIG. 7  is a diagram illustrating a configuration of a load distribution apparatus  100  according to the first exemplary embodiment of the present invention. 
         FIG. 8  is an explanatory diagram illustrating one example of information stored by a flow table storage unit  120  according to the first exemplary embodiment of the present invention. 
         FIG. 9  is an explanatory diagram illustrating one example of load information according to the first exemplary embodiment of the present invention. 
         FIG. 10  is an explanatory diagram illustrating one example of load information after load adjustment according to the first exemplary embodiment of the present invention. 
         FIG. 11  is a diagram illustrating one example of an HW (Hardware) configuration of the load distribution apparatus  100  according to the first exemplary embodiment of the present invention. 
         FIG. 12  is a flowchart illustrating one example of an operation of the load distribution apparatus  100  according to the first exemplary embodiment of the present invention. 
         FIG. 13  is a flowchart illustrating an operation of a calculating unit  130  according to the first exemplary embodiment of the present invention. 
         FIG. 14  is a flowchart illustrating an operation of a determining unit  140  according to the first exemplary embodiment of the present invention. 
         FIG. 15  is a diagram illustrating a configuration of an event-processing system  1001  according to a second exemplary embodiment of the present invention. 
         FIG. 16  is a diagram illustrating a configuration of a load distribution apparatus  101  according to the second exemplary embodiment of the present invention. 
         FIG. 17  is an explanatory diagram illustrating one example of information stored by a transmission destination management apparatus  700  according to the second exemplary embodiment of the present invention. 
         FIG. 18  is a diagram illustrating a configuration of an event generator  201  according to the second exemplary embodiment of the present invention. 
         FIG. 19  is a diagram illustrating a configuration of an event-processing system  1002  according to a third exemplary embodiment of the present invention. 
         FIG. 20  is a diagram illustrating a configuration of an allocation apparatus  302  according to the third exemplary embodiment of the present invention. 
         FIG. 21  is an explanatory diagram illustrating one example of a transfer status according to the third exemplary embodiment of the present invention. 
         FIG. 22  is a diagram illustrating a configuration of a load distribution apparatus  102  according to the third exemplary embodiment of the present invention. 
         FIG. 23  is a diagram illustrating a configuration of an event-processing system  1003  according to a fourth exemplary embodiment of the present invention. 
         FIG. 24  is a diagram illustrating a configuration of an allocation apparatus  303  according to the fourth exemplary embodiment of the present invention. 
         FIG. 25  is a diagram illustrating a configuration of a load distribution apparatus  103  according to the fourth exemplary embodiment of the present invention. 
         FIG. 26  is a diagram illustrating a configuration of an event-processing system  1004  according to a fifth exemplary embodiment of the present invention. 
         FIG. 27  is an explanatory diagram illustrating a specific example of an allocation rule according to another exemplary embodiment of the present invention. 
         FIG. 28  is a diagram illustrating an outline of an event-processing system disclosed by PTL 1. 
     
    
    
     DESCRIPTION OF EMBODIMENTS 
     First Exemplary Embodiment 
     A load distribution apparatus  100  according to a first exemplary embodiment will be described in detail below with reference to the accompanying drawings. 
       FIG. 1  is a block diagram illustrating a configuration of an event-processing system  1000  including the load distribution apparatus  100 . As illustrated in  FIG. 1 , the event-processing system  1000  includes a plurality of event generators  200 , a plurality of allocation apparatuses  300 , a plurality of processing apparatuses  400 , a plurality of applications (APs)  500 , a rule setting apparatus  600 , and the load distribution apparatus  100 . 
     Hereinafter, when it is necessary to distinguish a plurality of event generators  200  from each other, each of event generators  200  will be described as an event generator  200 A, an event generator  200 B, . . . , and the like. In the same manner, when it is necessary to distinguish a plurality of allocation apparatuses  300  from each other, each of allocation apparatuses  300  will be described as an allocation apparatus  300 A, an allocation apparatus  300 B, . . . , and the like. When it is necessary to distinguish a plurality of processing apparatuses  400  from each other, each of processing apparatuses  400  will be described as a processing apparatus  400 A, a processing apparatus  400 B, . . . , and the like. When it is necessary to distinguish a plurality of applications  500  from each other, each of applications  500  will be described as an application  500 A, an application  500 B, . . . , and the like. 
     A number (i.e. quantity) of the event generators  200 , a number of the allocation apparatuses  300 , a number of the processing apparatuses  400 , and a number of the applications  500  are not limited to the numbers illustrated in  FIG. 1 . A magnitude relation among the number of the event generators  200 , the number of the allocation apparatuses  300 , the number of the processing apparatuses  400 , and the number of the applications  500  are not limited to the relation illustrated in  FIG. 1 . 
     The event generator  200  generates events. The events are, for example, information including an identifier (ID) of the event generator  200  having generated the events and a measured value. The event generator  200  transmits the generated events to the allocation apparatus  300 . The allocation apparatus  300  as a transmission destination to which the event generator  200  transmits the events is specified by the load distribution apparatus  100  in advance. In the example illustrated in  FIG. 1 , the event generators  200 A,  200 B, and  200 C are specified to transmit events to the allocation apparatus  300 A, in advance. The event generator  200 D is specified to transmit events to the allocation apparatus  300 B, in advance. 
     The allocation apparatus  300  receives events from one or more event generators  200 . In the example illustrated in  FIG. 1 , for example, the allocation apparatus  300 A receives events from the event generators  200 A,  200 B, and  200 C, respectively. The allocation apparatus  300  transmits the events received from the event generator  200  to the processing apparatus  400 . Hereinafter, this processing will be described as “transferring events.” 
     For the allocation apparatus  300 , an allocation rule is set in advance by the rule setting apparatus  600 . In case receiving the events, the allocation apparatus  300  refers to the allocation rule. The allocation apparatus  300  sets whether to transmit the events to the processing apparatus  400  on the basis of contents of the events and the allocation rule. The allocation apparatus  300  determines the processing apparatuses  400 , to which the events are transmitted, among the plurality of processing apparatuses  400 . Further, the allocation apparatus  300  transmits a transfer status to the load distribution apparatus  100 . Details of the transfer status will be described later. By the processing above, the allocation apparatus allocates event to the appropriate processing apparatus  400 . 
     The processing apparatus  400  receives the events from the allocation apparatus  300 . For the processing apparatus  400 , a processing rule is set in advance by the rule setting apparatus  600 . In case receiving the events, the processing apparatus  400  processes the events by referring to the processing rule. The processing apparatus  400  transmits the event processing result to the application  500 . 
     The application  500  receives the event processing result from the processing apparatus  400 . The application  500  provides a service for a user of the application on the basis of the received event processing result. The application  500  creates the processing rule such that a desired event processing result is generated. The application  500  transmits the processing rule to the rule setting apparatus  600 . 
     The rule setting apparatus  600  receives the processing rule from the application  500 . The rule setting apparatus  600  sets the processing rule for the processing apparatus  400  so that loads among a plurality of processing apparatuses  400  are equal or substantially equal. Further, the rule setting apparatus  600  sets the processing rule for the processing apparatus  400  so that events generated by the same event generator  200  are processed by the same processing apparatus  400 . The rule setting apparatus  600  sets the allocation rule for the allocation apparatus  300  so that events necessary for executing the processing rule by certain processing apparatus  400  are appropriately transmitted to that processing apparatus  400 , that executes the processing. The rule setting apparatus  600  may set the processing rule and the allocation rule using, for example, the method disclosed by PTL 1. 
     The load distribution apparatus  100  receives the transfer status from the allocation apparatus  300 . Details of the transfer status will be described later. The load distribution apparatus  100  determines, on the basis of the transfer status, which event generator  200  transmits events to which allocation apparatus  300 . The load distribution apparatus  100  updates the transmission destination previously specified for the event generator  200 , from an address of certain allocation apparatus  300  to an address of another allocation apparatus  300 , on the basis of the determination. 
       FIG. 2  is a block diagram illustrating a configuration of the event generator  200  illustrated in  FIG. 1 . As illustrated in  FIG. 2 , the event generator  200  includes a sensor  210 , a transmission destination storage unit  220 , and a transmitting unit  230 . 
     The sensor  210  generates events. The events generated by the sensor  210  include, for example, power consumption values, traffic information, temperature values, stock price fluctuations, or location information. 
     The transmission destination storage unit  220  stores a transmission destination address of events. The transmission destination address of events is set in advance in the transmission destination storage unit  220  by the load distribution apparatus  100 . 
     The transmitting unit  230  transmits the events generated by the sensor  210  to the address stored in the transmission destination storage unit  220 . 
       FIG. 3  is a block diagram illustrating a configuration of the allocation apparatus  300  illustrated in  FIG. 1 . As illustrated in  FIG. 3 , the allocation apparatus  300  includes a receiving unit  310 , an allocation rule retrieval unit  320 , a transmitting unit  330 , an allocation rule storage unit  340 , and a flow measuring unit  350 . 
     The receiving unit  310  receives events from the event generator  200 . 
     The allocation rule retrieval unit  320  executes matching processing between the events received by the receiving unit  310  and an allocation rule stored in the allocation rule storage unit  340 . The allocation rule retrieval unit  320  determines, on the basis of the result of the matching processing, whether to discard the received events or to transmit the received events to the processing apparatus  400 . The allocation rule retrieval unit  320  further determines, on the basis of the result of matching processing, the processing apparatuses  400  to which the events are transmitted, among the plurality of processing apparatuses  400 . 
     The transmitting unit  330  transmits the events received by the receiving unit  310  to the processing apparatus  400  on the basis of the determination of the allocation rule retrieval unit  320 . 
     The allocation rule storage unit  340  stores the allocation rule. Hereinafter, a processing of storing the allocation rule into the allocation rule storage unit  340  may be described as “the allocation rule is set.” The allocation rule is set by the rule setting apparatus  600 . 
       FIG. 4  is an explanatory diagram illustrating one example of the allocation rule stored in the allocation rule storage unit  340 . The allocation rule illustrated in  FIG. 4  represents the allocation rule that the events are transmitted to the processing apparatus  400 A, when a value (a value of User_ID in the example illustrated in  FIG. 4 ) included in events received by the allocation apparatus  300  is “1”. In the same manner, the allocation rule illustrated in  FIG. 4  represents that when values (values of User IDs) included in events received by the allocation apparatus  300  are, for example, 2, 3, and 4, the events are transmitted to the processing apparatuses  400 B,  400 C, and  400 D, respectively. 
     When the receiving unit  310  cannot retrieve the allocation rule that matches the events received by the receiving unit  310 , the allocation rule retrieval unit  320  discards the events. 
     It is assumed that, for example, events of which the value (the value of User_ID) is 5 are received. The allocation rule retrieval unit  320  executes matching processing between the received events and an allocation rule stored in the allocation rule storage unit  340 . However, an allocation rule that matches the events having a value of User_ID of 5 is not stored on the allocation rule storage unit  340  illustrated in  FIG. 4 . In such case, the allocation rule retrieval unit  320  discards the events. 
     Hereinafter, return to description referring to  FIG. 3 . The flow measuring unit  350  measures the transfer status and transmits the measured transfer information to the load distribution apparatus  100 . The transfer status is information necessary to calculate a load applied to the allocation apparatus  300  when the allocation apparatus  300  transfers events. The transfer status includes a reception status or a transmission status. The reception status is information about a quantity or information amount (data size or the like) of events received by the allocation apparatus  300  from certain event generator  200 . The transmission status is information about a quantity or an amount of information of events, which are received by the allocation apparatus  300  from certain event generator  200  and transmitted to the processing apparatus  400 . 
     An amount of information about the received events or the transmitted events represents an amount of data (date size) of the events. In the present application, such an amount of information may be referred to simply as an “information size”. 
     The flow measuring unit  350  measures a transfer status for each of one or more event generators  200  that is a transmission source of events received by the apparatus (allocation apparatus  300 ) itself. 
     Hereinafter, the transfer status is described in more detail, by using, as an example, the transfer status that is measured by the flow measuring unit  350 A included in the allocation apparatus  300 A. As illustrated in  FIG. 1 , the allocation apparatus  300 A receives events from the event generators  200 A,  200 B, and  200 C, respectively. The flow measuring unit  350 A included in the allocation apparatus  300 A measures the transfer status for each of the events received from the event generator  200 A, the events received from the event generator  200 B, and the events received from the event generator  200 C. 
       FIG. 5  is an explanatory diagram illustrating one example of the transfer status measured by the flow measuring unit  350 A. As illustrated in  FIG. 5 , the transfer status is information in which information (an allocation apparatus ID) that identifies the allocation apparatus  300 , information (an event generator ID) that identifies the event generator  200  that is a transmission source of events, and a reception status or a transmission status are associated with each other. 
     The reception status illustrated in  FIG. 5  indicates that the allocation apparatus  300 A has received events from the event generator  200 A 200 times, events from the event generator  200 B 100 times, and events from the event generator  200 C 50 times within a certain period. 
     The reception status may be a value regarding a number of times of reception of events within a certain period. The reception status may also be a value regarding an information size of events received within a certain period. 
     The transmission status illustrated in  FIG. 5  indicates that the allocation apparatus  300 A has transmitted the events received from the event generator  200 A 100 times, the events received from the event generator  200 B 50 times, and the events received from the event generator  200 C 25 times within a certain period. 
     The transmission status may be a value regarding a number transmission of events within a certain period or a value regarding an information size of events transmitted within a certain period. 
     A difference between the number of events received by or the number of events transmitted from the allocation apparatus  300  corresponds to a quantity of events discarded by the allocation apparatus  300 . 
     The flow measuring unit  350  measures a transfer status by referring to, for example, an identifier of the event generator  200  that has generated events. The identifier of the event generator  200  is included in the received events. 
       FIG. 6  is a block diagram illustrating a configuration of the processing apparatus  400  illustrated in  FIG. 1 . As illustrated in  FIG. 6 , the processing apparatus  400  includes a processing unit  410  and a processing rule storage unit  420 . The processing unit  410  receives events from the allocation apparatus  300 . In case receiving the events, the processing unit  410  refers to the processing rule stored in the processing rule storage unit  420  and processes the received events on the basis of the processing rule. The processing unit  410  transmits the event processing result to the application  500 . 
     The processing rule storage unit  420  stores the processing rule. Hereinafter, storing the processing rule in the processing rule storage unit  420  will be described as “processing rule is set.” The processing rule is set by the rule setting apparatus  600 . 
     The processing rule set in the processing apparatus  400  is a simple rule such as “processing rule 1: “When a value of temperature included in received events exceeds 30° C. (Celsius), a start command is issued for cooling application (the application  500 )”” or the like. The processing rule may include a request for the processing apparatus  400  to execute CEP (Complex Event Processing). The CEP is processing in which patterns of a plurality of events are detected and processing is executed on the basis of information of the plurality of events. For the convenience of the explanation about the present invention, two specific examples of the processing rule are illustrated below. In processing rule 2 and processing rule 3, DevID represents an identifier of the event generator  200 .
         Processing rule 2: “IF (DevID=11) and (DevID=12) THEN calculate an average value of temperatures.”       

     According to processing rule 2, when receiving events of DevID=11 and events of DevID=12, the processing apparatus  400  calculates an average value of temperatures included in these events.
         Processing rule 3: “IF (DevID=11)→(DevID=12) within 10 s THEN calculate an average value of current values.”       

     According to processing rule 3, when receiving events of DevID=11 and events of DevID=12 in this order within 10 seconds, the processing apparatus  400  calculates an average value of current values included in these events. 
     The processing apparatus  400  may include a function for managing an intermediate state of matching between a processing rule and events in order to execute processing on the basis of such a complex processing rule. For example, the intermediate state may be a state such that events of DevID=11 are detected and thereafter detection of events of DevID=12 is awaited, in processing rule 2 or processing rule 3. 
       FIG. 7  is a block diagram illustrating a configuration of the load distribution apparatus  100  illustrated in  FIG. 1 . As illustrated in  FIG. 7 , the load distribution apparatus  100  includes an acquiring unit  110 , a flow table storage unit  120 , a calculating unit  130 , a determining unit  140 , and an updating unit  150 . 
     The acquiring unit  110  acquires a transfer status from the allocation apparatus  300 . 
     The flow table storage unit  120  stores the transfer status acquired by the acquiring unit  110 . 
     The calculating unit  130  refers to the flow table storage unit  120  and calculates a load generated in the allocation apparatus  300  when the allocation apparatus  300  transfers events. Hereinafter, information indicating the load of the allocation apparatus  300  will be described as load information. Details of an operation of the calculating unit  130  will be described later. The load calculated by the calculating unit  130  may include, for example, a CPU (Central Processing Unit) load, a load of a memory, or a network load, of the allocation apparatus  300 . 
     The determining unit  140  determines which event generator  200  transmits events to which allocation apparatus  300  on the basis of the load calculated by the calculating unit  130 . 
     The updating unit  150  updates an address of the allocation apparatus  300  that is an event transmission destination of the event generator  200  to an address of another allocation apparatus  300  on the basis of the determination of the determining unit  140 . Specifically, the updating unit  150  updates the address stored in the transmission destination storage unit  220  included in the event generator  200 , with the address of another allocation apparatus  300 . 
       FIG. 8  is an explanatory diagram illustrating one example of a flow table stored by the flow table storage unit  120 . As illustrated in  FIG. 8 , the flow table stores the transfer status received from each allocation apparatus  300 . 
       FIG. 9  is an explanatory diagram illustrating one example of a load calculated by the calculating unit  130 . To easily understand the invention, it is assumed that a value obtained by multiplying a number of times of reception of events by a prescribed value (“25” in this case) is a value of the load applied to the allocation apparatus  300 . The value of the load may be calculated on the basis of a transmission status. 
     As illustrated in  FIG. 9 , the load that is applied to the allocation apparatus  300 A is calculated as “5000”, in order to transfer events received from the event generator  200 A. Also, the load that is applied to the allocation apparatus  300 A is calculated as “2500”, in order to transfer events received from the event generator  200 B. Also the load that is applied to the allocation apparatus  300 A is calculated as “1250”, in order to transfer events received from the event generator  200 C. The load that is applied to the allocation apparatus  300 B is calculated as “1250”, in order to transfer events received from the event generator  200 D. 
     A total of loads applied to the allocation apparatus  300 A is calculated on the basis of sum of the load generated by the event generator  200 A, the load generated by the event generator  200 B, and the load generated by the event generator  200 C. In other words, the total of loads applied to the allocation apparatus  300 A is calculated as “5000+2500+1250=8750”. In the same manner, a total of loads applied to the allocation apparatus  300 B is calculated as “1250”. 
       FIG. 10  is an explanatory diagram illustrating a status after the load distribution apparatus  100  performs a load adjustment. As is clear from comparing  FIG. 9  to  FIG. 10 , the transmission destination of the events generated from the event generator  200 B has been updated from the allocation apparatus  300 A to the allocation apparatus  300 B. Thereby, a total of loads applied to the allocation apparatus  300 A is calculated as a total of the load generated by the event generator  200 A and the load generated by the event generator  200 C, i.e. “5000+1250=6250”. A total of loads applied to the allocation apparatus  300 B is calculated as a total of the load generated by the event generator  200 B and the load generated by the event generator  200 D, i.e. “2500+1250=3750”. 
     The load applied to the allocation apparatus  300 A and the load applied to the allocation apparatus  300 B are leveled in the state after the load adjustment (such as illustrated in  FIG. 10 ), compared with the state before the load adjustment (such as illustrated in  FIG. 9 ). 
       FIG. 11  is a diagram illustrating one example of a hardware configuration of the load distribution apparatus  100 . 
     The hardware of the load distribution apparatus (computer)  100  illustrated in  FIG. 11  includes a CPU  1 , a memory  2 , a storage device  3 , and a communication interface (I/F)  4 . The load distribution apparatus  100  may include an input device  5  or an output device  6 . For example, a function of the load distribution apparatus  100  may be realized by executing a computer program (a software program that will be hereinafter described simply as a “program”) that is read to the memory  2 , with use of CPU  1 . Upon the execution, the CPU  1  appropriately controls the communication interface  4 , the input device  5 , and the output device  6 . 
     The present invention described by using, as examples, the present exemplary embodiment and respective exemplary embodiments to be described later may also be configured by using a non-transitory storage medium  8  such as a compact disc or the like that stores such a program. The program stored by the storage medium  8  is read out by, for example, a drive device  7 . 
     Communication executed by the load distribution apparatus  100  is realized by controlling, by an application program, the communication interface  4  using a function provided by an OS (Operating System). The input device  5  is, for example, a keyboard, a mouse, or a touch panel. The output device  6  is, for example, a display. The load distribution apparatus  100  may be configured by two or more physically separated apparatuses that are connected via a wired or wireless channel. 
     The hardware configuration example illustrated in  FIG. 11  is also applicable to the respective exemplary embodiments to be described later. The load distribution apparatus  100  may be a dedicated apparatus. 
     Next, an operation of the load distribution apparatus  100  according to the first exemplary embodiment will be described with reference to the accompanying drawings. 
       FIG. 12  is a flowchart illustrating one example of the operation of the load distribution apparatus  100  according to the first exemplary embodiment. The acquiring unit  110  acquires a transfer status from an individual allocation apparatus ( 300 A,  300 B, . . . ) (S 101 ). The acquiring unit  110  stores the acquired transfer status into the flow table storage unit  120  (S 102 ). The calculating unit  130  refers to the flow table storage unit  120  and calculates a load generated in the allocation apparatus  300  when transferring events (S 103 ). The determining unit  140  determines which event generator  200  transmits the events to which allocation apparatus  300  on the basis of the load calculated by the calculating unit  130  (S 104 ). The updating unit  150  updates the address of the allocation apparatus  300 , that is a transmission destination previously specified for the event generator  200 , to the address of another allocation apparatus  300 , on the basis of the determination of the determining unit  140  (S 105 ). 
     Abode described operation of the load distribution apparatus  100  with reference to  FIG. 12 , is merely an example. For example, with respect to a part of the processing represented by the flowchart illustrated in  FIG. 12 , an execution order may be partly replaceable to a possible extent. 
       FIG. 13  is a flowchart illustrating one example of an operation of the calculating unit  130  illustrated in  FIG. 7 . The calculating unit  130  starts to calculate the load periodically or when receiving a request from the determining unit  140  (S 201 ). The calculating unit  130  focuses on an allocation apparatus  300   i  to be a target for the load calculation (S 202 ). The calculating unit  130  focuses on an event generator  200   j  that is a transmission source of events received by the allocation apparatus  300   i  (S 203 ). The calculating unit  130  refers to the flow table storage unit  120  and reads a row of the flow table, according to the events received by the allocation apparatus  300   i  from the event generator  200   j . The calculating unit  130  calculates, on the basis of the read row, a load applied when the allocation apparatus  300   i  transfers the events received from the event generator  200   j  (S 204 ). The calculating unit  130  calculates loads for all of the event generators  200  that are transmission sources of the events received by the allocation apparatus  300   i  (S 205 ). The calculating unit  130  calculates loads for all of the allocation apparatuses  300  stored by the flow table storage unit  120  (S 206 ). 
     The operation of the calculating unit  130  having been described with reference to  FIG. 13  is merely an example. It is possible that when, for example, it is known which one of the allocation apparatuses  300  is in a state of heavy load, the calculating unit  130  calculates only the load of the allocation apparatus  300  in a state of the heaviest load. 
       FIG. 14  is a flowchart illustrating one example of an operation of the determining unit  140  illustrated in  FIG. 7 . 
     The determining unit  140  starts an operation for the load adjustment periodically or when receiving a request for the load adjustment (S 301 ). The determining unit  140  determines whether loads of the allocation apparatuses  300  are adequately distributed in the current situation (S 302 ). Herein, as a determination criterion in step S 302 , it may be considered whether the load of the allocation apparatus  300  in the state of the heaviest load exceeds a prescribed threshold, for example. Further, as the determination criterion in step S 302 , it may be also considered whether a difference between a load of the allocation apparatus  300  in the state of the heaviest load and a load of the allocation apparatus  300  in a state of the lowest load exceeds a prescribed threshold. It may be also considered whether both of the two conditions above are satisfied or not, as the determination criterion in step S 302 . 
     When the determining unit  140  has determined that the loads are not adequately distributed in the current situation (NO in S 302 ), the determining unit  140  calculates a reference value used in the load adjustment (S 303 ). The reference value used in the load adjustment is calculated, for example, as follows.
 
“(Reference value)=((a load of an allocation apparatus of the heaviest load)+(a load of an allocation apparatus of the lowest load))/2”,
 
wherein “/” represents a symbol indicating division.
 
     The determining unit  140  calculates, for the allocation apparatus  300  of the largest load, a load for transferring events received from the event generator  200  to the processing apparatus  400 , with respect to each of the event generators  200  that are transmission sources of events received by the allocation apparatus  300  (S 304 ). In step S 304 , the determining unit  140  may acquire a value already calculated by the calculating unit  130  or may issue a calculation request to the calculating unit  130 . 
     The determining unit  140  determines whether a value of the load of the event generator that generates the largest load exceeds the reference value calculated in step S 303 , in the allocation apparatus  300  of the largest load (S 305 ). In the case of NO in S 305 , the determining unit  140  updates the event transmission destination of the event generator that generates the largest load from an address of the allocation apparatus  300  of the largest load to an address of the allocation apparatus  300  of the lowest load (S 306 ). 
     In the case of YES in S 302 , the determining unit  140  waits for a certain period of time (S 307 ). Further, in the case of YES in S 305 , the determining unit  140  finishes the operation of the load adjustment. 
     The operation of the determining unit  140  having been described with reference to  FIG. 14  is merely an example of the operation of the determining unit  140 . 
     Advantageous effects produced by the load distribution apparatus  100  according to the first exemplary embodiment will be described below. 
     The load distribution apparatus  100  according to the first exemplary embodiment includes the acquiring unit  110  and the updating unit  150 . The acquiring unit  110  acquires the reception status that is information representing a quantity or information size of events received by an allocation apparatus (e.g.  300 A) from a specific event generator (e.g.  200 B) among event generators  200  within a certain period. The updating unit  150  updates, on the basis of the reception status, the allocation apparatus ( 300 A) specified for the specific event generator (e.g.  200 B) to another allocation apparatus (e.g.  300 B), so that a load applied to the allocation apparatus  300  when the allocation apparatus  300  receives the events is leveled among the plurality of allocation apparatuses  300 . 
     Otherwise, the acquiring unit  110  acquires a transmission status that is information representing a quantity or information size of events received by an allocation apparatus (e.g.  300 A) from a specific event generator (e.g.  200 B) among the plurality of event generators  200 , and transmitted to the processing apparatus  400  within a certain period. The updating unit  150  updates, on the basis of the transmission status, the allocation apparatus ( 300 A) specified for the specific event generator (e.g.  200 B) to another allocation apparatus (e.g.  300 B), so that a load applied to the allocation apparatus  300  when the allocation apparatus  300  transmits the events is leveled, among the plurality of allocation apparatuses  300 . 
     With this configuration, the load distribution apparatus  100  according to the first exemplary embodiment is able to realize load distribution for the allocation apparatus  300 , even when the event generator  200  directly transmits events to the allocation apparatus  300 . That is, the load distribution apparatus  100  according to the first exemplary embodiment is able to realize load distribution of the allocation apparatus even without arranging a “special apparatus” between the event generator  200  and the allocation apparatus  300 . 
     The “special apparatus” refers to, for example, an apparatus such as the context-independent allocator  7000  disclosed by the PTL 1. The event-processing system disclosed by PTL 1 includes the context-independent allocator  7000 , between a configuration equivalent to the event generator  200  and a configuration equivalent to the allocation apparatus  300 . When a configuration equivalent to the context-independent allocator  7000  disclosed by PTL 1 is applied to the event-processing system  1000  according to the first exemplary embodiment, the real-time performance of the event-processing system may be negatively affected. The reason is that a time from transmission of events by the event generator  200  to arrival of an event processing result at the application  500  is delayed by a time spent by the context-independent allocator  7000  for transfer processing of the events. 
     Further, in some cases, it is predicted that the context-independent allocator  7000  may fall into a state of high load, because of the concentration of the event on the context-independent allocator  7000  itself. Therefore, there has been a possibility that the load of the context-independent allocator  7000  itself is increased and thereby event transfer processing of the context-independent allocator  7000  is further delayed. 
     In contrast, the load distribution apparatus  100  according to the first exemplary embodiment does not cause such a delay resulting from such a “special apparatus” between the event generator  200  and the allocation apparatus  300 . Therefore the load distribution apparatus  100  according to the first exemplary embodiment can realize load distribution with regard to the allocation apparatuses  300 . 
     Therefore, the load distribution apparatus  100  according to the first exemplary embodiment can be used for load distribution of the event-processing system  1000 , which processes, in real time, events continuously generated in large amounts, such as location information of a large quantity of cars or location information of a large quantity of mobile terminals. 
     Further, with use of the load distribution apparatus  100  according to the first exemplary embodiment, the event generator  200  is able to realize load distribution of the allocation apparatus  300  by transmitting events to a pre-specified transmission destination. Therefore, it is unnecessary for the event generator  200  itself to consider load distribution of the allocation apparatus  300 . Therefore, even when the event generator  200  does not include an advanced computing performance to realize load distribution, load distribution of the allocation apparatus  300  can be realized. 
     Second Exemplary Embodiment 
     Next, a second exemplary embodiment based on the load distribution apparatus  100  and the event-processing system  1000  according to the first exemplary embodiment described above will be described. 
       FIG. 15  is a block diagram illustrating a configuration of an event-processing system  1001  including a load distribution apparatus  101  according to the second exemplary embodiment. The same reference sign is assigned to substantially the same configuration as the configuration illustrated in  FIG. 1 , and therefore description thereof will be omitted. As illustrated in  FIG. 15 , the event-processing system  1001  according to the second exemplary embodiment includes the load distribution apparatus  101  instead of the load distribution apparatus  100 . The event-processing system  1001  according to the second exemplary embodiment further includes a transmission destination management apparatus  700 . Further, the event-processing system  1001  according to the second exemplary embodiment includes an event generator  201  instead of the event generator  200 . 
       FIG. 16  is a block diagram illustrating a configuration of the load distribution apparatus  101  illustrated in  FIG. 15 . 
     The load distribution apparatus  101  includes a determining unit  141  instead of the determining unit  140  and an updating unit  151  instead of the updating unit  150 , and further includes an association relation storage unit  160 . 
     The determining unit  141  determines an association relation between the event generator  201  and the allocation apparatus  300  that is a transmission destination of events, by using, for example, a method such as illustrated in  FIG. 14 . 
     The association relation storage unit  160  stores the association relation determined by the determining unit  141 . 
     The updating unit  151  overwrites (updates) the association relation stored by the association relation storage unit  160  in the transmission destination managing apparatus  700 . 
       FIG. 17  is an explanatory diagram illustrating one example of information stored by the transmission destination management apparatus  700  illustrated in  FIG. 15 . The transmission destination managing apparatus  700  stores an association relation between the event generator  201  and the allocation apparatus  300  that is a transmission destination of events generated by the event generator  201 . The information illustrated in  FIG. 17  indicates that an event generator  201 A transmits generated events to the allocation apparatus  300 A. The information illustrated in  FIG. 17  indicates that an event generator  201 B transmits generated events to the allocation apparatus  300 A. The information illustrated in  FIG. 17  indicates that an event generator  201 C transmits generated events to the allocation apparatus  300 A. Further, the information illustrated in  FIG. 17  indicates that an event generator  201 D transmits generated events to the allocation apparatus  300 B. 
     The transmission destination management apparatus  700  transmits an address of the allocation apparatus  300  to which the event generator  201  transmits events, as a replay in accordance with a request from the event generator  201 . 
       FIG. 18  is a block diagram illustrating a configuration of the event generator  201  illustrated in  FIG. 15 . As illustrated in  FIG. 18 , the event generator  201  includes a transmission destination acquiring unit  240  instead of the transmission destination storage unit  220 . The transmission destination acquiring unit  240  stores an address of the transmission destination management apparatus  700 . The transmission destination acquiring unit  240  issues an inquiry to the transmission destination management apparatus  700  about a transmission destination of events. The transmission destination acquiring unit  240  transmits generated events to an address acquired from the transmission destination management apparatus  700 . 
     Advantageous effects produced by the load distribution apparatus  101  according to the second exemplary embodiment will be described below. 
     The load distribution apparatus  101  according to the second exemplary embodiment includes the determining unit  141  that determines, on the basis of a reception status, the association relation between the event generator  201  and the allocation apparatus  300  that is a transmission destination of events generated by the event generator  201 . The load distribution apparatus  101  according to the second exemplary embodiment further includes the updating unit  151  that updates, on the basis of the determined association relation, information stored in the transmission destination management apparatus  700 . 
     With this configuration, the load distribution apparatus  101  according to the second exemplary embodiment is able to realize load distribution of the allocation apparatus without directly rewriting information stored by the event generator  201 . 
     The load distribution apparatus  101  according to the second exemplary embodiment can collectively update transmission destinations of events generated by all of the event generators  201  by simply updating information stored in the transmission destination management apparatus  700 . Therefore, the load distribution apparatus  101  according to the second exemplary embodiment can omit a processing effort for updating an event transmission destination of the event generator  201 , especially when there are a large quantity of the event generators  201  included in the event-processing system  1001 . 
     Third Exemplary Embodiment 
     Next, a third exemplary embodiment based on the first exemplary embodiment described above will be described. The third exemplary embodiment is also applicable to the second exemplary embodiment. 
       FIG. 19  is a block diagram illustrating a configuration of an event-processing system  1002  including a load distribution apparatus  102  according to the third exemplary embodiment. The same reference sign is assigned to substantially the same configuration as the configuration illustrated in  FIG. 1 , and therefore description thereof will be omitted. As illustrated in  FIG. 19 , the event-processing system  1002  according to the third exemplary embodiment includes the load distribution apparatus  102  instead of the load distribution apparatus  100 , and an allocation apparatus  302  instead of the allocation apparatus  300 . 
       FIG. 20  is a block diagram illustrating a configuration of the allocation apparatus  302  illustrated in  FIG. 19 . The same reference sign is assigned to substantially the same configuration as the configuration illustrated in  FIG. 3 , and therefore description thereof will be omitted. As illustrated in  FIG. 20 , the allocation apparatus  302  according to the third exemplary embodiment includes a flow measuring unit  352  instead of the flow measuring unit  350 , and further includes a throughput measuring unit  360  and a throughput weight calculating unit  370 . 
     The flow measuring unit  352  measures a transfer status of events received from the event generator  200 , for each event generator  200  that is a transmission source of events. The flow measuring unit  352  transmits the measured transfer status of the events to the load distribution apparatus  102 . 
       FIG. 21  is an explanatory diagram illustrating one example of a transfer status measured by a flow measuring unit  352 A included in an allocation apparatus  302 A. As illustrated in  FIG. 21 , the transfer status includes information that identifies the allocation apparatus  302 , information that identifies the event generator  200  that is a transmission source of events, and information including a reception status and a transmission status. The reception status includes a value concerning a number of times of reception of events by the allocation apparatus  302  within a certain period. The reception information may further include a value concerning an information size of the events received by the allocation apparatus  302  within the certain period. The transmission status includes a value concerning a number of times of transmission of events by the allocation apparatus  302  within a certain period. The transmission status may further include a value concerning the information size of the events transmitted by the allocation apparatus  302  within the certain period. The transfer status may include a matching rate. The matching rate represents a ratio of a quantity of events transmitted to the processing apparatus  400  and a quantity of events received by the allocation apparatus  302  from the event generator  200 . 
     The transfer status illustrated in  FIG. 21  indicates that the allocation apparatus  302 A receives events from the event generator  200 A “200” times within the certain period and a total amount of the information size of the events received from the event generator  200 A within the the certain period is “50 MB” (megabytes). Further, the transfer status illustrated in  FIG. 21  indicates that the allocation apparatus  302 A transmits the events received from the event generator  200 A to the processing apparatus  400  “100” times within the certain period. A matching rate of the events received from the event generator  200 A is calculated as “100×(100(a number of times of transmission)/200 (a number of times of reception))=50%”. The symbol “×” represents a symbol indicating multiplication. 
     The transfer status illustrated in  FIG. 21  indicates that the allocation apparatus  302 A receives events from the event generator  200 B “100” times within the certain period and a total amount of an information size of the events received from the event generator  200 B within the certain period is “30 MB”. Further, the transfer status illustrated in  FIG. 21  indicates that the allocation apparatus  302 A transmits the events received from the event generator  200 B to the processing apparatus  400  “100” times within the certain period. A matching rate of the events received from the event generator  200 B is calculated as “100×(100(a number of times of transmission)/100(a number of times of reception))=100%”. 
     The transfer status illustrated in  FIG. 21  indicates that the allocation apparatus  302 A receives events from the event generator  200 C “50” times within the prescribed period and a total amount of an information size of the events received from the event generator  200 C within the prescribed period is “15 MB”. Further, the transfer status illustrated in  FIG. 21  indicates that the allocation apparatus  302 A transmits the events received from the event generator  200 C to the processing apparatus  400  “0” times within the prescribed period. A matching rate of the events received from the event generator  200 C is calculated as “100×(0(a number of times of transmission)/50(a number of times of reception))=0%”. 
     Return to description referring to  FIG. 20 . The throughput measuring unit  360  measures a throughput per event when the receiving unit  310  receives events. The throughput measuring unit  360  may measure a throughput per unit information size when the receiving unit  310  receives the events. 
     The throughput measuring unit  360  further measures a throughput per event when the allocation rule retrieval unit  320  executes processing for determining transmission destinations of events on the basis of matching between the events and an allocation rule. 
     The throughput measuring unit  360  further measures a throughput per event when the transmitting unit  330  transmits events. The throughput measuring unit  360  may measure a throughput per unit information size when the transmitting unit  330  transmits the events. 
     For example, the processing measuring unit  360  may measure the throughput by calling Socket API (Application Programming Interface) and comparing the time after calling the API with the time before calling the API. 
     The throughput weight calculating unit  370  transmits the throughput per event or per unit information size measured by the throughput measuring unit  360  to the load distribution apparatus  102 . 
       FIG. 22  is a block diagram illustrating a configuration of the load distribution apparatus  102  illustrated in  FIG. 19 . The same reference sign is assigned to substantially the same configuration as the configuration illustrated in  FIG. 7 , and therefore description thereof will be omitted. As illustrated in  FIG. 22 , the load distribution apparatus  102  according to the third exemplary embodiment includes a calculating unit  132  instead of the calculating unit  130 . 
     The calculating unit  132  obtains, from the allocation apparatus  302 , a load per event, that is applied when the allocation apparatus  302  receives events (hereinafter, described as a reception load per event unit). Further, the calculating unit  132  obtains, from the allocation apparatus  302 , a load per event, that is applied when the allocation apparatus  302  retrieves the rule (hereinafter, described as a retrieval load per event unit). Further, the calculating unit  132  obtains, from the allocation apparatus  302 , a load per event, that is applied when the allocation apparatus  302  transmits events (hereinafter, described as a transmission load per event unit). 
     The calculating unit  132  calculates the load of the allocation apparatus  302  using both a reception status and a transmission status. 
     When the allocation apparatus  302  transfers events from the event generator  200  to the processing apparatus  400 , the load generated in the allocation apparatus  302  may be divided into three loads as follows: 
     1) A load applied upon receiving events, 
     2) A load applied upon matching events and an allocation rule, and 
     3) A load applied upon transmitting events. 
     The calculating unit  132  calculates a load of the allocation apparatus  302 , for example, as described below.
 
“(A load applied to the allocation apparatus 302 when the allocation apparatus 302 transfers events received from a specific event generator 200)=(a number of received event)×((a reception load per event unit)+(a retrieval load per event unit))+(a number of transmitted event)×(a transmission load per event unit)”
 
     A specific example will be explained below. It is assumed that the “reception load per event unit=10”, the “event unit retrieval load=10”, and the “event unit transmission load=10”. On the basis of the transfer status illustrated in  FIG. 21 , the calculating unit  132  calculates a load of the allocation apparatus  302 A, and the following values are obtained. 
     A load (load A) applied when the allocation apparatus  302 A transfers mails received from the event generator  200 A to the processing apparatus  400 : “(load A)=200×(10+10)+100×(10)=5000”. 
     A load (load B) applied when the allocation apparatus  302 A transfers mails received from the event generator  200 B to the processing apparatus  400 : “(load B)=100×(10+10)+100×(10)=3000”. 
     A load (load C) applied when the allocation apparatus  302 A transfers mails received from the event generator  200 C to the processing apparatus  400 : “(load C)=50×(10+10)+0×(10)=1000”. 
     The calculating unit  132  may calculate the load of the allocation apparatus  302  on the basis of the reception status or the transmission status and the matching rate included in the transfer status. 
     The calculating unit  132  may calculate the load of the allocation apparatus  302 , for example, as described below.
 
“(A load applied to the allocation apparatus 302 when the allocation apparatus 302 transfers events received from a specific event generator 200)=((a processing load upon rule matching)×(a rule matching rate)+(a processing load upon rule unmatching)×(1−(the rule matching rate)))×an event quantity”
 
     The determining unit  140  determines, on the basis of a load calculated in this manner, which event generator  200  transmits events to which allocation apparatus  302 . 
     Advantageous effects produced by the load distribution apparatus  102  according to the third exemplary embodiment will be described below. 
     The load distribution apparatus  102  according to the third exemplary embodiment includes the calculating unit  132  that calculates the load of the allocation apparatus  302  on the basis of the reception status and the transmission status. 
     By the configuration, the load distribution apparatus  102  according to the third exemplary embodiment is able to realize more accurate load distribution than the load distribution apparatus  100  according to the first exemplary embodiment. The reason is that the calculating unit  132  more accurately calculates the load of the allocation apparatus  302  for each event generator  200  that is a transmission source of events received by the allocation apparatus  302 . And, the determining unit  140  determines which event generator  200  transmits events to which allocation apparatus  302  on the basis of the accurately calculated load. 
     The allocation apparatus  302  transmits events that match an allocation rule to the processing apparatus  400  and discards events that do not match the allocation rule among the events received from the event generator  200 . Loads applied to the allocation apparatus  302  are different in a case that the events received by the allocation apparatus  302  are discarded and in a case that the events received by the allocation apparatus  302  are transferred, even the events received by the allocation apparatus  302  are the same. 
     The reason is that when the allocation apparatus  302  transfers the events, three loads, including the load applied to event reception processing, the load applied to rule matching processing, and the load applied to event transmission processing, are applied to the allocation apparatus  302 . In contrast, when the allocation apparatus  302  discards the events, only two loads, including the load applied to event reception and the load applied to rule matching processing, are applied to the allocation apparatus  302 . 
     In this manner, in the load distribution apparatus  102  according to the third exemplary embodiment, the calculating unit  132  calculates the load of the allocation apparatus  302  by considering both the reception status and the transmission status, and therefore more accurate load distribution can be realized. In other words, the load distribution apparatus  102  according to the third exemplary embodiment calculates the load of the allocation apparatus  302  by considering the matching rate of events, and therefore more accurate load distribution can be realized. 
     First Modified Example of the Third Exemplary Embodiment 
     The allocation rule storage unit  340  included in the allocation apparatus  302  may store, for example, the following allocation rule. 
     Allocation rule: “when values of latitude and longitude included in an event received by the allocation apparatus  302  fall within a prescribed range, the allocation apparatus  302  transmits the event to the processing apparatus  400 B and the processing apparatus  400 C”. 
     On the basis of such an allocation rule, the allocation apparatus  302  transmits one event received from the event generator  200  to a plurality of processing apparatuses  400 . When such an allocation rule is set, a load applied to the allocation apparatus  302  differs, depending on to how many processing apparatuses  400  the allocation apparatus  302  transmits one received event. 
     Even when such an allocation rule is set for the allocation apparatus  302 , the calculating unit  132  can accurately calculate the load of the allocation apparatus  302 . The reason is that the calculating unit  132  calculates the load of the allocation apparatus  302  by considering both the reception status and the transmission status of the allocation apparatus  302 . 
     Second Modified Example of the Third Exemplary Embodiment 
     The calculating unit  132  may acquire a load applied upon reception per unit information size (hereinafter, described as a reception load per information size unit) and a load applied upon transmission per unit information size (hereinafter, described as a transmission load per information size unit) from the allocation apparatus  302 . 
     The calculating unit  132  may calculate a load of the allocation apparatus  302  using, for example, a method as described below.
 
“(A load of an allocation apparatus)=((an information size of received events)×(an information size unit reception load))+((a number of the received events)×(an event unit retrieval load))+((an information size of transmitted events)×(an information size unit transmission load))”.
 
     Loads applied to reception processing and transmission processing of the allocation apparatus  302  often depend on an information size of events rather than a number of events. When the calculating unit  132  calculates the load of the allocation apparatus  302  in this manner, the load distribution apparatus  102  according to the third exemplary embodiment can realize more accurate load distribution. 
     Fourth Exemplary Embodiment 
     Next, a fourth exemplary embodiment based on the first exemplary embodiment described above will be described. The fourth exemplary embodiment is also applicable to the second exemplary embodiment and the third exemplary embodiment. 
       FIG. 23  is a block diagram illustrating a configuration of an event-processing system  1003  including a load distribution apparatus  103  according to the fourth exemplary embodiment. The same reference sign is assigned to substantially the same configuration as the configuration illustrated in  FIG. 1 , and therefore description thereof will be omitted. As illustrated in  FIG. 23 , the event-processing system  1003  according to the fourth exemplary embodiment includes the load distribution apparatus  103  instead of the load distribution apparatus  100  and an allocation apparatus  303  instead of the allocation apparatus  300 . 
       FIG. 24  is a block diagram illustrating a configuration of the allocation apparatus  303  illustrated in  FIG. 23 . The same reference sign is assigned to substantially the same configuration as the configuration illustrated in  FIG. 3 , and therefore description thereof will be omitted. As illustrated in  FIG. 24 , the allocation apparatus  303  according to the fourth exemplary embodiment further includes a calculating unit  380  in addition to the allocation apparatus  300  according to the first exemplary embodiment. 
     The calculating unit  380  includes a function equivalent to the calculating unit  130  according to the first exemplary embodiment or the calculating unit  132  according to the third exemplary embodiment. The calculating unit  380  acquires transfer information from the flow measuring unit  350 , calculates a load of the allocation apparatus  303  on the basis of the transfer information, and transmits load information indicating the load to the load distribution apparatus  103 . 
       FIG. 25  is a block diagram illustrating a configuration of the load distribution apparatus  103  illustrated in  FIG. 23 . The same reference sign is assigned to substantially the same configuration as the configuration illustrated in  FIG. 7 , and therefore description thereof will be omitted. As illustrated in  FIG. 25 , the load distribution apparatus  103  according to the fourth exemplary embodiment includes an acquiring unit  113  instead of the acquiring unit  110 . 
     The acquiring unit  113  acquires load information from each of a plurality of allocation apparatuses  303 . The determining unit  140  determines, on the basis of the load information acquired by the acquiring unit  113 , which event generator  200  transmits events to which allocation apparatus  303 . 
     Advantageous effects produced by the load distribution apparatus  103  according to the fourth exemplary embodiment will be described below. 
     The load distribution apparatus  103  according to the fourth exemplary embodiment includes the acquiring unit  113  that acquires load information that represents the load generated in the allocation apparatus  303  when events received from a specific event generator (e.g.  200 B) of a plurality of event generators  200  are transferred to the processing apparatus  400  within a certain period. Further, the load distribution apparatus  103  according to the fourth exemplary embodiment includes the updating unit  150  that updates, on the basis of the load information, the allocation apparatus ( 303 A) previously specified for the specific event generator ( 200 B) to another allocation apparatus (e.g.  303 B). 
     Such a configuration makes it possible that the load distribution apparatus  103  according to the fourth exemplary embodiment produces the same advantageous effects as the load distribution apparatus  100  according to the first exemplary embodiment. 
     Fifth Exemplary Embodiment 
     Next, a fifth exemplary embodiment based on the first exemplary embodiment described above will be described. The fifth exemplary embodiment is also applicable to the second to fourth exemplary embodiments. 
       FIG. 26  is a block diagram illustrating a configuration of an event-processing system  1004  including a load distribution apparatus  104  according to the fifth exemplary embodiment. 
     The event-processing system  1004  includes, as illustrated in  FIG. 26 , a plurality of event generators  204 , a plurality of allocation apparatuses  304 , a processing apparatus  404 , and the load distribution apparatus  104 . 
     The event generator  204  generates events and transmits the generated events to the allocation apparatus  304  that is specified as transmission destination in advance. 
     The allocation apparatus  304  receives events from one or a plurality of the event generators and transmits the received events to the processing apparatus  404 . 
     The processing apparatus  404  receives events from the allocation apparatus  304  and processes the events. 
     The load distribution apparatus  104  includes an acquiring unit  114  and an updating unit  154 . 
     The acquiring unit  114  acquires a reception status, that is information that represents a quantity or information size of events that the allocation apparatus (e.g.  304 A) has received from specific event generator (e.g.  204 B) of the plurality of event generators ( 204 A to  204 D) within a certain period. 
     The updating unit  154  updates, on the basis of the reception status, the allocation apparatus ( 304 A) that is a transmission destination previously specified for the specific event generator ( 204 B) to another allocation apparatus (e.g.  304 B). 
     An advantageous effect produced by the load distribution apparatus  104  according to the fifth exemplary embodiment will be described below. 
     The load distribution apparatus  104  according to the fifth exemplary embodiment can realize appropriate load distribution in an event-processing system. 
     Modified Examples of the Exemplary Embodiments 
     The application  500  may be an Actuator that executes a physical operation by receiving a processing result of events. The application  500  may be software installed on a computer. 
     The event generator  200 , the allocation apparatus  300 , the processing apparatus  400 , the application  500 , the rule setting apparatus  600 , the transmission destination management apparatus  700 , and the load distribution apparatus  100  each may be a dedicated apparatus or may be a function implemented using software. 
     The allocation rule storage unit  340  may not be necessarily implemented in the interior of the allocation apparatus  300 . When the allocation apparatus  300  and the allocation rule storage unit  340  are associated with each other, the allocation rule storage unit  340  may be implemented in an apparatus connected to the allocation apparatus  300  via a network. 
     The processing rule storage unit  420  may not be necessarily implemented in the interior of the processing apparatus  400 . When the processing apparatus  400  and the processing rule storage apparatus  420  are associated with each other, the processing rule storage unit  420  may be implemented in an apparatus connected to the processing apparatus  400  via a network. 
     The flow table storage unit  120  may not be necessarily implemented in the interior of the load distribution apparatus  100 . The flow table storage unit  120  may be implemented in an apparatus connected to the load distribution apparatus  100  via a network. 
     The association relation storage unit  160  may not be necessarily implemented in the interior of the load distribution apparatus  101 . The association relation storage unit  160  may be implemented in an apparatus connected to the load distribution apparatus  101  via a network. 
     Addresses of a plurality of allocation apparatuses  300  may be stored on the transmission destination storage unit  220  included in the event generator  200 . In the association relation stored by the association relation storage unit  160  or the transmission destination management apparatus  700 , the relation between the event generator  200  and the allocation apparatus  300  may be a one-to-many relation. 
     It is not always necessary for the acquiring unit  110  to directly acquire a transfer status from the allocation apparatus  300 . It is assumed that, for example, an operator of the allocation apparatus  300  has manually collected transfer statuses on, for example, an USB (Universal Serial Bus) memory from respective allocation apparatuses  300 . In this case, the acquiring unit  110  may read a transfer status from the USB memory. Also, the acquiring unit  110  may read a transfer status from a storage apparatus (which is not illustrated), included in the load distribution apparatus  100 . The acquiring unit  110  may passively receive a transfer status from the allocation apparatus  300 , or may pull a transfer status from the allocation apparatus  300  periodically. 
       FIG. 27  is a chart illustrating a specific example of an allocation rule. According to the allocation rule illustrated in  FIG. 27 , the allocation rule retrieval unit  320  determines, in accordance with location information included in events received by the allocation apparatus  300 , the processing apparatus  400  of a transmission destination of the events. For example, when the event generator  200  is a mobile terminal held by an individual person, location information included in events generated and transmitted by the mobile terminal may vary moment by moment, according to the movement of the individual person with the mobile terminal. In such a case, periodic load adjustments are needed among a plurality of allocation apparatuses  300 . The load distribution apparatus  100  can realize appropriate load distribution even in such an event-processing system  1000 . 
     Above mentioned modified examples are also applicable to another exemplary embodiment. 
     The configuration of a block division illustrated in each block diagram is a configuration illustrated for convenience of explanation. The present invention having been described using each exemplary embodiment as an example is not limited to the configuration illustrated in each block diagram, upon implementation. 
     Exemplary embodiments that are able to implement the present invention have been described, but these exemplary embodiments are intended to be easy understanding of the present invention and are not intended to interpret the present invention restrictively. The present invention can be modified or improved without departing from the spirit of the present invention and includes equivalents thereof. 
     This application is based upon and claims the benefit of priority from Japanese patent application No. 2013-124813, filed on Jun. 13, 2013, the disclosure of which is incorporated herein in its entirety by reference. 
     The present invention is usable for load distribution of an event-processing system.