Patent Publication Number: US-2015081914-A1

Title: Allocation of Resources Between Web Services in a Composite Service

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application is a continuation of co-pending U.S. patent application Ser. No. 12/901,591, filed on Oct. 11, 2010, and titled “Allocation of Resources Between Web Services in a Composite Service,” the entire contents of which are hereby incorporated by reference herein. 
    
    
     BACKGROUND 
     Conventional software applications have generally been installed and executed in a localized computing environment, such as a desktop or enterprise environment. The advancement of increasingly powerful computing devices and expanding data storage capacity in large scale networked data centers has moved consumer and business-oriented applications away from local computing environments to computing environments provided over the Internet or other types of networks, commonly referred to as “cloud-based” computing environments. These applications may be offered as hosted services in the cloud-based computing environment. 
     As the Internet continues to grow, service providers may continue to offer more diverse hosted services. These hosted services may be offered at various levels, including end user services and various backend services. For example, a hosted service may offer one level of service to one hosted service and offer another level of service to another hosted service. The various levels of service may refer to different allocations of resources, such as processing resources, memory resources, networking resources, and/or the like. Combining these hosted services can yield a composite service. It is difficult, however, to integrate multiple levels of hosted services, especially when these hosted services are offered by different service providers. 
     It is with respect to these considerations and others that the disclosure made herein is presented. 
     SUMMARY 
     Technologies are described herein for allocating resources of a publisher web service to a subscriber web service according to the subscriber web service&#39;s service level agreement (SLA) type. A composite service may include multiple web services, such as a first web service and a second web service. The second web service may utilize resources provided by the first web service. In order to utilize resources provided from the first web service, the second web service may subscribe to a level of service (e.g., the SLA type) from the first web service. In this case, the first web service may be referred to as the publisher web service, and the second web service may be referred to as the subscriber web service. 
     Through the utilization of the technologies and concepts presented herein, the subscriber web service can send a request for information to the publisher web service. The request for information may include an identifier of the subscriber web service. The publisher web service may retrieve the SLA type associated with the identifier of the subscriber web service. The publisher web service may then allocate resources for satisfying the request for information based on the SLA type. In one example, the publisher web service may route the request for information to a server adapted to provide the information. The server can then provide the information directly to the subscriber web service in response to the request for information. In another example, the publisher web service may retrieve a uniform resource locator (URL) based on the SLA type. The URL may correspond to a server configured to provide the information. The subscriber web service can then access the URL in order to retrieve the information. 
     Example technologies may provide for allocating resources between web services in a composite service. The technologies receive a request for information from a subscriber web service. The request for information may include a SLA type between a publisher web service and the subscriber web service and an identifier of the subscriber web service. The composite service may include the publisher web service and the subscriber web service. The technologies retrieve a resource allocation associated with the SLA type. The technologies allocate a set of resources from multiple resources of the publisher web service to the subscriber web service according to the resource allocation and the identifier. The set of resources may be configured to satisfy the request for information. 
     It should be appreciated that the above-described subject matter may also be implemented as a computer-controlled apparatus, a computer process, a computing system, or as an article of manufacture such as a computer-readable storage medium. These and various other features will be apparent from a reading of the following Detailed Description and a review of the associated drawings. 
     This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended that this Summary be used to limit the scope of the claimed subject matter. Furthermore, the claimed subject matter is not limited to implementations that solve any or all disadvantages noted in any part of this disclosure. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a block diagram illustrating a composite service adapted to allocate resources of a publisher web service to a subscriber web service according to the subscriber web service&#39;s SLA type, in accordance with some embodiment; 
         FIG. 2  is a flow diagram illustrating a method for allocating resources of a publisher web service to a subscriber web service according to the subscriber web service&#39;s SLA type, in accordance with some embodiments; and 
         FIG. 3  is a computer architecture diagram showing an illustrative computer hardware architecture for a computing system capable of implementing the embodiments presented herein. 
     
    
    
     DETAILED DESCRIPTION 
     The following detailed description is directed to technologies for allocating resources of a publisher web service to a subscriber web service according to the subscriber web service&#39;s SLA type. In accordance with some embodiments described herein, a composite service may include multiple web services. Each of these web services may be a publisher web service and/or a subscriber web service. A subscriber web service may refer to a web service that utilizes resources provided by a publisher web service. A subscriber web service may be associated with a SLA type corresponding to a particular publisher web service. A publisher web service may allocate resources for each corresponding subscriber web service depending on the subscriber web service&#39;s SLA type. 
     While the subject matter described herein is presented in the general context of program modules that execute in conjunction with the execution of an operating system and application programs on a computer system, those skilled in the art will recognize that other implementations may be performed in combination with other types of program modules. Generally, program modules include routines, programs, components, data structures, and other types of structures that perform particular tasks or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the subject matter described herein may be practiced with other computer system configurations, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like. 
     In the following detailed description, references are made to the accompanying drawings that form a part hereof, and which are shown by way of illustration, specific embodiments, or examples. Referring now to the drawings, in which like numerals represent like elements through the several figures, a computing system and methodology for allocating resources of a publisher web service to a subscriber web service according to the subscriber web service&#39;s SLA type will be described. 
       FIG. 1  illustrates a composite service  100  adapted to allocate resources of a publisher web service to a subscriber web service according to the subscriber web service&#39;s SLA type, in accordance with some embodiments. The composite service  100  may include a first web service  102 , a second web service  104 , and a third web service  106 . The web services  102 - 106  may be coupled via a communications network  108 . An example of the composite service  100  is the monitoring service described in U.S. patent application Ser. No. 12/900,481, filed Oct. 8, 2010, entitled “Providing a Monitoring Service in a Cloud-Based Computing Environment,” Attorney Docket No. 330467.01, which is hereby incorporated by reference in its entirety. Some examples of the web services  102 - 106  include the various web services (e.g., controller application, monitor application, finder application, analyzer application, notifier application, etc.) also described in the above referenced and incorporated patent application entitled “Providing a Monitoring Service in a Cloud-Based Environment.” 
     The first web service  102  may include a SLA module  109  and resource allocation table  110 . The resource allocation table  110  may include a first resource allocation  111 A and a second resource allocation  111 B. The second web service  104  may include a request module  112 A and a SLA type  114 A. The third web service  106  may include a request module  112 B and a SLA type  114 B. In the example illustrated in  FIG. 1 , the first web service  102  may be referred to as a publisher web service, and the second web service  104  and the third web service  106  may be referred to a subscriber web services. That is, the second web service  104  and the third web service  106  may be configured to utilize resources provided by the first web service  102 . The web services  102 - 106  may each be a publisher web service and/or a subscriber web service, according to various embodiments. 
     The second web service  104  and the third web service  106  may be associated with different SLA types  114 A,  114 B and unique identifiers  116 A,  116 B. The SLA types  114 A,  114 B may be associated with one or more publisher web services, including the first web service  102 . The SLA types  114 A,  114 B may also be associated with different fees paid by an operator of the second web service  104  and an operator of the third web service  106  to an operator of the first web service  102 . In some examples, the SLA types  114 A,  114 B may be shared with multiple publisher services. In other examples, the SLA types  114 A,  114 B may be associated with only the first web service  102 , while other SLA types may be associated with other publisher web services. In the example illustrated in  FIG. 1 , the SLA type  114 A may correspond to a “platinum” level SLA type, and the SLA type  114 B may correspond to a “silver” level SLA type. The platinum level may be associated with a higher allocation of resources than the silver level. It should be appreciated that the platinum level and silver level SLA types are merely illustrative, and other SLA types may be similarly utilized. 
     In an illustrative example, the first web service  102  may be a search service. In this example, the request modules  112 A,  112 B may be configured to send a request for information to the SLA module  109 . The request for information may include queries, the corresponding SLA types  114 A,  114 B, and the identifiers  116 A,  116 B of the second web service  104  and the third web service  106 . Upon receiving the request for information, the SLA module  109  may retrieve resource allocations  111 A,  111 B corresponding to the SLA types  114 A,  114 B from the resource allocation table  110 . For example, the SLA type  114 A may correspond to the resource allocation  111 A, and the SLA type  114 B may correspond to the resource allocation  111 B. 
     The SLA module  109  may then allocate resources for performing the search service to the second web service  104  and the third web service  106  according to the retrieved resource allocations  111 A,  111 B and the identifiers  116 A,  116 B. For example, the SLA module  109  may allocate a first set of resources from multiple resources in the first web service  102  to the second web service  104 . The SLA module  109  may also allocate a second set of resources from the multiple resources in the first web service  102  to the third web service  106 . In some embodiments, the resource allocation table  110  may be stored in the memory of a computer operating the first web service  102 . In other embodiments, the resource allocation table  110  may be stored in an external database accessible by a computer operating the first web service  102 . 
     The resources may refer to one or more entities that a publisher web service is capable of allocating to multiple subscriber web services. Such resources may be allocated according to suitable business rules associated with the various SLA types  114 A,  114 B. In a first embodiment, the resources may refer to servers adapted to retrieve search results corresponding to a query. For example, when the request module  112 A sends a query to the SLA module  109 , the SLA module  109  may allocate a dedicated server to the second web service  104  according to the platinum level. When the request module  112 B sends a query to the SLA module  109 , the SLA module  109  may allocate a shared server to the third web service  106  according to the silver level. The shared server may be shared by multiple web services. 
     The SLA module  109  may allocate the dedicated server and the shared server by sending URLs corresponding to the dedicated server and the shared server to the request modules  112 A,  112 B. The second web service  104  and the third web service  106  can then utilize the URLs in order to retrieve the search results. Alternatively, the SLA module  109  may route the query directly to the dedicated server and the shared server. The dedicated server and the shared server can then retrieve and provide the search results to the second web service  104  and the third web service  106  without further action from the second web service  104  and the third web service  106 . 
     In a second embodiment, the resources may refer to a level of access. For example, when the request module  112 A sends a query to the SLA module  109 , the SLA module  109  may assign access to a greater number of search providers to the second web service  104  according to the platinum level. When the request module  112 B sends a query to the SLA module  109 , the SLA module  109  may assign a lesser number of search providers to the third web service  106  according to the silver level. 
     In a third embodiment, the resources may refer to bandwidth or other suitable computer resources. For example, when the request module  112 A sends a query to the SLA module  109 , the SLA module  109  may allocate additional computer resources to the second web service  104  according to the platinum level SLA. When the request module  112 B sends a query to the SLA module  109 , the SLA module  109  may decrease available computer resources available to the third web service  106  according to the silver level. 
     In a fourth embodiment, the resources may refer to service availability or uptime. For example, when the request module  112 A sends a query to the SLA module  109 , the SLA module  109  may allocate a greater time of availability or uptime to the second web service  104  according to the platinum level. When the request module  112 B sends a query to the SLA module  109 , the SLA module  109  may allocate a lesser time of availability or uptime to the third web service  106  according to the silver level. 
     In a fifth embodiment, the resources may refer to a response time. For example, when the request module  112 A sends a query to the SLA module  109 , the SLA module  109  may assign real-time or near real-time access of search results to the second web service  104  according to the platinum level. When the request module  112 B sends a query to the SLA module  109 , the SLA module  109  may assign delayed access to the third web service  106  according to the silver level. 
     As previously described, the SLA module  109  may allocate resources according to suitable business rules associated with the various SLA types  114 A,  114 B. These business rules may account for factors associated with the resources. In one example, where the SLA module  109  routes a query to a particular shared server, the SLA module  109  may account for current server load. In this example, the SLA module  109  may route the query to a shared server having the lowest current load. In another example, where the SLA module  109  routes a query to a particular server, the SLA module  109  may account for current server availability. In this example, the SLA module  109  may route the query to a server having current availability to respond to the query. In yet another example, where the SLA module  109  routes a query to a particular server, the SLA module  109  may account for political requirements. In this example, the SLA module  109  may route the query to a server in China where business rules dictate that Chinese political requirements be met. 
     Referring now to  FIG. 2 , additional details regarding the operations of the request modules  112 A,  112 B and the SLA module  109  will be provided. In particular,  FIG. 2  is a flow diagram illustrating a method for allocating resources of a publisher web service to a subscriber web service according to the subscriber web service&#39;s SLA type, in accordance with some embodiments. It should be appreciated that the logical operations described herein are implemented (1) as a sequence of computer implemented acts or program modules running on a computing system and/or (2) as interconnected machine logic circuits or circuit modules within the computing system. The implementation is a matter of choice dependent on the performance and other requirements of the computing system. Accordingly, the logical operations described herein are referred to variously as states operations, structural devices, acts, or modules. These operations, structural devices, acts, and modules may be implemented in software, in firmware, in special purpose digital logic, and any combination thereof. It should be appreciated that more or fewer operations may be performed than shown in the figures and described herein. These operations may also be performed in a different order than those described herein. 
     In  FIG. 2  a routine  200  begins at operation  202 , where the SLA module  109  receives a request for information from a subscriber web service, such as the second web service  104 . That is, the request module  112 A may send the request for information to the SLA module  109 . The request for information may include the SLA type  114 A and the identifier  116 A. The SLA type  114 A may specify a level of service agreed between the second web service  104  and the first web service  102 . For example, a higher fee paid by an operator of the second web service  104  to an operator of the first web service  102  may correspond to a higher level of service, while a lower fee paid by an operator of the second web service  104  to an operator of the first web service  102  may correspond to a lower level of service. The identifier  116 A may identify and/or specify a location of the second web service  104 . When the SLA module  109  receives the request for information from the second web service  104 , the routine  200  may proceed to operation  204 . 
     At operation  204 , the SLA module  109  may retrieve a resource allocation associated with the SLA type  114 A. In some embodiments, the SLA module  109  may retrieve the resource allocation  111 A corresponding to the SLA type  114 A from the resource allocation table  110 . The resource allocation table  110  may include multiple SLA types, each of which corresponds to a particular resource allocation. That is, different SLA types may correspond to different resource allocations. When the SLA module  109  retrieves the resource allocation associated with the SLA type  114 A, the routine  200  may proceed to operation  206 . 
     At operation  206 , the SLA module  109  allocates a set of resources of the first web service  102  to the second web service  104  according to the retrieved resource allocation  111 A and the identifier  116 A. The first web service  102  may include multiple resources. At least a portion of these resources may form the set of resources allocated to the first web service  102 . The SLA module  109  may determine the set of resources based on the retrieved resource allocation  111 A. The SLA module  109  may then allocate the set of resources to the second web service  104  as identified by the identifier  116 A. When the SLA module  109  allocates the set of resources of the first web service  102  to the second web service  104  according to the retrieved resource allocation  111 A and the identifier  116 A, the routine  200  may repeat (e.g., periodically, continuously, or on demand as needed) or terminate. 
     Turning now to  FIG. 3 , an example computer architecture diagram showing a computer  300  is illustrated. The computer  300  may include a central processing unit  302 , a system memory  304 , and a system bus  306  that couples the memory  304  to the  302 . The computer  300  may further include a mass storage device  312  for storing one or more program modules  314  and the database  316 . Examples of the program modules  314  may include the SLA module  109  and the request module  112 A. The database  316  may store the resource allocation table  110 . The mass storage device  312  may be connected to the processing unit  302  through a mass storage controller (not shown) connected to the bus  306 . The mass storage device  312  and its associated computer-storage media may provide non-volatile storage for the computer  300 . Although the description of computer-storage media contained herein refers to a mass storage device, such as a hard disk or CD-ROM drive, it should be appreciated by those skilled in the art that computer-storage media can be any available computer storage media that can be accessed by the computer  300 . 
     By way of example, and not limitation, computer-storage media may include volatile and non-volatile, removable and non-removable media implemented in any method or technology for the non-transitory storage of information such as computer-storage instructions, data structures, program modules, or other data. For example, computer-storage media includes, but is not limited to, RAM, ROM, EPROM, EEPROM, flash memory or other solid state memory technology, CD-ROM, digital versatile disks (“DVD”), HD-DVD, BLU-RAY, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by the computer  300 . 
     According to various embodiments, the computer  300  may operate in a networked environment using logical connections to remote computers through a network such as the network  108 . The computer  300  may connect to the network  108  through a network interface unit  310  connected to the bus  306 . It should be appreciated that the network interface unit  310  may also be utilized to connect to other types of networks and remote computer systems. The computer  300  may also include an input/output controller  308  for receiving and processing input from a number of input devices (not shown), including a keyboard, a mouse, a microphone, and a game controller. Similarly, the input/output controller  308  may provide output to a display or other type of output device (not shown). 
     The bus  306  may enable the processing unit  302  to read code and/or data to/from the mass storage device  312  or other computer-storage media. The computer-storage media may represent apparatus in the form of storage elements that are implemented using any suitable technology, including but not limited to semiconductors, magnetic materials, optics, or the like. The computer-storage media may represent memory components, whether characterized as RAM, ROM, flash, or other types of technology. The computer-storage media may also represent secondary storage, whether implemented as hard drives or otherwise. Hard drive implementations may be characterized as solid state, or may include rotating media storing magnetically-encoded information. 
     The program modules  314  may include software instructions that, when loaded into the processing unit  302  and executed, cause the computer  300  to allocate resources of a publisher web service to a subscriber web service according to the subscriber web service&#39;s SLA type. The program modules  314  may also provide various tools or techniques by which the computer  300  may participate within the overall systems or operating environments using the components, flows, and data structures discussed throughout this description. For example, the program modules  314  may implement interfaces for allocating resources of a publisher web service to a subscriber web service according to the subscriber web service&#39;s SLA type. 
     In general, the program modules  314  may, when loaded into the processing unit  302  and executed, transform the processing unit  302  and the overall computer  300  from a general-purpose computing system into a special-purpose computing system customized to allocate resources of a publisher web service to a subscriber web service according to the subscriber web service&#39;s SLA type. The processing unit  302  may be constructed from any number of transistors or other discrete circuit elements, which may individually or collectively assume any number of states. More specifically, the processing unit  302  may operate as a finite-state machine, in response to executable instructions contained within the program modules  314 . These computer-executable instructions may transform the processing unit  302  by specifying how the processing unit  302  transitions between states, thereby transforming the transistors or other discrete hardware elements constituting the processing unit  302 . 
     Encoding the program modules  314  may also transform the physical structure of the computer-storage media. The specific transformation of physical structure may depend on various factors, in different implementations of this description. Examples of such factors may include, but are not limited to: the technology used to implement the computer-storage media, whether the computer-storage media are characterized as primary or secondary storage, and the like. For example, if the computer-storage media are implemented as semiconductor-based memory, the program modules  314  may transform the physical state of the semiconductor memory, when the software is encoded therein. For example, the program modules  314  may transform the state of transistors, capacitors, or other discrete circuit elements constituting the semiconductor memory. 
     As another example, the computer-storage media may be implemented using magnetic or optical technology. In such implementations, the program modules  314  may transform the physical state of magnetic or optical media, when the software is encoded therein. These transformations may include altering the magnetic characteristics of particular locations within given magnetic media. These transformations may also include altering the physical features or characteristics of particular locations within given optical media, to change the optical characteristics of those locations. Other transformations of physical media are possible without departing from the scope of the present description, with the foregoing examples provided only to facilitate this discussion. 
     Based on the foregoing, it should be appreciated that technologies for allocating resources of a publisher web service to a subscriber web service according to the subscriber web service&#39;s SLA type are presented herein. Although the subject matter presented herein has been described in language specific to computer structural features, methodological acts, and computer readable media, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features, acts, or media described herein. Rather, the specific features, acts and mediums are disclosed as example forms of implementing the claims. 
     The subject matter described above is provided by way of illustration only and should not be construed as limiting. Various modifications and changes may be made to the subject matter described herein without following the example embodiments and applications illustrated and described, and without departing from the true spirit and scope of the present invention, which is set forth in the following claims.