IP Library Granted Patent US 12701158
Granted Patent B1
US 12701158 · App. 18/410,222 · Granted Aug 4, 2026

Client-side load balancing for remote application servers

Inventors: Matthew Cini Sarreo (Sliema, MT); Nikolay Dobrovolskiy (Moscow, RU)
Assignee: Parallels International GmbH
H04L67/1008G06F11/1464G06F11/3006G06F11/3409H04L67/01H04L67/08H04L67/75G06F2201/84
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 12701158
App. No.
18/410,222
Granted
Aug 4, 2026
Kind
B1
Abstract

Systems arid methods for implementing client-side load balancing for remote application servers. An example method comprises receiving, by a publishing server, an application server status information reflecting computing resource utilization by each application server of a plurality of application servers; receiving a request initiated by a client computing device to access a published application executable by at least a subset of the plurality of application servers; and responsive to determining that a load metric reflecting performance of the publishing server exceeds a threshold value, transmitting an instruction to the client computing device to perform client-side load balancing using a snapshot of the application server status information to select an application server of the subset of the plurality of application servers.

Claims (35)

1 . A method comprising:

periodically receiving at a publishing server status information from each remote desktop service (RDS) server of a plurality of RDS servers connected to the publishing server via one or more networks where the status information for each RDS server of the plurality of RDS servers comprises a list of published applications, a list of existing client sessions and at least one of an availability and a utilization of each resource of one or more resources of the RDS server of the plurality of RDS servers;

establishing upon the publishing server a state snapshot comprising the status information for the plurality of RDS servers and at least one of a timestamp relating to the time of generation of the state snapshot and a version identifier of the state snapshot;

transmitting the state snapshot to each client computing device of a plurality of client computing devices; and

triggering a client computing device of the plurality of client computing devices to perform client-side load balancing process in dependence upon the state snapshot with respect a request generated by the client computing device to access a published application, wherein upon the client computing device of the plurality of client computing devices being triggered to perform the client-side load balancing process, the client computing device of the plurality of client computing devices:

validates the version of state snapshot currently stored by the client computing device of the plurality of client computing devices; and

responsive to failing to successfully validate the state snapshot triggers a request for a new version of the state snapshot from the publishing server.

2 . The method according to claim 1 , wherein

the client computing device of the plurality of client computing devices is triggered to perform client-side load balancing in dependence upon receipt of an instruction to perform the client-side load balancing from the publishing server generated by the publishing server in response to a request transmitted to the publishing server by the client computing device of the plurality of client computing devices to access the published application;

the instruction is generated by the publishing server in dependence upon the publishing server determining that a load metric reflecting performance of the publishing server exceeds a threshold value; and

the client-side load balancing comprising selecting an RDS server of the subset of the plurality of RDS servers for the client computing device of the plurality of client computing devices to access the published application.

3 . The method according to claim 2 , wherein

upon the publishing server determining that the load metric reflecting performance of the publishing server does not exceed the threshold value performing a server-side load balancing to select another RDS server of the subset of the plurality of RDS servers for the client computing device to access the published application.

4 . The method according to claim 1 , wherein

upon the client computing device of the plurality of client computing devices being triggered to perform the client-side load balancing process the client computing device of the plurality of client computing devices initially performs a process comprising:

comparing a valid version code of the state snapshot to a version code of a version of the state snapshot stored upon the client computing device of the plurality of client computing devices; and

upon determining the valid version code of the state snapshot does not match the version code of the stored version of the state snapshot the client computing device transmits a request to the publishing server for the current state snapshot.

5 . The method according to claim 1 , wherein

the client-side load balancing comprises:

determining whether an existing session has already been established for the published application by the client computing device with an RDS server of the plurality of RDS servers;

upon a positive determination that the existing session has already been established for the published application by the client computing device with an RDS server of the plurality of RDS servers using the client session information within the state snapshot to connect to the RDS server of the plurality of RDS servers having the existing session; and

upon a negative determination that the existing session has already been established for the published application by the client computing device with an RDS server of the plurality of RDS servers the client computing device:

identifies based upon the client session information within the state snapshot one or more further servers running the published application; and

performs a load balancing procedure to select a further server of the one or more further servers to establish a new client session for the published application using the client session information within the state snapshot.

6 . The method according to claim 1 , further comprising

the client-side load balancing comprises:

determining whether a server side load balancing was previously executed by the publishing server to select an RDS server of the plurality of RDS servers; and

upon a positive determination that the server side load balancing was executed by the publishing server to select an RDS server of the plurality of RDS servers establishing a new session with the RDS server of the plurality of RDS servers using session identifying information returned by the publishing server in response to a request from the client computing device to the publishing server.

7 . The method according to claim 1 , further comprising

the client-side load balancing comprises:

determining whether a server side load balancing was previously executed by the publishing server to select an RDS server of the plurality of RDS servers; and

upon a positive determination that a server side load balancing was executed by the publishing server to select an RDS server of the plurality of RDS servers establish a new session with the RDS server of the plurality of RDS servers using session identifying information returned by the publishing server in response to a request from the client computing device to the publishing server; and

upon a negative determination that a server side load balancing was executed by the publishing server to select an RDS server of the plurality of RDS servers the client-side device performs the additional steps of:

determining whether an existing session was previously established for the published application by the client computing device with an RDS server of the plurality of RDS servers; and

upon a positive determination that the existing session has already been established for the published application by the client computing device with an RDS server of the plurality of RDS servers using the client session information within the state snapshot to connect to the RDS server of the plurality of RDS servers having the existing session.