IP Library Granted Patent US 10,506,032
Granted Patent B2
US 10,506,032 · App. 15/963,636 · Granted Dec 10, 2019

Automated load distribution for a group-based communication platform

Inventors: Raissa Largman (San Francisco, CA); Ananya Yadav (San Francisco, CA); Serguei Mourachov (Vancouver, CA); Neil Walker (Kings Beach, CA); Denis Sodol (Vancouver, CA); Paul Lloyd (Berkeley, CA)
Assignee: SLACK TECHNOLOGIES, INC.
H04L67/1034H04L41/0654
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,506,032
App. No.
15/963,636
Granted
Dec 10, 2019
Kind
B2
Abstract

Various embodiments are directed to systems and methods for automatically distributing loads among computing devices involved in message delivery within a group-based communication platform. Embodiments utilize a status checker to monitor the relative health and/or utilization of various channel servers each servicing a group-based communication channel for communication among a particular group of client devices. Upon detecting that one or more of the channel servers exhibit failing health characteristics, the status checker may automatically reallocate the messaging load performed by the failing channel server to other servers, thereby redefining the group-based communication channel associated with a particular group to encompass the newly assigned channel server and minimizing the impact of the failed channel server on message distribution within the group-based communication channel.

Claims (51)

1. A computer-implemented method for automated load allocation among a plurality of channel servers configured for data exchange within a group-based communication platform, the method comprising:

monitoring health characteristics of a plurality of channel servers based at least in part on health data compiled by a status checker, wherein each of the plurality of channel servers synchronize communications between client devices of at least one group of client devices as defined based at least in part on a configuration key and wherein a plurality of gateway servers are subscribed with each of the channel servers based on a subscription; and

upon detecting failing health characteristics of a failing channel server identified within the plurality of channel servers:

establishing a lock between a first admin server of a plurality of admin servers and the configuration key;

updating the configuration key via the first admin server to replace the failing channel server with a replacement channel server; and

releasing the configuration key to implement the updated configuration key and to update the subscription of each of the plurality of gateway servers subscribed with the failing channel server to the replacement channel server.

2. The computer-implemented method of claim 1 , wherein the configuration key is stored within a memory associated with the status checker and is accessible to each of the plurality of admin servers.

3. The computer-implemented method of claim 1 , wherein each of the plurality of admin servers maintains a listing of active and failed channel servers, and wherein monitoring health characteristics of a plurality of channel servers comprises: updating the listing of active and failed channel servers maintained by each of the plurality of admin servers.

4. The computer-implemented method of claim 1 , wherein establishing the lock between the first admin server and the configuration key comprises:

each of the plurality of admin servers attempting to establish a lock with the configuration key; and

establishing the lock with the first admin server of the plurality of admin servers to prevent other admin servers from modifying the configuration key.

5. The computer-implemented method of claim 1 , wherein establishing the lock between the first admin server and the configuration key comprises:

each of the plurality of admin servers attempting to establish a lock with the configuration key;

establishing a lock with a second admin server of the plurality of admin servers; and

upon detecting failing health characteristics of the second admin server, establishing a lock with the first admin server of the plurality of admin servers to prevent other admin servers from modifying the configuration key.

6. The computer-implemented method of claim 1 , wherein the replacement channel server is selected from a plurality of spare channel servers that are not in use for synchronizing communication between client devices.

7. A system for automated load allocation among a plurality of channel servers configured for data exchange within a group-based communication platform, the apparatus comprising:

a plurality of admin servers, wherein each admin server comprises:

one or more non-transitory memory storage areas; and

one or more processors; and

wherein the plurality of admin servers are collectively configured to:

monitor health characteristics of a plurality of channel servers based at least in part on health data compiled by a status checker, wherein each of the plurality of channel servers synchronize communications between client devices of at least one group of client devices as defined based at least in part on a configuration key and wherein a plurality of gateway servers are subscribed with each of the channel servers based on a subscription; and

upon detecting failing health characteristics of a failing channel server identified within the plurality of channel servers:

establish a lock between a first admin server of the plurality of admin servers and the configuration key;

update the configuration key via the first admin server to replace the failing channel server with a replacement channel server; and

release the configuration key to implement the updated configuration key and to update the subscription of each of the plurality of gateway servers subscribed with the failing channel server to the replacement channel server.

8. The system of claim 7 , wherein the configuration key is stored within a memory associated with the status checker and is accessible to each of the plurality of admin servers.

9. The system of claim 7 , wherein each of the plurality of admin servers maintains a listing of active and failed channel servers within the one or more non-transitory memory storage areas, and wherein monitoring health characteristics of a plurality of channel servers comprises: updating the listing of active and failed channel servers maintained by each of the plurality of admin servers.

10. The system of claim 7 , wherein establishing the lock between the first admin server and the configuration key comprises:

each of the plurality of admin servers attempting to establish a lock with the configuration key; and

establishing the lock with the first admin server of the plurality of admin servers to prevent other admin servers from modifying the configuration key.

11. The system of claim 7 , wherein establishing the lock between the first admin server and the configuration key comprises:

each of the plurality of admin servers attempting to establish a lock with the configuration key;

establishing a lock with a second admin server of the plurality of admin servers; and

upon detecting failing health characteristics of the second admin server, establishing a lock with the first admin server of the plurality of admin servers to prevent other admin servers from modifying the configuration key.

12. The system of claim 7 , wherein the replacement channel server is selected from a plurality of spare channel servers that are not in use for synchronizing communication between client devices.

13. A computer program product for automated load allocation among a plurality of channel servers configured for data exchange within a group-based communication platform, the computer program product comprising at least one non-transitory computer-readable storage medium having computer-readable program code portions stored therein, the computer-readable program code portions comprising an executable portion configured to:

monitor health characteristics of a plurality of channel servers based at least in part on health data compiled by a status checker, wherein each of the plurality of channel servers synchronize communications between client devices of at least one group of client devices as defined based at least in part on a configuration key and wherein a plurality of gateway servers are subscribed with each of the channel servers based on a subscription; and

upon detecting failing health characteristics of a failing channel server identified within the plurality of channel servers:

establish a lock between a first admin server of a plurality of admin servers and the configuration key;

update the configuration key via the first admin server to replace the failing channel server with a replacement channel server; and

release the configuration key to implement the updated configuration key and to update the subscription of each of the plurality of gateway servers subscribed with the failing channel server to the replacement channel server.

14. The computer-program product of claim 13 , wherein the configuration key is stored within a memory associated with the status checker and is accessible to each of the plurality of admin servers.

15. The computer-program product of claim 13 , wherein establishing the lock between the first admin server and the configuration key comprises:

each of the plurality of admin servers attempting to establish a lock with the configuration key; and

establishing the lock with the first admin server of the plurality of admin servers to prevent other admin servers from modifying the configuration key.

16. The computer-program product of claim 13 , wherein establishing the lock between the first admin server and the configuration key comprises:

each of the plurality of admin servers attempting to establish a lock with the configuration key;

establishing a lock with a second admin server of the plurality of admin servers; and

upon detecting failing health characteristics of the second admin server, establishing a lock with the first admin server of the plurality of admin servers to prevent other admin servers from modifying the configuration key.

17. The computer-program product of claim 13 , wherein the replacement channel server is selected from a plurality of spare channel servers that are not in use for synchronizing communication between client devices.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 18, 2023
From: SLACK TECHNOLOGIES, LLC
To: SALESFORCE, INC.
Reel/Frame 064642/0564 →
MERGER Recorded Jul 29, 2021
From: SLACK TECHNOLOGIES, INC.
To: SLACK TECHNOLOGIES, LLC
Reel/Frame 057475/0404 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 49332/0349 Recorded Jul 19, 2021
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: SLACK TECHNOLOGIES, INC.
Reel/Frame 057649/0882 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 10, 2019
From: LARGMAN, RAISSA; YADAV, ANANYA; MOURACHOV, SERGUEI; WALKER, NEIL; SODOL, DENIS; LLOYD, PAUL
To: SLACK TECHNOLOGIES, INC.
Reel/Frame 050684/0862 →
PATENT SECURITY AGREEMENT Recorded May 30, 2019
From: SLACK TECHNOLOGIES, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 049332/0349 →
Continuity (1)
Related Publication 20190334983A1 · Oct 31, 2019