IP Library › Granted Patent US 12,261,764
Granted Patent B2
US 12,261,764 · App. 18/492,771 · Granted Mar 25, 2025

Cloud agnostic service discovery

Inventors: Jonathan C. Allie (Newton, NC); Seth Hettich (Los Altos, CA); Aaron S. Joyner (Granite Falls, NC)
Assignee: Snowflake Inc.
H04L43/50H04L43/08H04L43/0805H04L43/0817H04L61/4511H04L61/4541H04L67/02H04L67/1036H04L67/133
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 12,261,764
App. No.
18/492,771
Granted
Mar 25, 2025
Kind
B2
Abstract

A system may include a processing device and a memory storing instructions that, when executed by the processing device, causes the processing device to obtain a health check instruction that is specific to a name of a service that is associated with one or more endpoints, including performing a lookup with the name to obtain the health check instruction that is specific to the name. The processing device performs the one or more actions of the health check instruction to determine a health status of the one or more endpoints, and stores the health status of the one or more endpoints. In response to receiving a request to resolve the name from a client, the processing device returns the one or more endpoints based at least on the health status of the one or more endpoints.

Claims (34)

1. A method, comprising:

obtaining a health check instruction that is specific to a name of a service that is associated with one or more endpoints of the service, wherein the obtaining comprises performing a lookup with the name to obtain the health check instruction that is specific to the name, and wherein the name encapsulates a set of criteria used for managing the one or more endpoints of the service;

performing, by a processing device, the one or more actions of the health check instruction to determine a health status of the one or more endpoints;

storing the health status of the one or more endpoints; and

in response to receiving a request to resolve the name from a client, returning the one or more endpoints based at least on the health status of the one or more endpoints.

2. The method of claim 1 , wherein returning the one or more endpoints based at least on the health status of the one or more endpoints comprises omitting those of the one or more endpoints that are unhealthy.

3. The method of claim 1 , wherein the health check instruction comprises performing a socket check of the one or more endpoints.

4. The method of claim 1 , wherein the health check instruction comprises querying a HyperText Transfer Protocol (HTTP) endpoint of the one or more endpoints.

5. The method of claim 1 , wherein performing the one or more actions of the health check instruction includes discovering the one or more endpoints associated with the service by querying a server with the name.

6. The method of claim 1 , wherein storing the health status of the one or more endpoints includes storing a timestamp with the health status, wherein the time stamp is associated with when the health check instruction was performed.

7. The method of claim 6 , wherein returning the one or more endpoints includes ignoring the health status of the one or more endpoints in response to the time stamp being older than a threshold amount.

8. A system comprising:

a memory; and

a processing device, operatively coupled to the memory, the processing device to:

obtain a health check instruction that is specific to a name of a service that is associated with one or more endpoints of the service, wherein to obtain the health check instruction comprises performing a lookup with the name to obtain the health check instruction that is specific to the name, and wherein the name encapsulates a set of criteria used for managing the one or more endpoints of the service;

perform the one or more actions of the health check instruction to determine a health status of the one or more endpoints;

store the health status of the one or more endpoints; and

in response to receiving a request to resolve the name from a client, return the one or more endpoints based at least on the health status of the one or more endpoints.

9. The system of claim 8 , wherein to return the one or more endpoints based at least on the health status of the one or more endpoints, the processing device is to omit those of the one or more endpoints that are unhealthy.

10. The system of claim 8 , wherein the health check instruction comprises to perform a socket check of the one or more endpoints.

11. The system of claim 8 , wherein the health check instruction comprises to query a HyperText Transfer Protocol (HTTP) endpoint of the one or more endpoints.

12. The system of claim 8 , wherein to perform the one or more actions of the health check instruction, the processing device is to discover the one or more endpoints associated with the service by querying a server with the name.

13. The system of claim 8 , wherein to store the health status of the one or more endpoints, the processing device is to store a timestamp with the health status, wherein the time stamp is associated with when the health check instruction was performed.

14. The system of claim 13 , wherein to return the one or more endpoints, the processing device is to ignore the health status of the one or more endpoints in response to the time stamp being older than a threshold amount.

15. A non-transitory computer-readable storage medium, the computer-readable storage medium including instructions that when executed by a processing device, cause the processing device to:

obtain a health check instruction that is specific to a name of a service that is associated with one or more endpoints of the service, wherein to obtain the health check instruction comprises performing a lookup with the name to obtain the health check instruction that is specific to the name, and wherein the name encapsulates a set of criteria used for managing the one or more endpoints of the service;

perform the one or more actions of the health check instruction to determine a health status of the one or more endpoints;

store the health status of the one or more endpoints; and

in response to receiving a request to resolve the name from a client, return the one or more endpoints based at least on the health status of the one or more endpoints.

16. The non-transitory computer-readable storage medium of claim 15 , wherein to return the one or more endpoints based at least on the health status of the one or more endpoints, the processing device is to omit those of the one or more endpoints that are unhealthy.

17. The non-transitory computer-readable storage medium of claim 15 , wherein the health check instruction comprises to perform a socket check of the one or more endpoints.

18. The non-transitory computer-readable storage medium of claim 15 , wherein the health check instruction comprises to query a HyperText Transfer Protocol (HTTP) endpoint of the one or more endpoints.

19. The non-transitory computer-readable storage medium of claim 15 , wherein to perform the one or more actions of the health check instruction, the processing device is to discover the one or more endpoints associated with the service by querying a server with the name.

20. The non-transitory computer-readable storage medium of claim 15 , wherein to store the health status of the one or more endpoints, the processing device is to store a timestamp with the health status, wherein the time stamp is associated with when the health check instruction was performed.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 21, 2025
From: ALLIE, JONATHAN C.; HETTICH, SETH; JOYNER, AARON S.
To: SNOWFLAKE INC.
Reel/Frame 070295/0363 →
Continuity (3)
Continuation 18061218 · Dec 2, 2022
Continuation 17698891 · Mar 18, 2022
Related Publication 20240056378A1 · Feb 15, 2024
References Cited (42)
US 6167446A · Lister et al. · 2000 [cited by applicant]
US 6202089B1 · Juster · 2001 [cited by applicant]
US 6286047B1 · Ramanathan et al. · 2001 [cited by applicant]
US 7653747B2 · Lucco et al. · 2010 [cited by applicant]
US 7840671B2 · Fischer et al. · 2010 [cited by applicant]
US 9344493B1 · Anand · 2016 [cited by examiner]
US 10033691B1 · Mizik et al. · 2018 [cited by applicant]
US 10044629B1 · Raftery · 2018 [cited by examiner]
US 10078682B2 · Tan et al. · 2018 [cited by applicant]
US 10135916B1 · Farhangi · 2018 [cited by examiner]
US 10182033B1 · Farhangi · 2019 [cited by examiner]
US 10243919B1 · Suresh et al. · 2019 [cited by applicant]
US 10255148B2 · Vogel · 2019 [cited by examiner]
US 10340444B2 · Makimura et al. · 2019 [cited by applicant]
US 10542071B1 · Matthews · 2020 [cited by examiner]
US 10554616B1 · Teodosiu et al. · 2020 [cited by applicant]
US 10735370B1 · Kandlur et al. · 2020 [cited by applicant]
US 10839073B2 · Chen et al. · 2020 [cited by applicant]
US 10855596B2 · Thiagarajan et al. · 2020 [cited by applicant]
US 10862852B1 · Thunga et al. · 2020 [cited by applicant]
US 11050792B2 · Venkatasubramanian · 2021 [cited by applicant]
US 11095534B1 · Dunsmore · 2021 [cited by examiner]
US 11290418B2 · Vasquez et al. · 2022 [cited by applicant]
US 11343166B2 · Kotadia · 2022 [cited by examiner]
US 11743325B1 · Dunsmore · 2023 [cited by examiner]
US 20070223446A1 · McMenamy et al. · 2007 [cited by applicant]
US 20080059656A1 · Saliba et al. · 2008 [cited by applicant]
US 20100094925A1 · St Jacques, Jr. et al. · 2010 [cited by applicant]
US 20130179548A1 · Singh et al. · 2013 [cited by applicant]
US 20170104641A1 · Bradshaw · 2017 [cited by examiner]
US 20180144031A1 · Lavelle et al. · 2018 [cited by applicant]
US 20190095478A1 · Tankersley et al. · 2019 [cited by applicant]
US 20190199611A1 · Kotadia · 2019 [cited by examiner]
US 20200329105A1 · Kammath · 2020 [cited by examiner]
US 20200403911A1 · Singhal et al. · 2020 [cited by applicant]
US 20210250265A1 · Kotadia · 2021 [cited by examiner]
US 20220200957A1 · Prabagaran et al. · 2022 [cited by applicant]
US 20230089336A1 · Battiato · 2023 [cited by examiner]
US 20230093659A1 · O'Dell · 2023 [cited by examiner]
US 20230199534A1 · Rodrigo · 2023 [cited by examiner]
PCT Search Report and Written Opinion from related PCT Application No. PCT/US2023/013128, mailed on Mar. 20, 2023, 8 pages. [cited by applicant]
PCT International Preliminary Report on Patentability from related PCT Application No. PCT/US2023/013128, mailed on Oct. 3, 2024, 7 pages. [cited by applicant]