IP Library Granted Patent US 10,075,549
Granted Patent B2
US 10,075,549 · App. 15/005,846 · Granted Sep 11, 2018

Optimizer module in high load client/server systems

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,075,549
App. No.
15/005,846
Filed
Jan 25, 2016
Granted
Sep 11, 2018
Kind
B2
Art Unit
2441
USPC
709/219
Abstract

An optimizer module can function as a proxy between clients and a server that provides access to a service via a REST API. As a proxy, the optimizer module can receive requests from the clients and can combine the requests into a single bulk request that is then submitted to the server. By combining multiple independent requests into a single bulk request, the optimizer module can reduce the total number of concurrent requests and thereby increase the total number of clients that can concurrently submit requests. In some cases, the optimizer module may be configured to apply optimizing rules when generating a bulk request.

Claims (46)

1. A method, performed by an optimizer module that functions as a proxy between a server that provides access to a resource and a number of clients, for optimizing the performance of the server, the method comprising:

receiving, at the optimizer module, requests for accessing the resource from a number of clients;

buffering the received requests during a buffering interval;

creating a number of bulk requests by combining multiple buffered requests into each bulk request;

creating mappings which define where to send responses to the requests combined into each bulk request;

after the buffering interval, sending the bulk requests to the server, each bulk request comprising a single call to a web services application programming interface (API) that specifies each of the multiple requests that have been combined into the bulk request;

for each bulk request, receiving a bulk response that includes multiple responses corresponding to the multiple requests;

parsing each bulk response to extract the multiple responses;

employing the mappings to identify the corresponding client for each of the extracted responses; and

sending each of the responses to the corresponding client based on the mappings.

2. The method of claim 1 , wherein the buffering interval is a periodic interval.

3. The method of claim 1 , wherein the buffering interval is 100 milliseconds.

4. The method of claim 1 , wherein the web services API is a representational state transfer (REST) API.

5. The method of claim 1 , wherein the mappings identify a socket used by the optimizer module to receive the corresponding request.

6. The method of claim 1 , wherein creating a number of bulk requests by combining multiple requests into each bulk request comprises:

selectively combining multiple requests to create bulk requests that are optimized for the server based on one or more of a server specification or monitored performance characteristics of the server.

7. The method of claim 6 , wherein the multiple requests are selectively combined to yield an ordering of requests within the bulk request that is optimal for the server.

8. The method of claim 6 , wherein the multiple requests are selectively combined to yield a bulk request having an optimal size.

9. The method of claim 6 , wherein the multiple requests are selectively combined to yield an optimal number of bulk requests for parallel submission to the server.

10. The method of claim 6 , wherein the multiple requests are selectively combined to yield a bulk request having an optimal compression ratio.

11. The method of claim 6 , further comprising:

reordering parameters of one or more requests within at least one bulk request to be more optimal for the server.

12. The method of claim 1 , wherein the resource is a database and the requests comprise database operations.

13. A system for enabling more clients to concurrently submit hypertext transfer protocol (HTTP) requests to a server, the system comprising:

the server that is configured to provide web services API through which HTTP requests are submitted for accessing a resource; and

an optimizer module executing on the server or on another server, the optimizer module being configured to function as a proxy between the server and clients, the optimizer module being configured to:

receive and buffer the clients' HTTP requests during a buffering interval;

generate bulk requests by combining multiple buffered HTTP requests into each bulk request;

create mappings which define where to send responses to the HTTP requests combined into each bulk request;

submit the bulk requests to the server via the web services API such that the server receives and processes the bulk requests rather than the individual HTTP requests sent by the clients;

receive bulk responses to the bulk requests;

parse the bulk responses to extract each individual response;

employing the mappings to identify the corresponding client for each of the individual responses; and

for each individual response, send an HTTP response to the corresponding client.

14. The system of claim 13 , wherein the optimizer module is further configured to selectively combine multiple buffered HTTP requests into each bulk request to form bulk requests that are optimized for the server based on one or more of a server specification or monitored performance characteristics of the server.

15. One or more computer storage media storing computer executable instructions which when executed by one or more processors implements a method for increasing the performance of a server that provides access to a database via a REST API, the method comprising:

creating, by an optimizer module that functions as a proxy for the server, a buffer for buffering requests for accessing the database;

receiving, by the optimizer module and during a buffering interval, a number of requests;

storing the received requests in the buffer;

after the buffering interval, creating a number of bulk requests by combining multiple buffered requests into each bulk request;

creating mappings which define where to send responses to the requests combined into each bulk request;

sending the number of bulk requests to the server via the REST API, each bulk request comprising a single call to the REST API;

for each bulk request, receiving a bulk response that includes multiple responses corresponding to the multiple requests;

parsing each bulk response to extract the multiple responses;

employing the mappings to identify the corresponding client for each of the extracted responses; and

sending each of the responses to the corresponding client based on the mappings.

Assignments (32)
RELEASE OF SECURITY INTEREST Recorded Nov 19, 2025
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; BINARYTREE.COM LLC; ERWIN, INC.
Reel/Frame 073606/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 18, 2025
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; BINARYTREE.COM LLC; ERWIN, INC.
Reel/Frame 073613/0326 →
SECURITY INTEREST Recorded Jun 8, 2025
From: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; ERWIN, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 071527/0649 →
SECURITY INTEREST Recorded Jun 8, 2025
From: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; ERWIN, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 071527/0001 →
SECOND LIEN INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Feb 2, 2022
From: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; BINARYTREE.COM LLC; ERWIN, INC.; ONE IDENTITY LLC; ONELOGIN, INC.; ONE IDENTITY SOFTWARE INTERNATIONAL DESIGNATED ACTIVITY COMPANY
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 058952/0279 →
FIRST LIEN INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Feb 2, 2022
From: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; BINARYTREE.COM LLC; ERWIN, INC.; ONE IDENTITY LLC; ONELOGIN, INC.; ONE IDENTITY SOFTWARE INTERNATIONAL DESIGNATED ACTIVITY COMPANY
To: GOLDMAN SACHS BANK USA
Reel/Frame 058945/0778 →
RELEASE OF SECOND LIEN SECURITY INTEREST IN PATENTS Recorded Feb 2, 2022
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC.
Reel/Frame 059096/0683 →
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS Recorded Feb 2, 2022
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC.
Reel/Frame 059105/0479 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: QUEST SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 046327/0347 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: QUEST SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 046327/0486 →
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS RECORDED AT R/F 040581/0850 Recorded May 22, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 046211/0735 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED AT REEL: 040587 FRAME: 0624. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 28, 2017
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 044811/0598 →
CHANGE OF NAME Recorded Sep 13, 2017
From: DELL SOFTWARE INC.
To: QUEST SOFTWARE INC.
Reel/Frame 043834/0852 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Nov 10, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040587/0624 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Nov 9, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040581/0850 →
RELEASE OF SECURITY INTEREST Recorded Oct 31, 2016
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0467 →
RELEASE OF SECURITY INTEREST IN CERTAIN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040039/0642) Recorded Oct 31, 2016
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
To: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0016 →
RELEASE OF REEL 037848 FRAME 0001 (TL) Recorded Sep 14, 2016
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040028/0152 →
RELEASE OF REEL 037848 FRAME 0210 (NOTE) Recorded Sep 14, 2016
From: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040031/0725 →
RELEASE OF REEL 038664 FRAME 0908 (NOTE) Recorded Sep 14, 2016
From: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; SECUREWORKS, CORP.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040027/0390 →
RELEASE OF REEL 038665 FRAME 0041 (TL) Recorded Sep 14, 2016
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; SECUREWORKS, CORP.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040028/0375 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040039/0642 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040030/0187 →
RELEASE OF REEL 037847 FRAME 0843 (ABL) Recorded Sep 13, 2016
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040017/0366 →
RELEASE OF REEL 038665 FRAME 0001 (ABL) Recorded Sep 13, 2016
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; SECUREWORKS, CORP.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040021/0348 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (NOTES) Recorded May 11, 2016
From: DELL SOFTWARE INC.; WYSE TECHNOLOGY, L.L.C.; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS FIRST LIEN COLLATERAL AGENT
Reel/Frame 038664/0908 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (TERM LOAN) Recorded May 11, 2016
From: DELL PRODUCTS L.P.; DELL SOFTWARE INC.; WYSE TECHNOLOGY, L.L.C.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 038665/0041 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (ABL) Recorded May 11, 2016
From: DELL PRODUCTS L.P.; DELL SOFTWARE INC.; WYSE TECHNOLOGY, L.L.C.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 038665/0001 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (ABL) Recorded Feb 18, 2016
From: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 037847/0843 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (NOTES) Recorded Feb 18, 2016
From: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 037848/0210 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (TERM LOAN) Recorded Feb 18, 2016
From: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037848/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 25, 2016
From: TIMISKOV, ANTON; VASILIEV, GRIGORY VALERIEVICH
To: DELL SOFTWARE, INC.
Reel/Frame 037591/0374 →