Distributed systems have created great opportunities for implementing more efficient and available system architectures. Systems may no longer be limited by the capabilities of an individual computing system, but may instead share the workload for performing complex computing tasks, maintaining and storing data, or implementing various applications or services among multiple different computer systems. For example, in some distributed systems different tiers may perform or provide different functionality for the distributed system. Each tier may be implemented by computing systems optimized to perform the respective functions of the tier, whether optimized by hardware, software, or other specialized configuration. In this way, specific tasks may be performed more efficiently in an optimized environment, and the workload for performing these respective functions may be distributed among different systems configured to share the burden for the respective functions.
Distributed systems may also take advantage of the increased reliability of using diverse physical infrastructure for different computing systems in order to survive failures of different individual systems. Diverse physical infrastructure may provide flexibility for a distributed system to respond to changing conditions or demands inherent in the dynamic environments in which many distributed systems operate. Web-based services, for example, are subject to power or network failures that may affect large numbers of computing systems implementing a distributed system. If the affected computing systems provide a functionality of the web-based service, other computing systems implemented in different physical infrastructures may be used to supply the missing functionality in order to allow the web-based service to continue to operate.
While embodiments are described herein by way of example for several embodiments and illustrative drawings, those skilled in the art will recognize that the embodiments are not limited to the embodiments or drawings described. It should be understood, that the drawings and detailed description thereto are not intended to limit embodiments to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope as defined by the appended claims. The headings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description or the claims. As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). Similarly, the words “include”, “including”, and “includes” mean including, but not limited to.
The systems and methods described herein may implement logical control groups for distributed system resources. Distributed systems may be used to implement many different functionalities, applications, and/or services without regard to the limitations of an individual computing system. Many computing systems may be used to together in order to efficiently implement these functionalities, applications, and/or services. Specialized components, dedicated systems, or many other optimizations may be used to increase the efficiency of the distributed system. In order to increase the availability of a distributed system, diverse physical infrastructures may be used to implement the computing devices of a distributed system so that failures may be isolated to computing systems which are implemented in affected physical infrastructures. Logical control groups may be implemented to take advantage of the diversity of physical infrastructures and provide diversity for distributed systems dynamically so that system resources may maintain high availability.
Generally, diversity for physical infrastructures is provided according to a static or predetermined scheme for distributed systems. For example, a distributed system may always include control resources in the same availability zone as a resource that is controlled. A static index, or routing technology such as domain name servers (DNS), may be used to route requests to appropriate control resources for servicing. Logical control groups, however, may be implemented in such a way as to adapt or change the location of control resources. For example, new control resources may be added to other availability zones to service requests for a distributed system resource in a different availability zone. These new control resources may be added in response to failures or unreliability of other control resources or to add capacity to handle greater numbers of requests for the system resource.
As the membership of logical control groups for distributed system resources may change, dynamic discovery techniques for identifying control resources may be implemented. For example, a broadcast-and-cache technique for fine-grained resource control discovery, and a distributed gossip protocol for coarse-grained resource control discovery may be implemented, in some embodiments. This may remove the need for statically defined or determined routing techniques for requests to control resources and the need for persistent storage to enable discovery.
In various embodiments, a logical control group may be implemented for a particular distributed system resource. In
As noted above, logical control groups may help to isolate and alleviate failures of particular availability zones, even when a request is directed toward a system resource located in the unavailable availability zone. For instance, scene 104 illustrates that availability zone 110 is unavailable 190. Therefore requests for resource A 152 may no longer be serviced, as there is not resource controller available for resource A 152. A similar fate would befall resource C, if instead availability zone 120 were unavailable. Logical control group 174, however, may provide a resource controller, resource controller B 146, which is still available to service requests for resource B 170. In some embodiments, requests may be serviced when received at resource B controller 146 and acknowledged, or recorded and acknowledged. Recorded requests may be completed at a later time when resource B 154 is available.
In various embodiments, the members of a logical control group for a resource may be discovered at the request routing tier. Instead of statically determining or defining the locations of resource control nodes for system resources (e.g., only co-locating resource control nodes in the same availability zone as the resource controlled), discovery techniques may dynamically locate members of the logical control group for a particular system resource, even though membership may change or be varied differently from resource to resource among availability zones. For example, in some embodiments, a resource control cache may be maintained that describes resource control nodes that are configured to service requests for different system resources. Entries for a resource may be accessed, and if not empty (or invalid) may be used to select a resource control node in a logical control group to send a request to for a particular system resource. The resource control cache may be updated, according to a broadcast query technique based on information maintained at resource control nodes that may perform a gossip-based synchronization protocol. Moreover, as the request routing tier may provide routing as part of the application layer, discovery of resource control nodes in the logical control groups may rely upon greater information and insight to the workings of the distributed system (as would be available in the application layer).
Please note that previous descriptions are not intended to be limiting, but are merely provided as an example of logical control groups for distributed system resources. Differences, for example, such as the number of nodes, resources, availability zones, or members of a resource control group may also be different than illustrated in
This specification begins with a general description of a provider network, which may implement logical control groups for distributed system resources. Then various examples of logical control groups in a network-based service are discussed, including different components/modules, or arrangements of components/modules that may be employed as part of a network-based service. A number of different methods and techniques to implement logical control groups are then discussed, some of which are illustrated in accompanying flowcharts. Finally, a description of an example computing system upon which the various components, modules, systems, devices, and/or nodes may be implemented is provided. Various examples are provided throughout the specification.
In some embodiments, provider network 200 may organize resources and/or tiers implementing the provider network into or across different availability zones, each of which may include its own physically distinct, independent infrastructure on which a collection of computing systems or nodes (e.g., computing nodes on which resource control nodes that implement the resource control tier are implemented, computing nodes on which the request routing tier are implemented and/or computing nodes on which service resources are implemented). In some embodiments, each availability zone may reside in a different location or region, while in other embodiments multiple availability zones may reside in the same location or region. Availability zones may be isolated from failures in other availability zones. Thus, a failure in one availability zone may not affect the operation of computing systems in another availability zone. Availability zones may be considered a fault tolerant zone. The respective failure scope of availability zones may be such that respective portions of the request routing tier, the resource control tier, and the resource tier included in an availability zone may operate irrespective of failures in another availability zone, in some embodiments.
Different availability zones may implement respective portions of the different tiers of the provider network. For example, as illustrated in
In various embodiments, the request routing tier may include various different systems or devices to receive, parse, respond to, or direct requests that are received from clients 210 (or systems or components internal to provider network 200 such as another network-based service). In some embodiments, load balancers and/or other network routing controls may receive the client requests and direct them on to the request routing tier. In some embodiments, the request routing tier may be configured to implement or perform various discovery mechanisms to select a service resource control configured to handle the request, as discussed below with regard to
In some embodiments, the service resource control tier may include multiple resource control nodes to implement the service resource control tier. These resource control nodes may be included in respective pools of resource control nodes in each availability zone, such as service resource control(s) 242b in availability zone 222a. Resource control nodes may, in some embodiments, provide management functionality or coordination for service resources in the resource tier. For example, resource control nodes may initialize, set-up, configure, start, stop, modify, delete or otherwise control a service resource that is implemented as part of a network-based service. In some embodiments, resource control nodes may be configured to perform requests which the system resources themselves cannot perform. Resource control nodes in the resource control tier may interact with multiple different systems, components, or devices as part of servicing requests, in some embodiments.
Provider network 200 may implement one or more different network-based services. In some embodiments, provider network 200 may provide computing resources, such as virtual compute services, storage services, such as block-based storage services and other storage services (which may include various storage types such as object/key-value based data stores or various types of database systems), and/or any other types of network-based services. Clients 210 may access these various services offered by provider network 200 via network 260. Likewise network-based services may themselves communicate and/or make use of one another to provide different services. For example, computing resources offered to clients 210 in units called “instances,” such as virtual or physical compute instances or storage instances, may make use of particular data volumes, providing virtual block storage for the compute instances. Service resources in the service resource tier may be the client accessible or operable portions of the network-based service associated with a particular client 210 (or customer account linked to a client 210).
As noted above, a virtual compute service may offer various compute instances to clients 210. A virtual compute instance may, for example, comprise one or more servers with a specified computational capacity (which may be specified by indicating the type and number of CPUs, the main memory size, and so on) and a specified software stack (e.g., a particular version of an operating system, which may in turn run on top of a hypervisor). A number of different types of computing devices may be used singly or in combination to implement the compute instances of a virtual compute service in different embodiments, including general purpose or special purpose computer servers, storage devices, network devices and the like. In some embodiments instance clients 210 or other any other user may be configured (and/or authorized) to direct network traffic to a compute instance. In various embodiments, compute instances may attach or map to one or more data volumes provided by a block storage service in order to obtain persistent block-based storage for performing various operations. Compute instances and/or data volumes may be various service resources in the resource tier, in some embodiments.
Compute instances may operate or implement a variety of different platforms, such as application server instances, Java™ virtual machines (JVMs), general purpose or special-purpose operating systems, platforms that support various interpreted or compiled programming languages such as Ruby, Perl, Python, C, C++ and the like, or high-performance computing platforms) suitable for performing client applications, without for example requiring the client 210 to access an instance. In some embodiments, compute instances have different types or configurations based on expected uptime ratios. The uptime ratio of a particular compute instance may be defined as the ratio of the amount of time the instance is activated, to the total amount of time for which the instance is reserved. Uptime ratios may also be referred to as utilizations in some implementations. If a client expects to use a compute instance for a relatively small fraction of the time for which the instance is reserved (e.g., 30%-35% of a year-long reservation), the client may decide to reserve the instance as a Low Uptime Ratio instance, and pay a discounted hourly usage fee in accordance with the associated pricing policy. If the client expects to have a steady-state workload that requires an instance to be up most of the time, the client may reserve a High Uptime Ratio instance and potentially pay an even lower hourly usage fee, although in some embodiments the hourly fee may be charged for the entire duration of the reservation, regardless of the actual number of hours of use, in accordance with pricing policy. An option for Medium Uptime Ratio instances, with a corresponding pricing policy, may be supported in some embodiments as well, where the upfront costs and the per-hour costs fall between the corresponding High Uptime Ratio and Low Uptime Ratio costs.
Compute instance configurations may also include compute instances with a general or specific purpose, such as computational workloads for compute intensive applications (e.g., high-traffic web applications, ad serving, batch processing, video encoding, distributed analytics, high-energy physics, genome analysis, and computational fluid dynamics), graphics intensive workloads (e.g., game streaming, 3D application streaming, server-side graphics workloads, rendering, financial modeling, and engineering design), memory intensive workloads (e.g., high performance databases, distributed memory caches, in-memory analytics, genome assembly and analysis), and storage optimized workloads (e.g., data warehousing and cluster file systems). Size of compute instances, such as a particular number of virtual CPU cores, memory, cache, storage, as well as any other performance characteristic may be configured. Configurations of compute instances may also include their location, in a particular data center, availability zone, geographic, location, etc. . . . and (in the case of reserved compute instances) reservation term length.
A block-based storage service may be implemented as network-based service for performing storage operations. The block-based storage service may be a storage system, composed of a pool of multiple independent storage nodes (e.g., server block data storage systems), which provide block level storage for storing one or more sets of data volumes. Data volumes may be mapped to particular clients, providing virtual block-based storage (e.g., hard disk storage or other persistent storage) as a contiguous set of logical blocks.
Resource control nodes in the resource control tier may, in some embodiments, assist in the operation of the block-based storage service. In various embodiments, for example, the resource control tier may manage the availability of block data storage to clients, such as programs executing on compute instances provided by a virtual compute service and/or other network-based services located within provider network 200 and/or optionally computing systems (not shown) located within one or more other data centers, or other computing systems external to provider network 200 available over a network 260. Access to data volumes may be provided over an internal network within provider network 200 or externally via network 260, in response to block data transaction instructions.
The resource control tier may provide a variety of services related to providing block level storage functionality, including the management of user accounts (e.g., creation, deletion, billing, collection of payment, etc.). The resource control tier may further provide services related to the creation, usage and deletion of data volumes in response to configuration requests.
Clients 210 may encompass any type of client configurable to submit requests to provider network 200. For example, a given client 210 may include a suitable version of a web browser, or may include a plug-in module or other type of code module configured to execute as an extension to or within an execution environment provided by a web browser. Alternatively, a client 210 may encompass an application such as a database application (or user interface thereof), a media application, an office application or any other application that may make use of compute instances, a data volume, or other network-based service in provider network 200 to perform various operations. In some embodiments, such an application may include sufficient protocol support (e.g., for a suitable version of Hypertext Transfer Protocol (HTTP)) for generating and processing network-based service requests without necessarily implementing full browser support for all types of network-based data. In some embodiments, clients 210 may be configured to generate network-based service requests according to a Representational State Transfer (REST)-style network-based service architecture, a document- or message-based network-based service architecture, or another suitable network-based service architecture. In some embodiments, a client 210 (e.g., a computational client) may be configured to provide access to a compute instance or data volume in a manner that is transparent to applications implemented on the client 210 utilizing computational resources provided by the compute instance or block storage provided by the data volume.
Clients 210 may convey network-based service requests to provider network 200 via external network 260. In various embodiments, external network 260 may encompass any suitable combination of networking hardware and protocols necessary to establish network-based communications between clients 210 and provider network 200. For example, a network 260 may generally encompass the various telecommunications, networks and service providers that collectively implement the Internet. A network 260 may also include private networks such as local area networks (LANs) or wide area networks (WANs) as well as public or private wireless networks. For example, both a given client 210 and provider network 200 may be respectively provisioned within enterprises having their own internal networks. In such an embodiment, a network 260 may include the hardware (e.g., modems, routers, switches, load balancers, proxy servers, etc.) and software (e.g., protocol stacks, accounting software, firewall/security software, etc.) necessary to establish a networking link between given client 210 and the Internet as well as between the Internet and provider network 200. It is noted that in some embodiments, clients 210 may communicate with provider network 200 using a private network rather than the public Internet.
The provider network discussed above with regard to
A network-based service may implement different tiers to provide different functionalities of the network-based service. In
Request routing tier 310 may include, in various embodiments, request routing components 312, 314, 316, and 318, which may be one or more computing systems or devices in each of the respective availability zones 302, 304, 306, and 308. Request routing tier 310 may also maintain a resource control cache which may indicate or describe locations of resource control nodes configured to service requests for different system resources, in some embodiments. Different respective entries in the resource control cache may be maintained for individual system resources in the resource tier. An entry may include identification and or location information (e.g., ID or network address) for one or more resource control nodes in the logical control group for the individual system resource. Other information may also be maintained in the entry, in some embodiments, that provides further description of the identified resource control nodes (e.g., performance characteristics, such as average response time, workload of the resource control node, such as a number of requests currently being processed, or how many other system resources the resource control node is configured to handle requests for). The resource control cache may be distributed (as illustrated in
Resource control tier 320 may implement multiple different resource control nodes, such as resource control nodes 322a, 322b, 322c, 324a, 324b, 326a, 326b, 326c, and 328a. These resource control nodes may be configured to service requests for particular service resources in resource tier 330. Resource tier 330 may include different service resources in different availability zones, such as service resources 332, 334, 336, and 338, which may be various resources, as discussed above with regard to
When a request for a particular service resource is received at the request routing tier 310, the resource location cache may be accessed, in some embodiments, as part of discovering a resource control node in the logical control group for the service resource. An entry for the particular service resource may be evaluated. If the cache entry indicates one or more resource control nodes, then at least one of the resource control nodes may be selected and sent the request. For instance,
In another example, a request may be received at request routing tier 310, and the resource control cache 344 for the request routing component 314 directing the request may be empty, or otherwise invalid or incorrect (resulting in a cache “miss”). A broadcast query 364 for information describing resource control nodes configured to service requests for the particular service resource may be sent to multiple different resource control nodes, in some embodiments. For instance, resource control nodes in different availability zones may be selected and sent the query 364, as illustrated in
Each resource control node may, in some embodiments, maintain descriptive information (e.g., metadata) about other resource control nodes. This descriptive information may include the identity and/or location of resource control nodes configured to service requests for different respective system resources (e.g., an ID or network address). Other information may also be included, in at least some embodiments, that further describes the resource control nodes (e.g., performance characteristics, such as average response time, workload of the resource control node, such as a number of requests currently being processed, or how many other system resources the resource control node is configured to handle requests for). In some embodiments, the information may indicate whether resource control nodes are co-located in the same availability zone as system resources which they are configured to service requests for. In various embodiments, resource control nodes implemented in resource control tier 320 may implement a gossip-based synchronization protocol to communicate this descriptive information about other respective resource control nodes (as well the respective node itself) to other resource control nodes.
Consider one example illustrated in
In another example illustrated in
Gossip-based synchronization protocols may communicate other changes to resource control nodes, in addition to new resource control nodes. Resource control node 326d, for instance may become unavailable (e.g., due to a system failure). Resource control node 326b may detect that 326d is no longer available, and gossip resource control node information about the failure 376 to other resource control nodes 326a and 326b. In some embodiments, other information or changes to resource control nodes may be included in or instigate the performance of the gossip-based synchronization protocol (e.g., changes in performance characteristics of the resource control nodes or workload of the resource control nodes).
Although the illustrations and accompanying descriptions with regard to
The examples of implementing logical control groups for distributed system resources discussed above with regard to
Multiple computing systems may together implement a distributed system. These computing systems may be distributed among different respective availability zones that include these computing systems. An availability zone, as noted above, may include its own physically distinct, independent infrastructure on which a collection of computing systems (or nodes) may be implemented, in some embodiments. Thus, the distribution of computing systems implementing the distributed system among different respective availability zones may isolate the computing systems in one availability zone from a failure (e.g., power or network) affecting computing systems in another availability zone. System resources may be mapped to or located in particular availability zones, without being replicated in another availability zone, in some embodiments.
In various embodiments, a distributed system may implement different tiers to provide different functionality for the distributed system. As discussed above with regard to
As indicated at 510, a request may be received at a routing tier for a system resource in a resource tier of a distributed system that is implemented among multiple availability zones, in various embodiments. The request may be formatted according to an application programming interface (API) or other communication protocol for the distributed system, and may include an identifier for the system resource toward which the request is directed. The request may be received, in some embodiments, from a load balancer or another network traffic controller that is not located in the application layer of the distributed system.
As indicated at 520, in various embodiments, resource control nodes in a logical control group for the system resource may be discovered. Discovery techniques may account for the dynamic changes to membership in the resource control group. For instance, different availability zones including members of the resource control group may become unavailable, rendering their included resource control nodes unavailable for servicing requests. The techniques for discovery resource control nodes in a logical control group that are currently available to service a request for the system resource may account for these unavailable resource control nodes by discovering other resource control nodes that may service the request. Discovery techniques may be implemented as part of the business logic of a distributed system.
As indicated at 530, the request may then be sent to one of the discovered control nodes in order to service the request, in some embodiments. As discussed below with regard to
Particular resource control nodes in the resource control tier that may service requests for a system resource may change over time. Failures, additions, reconfigurations, or any other event that changes membership of resource control nodes in a logical control group for the system resource may render previously maintained information about a logical control group obsolete. Instead of relying upon statically defined schemes for a resource control (e.g., by only including a resource control node in a same availability zone as the resource it is configured to service requests for), dynamic techniques to discover resource control nodes currently in a logical control group for a system resource may be implemented.
As indicated at 610, in various embodiments, a resource control cache may be maintained that indicates resource control nodes configured to service requests for system resources in the resource tier. Different respective entries in the cache may be maintained for individual system resources in the resource tier. An entry may include identification and or location information (e.g., ID or network address) for one or more resource control nodes in the logical control group for the individual system resource. Other information may also be maintained in the entry, in some embodiments, that provides further description of the identified resource control nodes (e.g., performance characteristics, such as average response time, workload of the resource control node, such as a number of requests currently being processed, or how many other system resources the resource control node is configured to handle requests for).
As indicated at 620, a request may be received for a particular system resource. The entry corresponding to the particular system resource may be accessed, as indicated at 630. If the accessed entry is empty (or otherwise indicated to be invalid or incorrect), as indicated by the positive exit from 640, then the entry in the resource control cache may be updated, as indicated at 680. The cache entry may be updated according to various different techniques. For instance,
If, as indicated by the negative exit from 640, the entry is not empty, then a resource control node indicated in the entry may be selected to send the request to, in various embodiments. In some instances, the entry may include only a single resource control node, while in other instances multiple resource control nodes may be indicated. In various embodiments a selection of one (or more than one) resource control nodes may be made from among the indicated resource control nodes. This selection may be based, at least in part, on other descriptive information maintained about the resource control nodes in the entry for the system resource. For example, in some embodiments, an intelligent selection scheme may be implemented to select the resource control node with the greatest capacity or capability to handle the request (e.g., based on workload information and/or performance characteristics about the different resource control nodes). In another example, the selection scheme may be configured to prioritize resource control nodes that are co-located in the same availability zone that includes the particular system resource.
Once selected, the request may be sent to the selected resource control node to be serviced, as indicated at 660. In some embodiments, it may be determined whether the selected resource control node received and/or serviced the request. The selected resource control node may be determined to be unavailable, as indicated at 670. For example, control functionality for the particular system resource may have been moved to a different resource control node in the same or different availability zone. For unavailable resource control nodes that are unable to service the request, as indicated by the negative exit from 670, the entry for the resource control cache may be updated, as indicated at 680, and elements 630 through 670 may be repeated until the selected node is available, as indicated by the positive exit from 670, and the request serviced. In some embodiments, such as those instances where multiple resource control nodes may be indicated in a cache entry, another intelligent selection may be made from the remaining untried resource control nodes in the cache entry so that the other possible resource control nodes may be tried for servicing the request without performing a complete update of the cache entry.
A resource control cache or other information describing resource control nodes configured to service requests for particular system resources may be implemented in volatile or non-persistent storage, in various embodiments. Additionally, storage for the resource control cache may be limited, in some embodiments. System memory devices (e.g., RAM or similar memory technologies), for example, may be used to implement a resource control cache for quick access, but may be cost prohibitive to store information for a large number of resource control nodes at the same time. Therefore, different techniques of updating the resource control cache may be implemented so that the resource control cache may be updated dynamically, without necessitating that the resource control cache persistently maintain information for every resource control node in a resource control tier for the distributed system.
As indicated at 710, a determination may be made that an entry in a resource control cache for a particular system resource needs to updated, in some embodiments. For instance, as illustrated in
In response to determining that an entry in the resource control cache is to be updated, different resource control nodes in different availability zones may be selected to query for information describing resource control nodes configured to service requests for the particular system resource, as indicated at 720, and queries sent to the selected resource control nodes for the information. These queries may be formatted according to various application programming interface (API) specifications or other protocols. In some embodiments, different resource control nodes may be selected from different availability zones. For instance, if there are 4 availability zones, a different resource control node may be selected in each of the 4 availability zones. Although, in some embodiments, less than all of the availability zones may have a resource control node selected (e.g., 3 out of 4 availability zones if a particular availability zone out of the 4 is unavailable), or multiple ones from the different availability zones may also be selected (which may increase the likelihood of receiving the desired information).
A gossip-based synchronization protocol may be performed, in some embodiments, among the various resource control nodes implementing the resource control tier in the distributed system. When, therefore, one of the resource control nodes is queried for information regarding resource control nodes configured to service requests for a particular control plane instance, the queried resource control node may evaluate descriptive information maintained at the resource control node about other resource control nodes to determine whether one or more resource control nodes that can service requests for the system resource can be identified. For instance, as discussed above with regard to
The gossip-based synchronization protocol may be repeated among the resource control nodes in the resource control tier in such a way that information describing resource control nodes may be maintained at many different resource control nodes. In some embodiments, the gossip-based synchronization protocol may be performed such that information is only communicated or “gossiped” to other resource control nodes in the same availability zone. Consequently, a selection of different nodes queried from some or all of the availability zones including computing systems implementing the distributed system may be expected to maintain descriptive information concerning many different resource control nodes in the respective availability zone. Thus, when querying different resource control nodes for descriptive information regarding resource control nodes that are configured to service requests for a particular system resource, the likelihood is increased that many of the queried resource control nodes may maintain some of the requested information. This may lead to less iterations of query and response between a request routing tier attempting to identify resource control nodes for a system resource and the resource control nodes.
As indicated at 730, information may be received from the queried resource control nodes, in some embodiments. In some embodiments, queried resource control nodes may respond whether the requested information is maintained at the resource control node or not, so the request routing tier may be able to determine whether any queries remain to be answered. In other embodiments, only those resource control nodes that maintain the requested information for the particular system resource may respond.
Information received from the resource control nodes may include the identity and/or location of resource control nodes configured to service requests for the particular system resource (e.g., an ID or network address), in various embodiments. Other information may also be included, in at least some embodiments, that further describes the resource control node (e.g., performance characteristics, such as average response time, workload of the resource control node, such as a number of requests currently being processed, or how many other system resources the resource control node is configured to handle requests for). In some embodiments, the information may indicate whether the resource control node is co-located in the same availability zone as the particular system resource.
Based, at least in part, on the information received from the queried resource control nodes, it may be determined whether a resource control node configured to service requests for the particular system resource may be identified, as indicated at 740. If so, as indicated by the positive exit from 740, then the entry in the resource control cache based on the information received to identify resource control nodes configured to service requests for the particular system resource, as indicated at 750, which may be used to direct requests to one or more resource control nodes indicated in the updated entry in the resource control cache.
If a resource control node in the logical control group for the system resource is not identified, then the technique may be repeated as indicated by the negative exit from 740 to perform elements 720 and 730 again until a resource node to service the request is identified.
Logical control groups may allow a distributed system to remain available to service requests for a system resource, even when the availability zone including the distributed system resource which the requests are directed to is unavailable, in some embodiments. For example, some requests may not need access to the system resource in order to service the request. While other requests that may need access to the system resource may be acknowledged, and performed when the system resource becomes available.
As indicated at 810, a request may be received at a resource control node included in one availability zone for a system resource that is implemented in a different availability zone. For example, if the system resource is a data volume stored in storage devices included in one availability zone, the service request for the data volume may be received at a resource control node in the logical control group for the data volume that is located in a different availability zone. As indicated by the positive exit from 820, if the different availability zone including the system resource is available, the request may be serviced, as indicated at 860. For instance, if the request is to perform a modification or change to the data volume (in the example given above), the resource control node may send requests, commands, or perform other operations to access the data volume and perform the requested change in the other availability zone.
Availability zones may, as discussed above, be subject to various kinds of failures (e.g., power failures or network partitions) that prevent communication with other computing systems external to the availability zone. These failures may make the computing systems or resources located or hosted in the availability zone unavailable (e.g., for performing service requests). Thus, in some embodiments, service requests for the different availability zone may be serviced dependent on whether access to the resource is required in order to complete the request. For example, requests may be formatted according to an application programming interface (API) for the distributed system. Each request may indicate components of the system resource that may need to be available in order to complete the request (e.g., reference IDs identifying particular components may indicate the particular availability zone in which the component is located). Requests may also designate a type (e.g., whether they are zonal or regional), in some embodiments. A particular type of API request (e.g., regional) may be serviceable whether the availability zone that hosts the requested system resource is available or not. As indicated by the negative exit from 822, if access to the system resource is not required, then the request may be serviced, as indicated at 860, even though the resource may not currently be available.
However, in some embodiments, requests may need to access the system resource in order to complete the service request. For example, a change or modification to the system resource may include configuring the resource at the local system implementing the resource. As indicated by the positive exit from 822, a request that may require access may be recorded, as indicated at 830. In some embodiments, a database, or other data store, may be configured to store the requests, or the intentions of requests (e.g., include descriptive, or other information pertaining to the completion of the request) in order to perform the request at a later time, such as when the system resource becomes available. Multiple requests for a system resource that is unavailable may be stored and, in some embodiments, may be replayed according to a sequence order (e.g., the order in which they are received or a priority order). Requests may, in some embodiments, be recorded in such a way as to supersede, override, or otherwise replace a previously recorded request.
Once the request is recorded, the request may be acknowledged as recorded, as indicated at 840, in some embodiments. For example, if a client requests that a data object be deleted, an acknowledgment may be sent to the client acknowledging the delete request and indicating that it will be performed. In some embodiments, a client or other system sending the request may be unaware that the system resource is in an availability zone that is unavailable, preventing access to the system resource which may not be available. For instance, the request may be acknowledged within a same or similar timeframe as acknowledging the request within an established or predetermined amount of time for completing requests (e.g., as may be indicated in a service level agreement guaranteed to a customer). In this way, the request to the system resource may appear, from the point of view of a client of the distributed system (e.g., a customer of a network-based service), to be handled as if the system resource may be hosted in many different availability zones—even if it is only resides in a particular availability zone.
When the system resource becomes available (e.g., when the availability zone including the system resource becomes available again), the request may be serviced as indicated in the recording for the request, as indicated at 850. For instance, any information describing the request may be used to execute, perform, or complete the request with regard to the system resource (e.g., changing the performance characteristics of the system resource according to the parameters recorded for the request). As noted above, in some embodiments, multiple requests for a distributed system resource may be recorded, and thus the record requests may be completed in a particular order or sequence (e.g., in the order that requests are received, last in first out (LIFO), or a priority ordering).
The methods described herein may in various embodiments be implemented by any combination of hardware and software. For example, in one embodiment, the methods may be implemented by one or more computer systems (e.g., a computer system as in
Embodiments of logical control groups for distributed system resources as described herein may be executed on one or more computer systems, which may interact with various other devices.
Computer system 1000 includes one or more processors 1010 (any of which may include multiple cores, which may be single or multi-threaded) coupled to a system memory 1020 via an input/output (I/O) interface 1030. Computer system 1000 further includes a network interface 1040 coupled to I/O interface 1030. In various embodiments, computer system 1000 may be a uniprocessor system including one processor 1010, or a multiprocessor system including several processors 1010 (e.g., two, four, eight, or another suitable number). Processors 1010 may be any suitable processors capable of executing instructions. For example, in various embodiments, processors 1010 may be general-purpose or embedded processors implementing any of a variety of instruction set architectures (ISAs), such as the x86, PowerPC, SPARC, or MIPS ISAs, or any other suitable ISA. In multiprocessor systems, each of processors 1010 may commonly, but not necessarily, implement the same ISA. The computer system 1000 also includes one or more network communication devices (e.g., network interface 1040) for communicating with other systems and/or components over a communications network (e.g. Internet, LAN, etc.).
In the illustrated embodiment, computer system 1000 also includes one or more persistent storage devices 1060 and/or one or more I/O devices 1080. In various embodiments, persistent storage devices 1060 may correspond to disk drives, tape drives, solid state memory, other mass storage devices, block-based storage devices, or any other persistent storage device. Computer system 1000 (or a distributed application or operating system operating thereon) may store instructions and/or data in persistent storage devices 1060, as desired, and may retrieve the stored instruction and/or data as needed. For example, in some embodiments, computer system 1000 may host a storage node or other resource node, and persistent storage 1060 may include the SSDs attached to that resource node.
Computer system 1000 includes one or more system memories 1020 that are configured to store instructions and data accessible by processor(s) 1010. In various embodiments, system memories 1020 may be implemented using any suitable memory technology, (e.g., one or more of cache, static random access memory (SRAM), DRAM, RDRAM, EDO RAM, DDR 10 RAM, synchronous dynamic RAM (SDRAM), Rambus RAM, EEPROM, non-volatile/Flash-type memory, or any other type of memory).
System memory 1020 may contain program instructions 1025 that are executable by processor(s) 1010 to implement the methods and techniques described herein. In various embodiments, program instructions 1025 may be encoded in platform native binary, any interpreted language such as Java™ byte-code, or in any other language such as C/C++, Java™, etc., or in any combination thereof. For example, in the illustrated embodiment, program instructions 1025 include program instructions executable to implement the functionality of a node, in different embodiments. In some embodiments, program instructions 1025 may implement multiple separate clients, nodes, and/or other components.
In some embodiments, program instructions 1025 may include instructions executable to implement an operating system (not shown), which may be any of various operating systems, such as UNIX, LINUX, Solaris™, MacOS™, Windows™, etc. Any or all of program instructions 1025 may be provided as a computer program product, or software, that may include a non-transitory computer-readable storage medium having stored thereon instructions, which may be used to program a computer system (or other electronic devices) to perform a process according to various embodiments. A non-transitory computer-readable storage medium may include any mechanism for storing information in a form (e.g., software, processing application) readable by a machine (e.g., a computer). Generally speaking, a non-transitory computer-accessible medium may include computer-readable storage media or memory media such as magnetic or optical media, e.g., disk or DVD/CD-ROM coupled to computer system 1000 via I/O interface 1030. A non-transitory computer-readable storage medium may also include any volatile or non-volatile media such as RAM (e.g. SDRAM, DDR SDRAM, RDRAM, SRAM, etc.), ROM, etc., that may be included in some embodiments of computer system 1000 as system memory 1020 or another type of memory. In other embodiments, program instructions may be communicated using optical, acoustical or other form of propagated signal (e.g., carrier waves, infrared signals, digital signals, etc.) conveyed via a communication medium such as a network and/or a wireless link, such as may be implemented via network interface 1040.
In some embodiments, system memory 1020 may include data store 1045, which may be configured as described herein. In general, system memory 1020 (e.g., data store 1045 within system memory 1020), persistent storage 1060, and/or remote storage 1070 may store data blocks, replicas of data blocks, metadata associated with data blocks and/or their state, configuration information, and/or any other information usable in implementing the methods and techniques described herein.
In one embodiment, I/O interface 1030 may be configured to coordinate I/O traffic between processor 1010, system memory 1020 and any peripheral devices in the system, including through network interface 1040 or other peripheral interfaces. In some embodiments, I/O interface 1030 may perform any necessary protocol, timing or other data transformations to convert data signals from one component (e.g., system memory 1020) into a format suitable for use by another component (e.g., processor 1010). In some embodiments, I/O interface 1030 may include support for devices attached through various types of peripheral buses, such as a variant of the Peripheral Component Interconnect (PCI) bus standard or the Universal Serial Bus (USB) standard, for example. In some embodiments, the function of I/O interface 1030 may be split into two or more separate components, such as a north bridge and a south bridge, for example. Also, in some embodiments, some or all of the functionality of I/O interface 1030, such as an interface to system memory 1020, may be incorporated directly into processor 1010.
Network interface 1040 may be configured to allow data to be exchanged between computer system 1000 and other devices attached to a network, such as other computer systems 1090, for example. In addition, network interface 1040 may be configured to allow communication between computer system 1000 and various I/O devices 1050 and/or remote storage 1070. Input/output devices 1050 may, in some embodiments, include one or more display terminals, keyboards, keypads, touchpads, scanning devices, voice or optical recognition devices, or any other devices suitable for entering or retrieving data by one or more computer systems 1000. Multiple input/output devices 1050 may be present in computer system 1000 or may be distributed on various nodes of a distributed system that includes computer system 1000. In some embodiments, similar input/output devices may be separate from computer system 1000 and may interact with one or more nodes of a distributed system that includes computer system 1000 through a wired or wireless connection, such as over network interface 1040. Network interface 1040 may commonly support one or more wireless networking protocols (e.g., Wi-Fi/IEEE 802.11, or another wireless networking standard). However, in various embodiments, network interface 1040 may support communication via any suitable wired or wireless general data networks, such as other types of Ethernet networks, for example. Additionally, network interface 1040 may support communication via telecommunications/telephony networks such as analog voice networks or digital fiber communications networks, via storage area networks such as Fibre Channel SANs, or via any other suitable type of network and/or protocol. In various embodiments, computer system 1000 may include more, fewer, or different components than those illustrated in
It is noted that any of the distributed system embodiments described herein, or any of their components, may be implemented as one or more network-based services. For example, a compute cluster within a computing service may present computing and/or storage services and/or other types of services that employ the distributed computing systems described herein to clients as network-based services. In some embodiments, a network-based service may be implemented by a software and/or hardware system designed to support interoperable machine-to-machine interaction over a network. A network-based service may have an interface described in a machine-processable format, such as the Web Services Description Language (WSDL). Other systems may interact with the network-based service in a manner prescribed by the description of the network-based service's interface. For example, the network-based service may define various operations that other systems may invoke, and may define a particular application programming interface (API) to which other systems may be expected to conform when requesting the various operations. though
In various embodiments, a network-based service may be requested or invoked through the use of a message that includes parameters and/or data associated with the network-based services request. Such a message may be formatted according to a particular markup language such as Extensible Markup Language (XML), and/or may be encapsulated using a protocol such as Simple Object Access Protocol (SOAP). To perform a network-based services request, a network-based services client may assemble a message including the request and convey the message to an addressable endpoint (e.g., a Uniform Resource Locator (URL)) corresponding to the network-based service, using an Internet-based application layer transfer protocol such as Hypertext Transfer Protocol (HTTP).
In some embodiments, network-based services may be implemented using Representational State Transfer (“RESTful”) techniques rather than message-based techniques. For example, a network-based service implemented according to a RESTful technique may be invoked through parameters included within an HTTP method such as PUT, GET, or DELETE, rather than encapsulated within a SOAP message.
Although the embodiments above have been described in considerable detail, numerous variations and modifications may be made as would become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such modifications and changes and, accordingly, the above description to be regarded in an illustrative rather than a restrictive sense.
Number | Name | Date | Kind |
---|---|---|---|
5519837 | Tran | May 1996 | A |
7814192 | Kumar | Oct 2010 | B2 |
8077602 | Arimilli et al. | Dec 2011 | B2 |
8219998 | Taylor et al. | Jul 2012 | B2 |
8499096 | Kwapniewski et al. | Jul 2013 | B2 |
8565243 | Little | Oct 2013 | B2 |
20030130833 | Brownell | Jul 2003 | A1 |
20060155862 | Kathi | Jul 2006 | A1 |
20080008202 | Terrell | Jan 2008 | A1 |
20100251252 | Laverone | Sep 2010 | A1 |
20120059864 | Bandyopadhyay | Mar 2012 | A1 |
20130275619 | Yagyu | Oct 2013 | A1 |
20140050083 | Layman | Feb 2014 | A1 |
20140201642 | Vicat-Blanc | Jul 2014 | A1 |
20140365626 | Radhakrishnan | Dec 2014 | A1 |
20140372550 | Said | Dec 2014 | A1 |
20150106523 | Cui | Apr 2015 | A1 |
Entry |
---|
A. Greenberg, J. Hamilton, D. Maltz, P. Patel, The Cost of a Cloud: Research Problems in Data Center Networks, ACM SIGCOMM Computer Communication Review, vol. 39, No. 1, Jan. 2009, pp. 68-73. |