Patent Publication Number: US-8996704-B2

Title: Method and system for connecting clients with server

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application claims priority to Chinese Patent Application No. 201110301644.0, filed on Oct. 8, 2011, entitled “Method For Connecting Clients With Server, And System, Client, Server”, which is incorporated herein by reference in its entirety. 
     FIELD OF THE TECHNOLOGY 
     The present invention relates to the field of communication technologies, and in particular, to a method and system for connecting clients with a server. 
     BACKGROUND OF THE INVENTION 
     In the computer field, plenty of clients and server system structures exist. One or more clients or even massive clients are connected to a server to interact with the server and obtain services so as to meet requirements of the clients. 
     Currently, with growth of services, one server may serve tens of thousands of, or even over a million clients simultaneously, and usually needs to handle connection requests from the clients continuously. When a server is abnormal, for example, restarted or broken down, the disconnected clients will request to reconnect to the server immediately so that the clients can get connected as soon as practicable. 
     However, the total connection capability of each server is fixed under certain conditions. Although the connection capability may be improved through optimization, the connection capability still has a reasonable upper limit, namely, maximum connection capability. Meanwhile, each server&#39;s capability of handling access per second is also fixed under certain conditions, and has a reasonable value, namely, connection processing rate. Obviously, the maximum connection capability is far greater than the connection processing rate. Once a server is restarted or breaks down, with plenty of clients requesting to reconnect immediately, the server may reach or exceed its maximum connection capability, and the connection processing rate of the server is unable to handle so many connections simultaneously, which gives rise to surge requests. 
     A surge means that many clients request services from a server concurrently, with the rate of the concurrent requests being greater than the processing capability of the server. When the number of connection requests of the clients in a unit time exceeds the processing capability of the server, the part of connection requests beyond the processing capability will not be satisfied normally. 
     To cope with such circumstances, a corresponding reconnection mechanism exists on the client. Once a client fails in connecting, the client sends new connection requests to the server again. Consequently, the connection requests increase exponentially, which reduces the quality of service or even interrupts the service and brings disastrous consequences. 
     SUMMARY OF THE INVENTION 
     Embodiments of the present invention provide a method for connecting a client with a server, and a system, a client, and a server to prevent surge requests, namely, avoid unavailability or service interruption of the server. 
     A method for connecting a client with a server includes: 
     obtaining, by the client, random number seed information; 
     calculating, by the client, a random delay time according to the random number seed information and a random function after the client is disconnected from the server, where the random delay time is a delay time for reconnection between the client and the server; and 
     sending, by the client, a connection request to the server upon expiry of the random delay time. 
     A system for handling connections between a client and a server includes: 
     a client and a server, where 
     the client is configured to: obtain random number seed information; calculate a random delay time according to the random number seed information and a random function after the client is disconnected from the server, where the random delay time is a delay time for reconnection between the client and the server; and send a connection request to the server upon expiry of the random delay time; and 
     the server is configured to generate random number seed information and send the random number seed information to the client. 
     A client includes: 
     an obtaining unit, configured to obtain random number seed information; 
     a calculating unit, configured to calculate a random delay time according to the random number seed information and a random function, where the random delay time is a delay time for reconnection between the client and a server; and 
     a requesting unit, configured to send a connection request to the server upon expiry of the random delay time. 
     A server includes: 
     an information generating unit, configured to generate random number seed information; and 
     a sending unit, configured to send the random number seed information to a client. 
     Embodiments of the present invention bring the following benefits: when a server is restarted abnormally or breaks down, each client calculates a random delay time for reconnection to the server according to obtained random number seed information and a random function, and reattempts the connection respectively upon expiry of the random delay time, thereby preventing massive clients from requesting to connect to the server simultaneously. All clients reattempt the connection within the processing capability of the server, thereby ensuring stable and reliable operation of the server. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a schematic flowchart of connecting a client with a server according to an embodiment of the present invention; 
         FIG. 2  is a schematic flowchart of connecting a client with a server according to another embodiment of the present invention; 
         FIG. 3  is a schematic flowchart of connecting a client with a server according to still another embodiment of the present invention; 
         FIG. 4  is a schematic structural diagram of a system for handling connections between a client and a server according to an embodiment of the present invention; 
         FIG. 5  is a schematic diagram of a logical structure of a client according to an embodiment of the present invention; and 
         FIG. 6  is a schematic diagram of a logical structure of a server according to an embodiment of the present invention. 
     
    
    
     DETAILED DESCRIPTION OF THE EMBODIMENTS 
     Embodiments of the present invention provide a method for connecting a client with a server, and a system, a client, and a server to prevent reconnection requests of clients from exceeding the processing capability of a server when the server is restarted or breaks down and to avoid unavailability or service interruption of the server. 
     The following describes embodiments of the present invention in detail. 
     As shown in  FIG. 1 , a method for connecting a client with a server according to an embodiment of the present invention includes the following steps: 
     Step  101 . The client obtains random number seed information. 
     The client may be any type of computer terminal connected with a server. The server may be a web system server, a cloud service system server, a cloud storage server, or a cloud antivirus system server. The random number seed information is information that includes a random number seed. The random number seed is a delay random number seed for calculating a random delay time. 
     Step  102 . The client calculates the random delay time according to the random number seed information and a random function after the client is disconnected from the server. 
     When the server breaks down or is restarted, the client is disconnected from the server, and the client inputs the random number seed into the random function to calculate a random number. The value of the random number is the random delay time. 
     Step  103 . The client sends a connection request to the server upon expiry of the random delay time. 
     After clients are disconnected from the server, all clients do not request to reconnect to the server immediately or simultaneously, but send a connection request to the server respectively upon expiry of their respective random delay time. 
     In this embodiment, when a server is restarted abnormally or breaks down, each client calculates a random delay time for reconnection to the server according to obtained random number seed information and a random function, and reattempts the connection respectively upon expiry of the random delay time, thereby preventing massive clients from requesting to connect to the server simultaneously. 
     As shown in  FIG. 2 , a method for connecting a client with a server according to an embodiment of the present invention includes the following steps: 
     Step  201 . The client sends a connection request to a server. 
     Step  202 . The server returns a connection response and sends random number seed information to the client, and the client obtains the random number seed information from the server. 
     To prevent occurrence of surge requests after the client is connected with the server for the first time, the server sends the random number seed information to the client when the client sends the connection request to the server for the first time. For the definition of the connection request sent by the client to the server and the definition of the connection response sent by the server, see Table 1 and Table 2 respectively. 
     
       
         
           
               
             
               
                 TABLE 1 
               
             
            
               
                   
               
               
                 Definition of connection request message 
               
            
           
           
               
               
               
               
            
               
                   
                 Field 
                 Length 
                 Value 
               
               
                   
                   
               
               
                   
                 Message length 
                 1B 
                 Length of the whole 
               
               
                   
                   
                   
                 message body 
               
               
                   
                 Command word 
                 1B 
               
               
                   
                   
               
            
           
         
       
     
     
       
         
           
               
             
               
                 TABLE 2 
               
             
            
               
                   
               
               
                 Definition of connection response message 
               
            
           
           
               
               
               
               
            
               
                   
                 Field 
                 Length 
                 Value 
               
               
                   
                   
               
               
                   
                 Message length 
                 1B 
                 Length of the whole 
               
               
                   
                   
                   
                 message body 
               
               
                   
                 Command word 
                 1B 
               
               
                   
                 Random number 
                 1B 
                 Value (N) of the random 
               
               
                   
                 seed information 
                   
                 number seed information 
               
               
                   
                   
               
            
           
         
       
     
     Step  203 . The client calculates a random delay time according to the random number seed information and a random function after the server is restarted, where the random delay time is a delay time for reconnection between the client and the server. 
     The random number seed information is: 
     Random number seed information=(number of all client connections bearable by the server/number of client connections bearable by the server per second)*adjustment factor. 
     The adjustment factor is a coefficient for adjusting the size of the random number seed. If the required random delay time is long, increase the coefficient; if the required random delay time is short, decrease the coefficient. 
     The client calculates the random delay time according to the random number seed information and the random function, and the detailed process is as follows: 
     Input the random number seed information into a random function, and calculate a random number. The random number is the random delay time. For example, the random function is Srand ( ). Run Srand (random number seed information) to obtain the random delay time. The random number seed information input into the function Srand ( ) is a random number seed. Because the random number seed needs to be an integer, the value of the random number seed information is rounded to an integer in the following way: 
     Adding 1 to the last digit of the integer: Remove the digits in the decimal part of the value of the random number seed information, and add 1 to the last digit of the integer; or 
     Removing the decimal part: Remove the decimal part of the value of the random number seed information; or 
     Rounding off into an integer. For example: 
     Random number seed information=Round ((number of all client connections bearable by the server/number of client connections bearable by the server per second)*adjustment factor). 
     Round ( ) is a rounding function. 
     If the value of the random number seed information is N, where N is a numerical value greater than 0, the value range of the calculated random number is 0−N. That is, the range of the random delay time is 0−N seconds. 
     The following gives more details through an example. 
     If the number of all client connections bearable by the server is 1,000,000, and the number of client connections bearable by the server per second is 1,000, and the adjustment factor is 1, 
     (1,000,000/1,000)*1=1,000. 
     The value 1000 calculated through the foregoing formula is the random number seed information. The foregoing formula indicates that all clients can finish connecting to the server within 1000 seconds. The random number seed information is a random number seed. 
     The server sends the random number seed information 1000 to the client. Each client inputs the random number seed information 1000 into the random function Srand( ) to calculate a random number. The random number is the random delay time. 
     After a client is disconnected from the server, if the random number calculated by the client is 0, the random delay time is 0 second, and the client gets connected to the server immediately; if the random number calculated by the client is 10, the random delay time is 10 seconds, and the client gets connected to the server after a delay of 10 seconds. The value range of the random number calculated by each client is 0-1,000. That is, the random delay time is 0-1,000 seconds. 
     Step  204 . The client sends a connection request to the server upon expiry of the random delay time. 
     If the value of the calculated random delay time is 0, the client gets connected to the server immediately; if the value of the delay time of the client is N, the client waits for N seconds and then gets connected to the server again. Therefore, the method in the embodiments of the present invention reduces the number of clients sending connection requests to the server in a unit time, and ensures the connection requests of the clients to fall within the connection processing capability of the server. 
     The method of calculating the random number seed information in this embodiment is simple and effective, and it is easy for the client to calculate the random delay time according to the random number seed information and the random function. Besides, because the calculated random number seldom repeats itself, the random delay time varies between the clients, and it is avoided that massive clients send requests to the server simultaneously. 
     Understandably, the client not only may obtain the random number seed information from the server, but may also configure the random number seed information by itself. 
     To handle the possibilities that the client may fail to receive or save the random number seed or may lose the random number seed, a default value of the random number seed may be set on the client. As shown in  FIG. 3 , the details are as follows: 
     Step  301 : Before obtaining the random number seed information, a client obtains a default value of the random number seed information. 
     Step  302 : The client sends a connection request to a server. 
     Step  303 : The server sends a connection response to the client. 
     Step  304 . After the server is restarted, if the client stores the random number seed information, the client calculates a random delay time according to the random number seed information and the random function, where the random delay time is a delay time for reconnection between the client and the server, and then the client waits for the delay time; if the client fails to receive or store the random number seed information or loses the random number seed information, the client calculates a random delay time according to the default value of the random number seed information and the random function, where the random delay time is a delay time for reconnection between the client and the server, and then the client waits for the delay time. 
     Step  305 . The client sends a connection request to the server upon expiry of the random delay time. 
     In this embodiment, the client sets a default of the random number seed to ensure that the client can still obtain the random delay time when the client fails to receive or store the random number seed information or loses the random number seed information. 
     If the connection processing capability of the server is improved, the random delay time of the client may be adjusted, and the random number seed information of the client may need to be modified. The new random number seed information may be obtained by the client from the server or set by the client itself. If the random number seed information obtained by the client is new, the client needs to update the stored random number seed information. 
     The following describes a system for handling connections between a client and a server. As shown in  FIG. 4 , the system includes a client and a server. 
     Client  401  is configured to: obtain random number seed information; calculate a random delay time according to the random number seed information and a random function after it is disconnected from the server  402 , wherein the random delay time is a delay time for reconnection between the client  401  and the server  402 ; and send a connection request to the server  402  upon expiry of the random delay time; and 
     The server  402  is configured to generate random number seed information and send the random number seed information to the client  401 . 
     A message interface is set between the server  402  and the client  401 . Through the message interface, the server  402  sends the random number seed information to the client  401 . 
     The following describes the client. As shown in  FIG. 5 , the client includes: 
     an obtaining unit  501 , configured to obtain random number seed information; 
     a calculating unit  502 , configured to calculate a random delay time according to the random number seed information and a random function, where the random delay time is a delay time for reconnection between the client and a server; and 
     a requesting unit  503 , configured to send a connection request to the server upon expiry of the random delay time. 
     The running processes of the above units are as follows: 
     the obtaining unit  501  obtains the random number seed information sent by the server, or obtains the random number seed information configured by a user. 
     After the client is disconnected from the server, the calculating unit  502  invokes the random number seed information and inputs it into a random function to calculate a random number. The random number is a random delay time. 
     After the client is disconnected from the server, the requesting unit  503  does not send a connection request to the server immediately, but sends a connection request to the server upon expiry of the random delay time calculated by the calculating unit  502 . 
     Besides, the obtaining unit  501  may obtain a default value of the random number seed information, where the default value is sent by the server or configured by the user. In the case that the client fails to receive or store the random number seed information or loses the random number seed information, the calculating unit  502  uses the default value to calculate the delay time. 
     It should be pointed out that the client further includes an updating unit  504 , which is configured to update the random number seed information. 
     After the obtaining unit  501  obtains new random number seed information, if the client stores the random number seed information, the updating unit  504  updates the random number seed information, and the calculating unit  502  invokes the updated random number seed information. 
     All network terminals that meet the foregoing conditions may act as the clients of the present invention, for example, PC, and mobile phones based on various operating systems. 
     The following describes the server. As shown in  FIG. 6 , the server includes: 
     an information generating unit  601 , configured to generate random number seed information; and 
     a sending unit  602 , configured to send the random number seed information to a client. 
     The server further includes an answering unit  603 , which is configured to answer the client&#39;s request for obtaining the random number seed information. 
     The information generating unit  601  generates the random number seed information according to: 
     Random number seed information=(number of all client connections bearable by the server/number of client connections bearable by the server per second)*adjustment factor. 
     The adjustment factor is a coefficient for adjusting the size of the random number seed. 
     When the answering unit  603  answers the client&#39;s request for obtaining the random number seed information, the sending unit  602  sends the random number seed information generated by the information generating unit  601  to the client. 
     The clients in the embodiments of the present invention include but are not limited to various computer terminals, and the server that serves the clients may be a web system server, a cloud service system server, a cloud antivirus system server, or a cloud storage server. 
     The text above is a detailed description about a method for connecting a client with a server, and a system, a client, and a server according to the embodiments of the present invention. Although the invention is described through some exemplary embodiments, the invention is not limited to such embodiments. It is apparent that those skilled in the art can make modifications and variations to the invention without departing from the spirit and scope of the invention. The invention is intended to cover the modifications and variations provided that they fall in the scope of protection defined by the following claims or their equivalents.