Adaptive state management for stateless services
By introducing state provider management services and registry mechanisms in cloud computing environments, the problem of state information sharing between stateless services is solved, efficient management and load balancing of state information are achieved, and the utilization efficiency of cloud computing resources is improved.
Patent Information
- Application Number
- CN202180021976.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-03-19
- Filing Date
- 2021-02-11
- Publication Date
- 2025-09-09
- Estimated Expiration
- 2041-02-11
AI Technical Summary
In existing cloud computing environments, the state information of stateless services is difficult to share between different functions or services, resulting in inefficient resource management and an inability to effectively transmit and manage state information between microservices.
The state provider management service maintains the state provider definition in the state provider registry, selects compatible state provider services based on the input variable definition, uses metadata scoring and calls the service with the highest score to generate state data, thereby realizing the delivery and management of state data.
It achieves highly flexible management of state information of stateless services in cloud computing environments, supports effective transmission and load balancing of state information between different services, and improves the efficiency and reliability of resource management.
Smart Images

Figure CN115298653B_ABST
Abstract
Description
Technical Field
[0001] The present disclosure relates generally to state management, and more particularly to a computer-implemented method for controlling state updates in a cloud service and / or computing environment. The present disclosure also relates to a storage control system for controlling state updates in a cloud service environment, and a computer program product. Background Art
[0002] Modern computing environments, typically deployed on cloud computing platforms and within cloud frameworks, consist of multiple interacting services and / or microservices. A characteristic of these microservices is that they are typically stateless, meaning that their state does not persist from one invocation to the next. Specifically, the state of a microservice session, including data, is not saved for the next session or call with that microservice. However, in some cases, it may be useful to make the state of a microservice available for the next invocation of the associated microservice. This is of interest not only as an underlying technology for transactional applications (e.g., technical e-commerce infrastructure), but also for the management of multi-processor systems and / or cloud computing frameworks in cloud computing environments. Resources may be available from different provider organizations under varying conditions, performance levels, and service-level agreements. However, if resource management for these resources can also be based on the interactions of stateless services and / or microservices, then access to the "early" state of the corresponding services / microservices may be useful in this context.
[0003] Cloud providers typically offer physical or virtual computing resources that clients can subscribe to and use as part of a service computing environment. The cloud provider manages the allocation and the underlying computing and network infrastructure. This operating model is advantageous for clients, as it allows them to optimize operating costs. On the other hand, cloud providers have a legitimate interest in minimizing operational and investment costs to ensure a viable business model. Consequently, cloud providers typically impose limits on computer resource allocation, often supported by specific programming methodologies. Consequently, the underlying programming model is stateless, event-driven, and serverless with limited processing time.
[0004] While this model is advantageous for certain execution requirements, it also has some disadvantages. Obviously, one disadvantage is that the model is stateless, that is, data or state information cannot be easily shared from one execution cycle of a function to the next, or shared between different functions or services.
[0005] There are several disclosures related to computer-implemented methods for controlling status updates in a cloud service environment.
[0006] Document US Pat. No. 9,749,387 B2 discloses an embodiment for transparently providing stateful execution for a stateless application based on a received request associated with the application (which includes at least one operation to be performed by the application) and first state information.
[0007] Document CA 2981271A1 discloses a method and apparatus for facilitating stateless representation of interaction flow states associated with customer interactions, including enabling generation of a first uniform resource locator (URL) indicative of textual input received from a customer during an online transaction.
[0008] A drawback of known solutions may be that they are generally focused on business transaction systems and less on deep technical functionality for controlling and optimizing multi-processor based cloud computing environments where competing stateless services must be used, but where state still needs to be maintained. A solution to this problem can be seen as the fundamental purpose of the proposed concept. Summary of the Invention
[0009] According to one aspect of the present disclosure, a computer-implemented method for controlling state updates in a cloud service environment is provided. The method includes maintaining, via a state provider management service, a set of state provider definitions in a state provider registry. Each state provider definition includes a set of required input variable definitions and a set of output variable definitions, as well as associated metadata.
[0010] The method further includes, when invoking the service, determining a set of input variable definitions required by the invoked service. The method further includes receiving, by the state provider management service, the determined set of input variable definitions. The method further includes selecting, by the state provider management service, a state provider definition by referencing a state provider registry, wherein the selected state provider definition is compatible with the received set of input variable definitions.
[0011] The method also includes determining a set of state provider services that match the selected state provider definition. The method also includes scoring the determined set of state provider services using metadata associated with the state provider definitions of the determined set of state provider services. The method also includes invoking the highest-scoring state provider service, thereby generating state data, and passing the state data to the invoked service.
[0012] According to another aspect of the present disclosure, a state control system is provided for controlling state updates in a cloud service environment. The state control system includes a state provider registry module, which is adapted to maintain a set of state provider definitions via a state provider management service unit, wherein each state provider definition includes a set of required input variable definitions, a set of output variable definitions, and associated metadata. The system also includes a first determination device, which is adapted to determine, when invoking a service, a set of input variable definitions required by the invoked service, wherein the state provider management service unit is further adapted to receive the determined set of input variable definitions.
[0013] Furthermore, the state provider management service unit is adapted to select a state provider definition by referring to a state provider registry, wherein the selected state provider definition will be compatible with the received set of input variable definitions.
[0014] In addition, the state control system includes a second determining device adapted to determine a set of state provider services that match the selected state provider definition. The system also includes a scoring device adapted to score the determined set of state provider services using metadata associated with the state provider definitions of the determined set of state provider services. The system also includes a calling device adapted to call the state provider service with the highest score, thereby generating state data. The system also includes a sending device adapted to transmit the state data to the called service.
[0015] Furthermore, embodiments may take the form of an associated computer program product accessible from a computer-usable or computer-readable medium that provides program code for use by or in conjunction with a computer or any instruction execution system. For the purposes of this specification, a computer-usable or computer-readable medium may be any device, including a device for storing, transmitting, disseminating, or transmitting a program for use by or in conjunction with an instruction execution system, device, or apparatus. Accordingly, a computer program product is provided for controlling state updates in a cloud service environment. The computer program product includes a computer-readable storage medium having program instructions embodied therewith, the program instructions being executable by one or more computing systems or controllers to cause the one or more computing systems to: maintain, via a state provider management service, a set of state provider definitions in a state provider registry, each state provider definition including a set of required input variable definitions, a set of output variable definitions, and associated metadata.
[0016] The program instructions also cause the one or more computing systems to determine, when invoking a service, a set of input variable definitions required by the invoked service. The instructions further cause the one or more computing systems to receive the determined set of input variable definitions from a state provider management service. The program instructions further cause the one or more computing systems to select, through the state provider management service, a state provider definition by referencing a state provider registry, wherein the selected state provider definition is compatible with the received set of input variable definitions.
[0017] The program instructions further cause the one or more computing systems to determine a set of state provider services that match the selected state provider definition. The program instructions further cause the one or more computing systems to score the determined set of state provider services using metadata associated with the state provider definitions of the determined set of state provider services. The program instructions further cause the one or more computing systems to invoke the state provider service with the highest score, thereby generating state data. The program instructions further cause the one or more computing systems to pass the state data to the invoked service.
[0018] The proposed computer-implemented method for controlling state updates in a cloud service environment and related systems may provide several advantages, technical effects, contributions and / or improvements:
[0019] The concepts presented herein may enable interception of calls to stateless services and / or microservices in a cloud computing environment and injection of the state of the same service and / or microservice starting from the time the service / microservice was terminated after the previous execution. This mechanism may be used not only for one service and / or microservice, but also for multiple identical services and / or microservices provided by the same or different providers in the underlying cloud computing environment. Using a state provider registry, multiple state provider services may be identified that meet the state definition for a calling service or microservice. Based on metadata associated with the state provider registry, a specific state provider service may be selected based on a service level agreement or other predefined conditions and / or rules required by the calling service or microservice or required by the state provider management service.
[0020] This not only allows the state of other stateless services / microservices to be managed, but also allows the selection of appropriate state provider services based on predefined rules. This allows for high flexibility in the state management of services / microservices in a cloud computing environment, but also enables load balancing between resources of different entities (i.e., providers) that provide state provider services with the same characteristics.
[0021] The advantages of the proposed concept can also be demonstrated in hardware-near management tasks of resources. Thus, the state of processors, coprocessors, memory units, memory systems and / or network resources can be elegantly monitored and managed using original stateless services, which can now be equipped and can use state information according to the proposed disclosure concept.
[0022] In the following, additional embodiments of the disclosed concepts will be described, ie, embodiments applicable to the method and related systems and computer program products.
[0023] According to an advantageous embodiment, the method may further include storing, by the state provider management service, a call counter for each state provider service in the metadata repository. The call counter may be incremented by the state provider management service each time a state provider service is called. Thus, it may be determined which state provider service is most used. This indicator may be used for quality assessment, performance evaluation, and usability and reliability assessment of future selections of state provider services for a given set of required input data.
[0024] When, in response to a state provider service request that matches a given state provider definition, the state provider registry (which may store a call counter therein) may further return a call counter as part of the response data for the state provider service. When the state provider management service receives the call counter, it may compare it with the last stored call counter of the selected state provider service. Furthermore, if the received call counter for the selected state provider function is greater than or equal to the last stored call counter, the state provider management service may discard the actual service request.
[0025] According to a useful embodiment, the method may further include returning, upon completion of execution of the service, an output value of the service to a state provider service from which the state data was received. This activity may also be performed under the control of a state provider management service. Thus, the state provider management service may play a central role in the concepts presented herein.
[0026] According to another advantageous embodiment, the method may further include persistently storing, by a state provider service, the received state data from which the state data is received. Thus, the state provider service may achieve its purpose of tracking the state of related services that may be called by an application to implement predefined functionality.
[0027] According to an extended embodiment, when it is determined that the called first state provider service requires a second state, the method may further include the following steps: calling the second state provider service via the state provider management service; determining a relevant set of input variables for the second state provider service; determining a set of matching second state provider services; scoring the set of matching second state provider services; selecting the second state provider service with the highest score to generate second state data; passing the second state data to the second state provider service; and returning an output value of the execution of the second state provider service as the second state.
[0028] In this way, it becomes possible to manage a sequence of dependent states for a given service. In this case, the service provider services can be activated recursively by the service provider management service, so that starting from the first selected service provider service, one or more additional state provider services can be selected and activated in cascade using the service provider definition to ultimately return the desired state to the calling service.
[0029] According to another advantageous embodiment of the method, scoring the determined set of state provider services can result in a set of highest-scoring state provider services having the same score value, and calling the set of highest-scoring state provider services in parallel, in particular the entire set of highest-scoring state provider services. In this way, not only can one service provider service be activated at a given time, but also equivalently performing state provider services can be executed in parallel, i.e., such that the same state is returned. In this way, performance testing can be enabled for different state provider services, ensuring that in future instances of state provider service activation, the one that provides the highest performance can be selected. Alternatively, state provider services from different providers in a cloud computing environment can be measured against each other, which can execute state provider services under different service level agreements.
[0030] This behavior can be expressed in the next optional embodiment, according to which the method can further include measuring the performance value of the state provider service that performs the highest score in the group and storing the corresponding performance value in the metadata of the corresponding state provider service. Thus, the results of the performance comparison can be persistently stored in metadata that is also controlled and accessed by the state provider management service.
[0031] According to another useful embodiment of the present method, determining a set of state provider services may further include determining matching state provider services based on predefined rules on the metadata. In doing so, the state provider services may be selected based on predefined rules, such as predefined rules given by predefined quality standards, service level agreements, performance indicators, and / or other behavioral indicators of the service provider services.
[0032] According to a further extended embodiment of the method, determining a set of state provider services may further include determining matching state provider services based on a current workload profile in the cloud computing environment. In this way, different workloads in different segments or parts of the cloud computing environment (i.e., computing centers at a given time) may also be reflected and / or controlled.
[0033] According to a permitted embodiment of the method, the state provider service with the highest score can be determined according to a round-robin principle. Therefore, whenever a state provider service defined according to a predetermined state provider service needs to be called, another state provider service with the same definition can be given an opportunity to be executed.
[0034] It should also be noted that the definition of the highest score can be broadly construed, i.e., the score can be based on a set of its own, which can dynamically change according to predefined conditions in the cloud computing environment. For example, the highest-scoring status provider may actually be the one that has demonstrated the highest performance (particularly during past executions), i.e., the particular status provider service that returns status in the shortest amount of time. In another case, the status provider service with the best track record of being compatible with the selected set of SLAs and / or quality requirements may be selected (based on another rule), and so on. BRIEF DESCRIPTION OF THE DRAWINGS
[0035] It should be noted that embodiments of the present disclosure are described with reference to different subject matters. In particular, some embodiments are described with reference to method-type claims, while other embodiments are described with reference to apparatus-type claims. However, those skilled in the art will appreciate from the above and following descriptions that, unless otherwise indicated, any combination of features relating to different subject matters, in addition to any combination of features belonging to one type of subject matter, and in particular any combination of features from method-type claims with features from apparatus-type claims, are also considered disclosed within this document.
[0036] The aspects defined above and further aspects of the disclosure are apparent from the examples of embodiment to be described hereinafter and are explained with reference to the examples of embodiment, but to which the disclosure is not limited.
[0037] The accompanying drawings included in this application are incorporated into and form a part of the specification. The accompanying drawings illustrate embodiments of the present disclosure and, together with the specification, serve to explain the principles of the present disclosure. The accompanying drawings are illustrative of certain embodiments and do not limit the present disclosure.
[0038] Figure 1 A block diagram illustrating an embodiment of a computer-implemented method for controlling status updates in a cloud service environment is shown.
[0039] Figure 2 A block diagram illustrating an embodiment of relevant elements and selected communication paths supporting the concepts presented herein is shown.
[0040] Figure 3 A diagram showing an embodiment of the message flow between core components of the concepts presented herein.
[0041] Figure 4 A block diagram of an embodiment of a state control system for controlling state updates in a cloud service environment is shown.
[0042] Figure 5 Shown including according to Figure 4 An embodiment of a computing system for controlling a state of a system.
[0043] Figure 6 A cloud computing environment is shown in which at least a portion of the disclosed concepts may be deployed.
[0044] Figure 7 is a schematic diagram illustrating a cloud computer environment according to some embodiments of the present disclosure. DETAILED DESCRIPTION
[0045] In the context of this specification, the following conventions, terms and / or expressions may be used:
[0046] The term "state," particularly for a microservice, can be defined as the last known or current state of a service, application, or process in a computing system. The state of a service can be further described as the current values of the service's variables or parameters, and the state can change as the application executes.
[0047] The term "stateful" can refer to an application or service that typically maintains its state at all times. In contrast, a stateless application or service can be completely self-contained, with data and execution transaction boundaries coinciding with the application or service's start and end points. Therefore, if a stateless service is started again, it may have no memory of its previous existence, meaning no data about previous executions or any variables used.
[0048] The term "service" herein may refer to a mechanism that enables access to one or more capabilities and / or resources, where access may be provided using a specified interface and may be exercised in accordance with the constraints and / or policies specified by the associated service description. Sometimes, software technology is used to develop microservices at the very end of a service-oriented architecture (SOA) structural style. In this case, an application may be arranged as a collection of loosely coupled services. In a microservices architecture, services are more fine-grained and protocols are more lightweight if compared to a more classic SOA computing environment. In the context of this document, the terms "service" and "microservice" may be used interchangeably.
[0049] The term "state provider management service" may denote new functionality in the context of enabling state management for previously stateless services. Thus, a stateless service may also be declared stateful in its functionality without requiring changes to the stateless service. The state of a stateless service may be managed by a state provider service independently of other services outside the stateless service. A collection of state provider services may be managed by a relevant state provider management service. It may be provided with a user interface (UI) 220 or an API (application programming interface) for defining, changing, or deleting state provider definitions. Typically, a state provider definition includes at least the required input variables and output variables for the relevant service. In at least some embodiments, there may be more than one state provider service for one state provider definition. Thus, more than one state provider service may be called and more than one state provider service may be executed in parallel.
[0050] The term "state provider registry" can be managed and manipulated by the state provider management service, that is, new entries can be defined, changed or deleted. Therefore, the state provider registry can provide an API for registering, querying, expiring registrations and updating state provider services.
[0051] The term "state provider service" herein may be defined by a state provider specification or state provider definition, which is stored in a state provider registry and managed by a state provider management service. Thus, the state provider definition may determine the details of the state provider service, such as the required input variables (which may be matched to the relevant requirements of the service according to the state provider service) and the output variables used to ensure persistent storage of the state of the service.
[0052] As an example, z():id,* may define a state provider service z that has no dependencies on other states or state provider services, and which may provide a state variable “id” for all services and state provider services (hence the wildcard “*”).
[0053] As another example, y(id): name, address, x may define a state provider service y (which now depends on a state "id", to be provided by another state provider) that provides a service adhering to the service specification "x" and the state variables "name" and "address" of the state provider's service, where x may be a formal expression with respect to the service name.
[0054] The term "metadata," particularly metadata specific to a state provider service, may indicate specific characteristics of the state provider service in question. The metadata may relate to performance indicators, quality parameters, specific service level agreements, the provider, the operational state provider service, and / or other behavioral characteristics possessed by the state provider service.
[0055] It should be understood that although the present disclosure includes detailed descriptions about cloud computing, the implementation of the teachings set forth herein is not limited to cloud computing environments. Instead, the embodiments of the present disclosure can be implemented in conjunction with any other type of computing environment now known or later developed.
[0056] As is known in the art, the term "cloud computing" and, equivalently, the term "cloud service environment" in this context can be interpreted as a model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be quickly provisioned and released with minimal management effort or service provider interaction. This cloud model promotes availability and consists of at least five characteristics, at least three service models, and at least four deployment models.
[0057] The basic characteristics of cloud computing include:
[0058] (i) On-demand self-service: Consumers can unilaterally and automatically provision computing capabilities, such as server time and network storage, as needed without the need for manual interaction with each service provider.
[0059] (ii) Wide Area Network Access: Capabilities are available over the network and accessed through standard mechanisms that facilitate use by heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and PDAs).
[0060] (iii) Resource pooling: The provider's computing resources are pooled to serve multiple consumers using a multi-tenant model with different physical and virtual resources, dynamically allocated and reallocated based on consumer demand. This is location-independent in the sense that the customer typically does not control or know the exact location of the provided resources, but is able to specify the location at a higher level of abstraction (e.g., country, state, or data center).
[0061] (iv) Rapid Elasticity: In some cases, the ability to scale out and scale in can be provided quickly and elastically. To the consumer, the capacity available for provisioning often appears unlimited and can be purchased in any quantity at any time.
[0062] (v) Metered Services: Cloud systems automatically control and optimize resource usage by leveraging metering capabilities at a level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency to both providers and consumers of the utilized services.
[0063] Service models for cloud computing include:
[0064] (i) Cloud Software as a Service (SaaS): The capability provided to consumers is to use the provider's applications running on the cloud infrastructure. The applications are accessible from a variety of client devices through a thin client interface such as a web browser (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings.
[0065] (ii) Cloud Platform as a Service (PaaS): The capability provided to consumers is to deploy consumer-created or acquired applications onto cloud infrastructure. These applications are built using programming languages and tools supported by the provider. Consumers do not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage, but do have control over the deployed applications and the configuration of the application hosting environment.
[0066] (iii) Cloud Infrastructure as a Service (IaaS): The capabilities provided to consumers are processing, storage, networking, and other basic computing resources on which consumers can deploy and run arbitrary software, which may include operating systems and applications. Consumers do not manage or control the underlying cloud infrastructure, but do have control over the operating system, storage, deployed applications, and possibly limited control over selected networking components (e.g., host firewalls).
[0067] Deployment models for cloud computing include:
[0068] (i) Private cloud. The cloud infrastructure is operated solely by the organization. It can be managed by the organization or a third party and can exist on-premises or off-premises.
[0069] (ii) Community Cloud. The cloud infrastructure is shared by several organizations and supports a specific community with shared concerns (e.g., mission, security requirements, policy, and compliance considerations). It can be managed by the organization or a third party and can exist on-premises or off-premises.
[0070] (iii) Public cloud. Cloud infrastructure is available to the general public or large industrial groups and is owned by the organization that sells cloud services.
[0071] (iv) Hybrid Cloud. A cloud infrastructure is a combination of two or more clouds (private, community, or public) that remain a single entity but are bound together by standardized or proprietary technologies that enable data and application portability (e.g., cloud bursting for load balancing between clouds).
[0072] It can be noted that cloud software fully exploits the cloud paradigm through service orientation with a focus on statelessness (exceptions), low coupling, modularity, and semantic interoperability.
[0073] Below, a detailed description of the accompanying drawings is provided. All illustrations in the figures are for schematic purposes only. First, a block diagram of an embodiment of the disclosed computer-implemented method for controlling state updates in a cloud service environment is provided. Then, an embodiment of a storage control system for controlling state updates in a cloud service environment, as well as other embodiments, are described.
[0074] Figure 1 A block diagram of an embodiment of a computer-implemented method 100 for controlling state updates in a cloud service environment is shown. The method 100 includes maintaining 102 a set of state provider definitions in a state provider registry by a state provider management service, which may also be represented as a state manager. Each state provider definition includes at least a required set of input variable definitions (in special cases, the set of input variable definitions may include only one input variable definition), a set of output variable definitions (which may also be a collection of output variable definitions), and related metadata. The set of output variables can be viewed as the state of the service at its execution endpoint.
[0075] The method 100 further includes, when invoking a service, determining 104 a set of input variable definitions required by the invoked service. Information about the required input variables may be passed by or derived from the service itself or requested from a related service or microservice registry.
[0076] Furthermore, the method 100 includes receiving 106, by the state provider management service, a determined set of input variable definitions, selecting 108, by the state provider management service, by referencing a state provider registry, a state provider definition, wherein the selected state provider definition will be compatible with the received set of input variable definitions (which may also be only one definition here), and determining 110 a set of state provider services (again, only one is possible) that match the selected state provider definition.
[0077] Next, the method 100 includes scoring the determined set of state provider services using metadata associated with their state provider definitions 112, invoking 114 the highest-scoring state provider service (particularly according to predetermined rules) to thereby generate state data, and passing 116 the state data to the invoked service. In this way, services or microservices designed to be stateless can obtain injected state, thereby retaining the benefits of stateless execution, while also obtaining the benefits of stateful behavior.
[0078] Figure 2 A block diagram 200 illustrating an embodiment of relevant elements and selected communication paths supporting the concepts presented herein is shown.
[0079] First, we can mention calling services, microservices, or programs 202, which are the source of requests to execute services 208. Services and / or microservices can be managed and controlled by a service registry and related control mechanisms (neither of which are shown here). However, requests to services 208 can be intercepted and / or controlled by a request agent 204, which includes a state manager 206, or in other words, a state provider management service 206.
[0080] The state provider management service 206 can access the state provider definitions in the state provider registry 210. Measurement data on the performance, quality, and behavior of the state provider service can be continuously or sporadically monitored by a performance monitor 216, which can also control the storage of other performance logs 218. In addition, the state provider management service 206 can be equipped with a registry UI (user interface) 220 to enable manually driven definition of entries in the service provider registry, or an API to enable system management tools (not shown) to maintain entries in the service provider registry 210.
[0081] The state provider management service 206 can call a specific and matching state provider service 212 based on the definition from the state provider registry 210. In addition, predefined rules 214, which can be derived from metadata and also stored in the state provider registry 210, can influence the selection of one or more state provider services 212 associated with the state provider definition.
[0082] Figure 3 Diagram 300 shows an embodiment of the message flow between the core components of the concepts presented herein. The message flow reflects the Figure 2 In the context of discussing the functionality of the embodiments, the process flow begins with a request 312 from a client application 302 (compare 202, Figure 2). The request 312 arrives at a request broker 304 having a state manager or state provider management service. This queries 314 the state provider registry 306 for the appropriate state provider service. The state provider registry 306 responds 316 with a sequence of one or more state providers. Next, the request broker 304 of the state provider management service calls 318 a sequence of state provider services 308 or a state provider service 308. The one or more state provider services 308 return 320 the persistently stored state. Based on this, i.e., using the state data, the requested service 310 (particularly requested from the client application 302) is called 322 by the request broker using the now available state. After the service 310 is executed, the result is returned 324 to the request broker 304, from which the result is returned 326 to the originally calling client application 302 (or service).
[0083] For completeness reasons, Figure 4 A block diagram of an embodiment of a state control system 400 for controlling state updates in a cloud service environment is shown. The state control system 400 includes a state provider registration module 402, which is adapted to maintain a set of state provider definitions by a state provider management service unit 404. Each state provider definition thus includes a set of required input variable definitions, a set of output variable definitions, and related metadata.
[0084] The state control system 400 further includes a first determining device, specifically a first determining module 406, adapted to determine, when invoking a service, a set of required input variable definitions required by the invoked service, wherein the state provider management service unit 404 is further adapted to receive the determined set of input variable definitions. Thus, the state provider management service unit 404 is further adapted to select a state provider definition by referencing a state provider registry, wherein the selected state provider definition is compatible with the received set of input variable definitions.
[0085] The state control system 400 also includes: a second determination device, in particular a second determination module 408, which is suitable for determining a set of state provider services that match the selected state provider definition; a scoring device, in particular a scoring unit 410, which is suitable for using metadata related to the state provider definition of the determined set of state provider services to score the determined set of state provider services; a calling device, in particular a calling unit 412, which is suitable for calling the state provider service with the highest score, thereby generating state data; and last but not least a sending device, in particular a sender 414, which is suitable for passing the state data to the called service.
[0086] It should be noted that all the mentioned means, units, modules, etc. can be implemented as hardware controllers, specifically, as the state provider registration module 402, the state provider management service unit 404, the first determination module 406, the second determination module 408, the scoring unit 410, the calling unit 412 and the transmitter 414. These hardware-implemented functional units can be linked to each other via electrical connections 416 (separate lines or bus systems) to exchange messages, as shown in FIG. Figure 3 discussed in the context of .
[0087] In Go Figure 5 Before, in Figure 6 A cloud computing environment is shown in FIG. 1 , in which at least a portion of the disclosed concepts can be deployed.
[0088] Figure 6 A cloud computing environment 600 is shown in which at least a portion of the disclosed concepts may be deployed. A set of functional abstraction layers provided by the cloud computing environment is shown. It is understood in advance that Figure 6 The components, layers, and functions shown in FIG are intended to be illustrative only, and embodiments of the present disclosure are not limited thereto. As depicted, the following layers and corresponding functions are provided: Hardware and software layer 602 includes hardware and software components. Examples of hardware components include: host 604; server 606; server 608 based on RISC (Reduced Instruction Set Computer) architecture; blade server 610; storage device 612; network 614 and network components 614. In some embodiments, software components include network application server software 616 and / or database software 618.
[0089] Virtualization layer 620 provides an abstraction layer from which the following examples of virtual entities can be provided: virtual servers 622; virtual storage 624; virtual networks 626, including virtual private networks; virtual applications and operating systems 628; and virtual clients 630. In one example, management layer 632 can provide the functionality described below. Resource provisioning 634 provides dynamic procurement of computing and other resources used to perform tasks within the cloud computing environment. Metering and pricing 636 provides cost tracking when utilizing resources within the cloud computing environment, as well as billing or invoicing for the consumption of these resources. In one example, these resources may include application software licenses. Security provides authentication for cloud consumers and tasks, as well as protection for data and other resources. User portal 638 provides access to the cloud computing environment for consumers and system administrators. Service level management 640 provides for the allocation and management of cloud computing resources so that required service levels are met. Service level agreement (SLA) planning and fulfillment 642 provides for the pre-arrangement and procurement of cloud computing resources, anticipating future demand according to the SLA.
[0090] The workload layer 644 provides examples of functions that can take advantage of the cloud computing environment. Examples of workloads and functions that can be provided from this layer include: mapping and navigation 646; software development and lifecycle management 648; virtual classroom education delivery 650; data analysis processing 652; transaction processing 654; and state control module 656 (compare Figure 4 , 400).
[0091] Embodiments of the present disclosure can be implemented with nearly any type of computer, regardless of whether the platform is suitable for storing and / or executing program code. Figure 5 As an example, a computing system 500 suitable for executing program code associated with the proposed method is shown.
[0092] Computing system 500 is only one example of a suitable computer system and is not intended to impose any limitations on the scope of use or functionality of the embodiments of the present disclosure described herein, regardless of whether computer system 500 is capable of being implemented and / or performing any of the functions set forth above. In computer system 500, there are components that can operate together with numerous other general or special computing system environments or configurations. Examples of well-known computing systems, environments, and / or configurations suitable for use with computer system / server 500 include, but are not limited to, personal computer systems, server computer systems, thin clients, thick clients, handheld or laptop devices, multiprocessor systems, microprocessor-based systems, set-top boxes, programmable consumer electronics, network PCs, minicomputer systems, mainframe systems, and distributed cloud computing environments including any of the above systems or devices, and their equivalents.
[0093] Computer system / server 500 may be described in the general context of computer system-executable instructions, such as program modules, executed by computer system 500. Generally, program modules may include routines, programs, objects, components, logic, data structures, etc. that perform specific tasks or implement specific abstract data types. Computer system / server 500 may be practiced in a distributed cloud computing environment, where tasks are performed by remote processing devices that are linked through a communications network. In a distributed cloud computing environment, program modules may be located in both local and remote computer system storage media, including memory storage devices.
[0094] As shown, computer system / server 500 is shown in the form of a general-purpose computing device. The components of computer system / server 500 may include, but are not limited to, one or more processors or processing units 502, system memory 504, and a bus 506 that couples the various system components comprising system memory 504 to processor 502. Bus 506 represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of various bus architectures. As examples and not limitations, these architectures include industry standard architecture (ISA) bus, microchannel architecture (MCA) bus, enhanced ISA (EISA) bus, video electronics standard association (VESA) local bus, and peripheral component interconnect (PCI) bus. Computer system / server 500 typically includes various computer system readable media. This medium can be any available medium that can be accessed by computer system / server 500, and it includes volatile and non-volatile media, removable and non-removable media.
[0095] System memory 504 may include computer system readable media in the form of volatile memory, such as random access memory (RAM) 508 and / or cache memory 510. Computer system / server 500 may also include other removable / non-removable, volatile / non-volatile computer system storage media. By way of example only, storage system 512 may be provided for reading from and writing to a non-removable, non-volatile magnetic medium (not shown and commonly referred to as a "hard drive"). Although not shown, a magnetic disk drive for reading from and writing to a removable, non-volatile magnetic disk (e.g., a "floppy disk") may be provided, as well as an optical disk drive for reading from or writing to a removable, non-volatile optical disk such as a CD-ROM, DVD-ROM, or other optical media. In such a case, each may be connected to bus 506 via one or more data media interfaces. As will be further depicted and described below, memory 504 may contain at least one program product having a set (e.g., at least one) of program modules configured to perform the functions of embodiments of the present invention.
[0096] A program / utility having a set (at least one) of program modules 516, as well as an operating system, one or more application programs, other program modules, and program data, may be stored in memory 504, by way of example and not limitation. Each of the operating system, one or more application programs, other program modules, and program data, or some combination thereof, may include an implementation of a networked environment. Program modules 516 generally perform the functions and / or methods of embodiments of the present disclosure as described herein. For example, program modules 516 may be executed by one or more processors 502 to implement one or more of the state provider registry module 402, the state provider management service unit 404, the first determination module 406, the second determination module 408, the scoring unit 410, the calling unit 412, and the sender 414.
[0097] Computer system / server 500 may also communicate with one or more external devices 518, such as a keyboard, pointing device, display 520, etc.; one or more devices that enable a user to interact with computer system / server 500; and / or any device that enables computer system / server 500 to communicate with one or more other computing devices (e.g., a network card, modem, etc.). Such communication may occur via input / output (I / O) interface 514. Furthermore, computer system / server 500 may communicate with one or more networks, such as a local area network (LAN), a general wide area network (WAN), and / or a public network (e.g., the Internet), via network adapter 522. As depicted, network adapter 522 may communicate with other components of computer system / server 500 via bus 506. It should be understood that, although not shown, other hardware and / or software components may be used in conjunction with computer system / server 500. Examples include, but are not limited to, microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archival storage systems.
[0098] Now refer to Figure 7, a schematic diagram showing an example cloud computing network 700 is provided. As shown, the cloud computing network 700 includes a cloud computing environment 750 having one or more cloud computing nodes 710, and local computing devices used by cloud consumers can communicate with the cloud computing nodes. Examples of these local computing devices include, but are not limited to, personal digital assistants (PDAs) or cellular phones 754A, desktop computers 754B, laptop computers 754C, and / or automotive computer systems 754N. Individual nodes within node 710 can also communicate with each other. They can be physically or virtually grouped (not shown) in one or more networks, such as private clouds, community clouds, public clouds, or hybrid clouds, or combinations thereof, as described above. This allows the cloud computing network 700 to provide infrastructure, platforms, and / or software as a service for which cloud consumers do not need to maintain resources on local computing devices. It should be understood that Figure 7 The types of computing devices 754A-N shown in FIG are illustrative only, and cloud computing environment 750 may communicate with any type of computerized device over any type of network and / or network-addressable connection (eg, using a web browser).
[0099] The description of various embodiments of the present disclosure has been presented for illustrative purposes, but is not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terminology used herein was chosen to best explain the principles of the embodiments, practical applications, or improvements over existing technologies in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.
[0100] The present disclosure may be implemented as a system, method, and / or computer program product. The computer program product may include a computer-readable storage medium (or multiple media) having computer-readable program instructions thereon, the computer-readable program instructions being used to cause a processor to perform aspects of the present disclosure.
[0101] The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system for propagating the medium. Examples of computer-readable media may include semiconductor or solid-state memory, magnetic tape, a removable computer disk, random access memory (RAM), read-only memory (ROM), a hard disk, and an optical disk. Current examples of optical disks include compact disk read-only memory (CD-ROM), compact disk read / write (CD-R / W), DVD, and Blu-ray Disc.
[0102] A computer-readable storage medium can be a tangible device that can retain and store instructions used by an instruction execution device. A computer-readable storage medium can be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination thereof. A non-exhaustive list of more specific examples of computer-readable storage media includes the following: a portable computer disk, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanical encoding device such as a punch card or a raised structure in a groove on which instructions are recorded, and any suitable combination thereof. As used herein, a computer-readable storage medium should not be interpreted as a temporary signal itself, such as a radio wave or other freely propagating electromagnetic wave, an electromagnetic wave propagated by a waveguide or other transmission medium (e.g., a light pulse by an optical fiber cable), or an electrical signal transmitted by a wire.
[0103] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to a corresponding computing / processing device, or downloaded to an external computer or external storage device via a network, such as the Internet, a local area network, a wide area network, and / or a wireless network. The network can include copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers, and / or edge servers. The network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions to be stored in a computer-readable storage medium within the corresponding computing / processing device.
[0104] The computer-readable program instructions for performing the operation of the present disclosure can be assembly instructions, instruction set architecture (ISA) instructions, machine instructions, machine-related instructions, microcode, firmware instructions, state setting data, or source code or object code written in any combination of one or more programming languages, and programming languages include object-oriented programming languages (such as Smalltalk, C++, etc.) and conventional procedural programming languages (such as " C " programming language or similar programming languages). The computer-readable program instructions can be performed completely on the user's computer, partially on the user's computer as an independent software package, partially on the user's computer and partially on a remote computer, or completely on a remote computer or server. In the latter case, the remote computer can be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or can be connected to an external computer (such as, using an Internet service provider through the Internet). In certain embodiments, the electronic circuit comprising, for example, a programmable logic circuit, a field programmable gate array (FPGA) or a programmable logic array (PLA) can perform the computer-readable program instructions to personalize the electronic circuit by utilizing the state information of the computer-readable program instructions, so as to perform aspects of the present disclosure.
[0105] Aspects of the present disclosure are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the present disclosure. It will be understood that each block of the flowchart and / or block diagram, and combinations of blocks in the flowchart and / or block diagram, can be implemented by computer-readable program instructions.
[0106] These computer-readable program instructions can be provided to a processor of a general-purpose computer, a special-purpose computer, or other programmable data processing device to produce a machine, such that the instructions executed by the processor of the computer or other programmable data processing device create a device for implementing the functions / actions specified in one or more blocks of the flowchart and / or block diagram. These computer-readable program instructions can also be stored in a computer-readable storage medium, which can direct the computer, programmable data processing device, and / or other equipment to operate in a specific manner, such that the computer-readable storage medium having the instructions stored therein includes an article of manufacture, which includes instructions for implementing various aspects of the functions / actions specified in one or more blocks of the flowchart and / or block diagram.
[0107] Computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or another device to cause a series of operational steps to be performed on the computer, other programmable apparatus, or other device to produce a computer-implemented process, so that the instructions executed on the computer, other programmable apparatus, or another device implement the functions / actions specified in one or more boxes of the flowchart and / or block diagram.
[0108] The flow charts and / or block diagrams in the accompanying drawings illustrate the possible architecture, function and operation of the system, method and computer program product according to various embodiments of the present disclosure. In this regard, each frame in the flow chart or block diagram can represent a module, segment or part of an instruction, which includes one or more executable instructions for realizing the specified logical function. In some alternative embodiments, the functions mentioned in the frame may not occur in the order mentioned in the figure. For example, the two frames shown in succession can actually be performed substantially simultaneously, or these frames can sometimes be performed in reverse order, depending on the function involved. It will also be noted that the combination of each frame of the block diagram and / or flow chart illustration and the frame in the block diagram and / or flow chart illustration can be realized by a dedicated hardware-based system that performs a specified function or action or performs a combination of special-purpose hardware and computer instructions.
[0109] The terms used herein are for the purpose of describing particular embodiments only and are not intended to limit the present invention. As used herein, the singular forms "a," "an," and "the" are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will also be understood that the terms "comprises" and / or "comprising," when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and / or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof.
[0110] All means or steps plus corresponding structures, materials, actions, and equivalents of functional elements in the following claims are intended to include any structure, material, or action for performing a function in combination with other claimed elements as specifically claimed. The description of the present disclosure has been presented for the purposes of illustration and description, but it is not intended to be exhaustive or limited to the disclosure of the disclosed forms. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the present disclosure. The embodiments are selected and described in order to best explain the principles and practical applications of the present disclosure and to enable others of ordinary skill in the art to understand the present disclosure of various embodiments with various modifications, as suitable for the intended specific use.
[0111] Example Embodiments
[0112] Example 1 includes a computer-implemented method for controlling state updates in a cloud service environment. The method includes maintaining, by a state provider management service, a set of state provider definitions in a state provider registry, each state provider definition including a set of required input variable definitions, a set of output variable definitions, and associated metadata. The method also includes determining, when invoking a service, a set of input variable definitions required by the invoked service, receiving, by the state provider management service, the determined set of input variable definitions; selecting, by the state provider management service, a state provider definition by reference to the state provider registry, wherein the selected state provider definition is compatible with the received set of input variable definitions; determining a set of state provider services that match the selected state provider definition; scoring the determined set of state provider services using metadata associated with the state provider definitions of the determined set of state provider services; invoking the state provider service with the highest score to generate state data; and delivering the state data to the invoked service.
[0113] Example 2 includes the method of Example 1, further comprising storing, by the state provider management service, a call counter for each state provider service in the metadata repository, the call counter being incremented by the state provider management service each time the state provider service is called.
[0114] Example 3 includes the method of any of Examples 1 or 2, further comprising returning an output value of the service to the state provider service from which the state data was received upon completion of execution of the service.
[0115] Example 4 includes the method of Example 3, further comprising persistently storing, by a state provider service, the received state data from which the state data was received.
[0116] Example 5 includes a method according to any one of Examples 1-4, wherein the called state provider service becomes a first state provider service, and the method further includes when determining that the called first state provider service requires a second state; calling a second state provider service via a state provider management service; determining a relevant set of input variables for the second state provider service; determining a set of matching second state provider services; scoring the set of matching second state provider services; selecting the second state provider service with the highest score to generate second state data; passing the second state data to the second state provider service; and returning an output value of the execution of the second state provider service as the second state.
[0117] Example 6 includes the method of any of Examples 1-5, wherein scoring the determined set of state provider services results in a set of top-scoring state provider services that produce the same score value, the method further comprising calling the set of top-scoring state provider services in parallel.
[0118] Example 7 includes the method of Example 6, further comprising measuring a performance value of executing the set of highest-scoring state provider services, and storing the corresponding performance value in metadata of the corresponding state provider service.
[0119] Example 8 includes the method of any of Examples 1-7, wherein determining a set of state provider services further comprises determining matching state provider services according to predefined rules regarding the metadata.
[0120] Example 9 includes the method of any of Examples 1-8, wherein determining a set of state provider services further comprises determining matching state provider services based on a current workload profile in the cloud computing environment.
[0121] Example 10 includes the method of any of Examples 1-9, wherein the highest scoring status provider service is determined according to a round-robin principle.
[0122] Example 11 includes a state control system for controlling state updates in a cloud service environment. The state control system includes a state provider management service module, which is adapted to maintain a set of state provider definitions via a state provider management service unit, wherein each state provider definition includes a set of required input variable definitions, a set of output variable definitions, and associated metadata. The state control system also includes a first determining device adapted to, when invoking a service, determine the set of input variable definitions required by the invoked service. The state provider management service module is further adapted to receive the determined set of input variable definitions. The state provider management service unit is further adapted to select a state provider definition by referencing a state provider registry. The selected state provider definition is compatible with the received set of input variable definitions. The state control system also includes a second determining device adapted to determine a set of state provider services that match the selected state provider definition; a scoring device adapted to score the determined set of state provider services using metadata associated with the state provider definitions of the determined set of state provider services; an invoking device adapted to invoke the highest-scoring state provider service to generate state data; and a transmitting device adapted to transmit the state data to the invoked service.
[0123] Example 12 includes the state control system of example 11, wherein the state provider management service module is further adapted to store a call counter for each state provider service in the metadata repository, the call counter being incremented by the state provider management service each time the state provider service is called.
[0124] Example 13 includes the state control system according to any of Examples 11 or 12, further comprising returning means adapted to return an output value of the service to the state provider service from which the state data was received upon completion of execution of the service.
[0125] Example 14 includes the state control system according to Example 13, further comprising a storage device adapted to persistently store state data received by the state provider service from which the state data is received.
[0126] Example 15 includes a state control system according to any one of Examples 11 to 14, wherein the called state provider service is a first state provider service, and wherein the state control system is further adapted to, upon determining that the called first state provider service requires a second state, call a second state provider service via the state provider management service module. The state control system is further adapted to determine a set of relevant input variables for the second state provider service; determine a set of matching second state provider services; score the set of matching second state provider services; select the second state provider service with the highest score to generate second state data; pass the second state data to the second state provider service; and return an output value of the execution of the second state provider service as the second state.
[0127] Example 16 includes the state control system according to any one of Examples 11 to 15, wherein the scoring device is further adapted to score the determined set of state provider services to generate a set of highest-scoring state provider services with the same score value. The state control system is further configured to call the set of highest-scoring state provider services in parallel.
[0128] Example 17 includes the state control system according to Example 16, further comprising a measuring device adapted to measure a performance value for executing the set of highest-scoring state provider services and adapted to store the corresponding performance value in metadata of the corresponding state provider service.
[0129] Example 18 includes the state control system according to any one of Examples 11 to 17, wherein the second determining means adapted to determine a set of state provider services is further adapted to determine a matching state provider service according to predefined rules in the metadata.
[0130] Example 19 includes the state control system according to any one of Examples 11 to 18, wherein the second determining means is further adapted to determine the matching state provider service according to a current workload profile in the cloud computing environment.
[0131] Example 20 includes a computer program product for controlling state updates in a cloud service environment, the computer program product comprising a computer-readable storage medium having program instructions embodied therewith, the program instructions being executable by one or more computing systems or controllers to cause the one or more computing systems to: maintain, via a state provider management service, a set of state provider definitions in a state provider registry, each state provider definition comprising a set of required input variable definitions, a set of output variable definitions, and associated metadata; upon invoking a service, determine a set of input variable definitions required by the invoked service; receive, by the state provider management service, the determined set of input variable definitions; and select, by the state provider management service, a state provider definition by referencing the state provider registry. The selected state provider definition is compatible with the received set of input variable definitions. The program instructions are further executable by the one or more computing systems or controllers to determine a set of state provider services that match the selected state provider definition; score the determined set of state provider services using metadata associated with the state provider definitions of the determined set of state provider services; invoke the state provider service with the highest score to generate state data; and pass the state data to the invoked service.
Claims
1. A computer-implemented method for controlling status updates in a cloud service environment, the method comprising: Maintaining a set of state provider definitions in the state provider registry through the state provider management service, each state provider definition includes a set of required input variable definitions, a set of output variable definitions and related metadata; When calling a service, determine a set of input variable definitions required by the called service; Receiving, by the state provider management service, a determined set of input variable definitions; selecting, by the state provider management service, a state provider definition by referencing the state provider registry, wherein the selected state provider definition is compatible with the received set of input variable definitions; determining a set of state provider services that match the selected state provider definition; scoring the determined set of state provider services using metadata associated with state provider definitions of the determined set of state provider services; Invoke the highest-scoring state provider service to generate state data; and The state data is passed to the called service.
2. The method according to claim 1, further comprising: A call counter is stored by the state provider management service in the metadata repository for each state provider service, and is incremented by the state provider management service each time the state provider service is called.
3. The method according to claim 1, further comprising: Upon completion of execution of the service, an output value of the service is returned to the state provider service, from which the state data is received.
4. The method according to claim 3, further comprising: The received state data is persistently stored by the state provider service from which the state data was received.
5. The method according to claim 1, wherein The called state provider service becomes the first state provider service, and the method further includes: Upon determining that the called first state provider service requires a second state: calling a second state provider service via the state provider management service; determining a relevant set of input variables for the second state provider service; determining a set of matching second state provider services; scoring the set of matching second state provider services; selecting a second state provider service with the highest score, thereby generating second state data; passing the second state data to the second state provider service; and An output value of the execution of the second state provider service is returned as the second state.
6. The method according to claim 1, wherein Scoring the determined set of state provider services results in a set of top-scoring state provider services that produce the same score value, the method further comprising: The set of highest scoring state provider services are called in parallel.
7. The method according to claim 6, further comprising: measuring a performance value of executing the set of highest-scoring state provider services; as well as The corresponding performance value is stored in the metadata of the corresponding state provider service.
8. The method according to claim 1, wherein: Determining the set of state provider services further comprises: A matching state provider service is determined according to predefined rules regarding the metadata.
9. The method according to claim 1, wherein: Determining the set of state provider services further comprises: A matching state provider service is determined based on a current workload profile in the cloud computing environment.
10. The method according to claim 1, wherein: The state provider service with the highest score is determined based on a round-robin scheduling principle.
11. A state control system for controlling state updates in a cloud service environment, the state control system comprising: a state provider registry module adapted to maintain a set of state provider definitions through a state provider management service unit, wherein each state provider definition includes a set of required input variable definitions, a set of output variable definitions, and related metadata; first determining means, adapted to determine, when invoking a service, a set of input variable definitions required by the invoked service; Wherein, the state provider management service unit is further adapted to receive the determined set of input variable definitions; wherein the state provider management service unit is further adapted to select a state provider definition by referring to the state provider registry, wherein the selected state provider definition is compatible with the received set of input variable definitions; second determining means adapted to determine a set of state provider services matching the selected state provider definition; scoring means adapted to score the determined set of state provider services using metadata associated with state provider definitions of the determined set of state provider services; Invoking means adapted to invoke the state provider service with the highest score, thereby generating state data; and Sending means adapted to pass said state data to the called service.
12. The state control system according to claim 11, wherein: The state provider management service unit is further adapted to store a call counter for each state provider service in the metadata repository, the call counter being incremented by the state provider management service unit each time the state provider service is called.
13. The state control system according to claim 11, further comprising: The returning device is adapted to return the output value of the service to the state provider service when the execution of the service is completed, and receives the state data from the state provider service.
14. The state control system according to claim 13, further comprising: A storage device adapted to persistently store state data received by the state provider service, the state data being received from the state provider service.
15. The state control system according to claim 11, wherein: The called state provider service becomes a first state provider service, and wherein the state control system is further adapted to: Upon determining that the called first state provider service requires a second state: calling a second state provider service via the state provider management service unit; determining a relevant set of input variables for the second state provider service; determining a set of matching second state provider services; scoring the set of matching second state provider services; selecting a second state provider service with the highest score, thereby generating second state data; passing the second state data to the second state provider service; and An output value of the execution of the second state provider service is returned as the second state.
16. The state control system according to one of claims 11 to 15, wherein: The scoring means is further adapted to score the determined set of state provider services to result in a set of top-scoring state provider services that produce the same score value, whereby: The set of highest scoring state provider services are called in parallel.
17. The state control system according to claim 16, further comprising: The measuring device is adapted to measure a performance value of executing the set of highest-scoring state provider services and to store the corresponding performance value in metadata of the corresponding state provider service.
18. The state control system according to one of claims 11 to 15, 17, wherein: Said second determining means adapted to determine a set of state provider services is further adapted to: A matching state provider service is determined according to predefined rules in the metadata.
19. The state control system according to one of claims 11 to 15, 17, wherein: The second determining device is further adapted to: A matching state provider service is determined based on a current workload profile in the cloud computing environment.
20. A computer program product for controlling status updates in a cloud service environment, the computer program product comprising a computer-readable storage medium having program instructions embodied therewith, the program instructions being executable by one or more computing systems to cause the one or more computing systems to: Maintaining a set of state provider definitions in the state provider registry through the state provider management service, each state provider definition includes a set of required input variable definitions, a set of output variable definitions and related metadata; When calling a service, determine a set of input variable definitions required by the called service; Receiving, by the state provider management service, a determined set of input variable definitions; selecting, by the state provider management service, a state provider definition by referencing the state provider registry, wherein the selected state provider definition is compatible with the received set of input variable definitions; determining a set of state provider services that match the selected state provider definition; scoring the determined set of state provider services using metadata associated with state provider definitions of the determined set of state provider services; Invoke the highest-scoring state provider service to generate state data; and The state data is passed to the called service.
Citation Information
Patent Citations
Method and apparatus for facilitating stateless representation of interaction flow states
CA2981271A1
Transparently stateful execution of stateless applications
US9749387B2
Provisioning services using a cloud services catalog
CN102763085A
Integrated metering method and system of service usage for hybrid clouds
CN103281344A