IPC분류정보
국가/구분 |
United States(US) Patent
등록
|
국제특허분류(IPC7판) |
|
출원번호 |
US-0836349
(2007-08-09)
|
등록번호 |
US-8572236
(2013-10-29)
|
발명자
/ 주소 |
- Sherb, Igor
- Wholey, III, Joseph Skeffington
- Allen, Larry W.
|
출원인 / 주소 |
|
대리인 / 주소 |
|
인용정보 |
피인용 횟수 :
4 인용 특허 :
89 |
초록
▼
A service request is processed according to a computation graph associated with the service by receiving inputs for the computation graph from a service client, providing the inputs to the computation graph as records of a data flow, receiving output from the computation graph, and providing the out
A service request is processed according to a computation graph associated with the service by receiving inputs for the computation graph from a service client, providing the inputs to the computation graph as records of a data flow, receiving output from the computation graph, and providing the output to the service client. Data flows are processed concurrently in a graph-based computation by potentially concurrent execution of different types of requests, potentially concurrent execution of similar request types, and/or potentially concurrent execution of work elements within a request.
대표청구항
▼
1. A method including: processing a service request according to a computation graph associated with the service, the computation graph including multiple components interconnected by links representing data flows, by receiving inputs for the computation graph from a service client,providing the inp
1. A method including: processing a service request according to a computation graph associated with the service, the computation graph including multiple components interconnected by links representing data flows, by receiving inputs for the computation graph from a service client,providing the inputs to the computation graph as elements of a data flow,partitioning the elements into multiple sets, based on a type of action to be performed on elements in a given set,assigning each set to a different subgraph of the computation graph, each subgraph including at least some of the components and the links of the computation graph,partitioning each of one or more of the sets into subsets of elements,selecting, for each subset of a partitioned set, an instance of processes associated with the components of the subgraph assigned to the set, from a pool of instances identified as available, the instance including the components and the links of the subgraph,assigning each subset to its respective selected instance, and tracking that the instance is in use,receiving output from the subgraphs of the computation graph, andproviding the output to the service client. 2. The method of claim 1 in which receiving the inputs includes identifying the inputs within a service request from the service client, andproviding the inputs to the computation graph includes associating a request identifier with the service request,providing a work element including the inputs to the computation graph,associating the request identifier with the work element, andcommunicating the association of the request identifier with the work element to an output node. 3. The method of claim 2 in which identifying the inputs includes extracting the inputs from an encapsulated request. 4. The method of claim 3 in which the encapsulated request includes a SOAP request. 5. The method of claim 1 in which receiving the output includes receiving a work element including outputs from the computation graph, andidentifying a request identifier associated with the work element, andproviding the output to the service client includes generating a service response corresponding to the service request identified by the request identifier, the service response including the outputs included in the work element. 6. The method of claim 5 in which generating the service response includes embedding the outputs in an encapsulated response. 7. The method of claim 6 in which the encapsulated response includes a SOAP response. 8. The method of claim 1 also including: processing a second service request according to the computation graph by receiving second inputs for the computation graph from a second service client,providing the second inputs to the computation graph as elements of a second data flow,receiving second output from subgraphs of the computation graph, andproviding the second output to the second service client; andin the computation graph, processing the first inputs and the second inputs concurrently. 9. The method of claim 8 in which processing the first inputs and the second inputs concurrently includes identifying a first subgraph applicable to the first inputs,processing the first inputs in the first subgraph,identifying a second subgraph applicable to the second inputs,processing the second inputs in the second subgraph,receiving first outputs from the first subgraph, andreceiving second outputs from the second subgraph,in which the first subgraph and the second subgraph are executed simultaneously. 10. The method of claim 8 in which processing the first inputs and the second inputs concurrently includes identifying a first instance of a subgraph as available,processing the first inputs in the first instance of the subgraph,identifying a second instance of the subgraph as available,processing the second inputs in the second instance of the subgraph,receiving first outputs from the first instance, andreceiving second outputs from the second instance,in which the first instance of the subgraph and the second instance of the subgraph are executed simultaneously. 11. The method of claim 1 in which an element of a data flow includes a record. 12. The method of claim 1 in which the inputs include records that each include one or more elements. 13. The method of claim 12 in which partitioning the elements into multiple sets includes unwrapping each record into multiple elements. 14. The method of claim 13 in which assigning each set to a different subgraph of the computation graph includes partitioning an unwrapped record into at least one set. 15. The method of claim 1, further including processing each subset in any order relative to the other subsets, using its respective assigned instance of the subgraph. 16. The method of claim 1 in which tracking that the instance is in use is based on gathering outputs of the instances. 17. The method of claim 1, further including receiving output from the instance of the subgraph, and tracking that the instance is available. 18. The method of claim 1 in which the output from the subgraphs is received by a gather node in the order that the output arrives. 19. The method of claim 18 in which the gather node identifies that an element has been processed by an instance of the subgraph based on receiving a delimiter from the instance of the subgraph. 20. The method of claim 1 in which partitioning into multiple sets of elements is in response to receiving and accepting one or more request messages associated with the inputs. 21. The method of claim 1 in which a first partition node partitions into multiple sets of elements and a second partition node partitions into subsets of elements. 22. The method of claim 21 in which the partition node sends a delimiter to an instance of the subgraph after sending an element to the instance of the subgraph. 23. The method of claim 1 in which a subset is assigned to the available instance of the subgraph before a previously assigned subset is received as output from the subgraph. 24. The method of claim 1 in which providing the output to the service client includes sending one or more output messages through an interface layer. 25. The method of claim 1 in which at least one of the different subgraphs in the computation graph is called as an external service. 26. The method of claim 1 in which another computation graph calls the subgraph as an external service. 27. The method of claim 1 in which the computation graph provides a network service to the service client. 28. The method of claim 1 in which the computation graph participates as a node in a client computation graph operating on the service client. 29. The method of claim 1 in which the inputs are received by a service node that calls the service client. 30. The method of claim 29 in which the service node participates in computations of the computation graph. 31. The method of claim 30 in which the service node sends requests related to the computations to an external service. 32. The method of claim 1 in which the inputs are received by a web services plug-in that processes requests from the service client. 33. The method of claim 32 in which the web services plug-in is an external application that communicates with the computation graph. 34. The method of claim 32 in which the web services plug-in formats the received inputs for the computation graph and formats the provided outputs for the service client. 35. The method of claim 1 in which the service node provides the inputs to the computation graph in a native format of the graph. 36. The method of claim 1, wherein the computation graph is a directed data flow graph, with vertices in the computation graph representing components corresponding to either data or processes, and with links in the computation graph indicating flows of data between components, and each subgraph of the computation graph includes a subset of fewer than all of the components and links in the computation graph. 37. A system for processing a service request according to a computation graph associated with the service, the computation graph including multiple components interconnected by links representing data flows, the system including: means for receiving inputs for the computation graph from a service client,a processor configured to provide the inputs to the computation graph as elements of a data flow,means for partitioning the elements into multiple sets, based on a type of action to be performed on elements in a given set,means for assigning each set to a different subgraph of the computation graph, each subgraph including at least some of the components and the links of the computation graph,means for partitioning each of one or more of the sets into subsets of elements,means for selecting, for each subset of a partitioned set, an instance of processes associated with the components of the subgraph assigned to the set, from a pool of instances identified as available, the instance including the components and the links of the subgraph,means for assigning each subset to its respective selected instance, and tracking that the instance is in use,means for receiving output from the subgraphs of the computation graph, andmeans for providing the output to the service client. 38. A system for processing a data flow in a graph-based computation, the system including means for identifying a first computation graph applicable to a first record in the data flow, the computation graph including multiple components interconnected by links representing data flows,means for selecting a first instance of processes associated with components of a subgraph from a pool of instances identified as available, the subgraph including at least some of the components and the links of the first computation graph, and the instance including the components and the links of the subgraph,means for selecting a second instance from the pool of instances of the subgraph identified as available,first processors configured to process a first work element in the first record by the first instance of the subgraph and process a second work element in the first record by the second instance of the subgraph,means for identifying the second work element in the first record as capable of being processed independently from the first work element,means for receiving a first output work element from the first instance,means for receiving a second output work element from the second instance, andsecond processors configured to associate the first output work element with the firstrecord and associate the second output work element with the first record,in which the first processors are configured to execute the first instance of the subgraph and the second instance of the subgraph at least partially simultaneously. 39. A method of processing a data flow in a graph-based computation including identifying a first computation graph applicable to a first record in the data flow, the computation graph including multiple components interconnected by links representing data flows,selecting a first instance of processes associated with components of a subgraph from a pool of instances identified as available, the subgraph including at least some of the components and the links of the first computation graph, and the instance including the components and the links of the subgraph,processing a first work element in the first record by the first instance of the subgraph,selecting a second instance from the pool of instances of the subgraph identified as available,identifying a second work element in the first record as capable of being processed independently from the first work element,processing the second work element in the first record by the second instance of the subgraph,receiving a first output work element from the first instance,receiving a second output work element from the second instance,associating the first output work element with the first record, andassociating the second output work element with the first record,in which the first instance of the subgraph and the second instance of the subgraph are executed at least partially simultaneously. 40. The method of claim 39 in which associating the first and second output work elements with the first record includes gathering the output work elements. 41. The method of claim 40 in which gathering the output work elements includes collecting the output work elements and subsequently combining the work elements into the first record. 42. The method of claim 39, wherein the first graph is a directed data flow graph, with vertices in the first graph representing components corresponding to either data or processes, and with links in the first graph indicating flows of data between components, and the subgraph includes a subset of fewer than all of the components and links in the first graph. 43. A computer program, stored on a non-transitory computer-readable medium, for processing a service request according to a computation graph associated with the service, the computation graph including multiple components interconnected by links representing data flows, the computer program including instructions for causing a computer to: receive inputs for the computation graph from a service client,provide the inputs to the computation graph as elements of a data flow,partition the elements into multiple sets, based on a type of action to be performed on elements in a given set,assign each set to a different subgraph of the computation graph, each subgraph including at least some of the components and the links of the computation graph,partition each of one or more of the sets into subsets of elements,select, for each subset of a partitioned set, an instance of processes associated with the components of the subgraph assigned to the set, from a pool of instances identified as available, the instance including the components and the links of the subgraph,assign each subset to its respective selected instance, and track that the instance is in use,receive output from the subgraphs of the computation graph, andprovide the output to the service client. 44. The computer program of claim 43 in which receiving the inputs includes identifying the inputs within a service request from the service client, andproviding the inputs to the computation graph includes associating a request identifier with the service request,providing a work element including the inputs to the computation graph,associating the request identifier with the work element, andcommunicating the association of the request identifier with the work element to an output node. 45. The computer program of claim 44 in which identifying the inputs includes extracting the inputs from a SOAP request. 46. The computer program of claim 43 in which receiving the output includes receiving a work element including outputs from the computation graph, andidentifying a request identifier associated with the work element, and providing the output to the service client includesgenerating a service response corresponding to the service request identified by the request identifier, the service response including the outputs included in the work element. 47. The computer program of claim 46 in which generating the service response includes embedding the outputs in a SOAP response. 48. The computer program of claim 43 also including: processing a second service request according to the computation graph by receiving second inputs for the computation graph from a second service client,providing the second inputs to the computation graph as elements of a second data flow,receiving second output from subgraphs of the computation graph, andproviding the second output to the second service client; and in the computation graph, processing the first inputs and the second inputs concurrently. 49. The computer program of claim 48 in which processing the first inputs and the second inputs concurrently includes identifying a first subgraph applicable to the first inputs,processing the first inputs in the first subgraph,identifying a second subgraph applicable to the second inputs,processing the second inputs in the second subgraph,receiving first outputs from the first subgraph, andreceiving second outputs from the second subgraph,in which the first subgraph and the second subgraph are executed simultaneously. 50. The computer program of claim 48 in which processing the first inputs and the second inputs concurrently includes identifying a first instance of a subgraph as available,processing the first inputs in the first instance of the subgraph,identifying a second instance of the subgraph as available,processing the second inputs in the second instance of the subgraph,receiving first outputs from the first instance, andreceiving second outputs from the second instance,in which the first instance of the subgraph and the second instance of the subgraph are executed simultaneously. 51. The computer program of claim 43 in which the inputs include records that each include one or more elements. 52. The computer program of claim 43, further including processing each subset in any order relative to the other subsets, using its respective assigned instance of the subgraph. 53. The computer program of claim 43 in which tracking that the instance is in use is based on gathering outputs of the instances. 54. The computer program of claim 43 further including receiving output from the instance of the subgraph, and tracking that the instance is available. 55. The computer program of claim 43 in which the output from the subgraphs is received by a gather node in the order that the output arrives. 56. The computer program of claim 55 in which the partition node sends a delimiter to an instance of the subgraph after sending an element to the instance of the subgraph. 57. The computer program of claim 43 in which a first partition node partitions into multiple sets of elements and a second partition node partitions into subsets of elements. 58. The computer program of claim 57 in which the gather node identifies that an element has been processed by an instance of the subgraph based on receiving a delimiter from the instance of the subgraph. 59. The computer program of claim 43 in which a subset is assigned to the available instance of the subgraph before a previously assigned subset is received as output from the subgraph. 60. The computer program of claim 43 in which at least one of the different subgraphs in the computation graph is called as an external service. 61. The computer program of claim 43 in which the computation graph provides a network service to the service client. 62. The computer program of claim 43 in which the computation graph participates as a node in a client computation graph operating on the service client. 63. The computer program of claim 43 in which the inputs are received by a web services plug-in that processes requests from the service client. 64. The computer program of claim 63 in which the web services plug-in is an external application that communicates with the computation graph. 65. The computer program of claim 63 in which the web services plug-in formats the received inputs for the computation graph and formats the provided outputs for the service client. 66. The computer program of claim 43 in which the service node provides the inputs to the computation graph in a native format of the graph. 67. The computer program of claim 43, wherein the computation graph is a directed data flow graph, with vertices in the computation graph representing components corresponding to either data or processes, and with links in the computation graph indicating flows of data between components, and each subgraph of the computation graph includes a subset of fewer than all of the components and links in the computation graph. 68. A computer program, stored on a non-transitory computer-readable medium, for processing a data flow in a graph-based computation, the computer program including instructions for causing a computer to: identify a first computation graph applicable to a first record in the data flow, the computation graph including multiple components interconnected by links representing data flows,select a first instance of processes associated with components of a subgraph from a pool of instances identified as available, the subgraph including at least some of the components and the links of the first computation graph, and the instance including the components and the links of the subgraph,process a first work element in the first record by the first instance of the subgraph,select a second instance from the pool of instances of the subgraph identified as available,identify a second work element in the first record as capable of being processed independently from the first work element,process the second work element in the first record by the second instance of the subgraph,receive a first output work element from the first instance,receive a second output work element from the second instance,associate the first output work element with the first record, andassociate the second output work element with the first record,in which the instructions cause the computer to execute the first instance of the subgraph and the second instance of the subgraph at least partially simultaneously. 69. The computer program of claim 68 in which associating the first and second output work elements with the first record includes gathering the output work elements. 70. The computer program of claim 69 in which gathering the output work elements includes collecting the output work elements and subsequently combining the work elements into the first record. 71. The computer program of claim 68, wherein the first graph is a directed data flow graph, with vertices in the first graph representing components corresponding to either data or processes, and with links in the first graph indicating flows of data between components, and the subgraph includes a subset of fewer than all of the components and links in the first graph.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.