Tunable computerized job scheduling
US-9361154-B2 · Jun 7, 2016 · US
US10506016B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-10506016-B2 |
| Application number | US-201615159263-A |
| Country | US |
| Kind code | B2 |
| Filing date | May 19, 2016 |
| Priority date | May 19, 2016 |
| Publication date | Dec 10, 2019 |
| Grant date | Dec 10, 2019 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
Techniques herein decouple available results, from graph analysis execution, to adapt to various deployment configurations. In an embodiment, a graph engine is deployed that has multiple mutually-exclusive configuration modes that include being embedded within a software application, centrally serving software applications, or distributed amongst a cluster of computers. Based on a current configuration mode of the graph engine, a software application receives or generates an analysis request to process a graph. The software application provides the analysis request to the graph engine in exchange for access to a computational future, of the graph engine, that is based on the analysis request and the graph. Based on a proxy of said computational future, the software application accesses a result of the analysis request. In an embodiment, a remote proxy exchanges representational state transfer (REST) messages. Network mechanisms, such as transport control protocol (TCP) and hypertext transfer protocol (HTTP), provide enhanced remoting.
Opening claim text (preview).
What is claimed is: 1. A method comprising: deploying a graph engine that has at least two separate configuration modes of: embedded within a software application on a single client computer, a single computer centrally serving a plurality of remote software applications, or distributed amongst a plurality of computers; based on a current configuration mode of said graph engine, a client providing an analysis request, to generate a combined result that contains a plurality of data items of a graph, in exchange for access to a computational future, of said graph engine, that is based on said analysis request and said graph; said client using said computational future to receive a remote proxy of an iterator of the plurality of data items of said combined result; said remote proxy sending, to said graph engine, an iteration request that identifies said iterator of the plurality of data items of said combined result; said graph engine sending, to said remote proxy, a response that contains a fixed amount of said plurality of data items of the combined result for said client, wherein said fixed amount exceeds one. 2. The method of claim 1 wherein: said current configuration mode is one of: a single computer centrally serving a plurality of remote software applications or distributed amongst a plurality of computers; providing said analysis request comprises said remote proxy sending a first representational state transfer (REST) request that contains said analysis request; using said computational future comprises said remote proxy sending a second REST request that identifies said computational future. 3. The method of claim 2 wherein: sending a second REST request comprises sending an HTTP request over a transport control protocol (TCP) connection; sending a second REST response comprises: said graph engine preserving said TCP connection while said computational future is unready; sending an HTTP response over said TCP connection. 4. The method of claim 2 wherein sending said second REST request times out, and said remote proxy automatically resends said second REST request. 5. The method of claim 2 further comprising: sending a second REST response that comprises an HTTP status code that indicates an error; in response to using said remote proxy, throwing an exception based on said HTTP status code. 6. The method of claim 1 wherein: said current configuration mode is embedded within a software application on a single client computer; said graph engine comprises a weak reference to said iterator that does not prevent reclamation of said iterator. 7. The method of claim 6 wherein: said current configuration mode is one of a single computer centrally serving a plurality of remote software applications or distributed amongst a plurality of computers; the method further comprises: said software application notifying said graph engine that said software application no longer needs said iterator, and said graph engine disposing said iterator. 8. The method of claim 1 wherein: the method further comprises said software application exchanging a second analysis request to process said graph in exchange for a second computational future of said graph engine; said second analysis request identifies said iterator of the plurality of data items of said combined result. 9. The method of claim 1 further comprising said graph engine cancelling an analysis request in response to receiving a cancellation request that identifies said analysis request. 10. The method of claim 1 wherein: said analysis request comprises a graph query or an analysis script; the method further comprises said graph engine compiling, based on said current configuration mode, and executing said analysis request. 11. The method of claim 1 further comprising a software application of said plurality of remote software applications invoking at least one analysis of: community detection, PageRank, or shortest path finding. 12. The method of claim 1 wherein: exchanging said analysis request in exchange for said computational future comprises said graph engine appending said analysis request onto a queue; the method further comprises said graph engine removing said analysis request from said queue for execution by a thread of a thread pool. 13. The method of claim 1 wherein: said current configuration mode is one of: a single computer centrally serving a plurality of remote software applications or distributed amongst a plurality of computers; the method further comprises a second software application exchanging a second analysis request to process said graph in exchange for a second computational future of said graph engine; said computational future and said second computational future are unready at a same time. 14. One or more non-transitory computer-readable media storing instructions that, when executed by one or more processors, cause: deploying a graph engine that has at least two separate configuration modes of: embedded within a software application on a single client computer, a single computer centrally serving a plurality of remote software applications, or distributed amongst a plurality of computers; based on a current configuration mode of said graph engine, a client providing an analysis request, to generate a combined result that contains a plurality of data items of a graph, in exchange for access to a computational future, of said graph engine, that is based on said analysis request and said graph; said client using said computational future to receive a remote proxy of an iterator of the plurality of data items of said combined result; said remote proxy sending, to said graph engine, an iteration request that identifies said iterator of the plurality of data items of said combined result; said graph engine sending, to said remote proxy, a response that contains a fixed amount of said plurality of data items of the combined result for said client, wherein said fixed amount exceeds one. 15. The one or more non-transitory computer-readable media of claim 14 wherein: said current configuration mode is one of: a single computer centrally serving a plurality of remote software applications or distributed amongst a plurality of computers; providing said analysis request comprises said remote proxy sending a first representational state transfer (REST) request that contains said analysis request; using said computational future comprises said remote proxy sending a second REST request that identifies said computational future. 16. The one or more non-transitory computer-readable media of claim 14 wherein said graph engine comprises a weak reference to said iterator that does not prevent reclamation of said iterator. 17. The one or more non-transitory computer-readable media of claim 14 wherein: the instructions further cause said software application exchanging a second analysis request to process said graph in exchange for a second computational future of said graph engine; said second analysis request identifies said iterator of the plurality of data items of said combined result. 18. The one or more non-transitory computer-readable media of claim 14 wherein: said current configuration mode is one of: a single computer centrally serving a plurality of remote software applications or distributed amongst a plurality of computers; the instructions further cause a second software application exchanging a second analysis request to process said graph in exchange for a second computational future of said graph engin
based on web technology, e.g. hypertext transfer protocol [HTTP] · CPC title
Graphs; Linked lists (G06F16/9027 takes precedence) · CPC title
Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP] · CPC title
specially adapted for terminals or networks with limited capabilities; specially adapted for terminal portability · CPC title
Electricity · mapped topic
Related publications grouped by family.
Answers are generated from the same data shown on this page.