IP Library › Granted Patent US 10,795,966
Granted Patent B1
US 10,795,966 · App. 16/057,074 · Granted Oct 6, 2020

Extracting data sets from external data stores

Inventors: Jay D. Farner (Bloomfield Hills, MI); Jasen Sams (Allen Park, MI); Peter Ritchie (Phoenix, AZ); Joe Guadagno (Mesa, AZ)
Assignee: Quicken Loans, LLC
G06F16/9574H04L67/06H04L67/1014H04L67/1023H04L67/2842H04L67/02
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,795,966
App. No.
16/057,074
Filed
Aug 7, 2018
Granted
Oct 6, 2020
Kind
B1
Art Unit
2446
USPC
709/203
Abstract

A system for routing data requests may include internal systems that generate data requests to be routed to external data stores. The system may include a cloud computing platform that is configured to receive the data requests from the internal systems. For each data request, the system may determine a type associated with the data request, select a subset of the external data stores that are capable of fulfilling the data request based on the type of the data request, and select an external data store from the subset based on an identity of an internal system from which the data request was received and thresholds associated with the external data stores.

Claims (63)

1. A system for routing data requests from internal systems to external data stores, the system comprising:

a plurality of internal systems that generate a plurality of data requests to be routed to a plurality of external data stores;

a cloud computing platform comprising one or more processors that are configured to:

receive the plurality of data requests from the plurality of internal systems; and

for each of the plurality of data requests received from the plurality of internal systems:

determine a type associated with the data request;

select a subset of the plurality of external data stores that are capable of fulfilling the data request based at least in part on the type associated with the data request;

select an external data store from the subset of the plurality of external data stores, wherein the external data store is selected based at least in part on:

an identity of an internal system in the plurality of internal systems from which the data request was received; and

one or more thresholds associated with the subset of the plurality of external data stores; and

route an external request based on the data request to the external data store.

2. The system of claim 1 , wherein the cloud computing platform further comprises a first cache comprising external data previously received from the plurality of external data stores in response to data requests.

3. The system of claim 2 , wherein the one or more processors of the cloud computing platform are further configured to, for each of the plurality of data requests received from the plurality of internal systems:

receive a response comprising external data in response to the data request;

generate a response based on the external data;

send the response to the internal system in the plurality of internal systems from which the data request is received; and

store the external data in the first cache.

4. The system of claim 2 , wherein the one or more processors of the cloud computing platform are further configured to, for each of the plurality of data requests received from the plurality of internal systems:

receive a second data request from one of the plurality of internal systems;

determine whether the second data request can be serviced using the external data previously received in the first cache; and

if the second data request can be serviced using the external data previously received in the first cache, generate a response based on the external data previously received in the first cache without sending a request to the plurality of external data stores.

5. The system of claim 1 , wherein the cloud computing platform further comprises a second cache comprising information used to build a request to the plurality of external data stores.

6. The system of claim 5 , wherein the one or more processors of the cloud computing platform are further configured to, for each of the plurality of data requests received from the plurality of internal systems:

determine that the data request does not include all the information needed to generate the external request for the external data store;

extract an identifier from the data request;

retrieve the information needed to generate the external request from the second cache using the identifier; and

generate the external request using the information needed to generate the external request retrieved from the second cache.

7. The system of claim 5 , wherein the one or more processors of the cloud computing platform are further configured to, for each of the plurality of data requests received from the plurality of internal systems:

determine that the data request includes all the information needed to generate the external request to the external data store; and

send the information needed to generate the external request to the second cache.

8. The system of claim 1 , wherein the cloud computing platform further comprises an API comprising one or more function calls that are associated with the subset of the plurality of external data stores that are capable of fulfilling the data request.

9. The system of claim 8 , wherein the type associated with the data request is determined based on the one or more function calls received through the API.

10. The system of claim 1 , wherein the plurality of internal systems comprises a Web server.

11. A method for routing data requests from internal systems to external data stores, the system comprising:

receiving, at a cloud computing platform, a plurality of data requests from a plurality of internal systems; and

for each of the plurality of data requests received from the plurality of internal systems:

determining a type associated with the data request;

selecting a subset of the plurality of external data stores that are capable of fulfilling the data request based at least in part on the type associated with the data request;

selecting an external data store from the subset of the plurality of external data stores, wherein the external data store is selected based at least in part on:

an identity of an internal system in the plurality of internal systems from which the data request was received; and

one or more thresholds associated with the subset of the plurality of external data stores; and

routing an external request based on the data request to the external data store.

12. The method of claim 11 , wherein each of the plurality of external data stores is operated on a computer system that located in a separate facility from the cloud computing platform and the plurality of internal systems, and wherein each of the plurality of external data stores is accessed by the cloud computing platform over the Internet.

13. The method of claim 11 , wherein the one or more thresholds associated with the subset of the plurality of external data stores comprises: a target threshold for each of the subset of the plurality of external data stores defining a percentage of overall request traffic to be routed to each of the subset of the plurality of external data stores.

14. The method of claim 13 , wherein selecting an external data store from the subset of the plurality of external data stores comprises:

determining that a current request traffic percentage for the external data store deviates more from its associated target threshold than others of the subset of the plurality of external data stores; and

selecting the external data store that the current request traffic percentage for the external data store deviates more from its associated target threshold.

15. The method of claim 11 , further comprising:

determining that a size of the plurality of data requests is exceed a threshold; and

in response, resetting one or more characters that are used to select the external data store from the subset of the plurality of external data stores.

16. The method of claim 11 , wherein the cloud computing platform further comprises a first cache comprising external data previously received from the plurality of external data stores in response to data requests.

17. The method of claim 16 , further comprising, for each of the plurality of data requests received from the plurality of internal systems:

receiving a response comprising external data in response to the data request;

generating a response based on the external data;

sending the response to the internal system in the plurality of internal systems from which the data request is received; and

storing the external data in the first cache.

18. The method of claim 11 , further comprising, receiving dynamic changes to the one or more thresholds, and rebalancing request traffic between the plurality of external data stores.

19. The method of claim 11 , wherein the cloud computing platform further comprises a second cache comprising information used to build a request to the plurality of external data stores.

20. The method of claim 19 , further comprising, for each of the plurality of data requests received from the plurality of internal systems:

determining that the data request does not include all the information needed to generate the external request for the external data store;

extracting an identifier from the data request;

retrieving the information needed to generate the external request from the second cache using the identifier; and

generating the external request using the information needed to generate the external request retrieved from the second cache.

Assignments (2)
CHANGE OF NAME Recorded Jun 11, 2020
From: QUICKEN LOANS INC.
To: QUICKEN LOANS, LLC
Reel/Frame 052914/0410 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 18, 2020
From: FARNER, JAY D.; SAMS, JASEN; RITCHIE, PETER; GUADAGNO, JOE
To: QUICKEN LOANS
Reel/Frame 052685/0215 →
Continuity (2)
Continuation 15709233 · Sep 19, 2017
Provisional Application 62396615 · Sep 19, 2016
Cited By (1)
US 12,413,599