IP Library Granted Patent US 10,129,073
Granted Patent B2
US 10,129,073 · App. 15/156,277 · Granted Nov 13, 2018

System and method for addition and removal of servers in server cluster

Inventors: Victor Kolesov (Cupertino, CA); Anatoliy Glagolev (San Francisco, CA); Alexander Tikin (Pleasant Hill, CA)
H04L41/04G06F9/50G06F17/2705G06Q10/063114H04L41/12H04L65/105H04L65/1006H04L65/1069H04L65/4007H04L67/1002H04M3/42306H04M3/5191H04M3/5232H04L45/26H04L61/106H04L61/157H04L61/1541H04M2203/402
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,129,073
App. No.
15/156,277
Granted
Nov 13, 2018
Kind
B2
Abstract

A method of adding a server to, or removing a server from, a cluster of servers, and of transferring state information. A new server being added sends a message to all existing servers indicating that it is being added, the new server sends a request for state information, the existing servers in the cluster transfer state information to the new server, and the new server sends a commit message to finalize its addition. Acknowledge messages are exchanged during the process. An existing server being removed sends, to the remaining servers, an initiate message, a transfer of state information, and a commit message to finalize the removal, with acknowledge messages exchanged during the process.

Claims (59)

1. A method for adding a first server to a group of existing second servers associated with a contact center, the method comprising:

sending by the first server a request for initiating addition of the first server to the group of existing second servers, wherein the group of existing second servers manage a plurality of resources associated with the contact center;

for each particular resource of the plurality of resources, invoking a function for identifying a particular server to manage the particular resource, the particular server being selected from a group of servers including the first server and the group of existing second servers, the function being invoked in response to the request by the first server;

identifying, based on invoking the function, the particular resource to be managed by the first server;

sending, by a particular second server of the group of existing second servers, state information for the particular resource, the state information being transmitted to the first server without sending the state information to one of the existing second servers;

sending, by the first server, a commit message to at least the particular second server, in response to receiving the state information; and

finalizing configuration of the group of servers including the first server and the group of existing second servers, in response to the commit message.

2. The method of claim 1 , comprising:

sending, by the first server, to the particular second server, an initiate message;

sending, by the particular second server, to the first server, an initiation acknowledge message; and

sending, by the first server, to the particular second server, a state transfer request.

3. The method of claim 1 , comprising:

notifying a configuration server, responsible for maintaining a list of servers, of the addition of the first server;

updating, by the configuration server, the list of servers; and

notifying, by the configuration server, a set of subscribers of the update to the list of servers.

4. The method of claim 1 further comprising:

receiving a request associated with the particular resource mapped to the first server;

identifying the first server as responsible for the particular resource; and

routing the request to the first server in response to the identifying.

5. The method of claim 4 , wherein the resource is a directory number (DN).

6. The method of claim 5 , wherein the state of the particular resource includes at least information as to whether the DN is on hook, off hook, whether a call is being dialed from the DN, or work state of the DN.

7. The method of claim 4 , wherein the identifying of the first server as responsible for the particular resource comprises:

providing, to the function, a resource identifier (ID) identifying the particular resource; and

receiving as an output from the function a module identifier (ID) for the first server.

8. The method of claim 7 , wherein the function is a hash function.

9. The method of claim 7 , wherein the hash function is a consistent hash function.

10. The method of claim 8 , wherein the hash function is configured to map resource identifiers corresponding to resources in a geographic region into module identifiers corresponding to servers executing on computing devices in the geographic region.

11. The method of claim 9 , wherein the hash function comprises:

a first basic hash function configured to map resource identifiers into a range; and

a second basic hash function configured to map module identifiers into the range.

12. The method of claim 11 , wherein the second basic hash function is further configured to map a replica of each module identifier into the range.

13. The method of claim 1 , wherein the particular second server locally stores the state information, the method further comprising deleting the locally stored state information in response to receiving the commit message.

14. A method for removing a first server from a group of servers associated with a contact center, the group of servers including the first server and a plurality of other second servers, the method comprising:

sending by the first server a request for initiating removal of the first server from the group of servers;

for each resource of a plurality of resources managed by the group of servers, invoking a function for identifying a particular server from the plurality of other second servers, to manage the resource, the function being invoked in response to the request by the first server;

identifying, based on invoking the function, the particular server to manage a particular resource of the plurality of resources, currently managed by the first server;

sending, by the first server, state information for the particular resource to the particular server identified to manage the particular resource;

sending, by the first server, a commit message to at least the particular server identified to manage the particular resource; and

finalizing configuration of an updated group of servers with the first server removed, in response to the commit message.

15. The method of claim 14 , comprising:

sending, by the particular server, to the first server, an initiation acknowledge message.

16. The method of claim 14 , comprising:

notifying a configuration server, responsible for maintaining a list of servers, of the removal of the first server;

updating, by the configuration server, the list of servers; and

notifying, by the configuration server, a set of subscribers of the update to the list of servers.

17. The method of claim 14 , further comprising:

receiving a request associated with the particular resource mapped to the particular server;

identifying the particular server as responsible for the particular resource; and

routing the request to the particular server in response to the identifying.

18. The method of claim 17 , wherein the identifying of the particular server as responsible for the particular resource comprises:

providing, to the function, a resource identifier (ID) identifying the particular resource; and

receiving as an output from the function a module identifier (ID) for the particular server.

19. The method of claim 18 , wherein the function is a hash function.

20. The method of claim 19 , wherein the hash function is a consistent hash function.

21. The method of claim 19 , wherein the hash function is configured to map resource identifiers corresponding to resources in a geographic region into module identifiers corresponding to servers executing on computing devices in the geographic region.

22. The method of claim 20 , wherein the hash function comprises:

a first basic hash function configured to map resource identifiers into a range; and

a second basic hash function configured to map module identifiers into the range.

23. The method of claim 22 , wherein the second basic hash function is further configured to map a replica of each module identifier into the range.

Assignments (6)
NOTICE OF SUCCESSION OF SECURITY INTERESTS AT REEL/FRAME 04814/0387 Recorded Feb 5, 2025
From: BANK OF AMERICA, N.A., AS RESIGNING AGENT
To: GOLDMAN SACHS BANK USA, AS SUCCESSOR AGENT
Reel/Frame 070115/0445 →
NOTICE OF SUCCESSION OF SECURITY INTERESTS AT REEL/FRAME 040815/0001 Recorded Feb 3, 2025
From: BANK OF AMERICA, N.A., AS RESIGNING AGENT
To: GOLDMAN SACHS BANK USA, AS SUCCESSOR AGENT
Reel/Frame 070498/0001 →
CHANGE OF NAME Recorded May 13, 2024
From: GENESYS TELECOMMUNICATIONS LABORATORIES, INC.
To: GENESYS CLOUD SERVICES, INC.
Reel/Frame 067391/0101 →
SECURITY AGREEMENT Recorded Feb 22, 2019
From: GENESYS TELECOMMUNICATIONS LABORATORIES, INC.; ECHOPASS CORPORATION; GREENEDEN U.S. HOLDINGS II, LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 048414/0387 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 31, 2017
From: KOLESOV, VICTOR; GLAGOLEV, ANATOLIY; TIKIN, ALEXANDER
To: GENESYS TELECOMMUNICATIONS LABORATORIES, INC.
Reel/Frame 041138/0833 →
SECURITY AGREEMENT Recorded Dec 5, 2016
From: GENESYS TELECOMMUNICATIONS LABORATORIES, INC., AS GRANTOR; ECHOPASS CORPORATION; INTERACTIVE INTELLIGENCE GROUP, INC.; BAY BRIDGE DECISION TECHNOLOGIES, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 040815/0001 →
Continuity (3)
Continuation 13844159 · Mar 15, 2013
Provisional Application 61733408 · Dec 4, 2012
Related Publication 20160261454A1 · Sep 8, 2016