IP Library Granted Patent US 9,444,694
Granted Patent B1
US 9,444,694 · App. 13/782,958 · Granted Sep 13, 2016

Virtual clusters to provide fault containment

Inventor: Steven Sweeting (Oakland, CA)
Assignee: TIBCO Software Inc.
H04L41/50H04L67/16
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 9,444,694
App. No.
13/782,958
Granted
Sep 13, 2016
Kind
B1
Abstract

Techniques to process service requests are described herein. In various embodiments, an identifier data associated with a service consumer with which a service request is associated is used to determine a subset comprising fewer than all members of a set of service instances. A selected service instance is selected from among the service instances in the subset to perform the service request.

Claims (29)

1. A method of processing service requests, comprising:

receiving, at a load balancer or other service request distribution node, a service request;

extracting an identifier data from the service request, wherein the identifier data includes at least an Internet Protocol (IP) address associated with a service consumer;

using the identifier data associated with the service consumer with which the service request is associated to determine a total number of service instances of a set of service instances to be made available to service requests associated with the service consumer and to determine which service instances are to be included in a subset of service instances, wherein the subset comprises fewer than all members of the set of service instances and corresponds to the total number of service instances to be made available to service requests associated with the service consumer; and

selecting from among the service instances in the subset a selected service instance to perform the service request.

2. The method of claim 1 , wherein using the identifier data associated with the service consumer with which the service request is associated to determine which service instances are to be included in the subset of service instances includes computing a key based at least in part on the identifier data and using the key to look up one or more service instance index values associated with the key.

3. The method of claim 1 , wherein using the identifier data associated with the service consumer with which the service request is associated to determine which service instances are to be included in the subset of service instances includes computing a key based at least in part on the identifier data and using the key to determine dynamically one or more service instance index values associated with the key.

4. The method of claim 3 , wherein using the key to determine dynamically one or more service instance index values associated with the key includes using at least a portion of the key to generate a random number.

5. The method of claim 4 , wherein using at least a portion of the key to generate a random number includes using said at least a portion of the key to seed a pseudorandom number generator.

6. The method of claim 1 , wherein the subset includes a prescribed number k of service instances out of a broader population of n service instances.

7. The method of claim 1 , wherein using the identifier data associated with the service consumer with which the service request is associated to determine which service instances are to be included in the subset comprising fewer than all members of the set of service instances is performed using an algorithm that ensures a same permutation of services instances is included in the subset as would have been determined for a prior service request, if any, from the same service consumer, absent changes in the set of service instances.

8. The method of claim 1 , wherein using the identifier data associated with the service consumer with which the service request is associated to determine which service instances are to be included in the subset of service instances further includes iteratively choosing a service instance from an available pool of service instances that have not already been chosen to be included in the subset.

9. The method of claim 8 , further comprising adding an index or other value associated with each service instance to be included in the subset to a list of service instances that have already been chosen to be included in the subset.

10. The method of claim 9 , further comprising checking the list, for each iteration after a first iteration of choosing the service instance to be included in the subset, to determine whether the next selected service instance index or other value has already been included in the subset.

11. A service request distribution system, comprising:

a communication interface configured to receive data associated with a service request; and

a processor coupled to the communication interface and configured to:

extract an identifier data from the service request, wherein the identifier data includes at least an Internet Protocol (IP) address associated with a service consumer;

use the identifier data associated with the service consumer with which the service request is associated to determine a total number of service instances of a set of service instances to be made available to service requests associated with the service consumer and to determine which service instances are to be included in a subset of service instances, wherein the subset comprises fewer than all members of the set of service instances and corresponds to the total number of service instances to be made available to service the service request associated with the service consumer; and

select from among the service instances in the subset a selected service instance to perform the service request.

12. The system of claim 11 , wherein the processor is configured to use the identifier data associated with the service consumer with which the service request is associated to determine which service instances are to be included in the subset of service instances at least in part by computing a key based at least in part on the identifier data and using the key to look up one or more service instance index values associated with the key.

13. The system of claim 11 , wherein the processor is configured to use the identifier data associated with the service consumer with which the service request is associated to determine which service instances are to be included in the subset of service instances at least in part by computing a key based at least in part on the identifier data and using the key to determine dynamically one or more service instance index values associated with the key.

14. The system of claim 11 , wherein the subset includes a prescribed number k of service instances out of a broader population of n service instances.

15. The system of claim 11 , wherein the processor is configured to determine the subset comprising fewer than all members of the set of service instances at least in part by choosing, iteratively a service instance from an available pool of service instances that have not already been chosen to be included in the subset.

16. A computer program product to process service requests, the computer program product being embodied in a tangible, non-transitory computer readable storage medium and comprising computer instructions for:

receiving a service request;

extracting an identifier data from a service request, wherein the identifier data includes at least an Internet Protocol (IP) address associated with a service consumer;

using the identifier data associated with the service consumer with which the service request is associated to determine a total number of service instances of a set of service instances to be made available to service the service request associated with the service consumer and to determine which service instances are to be included in a subset of service instances, wherein the subset comprises fewer than all members of the set of service instances and corresponds to the total number of service instances to be made available to service the service request associated with the service consumer; and

selecting from among the service instances in the subset a selected service instance to perform the service request.

Assignments (14)
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
CHANGE OF NAME Recorded Feb 7, 2023
From: TIBCO SOFTWARE INC.
To: CLOUD SOFTWARE GROUP, INC.
Reel/Frame 062714/0634 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
RELEASE REEL 052115 / FRAME 0318 Recorded Oct 3, 2022
From: KKR LOAN ADMINISTRATION SERVICES LLC
To: TIBCO SOFTWARE INC.
Reel/Frame 061588/0511 →
RELEASE (REEL 034536 / FRAME 0438) Recorded Sep 30, 2022
From: JPMORGAN CHASE BANK, N.A.
To: TIBCO SOFTWARE INC.
Reel/Frame 061574/0963 →
RELEASE (REEL 054275 / FRAME 0975) Recorded May 7, 2021
From: JPMORGAN CHASE BANK, N.A.
To: TIBCO SOFTWARE INC.
Reel/Frame 056176/0398 →
SECURITY AGREEMENT Recorded Nov 2, 2020
From: TIBCO SOFTWARE INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 054275/0975 →
SECURITY AGREEMENT Recorded Mar 6, 2020
From: TIBCO SOFTWARE INC.
To: KKR LOAN ADMINISTRATION SERVICES LLC, AS COLLATERAL AGENT
Reel/Frame 052115/0318 →
SECURITY INTEREST Recorded Dec 5, 2014
From: TIBCO SOFTWARE INC.; TIBCO KABIRA LLC; NETRICS.COM LLC
To: JPMORGAN CHASE BANK., N.A., AS COLLATERAL AGENT
Reel/Frame 034536/0438 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 31, 2013
From: SWEETING, STEVEN
To: TIBCO SOFTWARE INC.
Reel/Frame 030527/0533 →