Abstract:
Embodiments of the present invention provide a method, system and computer program product for the dynamic structural management of an n-Tier distributed caching infrastructure. In an embodiment of the invention, a method of dynamic structural management of an n-Tier distributed caching infrastructure includes establishing a communicative connection to a plurality of cache servers arranged in respective tier nodes in an n-Tier cache, collecting performance metrics for each of the cache servers in the respective tier nodes of the n-Tier cache, identifying a characteristic of a specific cache resource in a corresponding one of the tier nodes of the n-Tier crossing a threshold, and dynamically structuring a set of cache resources including the specific cache resource to account for the identified characteristic.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    This patent application claims the benefit under 35 U.S.C. §120 as a continuation-in-part of presently pending U.S. patent application Ser. No. 12/605,136, entitled DEFINING ENFORCING AND GOVERNING PERFORMANCE GOALS OF A DISTRIBUTED CACHING INFRASTRUCTURE, filed on Oct. 23, 2009, the entire teachings of which are incorporated herein by reference. 
     
    
     BACKGROUND OF THE INVENTION 
       [0002]    1. Field of the Invention 
         [0003]    The present invention relates to the field of cache management and more particularly to management of a distributed caching infrastructure. 
         [0004]    2. Description of the Related Art 
         [0005]    In an efficient admissions control and capacity planning policy, minimal resources can be allocated automatically to satisfy the requirements of a specified service level agreement (SLA), leaving the remaining resources for later use. An SLA is an agreement between a computing service provider and a computing service consumer that specifies a minimum level of service to be provided by the service provider on behalf of the consumer. The typical SLA includes one or more network traffic terms that either limit the amount and type of resources that the subscribing customer can consume for a given rate, or guarantee the amount and quality of service (QoS) of resources that the provider will provide to the subscribing customer for a given rate. 
         [0006]    For example, a subscribing consumer can agree to an SLA in which the consumer agrees to consume only a particular quantity of network bandwidth offered by the provider. Conversely, the SLA can require the provider to guarantee access to the subscribing consumer to at least a minimum amount of bandwidth. Also, the SLA can require the provider to provide a certain QoS over the provided minimum amount of bandwidth. 
         [0007]    When considering the terms of an SLA, content and application hosts provision server resources for their subscribing customers, co-hosted server applications or services, according to the resource demands of the customers at their expected loads. Since outsourced hosting can be viewed as a competitive industry sector, content and application hosts must manage their resources efficiently. Logically, to ensure that the customers receive the promised level of service in the SLA, content and application hosts can be configured to survive a worst-case load. Yet, the worst-case approach can unnecessarily tax the resources of the content host or the application host as the case may be, even when those resources are not required to service a given load. Hence, rather than over-provisioning resources, efficient admission control and capacity planning policies can be designed merely to limit rather than eliminate the risk of meeting the worst-case demand. 
         [0008]    While SLA management and enforcement has become part and parcel of ordinary application hosting relationships between consumer and host, Extreme Transaction Processing (XTP) provides new challenges in the use and enforcement of the SLA. XTP is a technology used by application hosts to handle exceptionally large numbers of concurrent requests. Serving such a large volume of concurrent requests can be made possible in XTP by distributing the load resulting from the concurrent requests on computer clusters or whole grid computing networks. Further, general XTP supporting architectures often rely upon aggressive caching across an n-Tier caching infrastructure (a multi-tiered cache structure), affinity routing (the intelligent routing of a request to business logic executing nearest to the requisite data consumed by the business logic), and decreasing data-access latency via the “MapReduce” framework commonly used to support distributed computing on large data sets on clusters of computers. Thus, effective management of the multi-tiered cache structure can be critical to meeting the obligations set forth under an SLA. 
       BRIEF SUMMARY OF THE INVENTION 
       [0009]    Embodiments of the present invention address deficiencies of the art in respect to performance management in an n-Tier caching architecture and provide a novel and non-obvious method, system and computer program product for the dynamic structural management of an n-Tier distributed caching infrastructure. In an embodiment of the invention, a method of dynamic structural management of an n-Tier distributed caching infrastructure includes establishing a communicative connection to a plurality of cache servers arranged in respective tier nodes in an n-Tier cache, collecting performance metrics for each of the cache servers in the respective tier nodes of the n-Tier cache, identifying a characteristic of a specific cache resource in a corresponding one of the tier nodes of the n-Tier crossing a threshold, and dynamically structuring a set of cache resources including the specific cache resource to account for the identified characteristic. 
         [0010]    In this regard, in one aspect of the embodiment, identifying a characteristic of a specific cache resource in a corresponding one of the tier nodes of the n-Tier crossing a threshold can include identifying a utilization disparity amongst children cache servers supporting different cache clients in a common set of cache clients and a common parent cache server, for example the underutilization of one of the cache servers. As such, caching support for the different cache clients of the common set of cache clients can be consolidated in the cache server demonstrating cache underutilization. In another aspect of the embodiment, identifying a characteristic of a specific cache resource in a corresponding one of the tier nodes of the n-Tier crossing a threshold can include identifying a set of geographically proximate cache devices supporting a cache server. In response, a partitioned cluster of the geographically proximate cache devices can be established, the cache devices individually caching data pertaining to a corresponding unique topic assigned by the cache server. 
         [0011]    Additional aspects of the invention will be set forth in part in the description which follows, and in part will be obvious from the description, or may be learned by practice of the invention. The aspects of the invention will be realized and attained by means of the elements and combinations particularly pointed out in the appended claims. It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention, as claimed. 
     
    
     
       BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS 
         [0012]    The accompanying drawings, which are incorporated in and constitute part of this specification, illustrate embodiments of the invention and together with the description, serve to explain the principles of the invention. The embodiments illustrated herein are presently preferred, it being understood, however, that the invention is not limited to the precise arrangements and instrumentalities shown, wherein: 
           [0013]      FIG. 1  is a pictorial illustration of a process for enforcing performance goals in an n-Tier distributed caching infrastructure; 
           [0014]      FIG. 2  is a schematic illustration of a computer data processing system arranged with an n-Tier distributed caching infrastructure; and, 
           [0015]      FIG. 3  is a block diagram illustrating a process for dynamic structural management of an n-Tier distributed caching infrastructure based upon cache server utilization. 
           [0016]      FIG. 4  is a flow chart illustrating a process for dynamic structural management of an n-Tier distributed caching infrastructure based upon cache server utilization. 
           [0017]      FIGS. 5A and 5B , taken together, are a block diagram illustrating a process for clustering of cache devices of an n-Tier distributed caching infrastructure based upon cache device geographic proximity. 
           [0018]      FIG. 6  is a flow chart illustrating a process for clustering of cache devices of an n-Tier distributed caching infrastructure based upon cache device geographic proximity. 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       [0019]    Embodiments of the present invention provide a method, system and computer program product for dynamic structural management of an n-Tier distributed caching infrastructure. In accordance with an embodiment of the present invention, characteristics of caching resources in an n-Tier distributed caching infrastructure can be analyzed. In response to detecting a threshold characteristic such as a particular degree of utilization or a particular proximity to other caching resources, the structure of the caching resources can be adapted according to the threshold characteristic. 
         [0020]    For example, in response to detecting amongst a set of cache servers servicing common cache clients, underutilization of one of the cache servers in the set, another of the cache servers in the set can be consolidated with the underutilized one of the cache servers. As another example, in response to detecting a threshold geographic proximity between caching devices servicing a cache server in the n-Tier distributed caching infrastructure, a cluster can be established for the geographically proximate caching devices such that each of the caching devices performs caching for data for a corresponding topic and one of the caching devices acting as a master caching device can route caching requests to different slave ones of the caching devices in the cluster according to a topic for each of the requests. 
         [0021]    In further illustration,  FIG. 1  pictorially depicts a process for enforcing performance goals in an n-Tier distributed caching infrastructure. As shown in  FIG. 1 , an n-Tier cache  110  can be configured to include multiple different tiers of server caches  110 A . . .  110 N- 1  for data stored in a database  120 . Performance goals for the n-Tier cache  110  can be established within terms of one or more SLAs  130 . A cache performance monitor  140  can monitor the performance of the n-Tier cache  110  in the context, by way of example, of retrieval times for retrieval requests from the different server caches  110 A . . .  110 N- 1  in the n-Tier cache  110 . When the measured performance is determined to likely cause a breach in one or more terms of an SLA  130 , cache policy enforcer  150  can apply corrective action to one or more of the server caches  110 A . . .  110 N- 1 , for instance by establishing server affinity for specified data or a specified query in respect to an offending one of the server caches  110 A . . .  110 N- 1 , by increasing the cache size of an offending one of the server caches  110 A . . .  110 N- 1 , by allocating additional CPU cycles to an offending one of the server caches  110 A . . .  110 N- 1 , or by directing a re-structuring of cache resources in the n-Tier cache  110 , to name only a few remedial measures. 
         [0022]    In further illustration,  FIG. 2  is a schematic illustration of a computer data processing system arranged with an n-Tier distributed caching infrastructure. The system can include an application server  230  with processor and memory hosting the execution of application logic  235  for use by coupled clients  210  over computer communications network  220 . A presentation server  240 , also with processor and memory, further can be provided, such as a Web server, to provide a user interface  245  for the application logic  235  to the coupled clients  210  so as to provide a mode of access by the coupled clients  210  to the application logic  235  executing in application server  230 . Finally, a database server  285  can be communicatively linked to the application server  230  such that data in a companion database  290  can be used and managed by the application logic  235  and accessed through the application logic  235  by the coupled clients  210 . 
         [0023]    Notably, a cache server  250  can be disposed within the communicative path between the database server  285  and the application server  230 . The cache server  250  can provide caching services for data stored in the database  290  as requested by the application logic  235  executing in the application server  230 . Further, an n-Tier cache  255  can be managed by the cache server  250  so as to implement an n-Tier caching architecture for data within the database  290  utilized by the application logic  235  in servicing requests from the coupled clients  210  through the user interface  245  provided by the presentation server  240 . 
         [0024]    In accordance with an embodiment of the present invention, a cache policy enforcement module  260  can be coupled to the cache server  250 . The cache policy enforcement module  260  can include computer usable program code loaded from a computer readable medium into the memory of the cache server  250  (or other coupled server) and executed by a processor of the cache server  250  (or other coupled server). The cache policy enforcement module  260  can include each of a cache monitor portion  265 , a policy enforcer portion  270  and a policy manager portion  275 . Further, the cache policy enforcement module  260  can be configured to access one or more SLAs  280  defining performance objectives for the n-Tier cache  255 . 
         [0025]    The policy manager portion  275  can include a set of code instructions for execution by a processor for adding, modifying and deleting the performance objectives of the n-Tier cache  255  in order to meet the terms of one or more of the SLAs  280 . In this regard, the code instructions of the policy manager portion  275  can provide access by an administrator to establish specific performance objectives of the cache servers of the n-Tier cache  255  such as response time expected of a given cache server in the n-Tier cache  255 . 
         [0026]    The cache monitor portion  265 , in turn, can include a set of code instructions for execution by a processor for monitoring the performance of each of the cache servers in the n-Tier cache  255  such as response time for each of the cache servers or a utilization of different cache servers in serving different cache clients. Finally, the policy enforcer portion  270  can include a set of code instructions for execution by a processor for applying remedial measures to an offending one of the cache servers in the n-Tier cache  255  when the offending one of the cache servers in the n-Tier cache  255  is determined to have demonstrated observed performance falling short of the performance objectives specified by the policy manager portion  275  and likely to result in a breach of one or more of the terms of the SLAs  280 . 
         [0027]    Of note, part and parcel of the effective management of the n-Tier cache  255  can include the dynamic restructuring of cache resources in response to detecting threshold characteristics of different cache resources of the n-Tier cache  255  as reported by the cache monitor portion  265 . In yet further illustration,  FIG. 3  is a block diagram illustrating a process for dynamic structural management of an n-Tier distributed caching infrastructure based upon cache server utilization. As shown in  FIG. 3 , different application consuming clients  310  can receive caching services from multiple different caching clients  320 —namely different computing applications utilizing the caching services of the cache servers  330 B,  330 C in distributing data to the application consuming clients  310 . The cache servers  330 B,  330 C can be the hierarchical children of cache server  33 A operating in application server  340  in an n-Tier cache. 
         [0028]    Dynamic distributed cache hierarchy management logic  400  can interact with the cache server  330 A to detect utilization rates of both cache servers  330 B,  330 C servicing the same set of cache clients  320 —namely the cache server  330 B servicing cache clients  320 A,  320 B and cache server  330 C servicing cache clients  320 C,  320 D. When the utilization of one of the cache servers  330 C is determined to be underutilized beyond a threshold utilization, the logic  400  can direct the consolidation of the cache servers  330 B,  330 C so that the cache server  330 C services the cache clients  320 A,  320 B,  320 C,  320 D. Conversely, when the utilization of one of the cache servers  330 C is determined to be overutilized beyond a threshold utilization, the logic  400  can direct the separation of caching responsibilities from the cache server  330 C so that the cache server  330 C services the cache clients  320 C,  320 D and the cache server  330 B services cache clients  320 A,  320 B. 
         [0029]    In illustration of the operation of the logic  400 ,  FIG. 4  is a flow chart illustrating a process for dynamic structural management of an n-Tier distributed caching infrastructure based upon cache server utilization. Beginning in block  410 , the cache server children of a cache server can be monitored for utilization. Additionally, in block  420 , common cache clients of the cache server children can be identified. In block  430 , a utilization disparity—for instance an underutilization condition—can be identified in one of the cache server children sharing common caching clients with another of the cache server children. In response, in block  440 , the caching responsibility for the caching clients can be consolidated into a single one of the cache server children sharing the common caching clients. 
         [0030]    In addition to responding to threshold utilization of cache server children sharing common caching clients, the dynamic distributed cache hierarchy management can respond to cache devices managed by cache servers that are detected to have been positioned with geographic proximity. In even yet further illustration,  FIGS. 5A and 5B , taken together, are a block diagram illustrating a process for clustering of cache devices of an n-Tier distributed caching infrastructure based upon cache device geographic proximity. As shown in  FIG. 5A , different cache clients  510  can access cached data within cache devices  520 A,  520 B,  520 C managed by cache server  530  operating in application server  540 . 
         [0031]    The dynamic distributed cache hierarchy management logic  300  can detect that the cache devices  520 A,  520 B,  520 C have been positioned within geographic proximity to one another—for example within a common data center. In response, as shown in  FIG. 5B , the cache devices  520 A,  520 B,  520 C can be defined as a cluster  530  of partitioned caches. One of the cache devices  520 B can be assigned the status as a master cache device  550  and the remaining cache devices  520 A,  520 C can be assigned the status as slave devices  560 . 
         [0032]    The dynamic distributed cache hierarchy management logic  700  can establish different topics for data serviced by the cache server  530  and the master device  550  can assign one or more of the topics to each different slave device  560 . For example, the master device  550  can maintain a routing table of topics and associated slave devices  560  and the master device  550  can distribute the routing table to the slave devices  560 . Once assigned a topic, the slave device  560  can listen for cache requests pertaining to the topic and can respond to corresponding cache requests accordingly. 
         [0033]    Optionally, each of the cache devices  520 A,  520 B,  520 C can be designated a server or a client. As a client, a cache device  520 A,  520 B,  520 C merely listens for cache updates for an associated topic or topics as assigned by the master  550 . As a server, however, a cache device  520 A,  520 B,  520 C can both listen for cache updates for an associated topic and also can serve to other peer ones of the cache devices  520 A,  520 B,  520 C cache updates for other topics. In this way, when the cache server  530  becomes overutilized, the cache server  530  can designate a server one of the cache devices  520 A,  520 B,  520 C as a cache server  530  to manage cache updates for a selection of topics. 
         [0034]    Referring now to  FIG. 6 , a flow chart has been illustrated to show a process for clustering of cache devices of an n-Tier distributed caching infrastructure based upon cache device geographic proximity. Beginning in block  610 , different cache devices supporting a cache server in an n-Tier cache can be scanned and in block  620 , the geographic location of each scanned cache device can be determined. In decision block  630 , it can be determined if the scanned cache devices are geographically proximate to one another within a threshold distance. If so, in block  640  a partitioned set of caches can be arranged with the scanned cache devices. 
         [0035]    In block  650 , one of the scanned cache devices in the partitioned set can be designated a master device and the remaining cache devices can be designated slave devices. In block  660 , a routing table can be established in the master cache device and the cache server can be directed to establish different topics for cache updates for inclusion in the routing table. In block  680 , the routing table can be provided to the different slave devices to indicate which topic or topics are to be associated with each slave device. Finally, in block  690  the process can end. In this way, the geographically proximate cache devices can be dynamically structured into an arrangement of cache devices efficiently servicing only a subset of cache updates pertaining to specifically assigned topics in order to improve the performance of the n-Tier cache. 
         [0036]    Embodiments of the invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In a preferred embodiment, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, and the like. Furthermore, the invention can take the form of a computer program product 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. 
         [0037]    For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device). Examples of a computer-readable medium 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 optical disks include compact disk—read only memory (CD-ROM), compact disk—read/write (CD-R/W) and DVD. 
         [0038]    A data processing system suitable for storing and/or executing program code will include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution. Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the system either directly or through intervening I/O controllers. Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters.