Method, system and program for controlling status updates
The state provider management service and registry system addresses the challenge of stateless microservices in cloud environments by managing and transferring state data efficiently, optimizing resource utilization and performance.
Patent Information
- Application Number
- JP2022554268
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-03-19
- Filing Date
- 2021-02-11
- Publication Date
- 2025-01-29
- Estimated Expiration
- 2041-02-11
AI Technical Summary
In cloud computing environments, there is a challenge in efficiently sharing and managing state information between microservices due to their stateless nature, which hinders optimal resource utilization and management, particularly in serverless models where data is not easily retained across execution cycles.
A state provider management service and registry system that maintains state provider definitions, selects compatible services based on metadata, and scores them to ensure efficient state data transfer and management across multiple services.
Enables flexible and efficient management of state information across microservices, optimizing resource utilization and ensuring seamless data transfer, even across different providers, thereby enhancing performance and reliability.
Smart Images

Figure 0007623770000001 
Figure 0007623770000002 
Figure 0007623770000003
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 services and / or computing environment. The present disclosure further relates to a storage control system and a computer program product for controlling state updates in a cloud services environment. [Background technology]
[0002] Modern computing environments, often deployed on cloud computing platforms and in cloud frameworks, consist of multiple interacting services and / or microservices. One of the characteristics of such microservices is that they are often stateless, i.e. the state does not persist from one invocation to the next. In particular, the state including the data of one session of a microservice is not preserved for the next session or call to that microservice. However, in some cases it can be useful to have the state of a microservice available for the next call of the related microservice. This is interesting not only as an underlying technology for transactional applications, e.g. technical e-commerce infrastructures, but also for the management of multiprocessor systems in cloud computing frameworks and / or environments. Such resources may be available from different provider organizations under different conditions, performance levels and service level agreements. However, if the resource management for such resources can also be based on the interaction of stateless services and / or microservices, it can be useful in such situations to have access to the "old" state of the respective service / microservice.
[0003] Cloud providers typically offer physical or virtual computing resources that clients can use by becoming members of a service computing environment, while the cloud provider manages the allocation and the underlying computing and network infrastructure. This operating model is advantageous for the client, since it allows the client to optimize their operating costs. On the other hand, the real interest of the cloud provider is to minimize the operating and investment costs so that the business model is viable. Therefore, cloud providers typically limit the allocation of computer resources, where this limit is usually supported by a specific programming methodology. The underlying programming model is therefore a stateless, event-driven, time-limited, serverless model.
[0004] Although advantageous for certain execution requirements, this model also has some drawbacks. Obviously, one drawback is that it is stateless, i.e. data or state information is not easily shared from one execution cycle of a function to the next, or between different functions or services.
[0005] Several disclosures exist relating to computer-implemented methods for controlling state updates in a cloud service environment.
[0006] U.S. Patent No. 9,749,387 B2 discloses an embodiment for transparently providing stateful execution for a stateless application based on a received request and first state information associated with the application including at least one operation performed by the application.
[0007] Canadian Patent No. 2981271A1 discloses a method and apparatus for facilitating a stateless representation of a dialogue flow state associated with a customer dialogue, including effecting generation of a first uniform resource locator (URL) that indicates a text input received from a customer during an online transaction.
[0008] A shortcoming of known solutions is that they are often focused on commercial transactional systems, and not on the deep technical features to control and optimize multiprocessor-based cloud computing environments, where competing stateless services must be used but whose state must still be maintained. A solution to this problem can be seen as the underlying goal of the proposed concept. Summary of the Invention
[0009] According to an aspect of the present disclosure, a computer-implemented method for controlling state updates in a cloud services environment is provided, the method including 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.
[0010] The method also includes determining a set of input variable definitions required by the invoked service when invoking the service. The method further includes receiving, by a state provider management service, the determined set of input variable definitions. The method also includes selecting, by the state provider management service, a state provider definition by referencing a state provider registry, where the selected state provider definition is compatible with the received set of input variable definitions.
[0011] The method further 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 with metadata associated with the state provider definition of the determined set of state provider services. The method further includes generating state data by invoking the state provider service with the highest score and sending the state data to the invoked service.
[0012] According to another aspect of the present disclosure, there is provided a state control system for controlling state updates in a cloud service environment, the state control system comprising a state provider registry module configured to maintain, by a state provider management service unit, a set of state provider definitions, each state provider definition including a set of required input variable definitions, a set of output variable definitions, and associated metadata, the system also comprising a first determining means configured to determine, when invoking the service, a set of input variable definitions required by the invoked service, the state provider management service unit also configured to receive the determined set of input variable definitions.
[0013] Additionally, the state provider management service unit is configured to select 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.
[0014] The state control system further comprises a second determining means configured to determine a set of state provider services that match the selected state provider definition. The system also comprises a scoring means configured to score the determined set of state provider services using metadata associated with the state provider definition of the determined set of state provider services. The system also comprises an invoking means configured to generate state data by invoking the highest scored state provider service. The system further comprises a sending means configured to send the state data to the invoked service.
[0015] Furthermore, embodiments may take the form of a related computer program product, which is accessible from a computer usable or computer readable medium providing program code for use by or in connection with a computer or any instruction execution system. For purposes of this description, a computer usable or computer readable medium may be any apparatus that may include means for storing, communicating, propagating, or transporting a program for use by or in connection with an instruction execution system, apparatus, or device. Thus, there is provided a computer program product for controlling state updates in a cloud service environment, which computer program product includes a computer readable storage medium having program instructions embodied therein stored thereon, the program instructions being executable by one or more computing systems or controllers to cause the one or more computing systems to maintain, in a state provider registry, a set of state provider definitions by a state provider management service, 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 the service, a set of input variable definitions required by the invoked service. The program instructions further cause the one or more computing systems to receive, by a state provider management service, the determined set of input variable definitions. The program instructions also cause the one or more computing systems to select, by the state provider management service, a state provider definition by referencing a state provider registry, the selected state provider definition being 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 also cause the one or more computing systems to score the determined set of state provider services with 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 generate state data by invoking the state provider service with the highest score. The program instructions also cause the one or more computing systems to send the state data to the invoked service.
[0018] The proposed computer-implemented method and related system for controlling state updates in a cloud service environment may provide multiple advantages, technical effects, contributions and / or improvements.
[0019] The concept proposed here can be implemented to intercept invocation calls to a stateless service or microservice in a cloud computing environment and inject the state of the same service or microservice or both from when the service / microservice was terminated after a previous execution. This mechanism works not only for one service or microservice or both, 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 are identified that satisfy the state definition and fulfill the calling service or microservice. Based on the metadata associated with the state provider registry, a particular state provider service is selected, which may be according to a service level agreement or other predefined conditions, or according to rules required by the calling service or microservice or by a state provider management service, or both.
[0020] This not only allows managing the state of an otherwise stateless service / microservice, but also allows selecting an appropriate state provider service according to predefined rules. This allows high flexibility in the state management of services / microservices in cloud computing environments, but also allows load balancing between resources of different entities (e.g. providers) offering state provider services with the same characteristics.
[0021] The proposed concept may also reveal its advantages in management tasks close to the hardware of resources: thus, the state of processors, coprocessors, memory units, memory systems or network resources or any combination of these may be gracefully monitored and managed using originally stateless services that can now be equipped according to the proposed and disclosed concept and use the state information.
[0022] Below, additional embodiments of the disclosed concepts applicable to methods and related systems and computer program products are described.
[0023] According to an advantageous embodiment, the method may further include storing, by the state provider management service, in the metadata repository, for each state provider service, an invocation counter incremented by the state provider management service upon each invocation of the state provider service. In this way, it may be determined which of the state provider services are most used. This indicator may be used for quality assessment, performance assessment, availability and reliability assessment for future selection of a state provider service for a given set of required input data.
[0024] When responding to a state provider service request that matches a given state provider definition, the state provider registry in which the call counter is stored may further return the call counter as part of the response data to the state provider service. When the state provider management service receives the call counter, it may compare it to the last stored call counter for the selected state provider service. Additionally, the state provider management service may reject the actual service request if the received call counter for the selected state provider function is greater than or equal to the last stored call counter.
[0025] According to an advantageous embodiment, the method may also comprise, upon terminating execution of the service, returning an output value of the service to the state provider service from which the state data was received. This operation may also be performed under the control of a state provider management service, which may thus play a central role in the concepts proposed herein.
[0026] According to a further useful embodiment, the method may also include persistently storing the received state data by a state provider service from which the state data was received, such that the state provider service may fulfill its purpose of tracking the state of related services invoked by the application to fulfill a predefined function.
[0027] According to an enhanced embodiment, the method may further include, when the invoked first state provider service determines that a second state is required, invoking 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, generating second state data by selecting the second state provider service with the highest score, sending the second state data to the second state provider service, and returning an output value of execution of the second state provider service as the second state.
[0028] In this way, it becomes possible to manage a set of dependent states for a given service, where the services of the service provider can be activated in a recursive manner by the service provider management service, starting with a first selected service provider service and then, using the service provider definition, one or more additional state provider services are selected and activated in a cascade manner, ultimately returning the desired state to the calling service.
[0029] According to another advantageous embodiment of the method, scoring the determined set of state provider services results in a set of the highest-scoring state provider services having the same score value, and may further comprise invoking the particularly complete set of the highest-scoring state provider services in parallel. In this way, not only are the services of one service provider activated at a given time, but similar state provider service actions, i.e., returning to the same state, may be performed in parallel. In this way, performance testing may be possible for different state provider services, ensuring that in future cases of activation of the state provider service, one state provider service offering the best performance is selected. Alternatively, state provider services from different providers in a cloud computing environment, which may run state provider services under different service level agreements, may be measured against each other.
[0030] This action is expressed in the following optional embodiment, according to which the method may also include measuring performance values for the set of highest scoring state provider services performing and storing the respective performance values in metadata for the respective state provider services, such that the results of the performance comparison may be persistently stored in metadata that is also controlled and accessible by the state provider management service.
[0031] According to a further useful embodiment of the method, determining the set of state provider services may also include determining matching state provider services according to predefined rules regarding the metadata. In doing so, the state provider services may be selected according to predefined rules, such as those provided by predefined quality standards, service level agreements, performance indicators or other behavioral indicators of the service provider services, or a combination thereof.
[0032] According to a further extended embodiment of the method, determining the set of state provider services may also include determining matching state provider services according to a current workload profile in the cloud computing environment. In this way, also different workloads in different sections or parts of the cloud computing environment, i.e. computing centers at a given time, may be reflected and / or controlled.
[0033] According to one allowable embodiment of the method, the state provider service with the highest score may be determined according to a round-robin principle, so that every time a state provider service according to a predefined state provider service definition has to be invoked, another one following the same definition may get the opportunity to be executed.
[0034] It may be noted that the definition of best score is understood broadly, i.e., the scoring may be the basis of a set itself that is dynamically changed according to predefined conditions in the cloud computing environment. For example, the best-scoring state provider may in fact be the one that has shown, especially during past runs, that its performance is the best, i.e., that a particular state provider service returns state in the shortest time. In other cases, the state provider service may be selected according to other rules, such as having the best track record of complying with a selected set of SLAs and / or quality requirements.
[0035] It should be noted that the 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, a person skilled in the art should understand from the above and following description that, unless otherwise stated, any combination of features belonging to a certain type of subject matter, as well as any combination between features related to different subject matters, in particular any combination between features of a method type claim and a feature of an apparatus type claim, is considered to be disclosed in this document.
[0036] The above defined and further aspects of the present disclosure will be apparent from and will be elucidated with reference to the example embodiments described hereinafter, to which the present disclosure is not limited.
[0037] The drawings included in this application are incorporated in and form a part of the specification. They illustrate embodiments of the present disclosure and together with the description serve to explain the principles of the present disclosure. The drawings are illustrative of particular embodiments and do not limit the disclosure. [Brief description of the drawings]
[0038] [Figure 1]FIG. 1 is a block diagram of an embodiment of a computer-implemented method for controlling state updates in a cloud service environment. [Diagram 2] FIG. 2 is a block diagram of an embodiment of relevant units and selected communication paths supporting the concepts proposed herein. [Diagram 3] FIG. 1 is a diagram of an embodiment of message flows between the core components of the concept proposed herein. [Figure 4] FIG. 1 is a block diagram of an embodiment of a state control system for controlling state updates in a cloud service environment. [Diagram 5] FIG. 5 illustrates an embodiment of a computing system with a state control system according to FIG. [Figure 6] FIG. 1 illustrates a cloud computing environment in which at least a portion of the disclosed concepts may be deployed. [Figure 7] FIG. 1 is a schematic diagram illustrating a cloud computing environment according to some embodiments of the present disclosure. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0039] In the context of this description, the following conventions, terms, or expressions, or combinations thereof, may be used.
[0040] The term "state" may be defined, particularly in the case of a service of a microservice, as the last known or current state of a service or an application or process in a computing system. State in relation to a service may further be created as the current values of the variables or parameters of that service, which may change as the application executes.
[0041] The term "stateful" may refer to an application or service that may typically maintain its state at any point in time. In contrast, a stateless application or service is completely self-contained, with data and execution transaction boundaries coinciding with the start and end of the application or service. Thus, when a stateless service is started again, it may not have any memory of its previous life, i.e., it has no data regarding its previous execution and any of the variables that were used.
[0042] The term "service" as used herein may refer to a mechanism that allows access to one or more capabilities and / or resources, where the access is provided using a defined interface and may be implemented consistently according to constraints and / or policies specified by the description of the service involved. Sometimes software technologies are used to develop microservices at the very end of the Service Oriented Architecture (SOA) architectural style. In this case, an application may be composed as a collection of loosely coupled services. In a microservices architecture, the services are more fine-grained and the protocols are more lightweight compared to more classical SOA computing environments. In the context of this document, the terms "service" and "microservice" may be used interchangeably.
[0043] The term "state provider management service" may refer to a new function in the context of enabling state management for a previously stateless service. Thus, a stateless service may also be declared to be stateful without any change to the stateless service in its functionality. The state of a stateless service may be managed by a state provider service independently of other services external to the stateless service. A collection of state provider services may be managed by a related state provider management service, which may have a user interface (UI) 220 or an API (application programming interface) to define, modify, or delete state provider definitions. Typically, a state provider definition includes at least the required input and output variables of the associated service. In at least some embodiments, there may be multiple state provider services for one state provider definition. Thus, multiple state provider services may be invoked and executed in parallel.
[0044] The term "state provider registry" is managed and manipulated, i.e., new entries may be defined, modified, or deleted, by a state provider management service. Thus, a state provider registry may provide an API for registering, querying, registering, and updating state provider services.
[0045] The term "state provider service", as used herein, may be defined by a state provider specification or state provider definition stored in a state provider registry and managed by a state provider management service. A state provider definition may thus determine the specifics of a state provider service, such as required input variables that may match the requirements of a service relationship depending on the state provider service, and output variables to ensure persistent storage of the service's state.
[0046] As an example, z():id,* may define a state provider service z that is independent of further state or state provider services and may provide a state variable "id" for all services and state provider services (hence the wildcard "*").
[0047] As another example, y(id):name,address,x may define a state provider service y (here depending on state "id" provided by another state provider) that provides state variables "name" and "address" for services adhering to service specification "x" and state provider services, where x may be a regular expression for the service name.
[0048] The term "metadata", in particular of a state provider service, may refer to specific characteristics of the state provider service in question. The metadata may be directed to performance indicators, quality parameters, special service level agreements, the operation of the provider, the state provider service or any other behavioral characteristics that the state provider service possesses, or any combination thereof.
[0049] Although this disclosure includes detailed descriptions of cloud computing, it should be understood that implementation of the teachings cited herein is not limited to cloud computing environments. Rather, embodiments of the present disclosure may be implemented in connection with any other type of computing environment now known or later developed.
[0050] As known in the art, the term "cloud computing," and similarly the term "cloud service environment," in this context, may 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 rapidly provisioned and released with minimal administrative effort or interaction with a service provider. This cloud model provides increased availability and consists of at least five characteristics, at least three service models, and at least four deployment models.
[0051] The essential characteristics of cloud computing include: (i) On-Demand Self-Service: Consumers can provision computing capacity, such as server time and network storage, automatically and unilaterally as needed, without requiring human interaction with each service provider. (ii) Pervasive 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., cell phones, laptops, and PDAs). (iii) Resource Sharing: A provider's computing resources are shared to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically allocated and reallocated according to consumer demand. A location-independent sense exists in that consumers typically have no control or knowledge of the exact location of the resources provided, although it may be possible to identify a location at a higher layer of abstraction (e.g., country, state, or data center). (iv) Rapid Elasticity: Capacity is provisioned rapidly and elastically, sometimes automatically, and can be quickly scaled out and quickly released to quickly scale in. To the consumer, the capacity available for provisioning often appears unlimited and can be purchased at any time and in any amount. (v) Measured Services: Cloud systems automatically control and optimize resource usage by leveraging metering capabilities at several levels 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 services used.
[0052] Service models for cloud computing include the following: (i) Cloud Software as a Service (SaaS): The capability provided to the consumer is the use of the provider's applications running on a cloud infrastructure. The applications are accessible from a variety of client devices through thin-client interfaces such as web browsers (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, storage, or individual application capabilities, except in some cases limited user-specific application configuration settings. (ii) Cloud Platform as a Service (PaaS): The capability offered to the Consumer is to deploy applications created or acquired by the Consumer, written using programming languages and tools supported by the Provider, onto a cloud infrastructure. The Consumer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage, but does control the deployed applications and, potentially, the configuration of the application hosting environment. (iii) Cloud Infrastructure as a Service (IaaS): The capability provided to the consumer is the provision of processing, storage, networking, and other basic computing resources on which the consumer can deploy and run any software, which may include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure, but has control over the operating systems, storage, deployed applications, and possibly limited control over selected networking components (e.g., host firewalls).
[0053] Deployment models for cloud computing include the following: (i) Private Cloud: The cloud infrastructure is operated solely by one organization. It is managed by that organization or a third party and may exist on-premises or off-premises. (ii) Community Cloud: The cloud infrastructure is shared by several organizations to support a particular community with common interests (e.g., mission, security requirements, policies, and compliance considerations), is managed by those organizations or a third party, and can exist on or off premises. (iii) Public Cloud: The cloud infrastructure is made available to the public or large industry groups and is owned by an organization that sells cloud services. (iv) Hybrid Cloud: Cloud infrastructure is a hybrid of two or more clouds (private, community, or public) that remain unique entities but are bound to each other by standardized or proprietary technologies that enable data and application portability (e.g., cloud bursting for load balancing between clouds).
[0054] It can be noted that cloud software takes full advantage of the cloud paradigm by being service-oriented with a focus on statelessness (with exceptions), low coupling, modularity, and semantic interoperability.
[0055] In the following, a detailed description of the drawings is given. All indications in the drawings are schematic. First, a block diagram of an embodiment of the disclosed computer-implemented method for controlling state updates in a cloud service environment is given. After that, further embodiments and an embodiment of a storage control system for controlling state updates in a cloud service environment are described.
[0056] 1 illustrates a block diagram of an embodiment of a computer-implemented method 100 for controlling state updates in a cloud service environment. The method 100 includes maintaining 102, by a state provider management service, also denoted as a state manager, a set of state provider definitions in a state provider registry. Each state provider definition includes at least a set of required input variable definitions (which in special cases may include only one input variable definition), a set of output variable definitions (which may also be a single collection), and associated metadata. The set of output variables may be viewed as the state of the service at its execution end point.
[0057] The method 100 also includes determining 104 a set of input variable definitions required by the invoked service when invoking the service. Information regarding the required input variables may be delivered or derived by the service itself, or may be requested from an associated service or microservice registry.
[0058] Additionally, the method 100 includes receiving 106 the determined set of input variable definitions by a state provider management service, selecting 108 a state provider definition by the state provider management service by referencing a state provider registry, where the selected state provider definition is compatible with the received set of input variable definitions (again, there may be only one definition), and determining 110 a set of state provider services that match the selected state provider definition (again, there may be only one).
[0059] Next, the method 100 includes scoring 112 the determined set of state provider services using metadata associated with state provider definitions of the determined set of state provider services, generating state data 114, in particular by invoking the highest scoring state provider services according to predefined rules, and sending the state data to the invoked service 116. In this manner, a service or microservice that is stateless by design can have state injected into it, thereby preserving the benefits of stateless execution while also reaping the benefits of stateful behavior.
[0060] FIG. 2 shows a block diagram 200 of an embodiment of participating units and selected communication paths that support the concepts proposed herein.
[0061] First, mention should be made of the invocation service, microservice, or program 202, which is the starting point for requesting the execution of a service 208. The service and / or microservice may be managed and controlled by a service registry and relationship control mechanism (both not shown in this figure). However, requests to the service 208 may be intercepted and / or controlled by a request proxy 204 that includes a state manager 206, or in other words a state provider management service 206.
[0062] The state provider management service 206 has access to state provider definitions in a state provider registry 210. Measurement data for the performance, quality, and behavior of the state provider services may be continuously or sporadically monitored by a performance monitor 216, which may also control the storage of other performance logs 218. Additionally, the state provider management service 206 may include a registry UI (user interface) 220 to allow manually guided definition of entries in the service provider registry, or an API to allow a system management tool (not shown) to maintain the entries in the service provider registry 210.
[0063] The state provider management service 206 can invoke specific, matching state provider services 212 according to the definition from the state provider registry 210. Additionally, predefined rules 214, which can be derived from metadata and are also stored in the state provider registry 210, can influence the selection of one or more state provider services 212 associated with a state provider definition.
[0064] FIG. 3 shows a diagram 300 of an embodiment of message flows between the core components of the concept proposed herein. The message flows mirror the functionality of the embodiment discussed in the context of FIG. 2. The process flow starts with a request 312 from a client application 302 (compare 202 in FIG. 2). This request 312 arrives at the request proxy by a state manager or state provider management service 304. This queries 314 a state provider registry 306 for an appropriate state provider service. The state provider registry 306 responds 316 with a sequence of one or more state providers. The state provider management service 304 then invokes 318 a state provider service 308 or a sequence of state provider services 308. The state provider service or services 308 return 320 a persistently stored state. Based on this, i.e. using the state data, the requested service 310 (specifically the one requested by the client application 302) is invoked by the request proxy with the currently available state. After execution of the service 310, the results are returned 324 to the request proxy 304, which returns the results to the original calling client application 302 (or service).
[0065] For completeness reasons, Fig. 4 shows a block diagram of an embodiment of a state control system 400 for controlling state updates in a cloud services environment. The state control system 400 comprises a state provider registry module 402 configured to maintain a set of state provider definitions via a state provider management service unit 404. Each state provider definition thereby includes a set of required input variable definitions, a set of output variable definitions and associated metadata.
[0066] The state control system 400 also comprises a first determining means, in particular a first determining module 406, configured to determine, when invoking the service, a set of input variable definitions required by the invoked service, where the state provider management service unit 404 is also configured to receive the determined set of input variable definitions, whereby the state provider management service unit 404 is also configured to select a state provider definition by referring to a state provider registry, the selected state provider definition being compatible with the received set of input variable definitions.
[0067] The state control system 400 further comprises second determining means, in particular a second determining module 408, configured to determine a set of state provider services that match the selected state provider definition, scoring means, in particular a scoring unit 410, configured to score the determined set of state provider services using metadata related to the state provider definition of the determined set of state provider services, in particular a scoring unit 412, invoking means configured to generate state data by invoking the highest scored state provider service, and finally sending means, in particular a transmitter 414, configured to send the state data to the invoked service.
[0068] All the above mentioned means, units, modules, etc. may each be implemented as a hardware controller, in particular as 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 transmitter 414. These hardware implemented functional units may be linked to each other via electrical connections 416 (individual wires or a bus system) for exchanging messages as discussed in the context of FIG.
[0069] Before proceeding to FIG. 5, FIG. 6 illustrates a cloud computing environment in which at least a portion of the disclosed concepts may be deployed.
[0070] FIG. 6 illustrates a cloud computing environment 600 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 illustrated. It should be understood in advance that the components, layers, and functions illustrated in FIG. 6 are intended to be merely exemplary, and that the embodiments of the present disclosure are not limited thereto. As illustrated, the following layers and corresponding functions are provided: Hardware and software layer 602 includes hardware components and software components. Examples of hardware components include mainframe 604, server 606, reduced instruction set computer (RISC) architecture-based server 608, blade server 610, storage device 612, network 614, and network component 614. In some embodiments, the software components include network application server software 616 and / or database software 618.
[0071] The virtualization layer 620 provides an abstraction layer from which the following examples of virtual entities may 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. As an example, the management layer 632 may provide the following functions: Resource provisioning 634 provides dynamic procurement of computing and other resources utilized to perform tasks within the cloud computing environment. Metering and pricing 636 provides cost tracking as resources are utilized within the cloud computing environment and billing or invoicing for the consumption of these resources. As an example, these resources may include application software licenses. Security provides protection for data and other resources as well as authentication of the identity of cloud consumers and tasks. A user portal 638 provides access to the cloud computing environment for consumers and system administrators. Service level management 640 provides allocation and management of cloud computing resources such that requested service levels are met. Service Level Agreement (SLA) Planning and Fulfillment 642 provides for the advance arrangement and procurement of cloud computing resources anticipated to be required in the future in accordance with the SLA.
[0072] Workload tier 644 provides examples of functions for which a cloud computing environment is used. Examples of workloads and functions provided from this tier include mapping and navigation 646, software development and lifecycle management 648, virtual classroom instructional delivery 650, data analytics processing 652, transaction processing 654, and state control module 656 (compare 400 in FIG. 4).
[0073] The embodiments of the present disclosure may be implemented with virtually any type of computer, regardless of the platform suitable for storing and / or executing the program code. Figure 5 illustrates, by way of example, a computing system 500 suitable for executing program code related to the proposed method.
[0074] The computing system 500 is merely one example of a suitable computer system, and is not intended to suggest any limitations as to the scope of use or functionality of the embodiments of the disclosure described herein, regardless of whether the computer system 500 is capable of implementing and / or performing any of the functions described above. There are components of the computer system 500 that operate with numerous other general purpose or special purpose computing system environments or configurations. Examples of well-known computer systems, environments or configurations or combinations thereof that may be suitable for use with the 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 computer systems, and distributed cloud computing environments that include any of the above systems or devices and their equivalents.
[0075] The computer system / server 500 may be described in the general context of computer system executable instructions, such as program modules, being executed by the computer system 500. Generally, program modules may include routines, programs, objects, components, logic, data structures, etc. that perform particular tasks or implement particular abstract data types. The computer system / server 500 may be executed 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.
[0076] As shown in the drawings, computer system / server 500 is depicted in the form of a general-purpose computing device. Components of computer system / server 500 include, but are not limited to, one or more processors or processing units 502, a system memory 504, and a bus 506 that couples various system components including system memory 504 to processor 502. Bus 506 represents any one or more 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 a variety of bus architectures. By way of example, and not meant to be limiting, such architectures include an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, and a Peripheral Component Interconnect (PCI) bus. Computer system / server 500 typically includes a variety of computer system readable media. Such media can be any available media that is accessible by computer system / server 500 and includes both volatile and non-volatile media, removable and non-removable media.
[0077] The 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. The computer system / server 500 may further include other removable / non-removable, volatile / non-volatile computer storage media. By way of example only, a storage system 512 may be provided for reading from and writing to a non-removable, non-volatile magnetic medium (not shown, but typically referred to as a "hard drive"). Although not shown, a magnetic disk drive may be provided for reading from and writing to a removable, non-volatile magnetic disk (e.g., a "floppy disk"), and an optical disk drive may be provided for reading from and writing to a removable, non-volatile optical disk, such as a CD-ROM, DVD-ROM, or other optical medium. In these examples, each may be connected to the bus 506 by one or more data media interfaces. As described in more detail below, the memory 504 may include at least one program product having a set (e.g., at least one) of program modules configured to perform functions of embodiments of the present disclosure.
[0078] A program / utility having a set (at least one) of program modules 516 may be stored in the memory 504, as well as, for example, but not limited to, an operating system, one or more application programs, other program modules, and program data. The operating system, one or more application programs, other program modules, and program data, or combinations thereof, may each include an implementation of a network environment. The program modules 516 generally perform the functions and / or methods of the embodiments of the present disclosure as described herein. For example, the program modules 516 may be executed by the 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 transmitter 414.
[0079] The computer system / server 500 may also communicate with one or more external devices 518, such as a keyboard, a pointing device, a display 520, one or more devices that allow a user to interact with the computer system / server 500, or any device that allows the computer system / server 500 to communicate with one or more other computing devices (e.g., a network card, a modem, etc.), or a combination thereof. Such communication may occur via an input / output (I / O) interface 514. Furthermore, the computer system / server 500 may also communicate with one or more networks, such as a local area network (LAN), a general-purpose wide area network (WAN), or a public network (e.g., the Internet), or a combination thereof, via a network adapter 522. As shown, the network adapter 522 may communicate with other components of the computer system / server 500 via a bus 506. It should be understood that other hardware and / or software components, not shown, may be used with the computer system / server 500. Examples include microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archive storage systems.
[0080] Referring now to FIG. 7, a schematic diagram illustrating an exemplary 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 with which local computing devices used by cloud consumers can communicate. Examples of these local computing devices include, but are not limited to, a personal digital assistant (PDA) or cellular phone 754A, a desktop computer 754B, a laptop computer 754C, or an automobile computer system 754N, or combinations thereof. The individual nodes within the node 710 can further communicate with each other. They may be physically or virtually grouped in one or more networks, such as the private, community, public, or hybrid, or combinations thereof, clouds described above (not shown). This allows the cloud computing network 700 to provide infrastructure, platform, or software, or combinations thereof, as a service without the cloud consumer having to maintain resources in the local computing device. It should be understood that the types of computing devices 754A-N shown in FIG. 7 are intended to be merely illustrative, and that the cloud computing environment 750 can communicate using any type of computerized device over any type of network and / or network-addressable connection (e.g., using a web browser).
[0081] The description of various embodiments of the present disclosure has been presented for illustrative purposes, but is not intended to be exhaustive or to be limited to the disclosed embodiments. Many modifications and variations that do not depart from the scope and spirit of the described embodiments will be apparent to those skilled in the art. The terms used in this specification have been selected to best explain the principles of the embodiments, practical applications, or technical improvements to the technology found in the market, or to allow those skilled in the art to understand the embodiments disclosed herein.
[0082] The present disclosure may be embodied as a system, method, or computer program product, or any combination thereof. The computer program product may include a computer-readable storage medium (or media) having computer-readable program instructions thereon for causing a processor to execute aspects of the present disclosure.
[0083] The medium may be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system for a propagation medium. Examples of a computer-readable medium may include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk, and an optical disk. Current examples of an optical disk include a compact disk-read-only memory (CD-ROM), a compact disk-read / write (CD-R / W), a DVD, and a Blu-ray disk.
[0084] A computer readable storage medium may be a tangible device capable of holding and storing instructions for use by an instruction execution device. A computer readable storage medium may 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 of the above. A non-exhaustive list of more specific examples of computer readable storage media may also include portable computer diskettes, hard disks, random access memories (RAM), read-only memories (ROM), erasable programmable read-only memories (EPROMs or flash memories), static random access memories (SRAMs), portable compact disk read-only memories (CD-ROMs), digital versatile disks (DVDs), memory sticks, floppy disks, punch cards or mechanically encoded devices such as ridge structures in grooves with instructions recorded thereon, and any suitable combination of the above. As used herein, computer-readable storage media is not to be construed as ephemeral signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission medium (e.g., light pulses passing through a fiber optic cable), or electrical signals transmitted through wires.
[0085] The computer readable program instructions described herein may be downloaded from a computer readable storage medium to each computing / processing device or to an external computer or storage device over a network, such as the Internet, a local area network, a wide area network, or a wireless network, or a combination thereof. The network may include copper transmission cables, optical transmission fiber, wireless transmission, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. A network adapter card or network interface in each computing / processing device receives the computer readable program instructions from the network and transfers the computer readable program instructions for storage in a computer readable storage medium internal to the respective computing / processing device.
[0086] The computer readable program instructions for carrying out the operations of the present disclosure may be assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state setting data, or source code or object code, where source code and object code are described as any combination of one or more programming languages, including object oriented programming languages such as Smalltalk®, C++, and traditional procedural programming languages such as the “C” programming language or similar programming languages. The computer readable program instructions may be executed entirely on the user's computer, partially on the user's computer as a stand-alone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or wide area network (WAN), or may be connected to an external computer (e.g., via the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA) may execute computer readable program instructions by customizing the electronic circuitry using state information of the computer readable program instructions to perform aspects of the disclosure.
[0087] 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 illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, are implemented by computer readable program instructions.
[0088] These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus, such that the instructions, executed by the processor of the computer or other programmable data processing apparatus, cause means for implementing the functions / operations specified in one or more blocks of the flowcharts and / or block diagrams to produce a machine. These computer readable program instructions may also be stored in a computer readable storage medium that can instruct a computer, programmable data processing apparatus, or other device, or combination thereof, to function in a particular manner, such that the computer readable storage medium on which the instructions are stored comprises an article of manufacture including instructions that implement aspects of the functions / operations specified in one or more blocks of the flowcharts and / or block diagrams.
[0089] The computer-readable program instructions may also be loaded into a computer, other programmable data processing apparatus, or other device, such that the instructions, which execute on the computer, other programmable apparatus, or other device, implement the functions / operations specified in one or more blocks of the flowcharts and / or block diagrams, and cause the computer, other programmable apparatus, or other device to perform a series of operational steps to produce a computer-implemented process.
[0090] The flowcharts and / or block diagrams in the drawings illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present disclosure. In this regard, each block in the flowcharts or block diagrams may represent a module, segment, or part of instructions, including one or more executable instructions for implementing a specified logical function. In some alternative implementations, the functions described in the blocks may occur in a different order than the order described in the drawings. For example, two blocks shown in succession may in fact be executed substantially simultaneously, depending on the functionality involved, or these blocks may sometimes be executed in the reverse order. It should also be noted that each block of the block diagrams and / or flowchart illustrations, and combinations of multiple blocks in the block diagrams and / or flowchart illustrations, are implemented by a dedicated hardware-based system that executes a specific function or operation or executes a combination of dedicated hardware and computer instructions.
[0091] The terms used herein are for the purpose of describing particular embodiments only and are not intended to limit the disclosure. As used herein, the singular forms "a", "an" and "the" are intended to include the plural forms unless the context clearly indicates otherwise. As used herein, the term "comprises" or "comprising" or both specify the presence of stated features, integers, steps, operations, elements, or components or combinations thereof, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components or combinations thereof.
[0092] All equivalents of the corresponding structure, material, acts, and means or step-plus-function elements in the following claims are intended to include any structure, material, or operation for performing that function in combination with other claimed elements, as specifically claimed. The various descriptions of the present disclosure have been presented for illustrative purposes, but are not intended to be exhaustive or limiting of the disclosed disclosure. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the disclosure. The embodiments have been chosen and described in order to best explain the principles and practical applications of the disclosure, and to enable those skilled in the art to understand the present disclosure for various embodiments with various modifications as appropriate for the particular use envisaged.
[0093] Exemplary embodiments Example 1 includes a computer-implemented method for controlling state updates in a cloud services 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 further includes determining a set of input variable definitions required by the invoked service when invoking the 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 referencing the state provider registry, the selected state provider definition being 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 with metadata associated with the state provider definitions of the determined set of state provider services, generating state data by invoking a state provider service with a highest score, and sending the state data to the invoked service.
[0094] Example 2 includes the method of example 1, further including storing, by the state provider management service, for each state provider service, in the metadata repository an invocation counter that is incremented by the state provider management service upon each invocation of the state provider service.
[0095] Example 3 includes the method of example 1 or 2, further including, upon terminating execution of the service, returning an output value of the service to the state provider service from which the state data was received.
[0096] Example 4 includes the method of examples 1-3, further including persistently storing the received status data by a status provider service from which the status data was received.
[0097] Example 5 includes the method of any of Examples 1-4, further including invoking a second state provider service via a state provider management service when the invoked state provider service becomes a first state provider service and determines that the invoked first state provider service requires a second state, 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, generating second state data by selecting the second state provider service with the highest score, sending the second state data to the second state provider service, and returning an output value of execution of the second state provider service as the second state.
[0098] Example 6 includes a method as described in any of Examples 1 to 5, wherein scoring the determined set of state provider services results in a set of highest-scoring state provider services that result in an identical score value, and further includes invoking the set of highest-scoring state provider services in parallel.
[0099] Example 7 includes the method of any one of Examples 1 to 6, further including measuring performance values for the set of highest scoring state provider services performing and storing the respective performance values in metadata for the respective state provider services.
[0100] Example 8 includes the method of any of Examples 1-7, wherein determining the set of state provider services further includes determining matching state provider services according to predefined rules regarding the metadata.
[0101] Example 9 includes the method of any of Examples 1 to 8, wherein determining the set of state provider services further includes determining matching state provider services according to a current workload profile in the cloud computing environment.
[0102] Example 10 includes the method of any of examples 1-9, wherein the highest scoring state provider service is determined according to a round robin principle.
[0103] Example 11 includes a state control system for controlling state updates in a cloud service environment. The state control system includes a state provider registry module configured to maintain, by a state provider management services unit, a set of state provider definitions, each state provider definition including a set of required input variable definitions, a set of output variable definitions, and associated metadata. The state control system also includes a first determiner configured to determine, when invoking the service, a set of input variable definitions required by the invoked service. The state provider management services unit is also configured to receive the determined set of input variable definitions. The state provider management services unit is also configured to select 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 state control system also includes a second determining means configured to determine a set of state provider services that match the selected state provider definition, a scoring means configured to score the determined set of state provider services using metadata associated with the state provider definition of the determined set of state provider services, an invoking means configured to generate state data by invoking the highest scored state provider service, and a sending means configured to send the state data to the invoked service.
[0104] Example 12 includes the state control system of Example 11, wherein the state provider management service unit is also configured to store, for each state provider service, an invocation counter incremented by the state provider management service upon each invocation of the state provider service in the metadata repository.
[0105] Example 13 includes a state control system as described in any of Examples 11 or 12, further comprising a return means configured to, when terminating execution of the service, return an output value of the service to the state provider service from which the state data was received.
[0106] Example 14 includes the state control system of Examples 11-13, further including a storage means configured to persistently store the received state data by a state provider service from which the state data was received.
[0107] Example 15 includes the state control system of any of Examples 11-14, configured to invoke a second state provider service via the state provider management service unit when the invoked state provider service becomes a first state provider service and determines that the invoked first state provider service requires a second state, the state control system is further configured to generate second state data by 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 and selecting the second state provider service with the highest score, sending the second state data to the second state provider service, and returning an output value of execution of the second state provider service as the second state.
[0108] Example 16 includes the state control system of any of Examples 11-15, wherein the scoring means is also configured to score the determined set of state provider services that result in a set of highest-scored state provider services that result in the same score value, the state control system further configured to invoke the set of highest-scored state provider services in parallel.
[0109] Example 17 includes the state control system of Examples 11 to 16, further comprising a measurement means configured to measure performance values for executing the set of highest scoring state provider services and store the respective performance values in metadata of the respective state provider services.
[0110] Example 18 includes a state control system of any of Examples 11 to 17, wherein the second determination means configured to determine a set of state provider services is also configured to determine matching state provider services according to rules predefined in the metadata.
[0111] Example 19 includes the state control system of any of Examples 11 to 18, wherein the second determination means is also configured to determine a matching state provider service according to a current workload profile in the cloud computing environment.
[0112] 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 therein stored thereon, the program instructions being executable by one or more computing systems or controllers to cause the one or more computing systems to maintain, 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, to determine, upon invocation of a service, a set of input variable definitions required by the invoked service, to receive, by the state provider management service, the determined set of input variable definitions, and to select, by the state provider management service, a state provider definition by referencing the state provider registry, the selected state provider definition being 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 definition of the determined set of state provider services, generate state data by invoking the state provider service with the highest score, and send the state data to the invoked service.
Claims
1. 1. A computer-implemented method for controlling state updates in a cloud service environment, the method comprising: 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; 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 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 the metadata associated with the state provider definitions of the determined set of state provider services; generating state data by invoking a state provider service with a highest score; sending said status data to said invoked service; 4. A computer-implemented method comprising:
2. 2. The method of claim 1 , further comprising storing, by the state provider management service, for each state provider service, in a metadata repository an invocation counter that is incremented by the state provider management service upon each invocation of the state provider service.
3. 3. The method of claim 1, further comprising: upon terminating execution of the service, returning an output value of the service to the state provider service from which the state data was received.
4. 4. The method of claim 1, further comprising persistently storing the received state data by the state provider service from which the state data was received.
5. the invoked state provider service being a first state provider service, and the method further comprising: when the invoked first state provider service determines that a second state is required; invoking 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; generating second state data by selecting the second state provider service with the highest score; sending the second status data to the second status provider service; returning an output value of execution of the second state provider service as the second state; The method of claim 1 , further comprising:
6. said scoring said determined set of state provider services results in a set of highest-scoring state provider services resulting in an identical score value, said method comprising: The method of claim 1 , further comprising invoking the set of highest scoring state provider services in parallel.
7. measuring performance values for implementing said set of highest scoring state provider services; storing each performance value in the metadata of each status provider service; The method of claim 1 , further comprising:
8. determining the set of state provider services; The method of claim 1 , further comprising determining the matching state provider services according to predefined rules regarding the metadata.
9. determining the set of state provider services; The method of claim 1 , further comprising determining the matching state provider service according to a current workload profile in the cloud service environment.
10. 10. The method according to any one of claims 1 to 9, wherein the highest scoring state provider service is determined according to a round robin principle.
11. 1. A state control system for controlling state updates in a cloud service environment, the state control system comprising: a state provider registry module configured by a state provider management service unit to maintain a set of state provider definitions, each state provider definition including a set of required input variable definitions, a set of output variable definitions, and associated metadata; a first determining means arranged to determine, when invoking a service, a set of input variable definitions required by said invoked service; Equipped with the state provider management services unit is also configured to receive the determined set of input variable definitions; The state provider management service unit is also configured to select a state provider definition by referencing the state provider registry module, the selected state provider definition being compatible with the received set of input variable definitions; The state control system further comprises: a second determining means configured to determine a set of state provider services that match the selected state provider definition; a scoring means configured to score the determined set of state provider services using the metadata associated with the state provider definitions of the determined set of state provider services; calling means configured to generate status data by calling the highest scoring status provider service; sending means configured to send said status data to said invoked service; A state control system comprising:
12. 12. The state control system of claim 11, wherein the state provider management services unit is also configured to store, for each state provider service, an invocation counter incremented by the state provider management services unit upon each invocation of the state provider service in a metadata repository.
13. 13. A state control system according to claim 11 or 12, further comprising a returning means arranged to, when terminating execution of the service, return an output value of the service to the state provider service from which the state data was received.
14. 14. A state control system according to any one of claims 11 to 13, further comprising storage means arranged to persistently store the received state data by the state provider service from which the state data was received.
15. the invoked state provider service becomes a first state provider service, and the state control system also when the invoked first state provider service determines that a second state is required; invoking a second state provider service via the state provider management services 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; generating second state data by selecting the second state provider service with the highest score; sending the second state data to the second state provider service; 15. A state control system according to any one of claims 11 to 14, also arranged to return an output value of execution of the second state provider service as the second state.
16. the scoring means also scoring the determined set of state provider services resulting in a set of highest-scoring state provider services resulting in the same score value; 16. A state control system according to any one of claims 11 to 15, also configured to invoke the set of highest scoring state provider services in parallel.
17. 17. A state control system as claimed in claim 11 to 16, further comprising measuring means configured to measure performance values for executing the set of highest scoring state provider services and to store respective performance values in the metadata of the respective state provider services.
18. 18. A state control system according to any one of claims 11 to 17, wherein the second determination means configured to determine a set of state provider services is also configured to determine the matching state provider services according to predefined rules in the metadata.
19. The second determining means also 19. The state control system of claim 11, further configured to determine the matching state provider service according to a current workload profile in the cloud service environment.
20. A computer program causing a computer to execute a method according to any one of claims 1 to 10.
Citation Information
Patent Citations
Communication device, communication method, and program
JP2015060561A
Techniques to manage state information for a web service
US20150019624A1