# US 2014/0156789 A1 · System and method for addition and removal of servers in server cluster

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2014/0156789 A1
- Document ID: US20140156789A1
- Status: Published application
- Kind: A1
- Application number: 13/844,159
- Filed: 2013-03-15
- Published: 2014-06-05
- Earliest claimed: 2012-12-04
- Assignees: Genesys Telecomminucations Laboratories, Inc.
- Applicants: Genesys Telecomminucations Laboratories, Inc.
- Inventors: Victor Kolesov; Anatoliy Glagolev; Alexander Tikin
- Web page: https://patentgrep.com/patent/US20140156789A1

## CPC

- G06Q 10/063114: {Status monitoring or status determination for a person or group}
- G06F 9/50: Allocation of resources, e.g. of the central processing unit [CPU]
- G06F 40/205: Parsing
- H04L 65/1045: Proxies, e.g. for session initiation protocol [SIP]
- H04L 65/1069: Session establishment or de-establishment
- H04L 65/1104: Session initiation protocol [SIP]
- H04L 65/401: wherein the services involve a main real-time session and one or more additional parallel real-time or time sensitive sessions, e.g. white board sharing or spawning of a subconference
- H04L 67/1001: for accessing one among a plurality of replicated servers
- H04M 3/42306: {Number translation services, e.g. premium-rate, freephone or vanity number services}
- H04M 3/5191: {interacting with the Internet}
- H04M 3/5232: {Call distribution algorithms}
- H04L 45/26: {Route discovery packet}
- H04L 61/106: across networks, e.g. mapping telephone numbers to data network addresses
- H04L 61/4541: Directories for service discovery
- H04L 61/4557: Directories for hybrid networks, e.g. including telephone numbers
- H04M 2203/402: Agent or workforce management
- G06Q: INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- H04M: TELEPHONIC COMMUNICATION (circuits for controlling other apparatus via a telephone cable and not involving telephone switching apparatus G08)

## 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

### Claim 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;
sending, by each of the plurality of existing second servers, in response to the request, state information for a resource mapped to the existing second server, the state information being transmitted to the first server without sending the state information to one of the existing second servers; and
sending, by the first server, a commit message to each of the existing servers, in response to receiving the state information from each of the plurality of existing second servers; and
changing the mapping of one of the resources from one of the existing second servers to the first server in response to the commit message.

### Claim 2 (depends on 1)

The method of claim 1, comprising:
sending, by the first server, to each of the plurality of existing second servers, an initiate message;
sending, by each of the plurality of existing second servers, to the first server, an initiation acknowledge message; and
sending, by the first server, to each of the plurality of existing second servers, a state transfer request.

### Claim 3 (depends on 1)

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.

### Claim 4 (depends on 1)

The method of claim 1 further comprising:
receiving a request associated with a resource mapped to the first server from the existing second servers;
identifying the first server as responsible for the resource; and
routing the request to the first server in response to the identifying.

### Claim 5 (depends on 4)

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

### Claim 6 (depends on 4)

The method of claim 4, wherein the identifying of the first server as responsible for the resource comprises:
providing, to a function, a resource identifier (ID) identifying the resource; and
receiving as an output from the function a module identifier (ID) for the first server.

### Claim 7 (depends on 6)

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

### Claim 8 (depends on 7)

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

### Claim 9 (depends on 8)

The method of claim 8, 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.

### Claim 10 (depends on 9)

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

### Claim 11 (depends on 7)

The method of claim 7, 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.

### Claim 12

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;
sending, by the first server, state information for a resource mapped to the first server, the state information being transmitted by the first server without state information being transmitted by one of the other second servers; and
sending, by the first server, a commit message to each of the other second servers; and
changing the mapping of one of the resource from the first server to one of the other second servers to the first server in response to the commit message.

### Claim 13 (depends on 12)

The method of claim 12, comprising:
sending, by each of the plurality of other second servers, to the first server, an initiation acknowledge message.

### Claim 14 (depends on 12)

The method of claim 12, 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.

### Claim 15 (depends on 12)

The method of claim 12, further comprising:
receiving a request associated with a resource mapped to a remaining server of the plurality of other second servers from the first server;
identifying the remaining server as responsible for the resource; and
routing the request to the remaining server in response to the identifying.

### Claim 16 (depends on 15)

The method of claim 15, wherein the identifying of the remaining server as responsible for the resource comprises:
providing, to a function, a resource identifier (ID) identifying the resource; and
receiving as an output from the function a module identifier (ID) for the remaining server.

### Claim 17 (depends on 16)

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

### Claim 18 (depends on 17)

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

### Claim 19 (depends on 18)

The method of claim 18, 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.

### Claim 20 (depends on 19)

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

### Claim 21 (depends on 17)

The method of claim 17, 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.
