US9229980B2 - Composition model for cloud-hosted serving applications - Google Patents
Composition model for cloud-hosted serving applications Download PDFInfo
- Publication number
- US9229980B2 US9229980B2 US12/711,146 US71114610A US9229980B2 US 9229980 B2 US9229980 B2 US 9229980B2 US 71114610 A US71114610 A US 71114610A US 9229980 B2 US9229980 B2 US 9229980B2
- Authority
- US
- United States
- Prior art keywords
- module
- middleware
- request
- response
- recited
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active, expires
Links
Images
Classifications
-
- G06F17/30463—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0709—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0715—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a system implementing multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0793—Remedial or corrective actions
Definitions
- the present invention relates generally to computer implemented execution of applications using query plans.
- an application such as a serving application may include one or more query plans. Each query plan may link a plurality of module objects. Therefore, an application may be executed by executing its corresponding query plans.
- a query plan linking a plurality of module objects is generated by instantiating one or more of a plurality of module types, wherein the plurality of module types includes a request module type and a response module type. A request is received. The query plan linking the plurality of module objects is executed such that a response to the request is generated. The response is then returned.
- a plurality of query plans are generated.
- each of the query plans may be associated with a particular service or server.
- one of the query plans may be selected to process the request.
- the selection of a query plan may be based upon a variety of factors, including a service identified in the request.
- the module types may include a request module type, a response module type, a basic module type, an asynchronous module type, a branch module type, a multibranch module type, a fork module type, a join module type, and/or a termination module type.
- an instance of the request module type obtains information from the request (e.g., via deserialization) and the response is formed by an instance of the response module type using the obtained information (e.g., via serialization).
- Each of the module types may comprise a set of computer-readable instructions.
- a system includes means for instantiating one or more query plans such that each of the query plans links a corresponding plurality of module objects, means for instantiating one or more of a plurality of module types such that a plurality of module objects are generated, means for receiving a request, means for executing one of the query plans linking a corresponding plurality of module objects such that a response to the request is generated; and means for returning the response.
- the system may further include means for identifying one of the query plans to execute in order to generate a response to a particular request.
- the system may also provide multi-threaded capabilities via a horizontal container.
- the horizontal container may also have the capability of receiving a request (e.g, in accordance with a particular protocol), as well as forming a response (e.g, in accordance with a particular protocol).
- the horizontal container may receive the request from an endpoint, and return the response to the endpoint from which the request was received.
- the horizontal container may be implemented via a set of computer-readable instructions.
- the system may also include vertical middleware responsible for loading (e.g., instantiating) query plans and selecting an appropriate query plan to process a request.
- the vertical middleware may therefore include one or more query plans that have previously been loaded.
- the vertical middleware may comprise a set of computer-readable instructions.
- the system may further comprise a cloud that includes a pool of centrally managed hardware. Centralized management and provisioning of the hardware may provide for dynamic, on-demand provisioning to match the needs of a particular application.
- the cloud may include a plurality of servers, as well as other hardware such as storage devices.
- the cloud may communicate one or more endpoints in the cloud to the horizontal container.
- the horizontal container may communicate one or more endpoint definitions to the middleware, where the endpoint definitions are mapped to one or more endpoints in the cloud.
- the horizontal container may return a response to an endpoint from which a request was previously received by identifying the endpoint mapped to a particular endpoint definition provided by the middleware.
- a system includes a plurality of module types, vertical middleware, and a horizontal container.
- the vertical middleware may be configured to instantiate one or more of the plurality of module types such that a plurality of module objects are generated for each query plan, identify a query plan to generate a response to a request, and execute the identified query plan linking a plurality of module objects.
- the horizontal container may be configured to receive a request (e.g., from a cloud) and forward the request to the middleware, as well as be configured to receive a response from the middleware and return the response (e.g., to the cloud).
- the invention pertains to one or more devices, each comprising a processor and a memory.
- the processor(s) and/or memories may be configured to perform one or more of the above described method operations.
- the invention pertains to a computer readable storage medium having computer program instructions stored thereon that are arranged to perform one or more of the above described method operations.
- the module types, vertical middleware, and horizontal container may each be implemented via a corresponding set of computer-readable instructions.
- the module types, vertical middleware, and/or horizontal container may be implemented via one or more devices. More particularly, the devices may be devices in a cloud.
- FIG. 1 is a block diagram illustrating an example system in which various embodiments may be implemented.
- FIG. 2 is a process flow diagram illustrating a method of implementing an application.
- FIG. 3 is a diagram illustrating an example query plan that may be generated and executed in accordance with various embodiments.
- FIGS. 4A-4B are diagrams illustrating an example module and corresponding interface definition.
- FIG. 5 is a simplified diagram of an example network environment in which various embodiments may be implemented.
- FIG. 6 illustrates an example computer system in which various embodiments may be implemented.
- Systems such as serving systems often have many common design elements.
- the external entry point for any request is typically a web-server.
- Behind the server are typically a variety of different services that participate in the processing and serving of the request. These services are often performed via a front-end server, a clustered/partitioned set of data servers, etc.
- front-end server a clustered/partitioned set of data servers, etc.
- clustered/partitioned set of data servers etc.
- the disclosed embodiments support the use of reusable software components to implement various applications. More particularly, the disclosed embodiments may be used to implement a variety of serving systems, such as advertising and search systems. For instance, the disclosed embodiments may enable a request such as a search query or server request to be processed and a response to be returned using various reusable components. In this manner, various applications and algorithms for selecting and providing search results and/or one or more advertisements may be implemented in a more efficient manner. Accordingly, teams may be freed to focus on their particular application logic and capabilities.
- the disclosed embodiments may be implemented using a variety of programming languages.
- the disclosed embodiments are implemented using an object-oriented language such as C++.
- object-oriented language such as C++.
- FIG. 1 is a diagram illustrating an example system in which the disclosed embodiments may be implemented.
- a set of reusable software may be provided. More particularly, a plurality of module types may be established which may serve as building blocks for different applications. For instance, each of the plurality of module types may be a different class. When one of the plurality of module types is instantiated, an instance of the module type is generated. An instantiation of a module type may be referred to as a module object or module.
- the system may also include vertical middleware 104 .
- the middleware 104 may include software that executes one or more applications, which may each be composed of one or more query plans.
- Each query plan may include a plurality of module objects of various module types that are executed in a specified order.
- Each of the module objects may be one of a plurality of module types.
- a query plan may include module objects of one or more module types.
- a query plan may include one or more module objects of a single module type.
- the middleware 104 may load applications upon startup. More particularly, the middleware 104 may be responsible for instantiating a query plan and any corresponding module objects. In one embodiment, the module objects of the query plan may not be accessed by another query plan. Rather, each query plan may have a plurality of module objects that are dedicated to the query plan.
- the middleware 104 may select an application or query plan to process the request.
- the middleware 104 may also be responsible for scheduling one or more query plans during execution.
- the system may further include a horizontal container 106 .
- the horizontal container 106 may include software that is responsible for receiving and propagating external client requests to the middleware 104 , as well as propagating responses received from the middleware 104 to clients that initiated the requests.
- the horizontal container 106 may be implemented using various protocols via an abstract application programming interface (API) for a protocol driver plugin.
- API application programming interface
- the protocol implemented by the horizontal container 106 may provide a request/response capability.
- the horizontal container 106 may provide cluster (scatter-gather) network input/output (I/O), where one request may be sent to multiple partitions (e.g., servers) and the responses aggregated at the container 106 and returned to the client.
- the horizontal container 106 may support multi-threaded functionality. More particularly, multiple distinct requests may be processed in parallel, where each of the requests may be processed within a single one of a plurality of threads or, in case of a fork or a multibranch module, multiple threads can be employed simultaneously in processing a single request. Generally, access to a module within a query plan is serialized. However, different concurrent requests executed by different threads may execute the same module simultaneously.
- information regarding the request may be provided as a context object that contains request data and additional metadata about the request.
- the horizontal container 106 may provide the context object to the vertical middleware 104 .
- the context object may then be passed as a parameter to and between modules during execution of a query plan.
- the system may include one or more APIs and/or hardware interfaces for exporting monitoring and metrics data. More particularly, an API may enable an application to define a monitoring event, generate a variety of monitoring and metrics data, and export the monitoring and metrics data to a receiving system for monitoring.
- the system may be a serving system that is hosted within a cloud, referred to as hosting cloud 108 .
- a cloud may include a pool of centrally managed hardware. Centralized management and provisioning of the hardware may provide for dynamic, on-demand provisioning to match the needs of a particular application. Thus, a cloud enables the provision of dynamically scalable resources.
- a cloud will include a plurality of servers. At least one of the plurality of servers may function as a web server and/or search server. The resources may also be virtualized as a service over the Internet.
- the container 106 may serve as an abstraction layer that supports communication between the hosting cloud 108 and the middleware 104 . More particularly, the hosting cloud 108 may provision and/or modify endpoints within the cloud 108 .
- the endpoints may include one or more network devices such as servers.
- one or more abstract endpoints i.e, endpoint definitions or named endpoints
- the container 106 may provide these abstract endpoints to the middleware, enabling the middleware 104 to communicate with endpoints in the cloud 108 .
- one or more cloud serving engines in the cloud 108 may communicate with the container 106 to provision and/or modify endpoints.
- the container 106 may then provide corresponding abstract endpoints to the middleware 104 , enabling the middleware to communicate with the abstract endpoints.
- This enables the cloud 108 to add, replace, remove, or otherwise modify endpoints without affecting the applications running in the middleware 104 . Therefore, dynamic changes to the endpoints and/or corresponding abstract endpoints may be made while an application is running without impacting the application.
- the horizontal container 106 and/or middleware 104 may be independent of communication protocols implemented in the cloud 108 . Thus, applications may be written independently of communication protocols. Accordingly, applications that are written may be reusable and portable to other systems.
- FIG. 2 is a process flow diagram illustrating a method of implementing an application.
- a query plan and corresponding modules may be generated (e.g., instantiated) at start-up.
- a plurality of query plans may be generated, where each of the query plans is dedicated to a particular server or service.
- one or more of a plurality of module types may be instantiated such that a plurality of module objects are generated as shown at 200 .
- a query plan linking the plurality of module objects may be executed to process one or more requests.
- a request may be received.
- the request may be received via a web server.
- the middleware may identify a query plan to process the request at 204 . This may be accomplished by identifying one of a plurality of query plans. More particularly, upon receipt of a request, the server or service being requested may be identified, enabling one of a plurality of query plans providing the requested server or service to be identified. The request may then be processed via the identified query plan. In this manner, requests directed to a particular server or requesting a particular service may be processed by a corresponding one of a plurality of query plans.
- An attribute map may be generated in order to maintain values of attributes that are accessed and/or modified during a particular session for the request.
- the attribute map may be accessed and updated during the session to reflect current values of the attributes.
- the identified query plan linking a plurality of module objects may be executed at 206 such that a response to the request is generated. More particularly, modules in a query plan are executed in the specified order until the query plan has completed execution or, alternatively, an error occurs. In one embodiment, when an error occurs, a terminate module is executed, as will be described in further detail below.
- the response may be returned to an initiator of the request at 208 . For instance, the response may be returned via a web server.
- a module may include one or more methods (e.g., functions or procedures).
- a module may include a run( )method.
- the module may include data that is local to the module.
- the methods of a module and any corresponding attributes may be defined by an interface definition.
- Each module may be defined by an interface definition. More particularly, an interface definition for a module may declare one or more operations (e.g., methods) that the module will perform. In addition, the interface definition for a module may identify a set of one or more attributes that the module (e.g., a method of the module) will access. More particularly, the interface definition may identify the name of each of the attributes, the type of the attribute (e.g., integer, string, etc.), and/or whether the attribute functions as an input and/or output parameter.
- An example module and corresponding interface definition will be described in further detail below with reference to FIGS. 4A-4B .
- a module can only access those attributes specified in its interface definition. Therefore, input and output dependencies of modules within a query plan may be validated from the corresponding interface declarations. This validation may be performed when a query plan is initially loaded or generated.
- each query plan communicates with a module via its interface definition, the internal functionality of a module may be modified without impacting a query plan calling the module. Moreover, since the operations implemented by a module and corresponding attributes are visible, a query plan may be easily composed without knowledge of the specific implementation details of the operations of the module.
- a plurality of module types may be supported. In order to generate a module of a particular module type, an instance of the module type is generated. Thus, instantiation of the various module types enables the module types to be reusable.
- module types that may be implemented are described below.
- a request module may be responsible for processing a request (e.g., server request). For instance, the request module may perform de-serialization associated with the request or data received in association with the request (e.g., from a buffer).
- a query plan may include a single request module.
- a response module may be responsible for forming a response (e.g., server response).
- the response module may perform serialization of a response and provide the serialized response into a buffer for transport.
- some applications may include multiple response modules for forming multiple responses per query.
- a basic module may be used for straight-line application logic that does not depend upon additional external services (e.g., web services).
- Basic modules may be executed from start to finish through a single call.
- An asynchronous module may be used to implement application logic that depends upon external services (e.g., web services).
- external services e.g., web services
- one or more network services may be invoked.
- corresponding callback methods may be invoked by the horizontal container.
- each asynchronous module may include a callback method that may be called by the horizontal container.
- a callback method invoked, the execution of the path in the query plan returns to the point after which the network service was invoked. This may be accomplished by passing the original request (or corresponding context object) along with a response received from the external service via the callback method.
- a branch module may determine during runtime which one of two or more child modules to invoke next, thereby providing switch-like control flow behavior in the query plan.
- a fork module may execute its child modules in parallel on multiple threads such that each of the child modules is executed on a separate one of the threads. Any module that is not a branch module and has more than one child module may be considered to be a fork module.
- a multibranch module may be used to select one or more of a set of two or more branch modules, and to execute the sub-branches of each of the selected branch module(s) in parallel.
- a multibranch module may prevent specific branch module(s) from being executed.
- a multibranch module may prevent one or more specific sub-branches from being executed.
- a join module may be used to synchronize modules executing simultaneously on independent execution paths.
- a join module may collect responses generated via the different paths. As each execution path completes, it may enter the join module. In one embodiment, only one thread per request runs in a join module at a time. By default, a join module may wait for all execution paths to complete before continuing to execute the next (non-parallel) module. However, a join module can decide whether to wait for additional execution paths to complete. In other words, the join module may decide not to wait for all execution paths to complete, and implicitly cancel all outstanding execution paths.
- a join module may occur after a fork module. Therefore, the join module may cancel one or more of the pending fork paths that have not yet completed executing.
- join module Since a join module is invoked after multiple parallel paths of execution, a join module has an opportunity to resolve any conflicts that might have occurred due to multiple modules modifying the same attribute (e.g., output parameter/argument). As each execution path enters a join module, that join module may select the corresponding output value to keep for the attribute or choose not to keep the value for the attribute.
- attribute e.g., output parameter/argument
- Termination In the event of an error in the execution of any of the paths, a termination module may be executed. The execution of the termination module may enable an error response to be returned.
- the termination module may be of any type of module. In one embodiment, the termination module does not have any child modules.
- FIG. 3 is a diagram illustrating an example query plan that may be generated and executed in accordance with various embodiments.
- a query plan may be represented by a tree data structure, where each node represents a different module object. In this example, the query plan is executed in a top-down manner (e.g., starting at the root node). Each “link” or branch in the tree may represent an order of execution, where the module represented by the upper node calls the module represented by the lower node.
- the first module that is executed in a query plan may be an instance of a request module type, referred to in this example as “Decode Request” 302 .
- the last module that is executed in a query plan may be an instance of a response module type, referred to in this example as “Encode Response” 304 .
- the modules “Query Prep” 306 and “Decoration” 308 are examples of a basic module.
- Module 310 is an example of a fork module, which executes modules 312 and 314 in parallel on separate threads.
- module 312 is an instance of a Doc Selection module with a parameter, prod idx
- module 314 is an instance of the Doc Selection module with a parameter, rscrch idx.
- Modules 312 and 314 are both asynchronous modules, which are executed via a run( )method, where a corresponding callback method resume( ) may be invoked by the horizontal container when a response is received from an external service.
- Module 316 is an example of a join module, which may collect responses generated by module 312 and/or 314 . Module 316 may cancel the execution of one of the modules 312 or 314 when the other module has completed execution.
- Branch module 318 may determine during runtime whether to execute child module 320 or child module 322 .
- child modules 320 and 322 implement two different ranking models, Ranking Model A and Ranking Model B, respectively.
- FIGS. 4A-4B together illustrate an example module and corresponding interface definition. More particularly, FIG. 4A illustrates an example branch module, while FIG. 4B illustrates an example interface definition that corresponds to the branch module shown in FIG. 4A .
- a branch module may include a “run” method.
- the signature 402 of the “run” method for the branch module type includes several parameters. More particularly, the method input parameters: a context object that includes information pertinent to the context of the request, a BranchInterface object for accessing an attribute map associated with the current request, and a set of branches that may be identified by name or label. “Run” method has an output parameter, “selected,” which indicates one of the set of branches that has been selected by the branch module.
- FIG. 4B A corresponding interface definition for BranchInterface (shown as the second parameter of the “run” method of FIG. 4A ) is shown in FIG. 4B . More particularly, the interface definition for Branch Interface indicates that the module will access two attributes, SelectBranch and Error.
- the SelectBranch attribute is an input attribute (indicated by IN_ARG), and has a value of data type string.
- the other attribute, Error is an output attribute (indicated by OUT_ARG), and has a value of data type string.
- Input attributes allow read-only operations (such as isSelectBranchValid( ) and getSelectBranch( ) in FIG. 4A ), and output attributes allow modification operations (such as setError( ) in FIG. 4A ).
- the disclosed embodiments may be implemented in a variety of systems and in a variety of contexts.
- the disclosed embodiments may be used to implement ad serving.
- one of a plurality of advertisements may be selected and returned via a response.
- the disclosed embodiments may be used to implement searching functionality.
- a response that is returned to the client may include search results.
- these examples are merely illustrative, and the disclosed embodiments may be used to implement a variety of systems for a variety of purposes.
- the disclosed embodiments may be implemented in any of a wide variety of computing contexts.
- implementations are contemplated in which users interact with a diverse network environment via any type of computer (e.g., desktop, laptop, tablet, etc.) 1102 , media computing platforms 1103 (e.g., cable and satellite set top boxes and digital video recorders), handheld computing devices (e.g., PDAs) 1104 , cell phones 1106 , or any other type of computing or communication platform.
- Such devices may be referred to as clients.
- input that is processed in accordance with the invention may be obtained using a wide variety of techniques.
- a query such as a search query may be obtained via a graphical user interface from a user's interaction with a local application, web site or web-based application or service and may be accomplished using any of a variety of well known mechanisms for obtaining information from a user.
- a query such as a search query may be obtained in many other ways.
- Server 1108 and data store 1110 which, as will be understood, may correspond to multiple distributed devices (e.g., one or more servers) and one or more data stores.
- the servers may include a search server and/or web server.
- the invention may also be practiced in a wide variety of network environments (represented by network 1112 ) including, for example, TCP/IP-based networks, telecommunications networks, wireless networks, etc.
- the network 1112 may take any suitable form, such as a wide area network or Internet and/or one or more local area networks (LAN's).
- the network 1112 may include any suitable number and type of devices, e.g., servers and/or storage devices, as well as routers and/or switches, for forwarding requests such as search or web object requests from each client to the application (e.g., search or web application) and for forwarding responses such as search or web results back to the requesting clients.
- devices e.g., servers and/or storage devices, as well as routers and/or switches, for forwarding requests such as search or web object requests from each client to the application (e.g., search or web application) and for forwarding responses such as search or web results back to the requesting clients.
- a query such as a search query may be processed or executed via one or more applications such as search applications (e.g., associated with a search server and/or web server) and/or one or more data sources.
- search applications e.g., associated with a search server and/or web server
- data sources e.g., data sources
- Embodiments of the present invention may be employed with respect to any application such as a search application.
- the application may be implemented by executing a query plan on any number of servers.
- Embodiments disclosed herein may be implemented via one or more servers and/or clients. For example, various features may be implemented via a web browser and/or application on the clients. The disclosed embodiments may be implemented via software and/or hardware.
- the computer program instructions with which embodiments of the invention are implemented may be stored in any type of computer-readable media, and may be executed according to a variety of computing models including a client/server model, a peer-to-peer model, on a stand-alone computing device, or according to a distributed computing model in which various of the functionalities described herein may be effected or employed at different locations.
- a system implementing various embodiments of the invention may include a portable device, such as a laptop or cell phone.
- the embodiments of this invention may be specially constructed for the required purposes, or it may be a general-purpose computer selectively activated or reconfigured by a computer program and/or data structure stored in the computer.
- the processes presented herein are not inherently related to any particular computer or other apparatus.
- various general-purpose machines may be used with programs written in accordance with the teachings herein, or it may be more convenient to construct a more specialized apparatus to perform the required method steps.
- the system may employ one or more memories or memory modules configured to store data, program instructions for the general-purpose processing operations and/or the inventive techniques described herein.
- the program instructions may control the operation of an operating system and/or one or more applications, for example.
- the memory or memories may also be configured to store instructions for performing the disclosed methods, as well as query plans, module types, modules, etc.
- machine-readable media that include program instructions, state information, etc. for performing various operations described herein.
- machine-readable media include, but are not limited to, magnetic media such as hard disks, floppy disks, and magnetic tape; optical media such as CD-ROM disks; magneto-optical media such as floptical disks; and hardware devices that are specially configured to store and perform program instructions, such as read-only memory devices (ROM) and random access memory (RAM).
- program instructions include both machine code, such as produced by a compiler, and files containing higher level code that may be executed by the computer using an interpreter.
- FIG. 6 illustrates a typical computer system that, when appropriately configured or designed, can serve as a system of this invention.
- the computer system 1200 includes any number of processors 1202 (also referred to as central processing units, or CPUs) that are coupled to storage devices including primary storage 1206 (typically a random access memory, or RAM), primary storage 1204 (typically a read only memory, or ROM).
- processors 1202 may be of various types including microcontrollers and microprocessors such as programmable devices (e.g., CPLDs and FPGAs) and unprogrammable devices such as gate array ASICs or general purpose microprocessors.
- primary storage 1204 acts to transfer data and instructions uni-directionally to the CPU and primary storage 1206 is used typically to transfer data and instructions in a bi-directional manner. Both of these primary storage devices may include any suitable computer-readable media such as those described above.
- a mass storage device 1208 is also coupled bi-directionally to CPU 1202 and provides additional data storage capacity and may include any of the computer-readable media described above. Mass storage device 1208 may be used to store programs, data and the like and is typically a secondary storage medium such as a hard disk. It will be appreciated that the information retained within the mass storage device 1208 , may, in appropriate cases, be incorporated in standard fashion as part of primary storage 1206 as virtual memory.
- a specific mass storage device such as a CD-ROM 1214 may also pass data uni-directionally to the CPU.
- CPU 1202 may also be coupled to an interface 1210 that connects to one or more input/output devices such as such as video monitors, track balls, mice, keyboards, microphones, touch-sensitive displays, transducer card readers, magnetic or paper tape readers, tablets, styluses, voice or handwriting recognizers, or other well-known input devices such as, of course, other computers.
- CPU 1202 optionally may be coupled to an external device such as a database or a computer or telecommunications network using an external connection as shown generally at 1212 . With such a connection, it is contemplated that the CPU might receive information from the network, or might output information to the network in the course of performing the method steps described herein.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Operations Research (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
Claims (28)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/711,146 US9229980B2 (en) | 2010-02-23 | 2010-02-23 | Composition model for cloud-hosted serving applications |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/711,146 US9229980B2 (en) | 2010-02-23 | 2010-02-23 | Composition model for cloud-hosted serving applications |
Publications (2)
Publication Number | Publication Date |
---|---|
US20110209007A1 US20110209007A1 (en) | 2011-08-25 |
US9229980B2 true US9229980B2 (en) | 2016-01-05 |
Family
ID=44477487
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/711,146 Active 2032-09-20 US9229980B2 (en) | 2010-02-23 | 2010-02-23 | Composition model for cloud-hosted serving applications |
Country Status (1)
Country | Link |
---|---|
US (1) | US9229980B2 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10839037B2 (en) | 2018-09-21 | 2020-11-17 | Microsoft Technology Licensing, Llc | Connected application experience |
US11418621B2 (en) | 2018-09-21 | 2022-08-16 | Microsoft Technology Licensing, Llc | Cloud-based composable data layer |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10120900B1 (en) | 2013-02-25 | 2018-11-06 | EMC IP Holding Company LLC | Processing a database query using a shared metadata store |
US10963426B1 (en) | 2013-02-25 | 2021-03-30 | EMC IP Holding Company LLC | Method of providing access controls and permissions over relational data stored in a hadoop file system |
US10262037B2 (en) * | 2015-10-19 | 2019-04-16 | International Business Machines Corporation | Joining operations in document oriented databases |
US10802844B2 (en) | 2016-04-28 | 2020-10-13 | Microsoft Technology Licensing, Llc | Distributed application based off of stateful desktop application |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6044224A (en) * | 1996-06-26 | 2000-03-28 | Sun Microsystems, Inc. | Mechanism for dynamically associating a service dependent representation with objects at run time |
US6859931B1 (en) * | 1999-01-05 | 2005-02-22 | Sri International | Extensible software-based architecture for communication and cooperation within and between communities of distributed agents and distributed objects |
US20060212593A1 (en) * | 2004-05-21 | 2006-09-21 | Bea Systems, Inc. | Dynamic service composition and orchestration |
US20080010251A1 (en) * | 2006-07-07 | 2008-01-10 | Yahoo! Inc. | System and method for budgeted generalization search in hierarchies |
US20080256549A1 (en) * | 2007-04-10 | 2008-10-16 | International Business Machines Corporation | System and Method of Planning for Cooperative Information Processing |
-
2010
- 2010-02-23 US US12/711,146 patent/US9229980B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6044224A (en) * | 1996-06-26 | 2000-03-28 | Sun Microsystems, Inc. | Mechanism for dynamically associating a service dependent representation with objects at run time |
US6859931B1 (en) * | 1999-01-05 | 2005-02-22 | Sri International | Extensible software-based architecture for communication and cooperation within and between communities of distributed agents and distributed objects |
US20060212593A1 (en) * | 2004-05-21 | 2006-09-21 | Bea Systems, Inc. | Dynamic service composition and orchestration |
US20080010251A1 (en) * | 2006-07-07 | 2008-01-10 | Yahoo! Inc. | System and method for budgeted generalization search in hierarchies |
US20080256549A1 (en) * | 2007-04-10 | 2008-10-16 | International Business Machines Corporation | System and Method of Planning for Cooperative Information Processing |
Non-Patent Citations (4)
Title |
---|
Amazon web services, Introducing Amazon Relational Database Service, downloaded from http://aws.amazon.com/ on Feb. 23, 2010. |
Google app engine, welcome to Google App Engine, Run your web applications on Google's infrastructure, downloaded from https://www.google.com/accounts/ServiceLogin?service on Feb. 23, 2010. |
Hadoop avro, welcome to apache avro!, The Apache Software foundation, 2008, downloaded from http://hadoop.apache.org/avro/ on Feb. 23, 2010. |
Windows Azure Platform, downloaded from http://www.microsoft.com/windowsazure/ on Feb. 23, 2010. |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10839037B2 (en) | 2018-09-21 | 2020-11-17 | Microsoft Technology Licensing, Llc | Connected application experience |
US11418621B2 (en) | 2018-09-21 | 2022-08-16 | Microsoft Technology Licensing, Llc | Cloud-based composable data layer |
Also Published As
Publication number | Publication date |
---|---|
US20110209007A1 (en) | 2011-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8572236B2 (en) | Distributing services in graph-based computations | |
US9229980B2 (en) | Composition model for cloud-hosted serving applications | |
US10983815B1 (en) | System and method for implementing a generic parser module | |
US9491266B2 (en) | Representational state transfer communications via remote function calls | |
US11321090B2 (en) | Serializing and/or deserializing programs with serializable state | |
CN102521024A (en) | Job scheduling method based on bioinformation cloud platform | |
JP2022095655A (en) | Systems and methods to generate predictive-based GUIs to improve GUI response times | |
US8972997B2 (en) | Work item processing in distributed applications | |
Patterson | Learn AWS Serverless Computing: A Beginner's Guide to Using AWS Lambda, Amazon API Gateway, and Services from Amazon Web Services | |
US11531525B2 (en) | System and method for packaging standalone application modules into re-usable application and infrastructure resources | |
CN118331633B (en) | Function package loading method and device, electronic equipment and storage medium | |
US11573960B2 (en) | Application-based query transformations | |
JP2024175030A (en) | Information processing method, device, electronic device, and agent based on artificial intelligence | |
CN109408537A (en) | Data processing method and device, storage medium and calculating equipment based on Spark SQL | |
US20230229438A1 (en) | Kernels as a service | |
US11409519B2 (en) | Method and apparatus for implementing a UI modernization application module | |
Babazadeh et al. | The stream software connector design space: Frameworks and languages for distributed stream processing | |
Oliveira et al. | Function-as-a-Service for the Cloud-to-Thing continuum: a Systematic Mapping Study | |
Vepsäläinen | Disappearing frameworks explained | |
US10817334B1 (en) | Real-time analysis of data streaming objects for distributed stream processing | |
US12086141B1 (en) | Coordination of services using PartiQL queries | |
US12184722B2 (en) | Method and system for persisting session data | |
CN114675873B (en) | State machine configuration method, device and electronic device | |
US12204943B1 (en) | System and method for dynamically allocating computer resources to a data processing pipeline | |
US20240394138A1 (en) | Dynamic network debug service in a containerized computing cluster |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: YAHOO! INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:FENG, ANDREW AN;MAKEEV, EVGENIY;BUDZINSKI, JEFFREY;AND OTHERS;SIGNING DATES FROM 20100221 TO 20100223;REEL/FRAME:023987/0007 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: EXCALIBUR IP, LLC, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:YAHOO! INC.;REEL/FRAME:038383/0466 Effective date: 20160418 |
|
AS | Assignment |
Owner name: YAHOO! INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:EXCALIBUR IP, LLC;REEL/FRAME:038951/0295 Effective date: 20160531 |
|
AS | Assignment |
Owner name: EXCALIBUR IP, LLC, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:YAHOO! INC.;REEL/FRAME:038950/0592 Effective date: 20160531 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |
|
AS | Assignment |
Owner name: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT, NEW YORK Free format text: PATENT SECURITY AGREEMENT;ASSIGNORS:ACACIA RESEARCH GROUP LLC;AMERICAN VEHICULAR SCIENCES LLC;BONUTTI SKELETAL INNOVATIONS LLC;AND OTHERS;REEL/FRAME:052853/0153 Effective date: 20200604 |
|
AS | Assignment |
Owner name: R2 SOLUTIONS LLC, TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:EXCALIBUR IP, LLC;REEL/FRAME:053459/0059 Effective date: 20200428 |
|
AS | Assignment |
Owner name: BONUTTI SKELETAL INNOVATIONS LLC, TEXAS Free format text: RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:STARBOARD VALUE INTERMEDIATE FUND LP;REEL/FRAME:053654/0254 Effective date: 20200630 Owner name: MOBILE ENHANCEMENT SOLUTIONS LLC, TEXAS Free format text: RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:STARBOARD VALUE INTERMEDIATE FUND LP;REEL/FRAME:053654/0254 Effective date: 20200630 Owner name: SAINT LAWRENCE COMMUNICATIONS LLC, TEXAS Free format text: RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:STARBOARD VALUE INTERMEDIATE FUND LP;REEL/FRAME:053654/0254 Effective date: 20200630 Owner name: LIMESTONE MEMORY SYSTEMS LLC, CALIFORNIA Free format text: RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:STARBOARD VALUE INTERMEDIATE FUND LP;REEL/FRAME:053654/0254 Effective date: 20200630 Owner name: LIFEPORT SCIENCES LLC, TEXAS Free format text: RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:STARBOARD VALUE INTERMEDIATE FUND LP;REEL/FRAME:053654/0254 Effective date: 20200630 Owner name: UNIFICATION TECHNOLOGIES LLC, TEXAS Free format text: RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:STARBOARD VALUE INTERMEDIATE FUND LP;REEL/FRAME:053654/0254 Effective date: 20200630 Owner name: TELECONFERENCE SYSTEMS LLC, TEXAS Free format text: RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:STARBOARD VALUE INTERMEDIATE FUND LP;REEL/FRAME:053654/0254 Effective date: 20200630 Owner name: SUPER INTERCONNECT TECHNOLOGIES LLC, TEXAS Free format text: RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:STARBOARD VALUE INTERMEDIATE FUND LP;REEL/FRAME:053654/0254 Effective date: 20200630 Owner name: CELLULAR COMMUNICATIONS EQUIPMENT LLC, TEXAS Free format text: RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:STARBOARD VALUE INTERMEDIATE FUND LP;REEL/FRAME:053654/0254 Effective date: 20200630 Owner name: INNOVATIVE DISPLAY TECHNOLOGIES LLC, TEXAS Free format text: RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:STARBOARD VALUE INTERMEDIATE FUND LP;REEL/FRAME:053654/0254 Effective date: 20200630 Owner name: ACACIA RESEARCH GROUP LLC, NEW YORK Free format text: RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:STARBOARD VALUE INTERMEDIATE FUND LP;REEL/FRAME:053654/0254 Effective date: 20200630 Owner name: STINGRAY IP SOLUTIONS LLC, TEXAS Free format text: RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:STARBOARD VALUE INTERMEDIATE FUND LP;REEL/FRAME:053654/0254 Effective date: 20200630 Owner name: AMERICAN VEHICULAR SCIENCES LLC, TEXAS Free format text: RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:STARBOARD VALUE INTERMEDIATE FUND LP;REEL/FRAME:053654/0254 Effective date: 20200630 Owner name: R2 SOLUTIONS LLC, TEXAS Free format text: RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:STARBOARD VALUE INTERMEDIATE FUND LP;REEL/FRAME:053654/0254 Effective date: 20200630 Owner name: NEXUS DISPLAY TECHNOLOGIES LLC, TEXAS Free format text: RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:STARBOARD VALUE INTERMEDIATE FUND LP;REEL/FRAME:053654/0254 Effective date: 20200630 Owner name: PARTHENON UNIFIED MEMORY ARCHITECTURE LLC, TEXAS Free format text: RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:STARBOARD VALUE INTERMEDIATE FUND LP;REEL/FRAME:053654/0254 Effective date: 20200630 Owner name: MONARCH NETWORKING SOLUTIONS LLC, CALIFORNIA Free format text: RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:STARBOARD VALUE INTERMEDIATE FUND LP;REEL/FRAME:053654/0254 Effective date: 20200630 |
|
AS | Assignment |
Owner name: R2 SOLUTIONS LLC, TEXAS Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED ON REEL 053654 FRAME 0254. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST GRANTED PURSUANT TO THE PATENT SECURITY AGREEMENT PREVIOUSLY RECORDED;ASSIGNOR:STARBOARD VALUE INTERMEDIATE FUND LP;REEL/FRAME:054981/0377 Effective date: 20200630 |
|
AS | Assignment |
Owner name: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT, NEW YORK Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE THE ASSIGNOR NAME PREVIOUSLY RECORDED AT REEL: 052853 FRAME: 0153. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT;ASSIGNOR:R2 SOLUTIONS LLC;REEL/FRAME:056832/0001 Effective date: 20200604 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |