It is common for services to bulkhead sets of APIs so that they are ensured a certain number of
resources. This is done to support availability and performance service level agreements for the APIs.
When bulkheading is performed, the resources available to the service are segregated between the
sets of APIs. While this division addresses the availability and performance needs, it restricts critical
APIs to a subset of the total resources available to the service when those resources are not in use
by the other APIs.
What is desired is the bulkheading of resources between critical and non‐critical APIs so that the
non‐critical set of APIs is limited in its use of resources and to support the availability and
performance of the critical set of APIs by using resources from other pools.
This solution is to create resource pools for each set of APIs; in this discussion, there are two pools
(critical and non‐critical). The non‐critical APIs use their resource pool exclusively. The critical APIs
call the non‐critical resource pool with a timeout. If the resource is returned before timing out, that
resource is used. If the request times out, the critical resource pool is called with an infinite timeout,
and the call waits for a free resource.
Creative Commons License
This work is licensed under a Creative Commons Attribution-Share Alike 4.0 License.
INC, HP, "ENABLING CRITICAL APLs TO SHARE RESOURCE POOLS ACROSS SERVICE BULKHEADS", Technical Disclosure Commons, (November 16, 2020)