Multi-consumer versioning system for retrieving lists of modified objects
By utilizing a cache ring system that stores updated information for cloud resources, the inefficiencies in transmitting large data sets are addressed, resulting in reduced costs and improved resource management.
Patent Information
- Application Number
- DE102024114451
- Authority / Receiving Office
- DE · DE
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-11-09
- Filing Date
- 2024-05-23
- Publication Date
- 2025-05-15
AI Technical Summary
Existing systems face inefficiencies in transmitting large amounts of information about cloud resources every time a user connects to a cloud information service, leading to increased costs and resource utilization.
Implementing a cache ring for each resource type in the cloud infrastructure, where entries include a unique identifier and a version data element, allowing the cloud information service to provide only updated or deleted information and perform full updates only when necessary.
This approach reduces the amount of information transmitted to users while ensuring that the information remains up-to-date, thereby minimizing costs and resource utilization.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
BACKGROUND
[0001] Users of computer resources often want to view information about those resources. For example, they may access a user interface to view information about the resources. However, for various reasons, users may occasionally disconnect from such a user interface. If the disconnection time is long enough, the information about the resources may change. However, it may be inefficient to reprovide all resource-related information each time a user interface reconnects to an entity that can provide resource-related information. BRIEF DESCRIPTION OF THE DRAWINGS
[0002] Certain embodiments discussed herein are described with reference to the drawings below. However, the accompanying drawings only illustrate certain aspects or embodiments of the embodiments described herein by way of example and are not intended to limit the scope of the claims. Fig. 1 shows a block diagram of an example system for providing cloud infrastructure information to any number of users in accordance with one or more embodiments disclosed herein; Fig. 2 shows an overview of an example method for providing information about cloud resources to user interfaces in accordance with one or more embodiments disclosed herein; Fig. 3 illustrates an example scenario for creating a cache ring and providing updates from the cache ring in response to a subscription request with a version number in accordance with one or more embodiments disclosed herein; Fig. 4 shows an example scenario for providing updates from a cache ring in response to two subscription requests, one of which has no version number and the other of which has a version number not found in the cache ring, in accordance with one or more embodiments disclosed herein; and Fig. 5 shows a block diagram of a computing device according to one or more embodiments of this disclosure. DETAILED DESCRIPTION OF THE ILLUSTRATIVE EMBODIMENTS
[0003] A cloud infrastructure may contain a variety of compute resources (e.g., physical resources and / or logical resources). Examples of such resources include, but are not limited to, servers, network devices, enclosures (e.g., server racks, blade enclosures, etc.), clusters, pods, containers, microservices, virtual machines, buckets (e.g., collections of stored data), etc., corresponding to one or more users of the resources. A specific user may access a user interface (e.g., a Data Services Cloud Console) where the user can view information about the various resources (e.g., the aforementioned physical resources and / or logical resources) present in a cloud infrastructure. There may be any number of users using any number of user interfaces who wish to view information about resources in a specific cloud infrastructure.
[0004] However, the amount of information about the resources corresponding to a particular user and about which the user wants to view information can be very large. For example, there may be hundreds, thousands, millions, etc. of resources in a given cloud infrastructure. Therefore, each time a user accesses a user interface, whether for the first time or later after the connection to a previous session has been interrupted (e.g., intentionally, as a result of a connection interruption, etc.), all information about all resources relevant to the user accessing the user interface must be retrieved and made available to the user interface for display.However, transferring large amounts of information across resources in a cloud infrastructure can be costly in terms of computing resources, storage resources, network resources, transmission time, costs, etc., each time a user connects or reconnects to a cloud information service.
[0005] To address at least the above-mentioned problems in providing information about resources in a cloud infrastructure to users interested in viewing such information, the embodiments disclosed herein provide techniques for reducing the amount of information about the resources transmitted to a user while allowing the information available to the user to remain up-to-date regarding the state of the resources of the cloud infrastructure.
[0006] In one or more embodiments, when the user first initiates (e.g., opens, executes, connects to, etc.) a user interface for displaying information about resources in a cloud infrastructure, a subscription request may be sent to a cloud information service operatively connected to the cloud infrastructure in which the resources reside. Such subscription requests may also occur each time the user interface reconnects to the service (e.g., after a disruption). A user interface may remain subscribed after a subscription request as long as the user interface remains connected to the cloud information service. For example, the cloud information service may be implemented in a Kubernetes pod running in the cloud infrastructure.In response to the subscription request, the cloud information service can access information about the various resources and make the information available to the user in response to the subscription request and provide updates as long as the user interface maintains the connection and thus remains subscribed.
[0007] In one or more embodiments, each of the resources in a cloud infrastructure corresponds to a data object that contains information about the resource. For example, a chassis may have a firmware version, a certain number of installed components, each in a certain state (e.g., powered on, powered off, connected to or disconnected from a network, in a degraded state, etc.), as well as other relevant information about the chassis, and the collection of such information about the chassis may be considered an object. As another example, an application may be deployed in a Kubernetes container platform as a set of microservices implemented in a set of container pods, and all information about that application or part of it (e.g., the container platform, the microservices, pods, containers, devices on which these things are deployed, etc.)) can be considered an object. As another example, a user may have created any number of buckets (e.g., Amazon S3 buckets) to store information of any kind, and information about each of the buckets (e.g., bucket size, remaining space in the bucket, access policy for the bucket, etc.) can be considered objects. Thus, as used herein, an object may refer to metadata about a resource (e.g., an enclosure, a container deployment, a bucket, any physical or logical component, etc.) in a cloud infrastructure. In one or more embodiments, objects may be grouped into resource types.For example, a resource type "enclosure" can refer to all objects that match "enclosures", a resource type "container" can refer to a collection of objects that match "container deployments", a resource type "bucket" can refer to a collection of objects that match "buckets", and so on.
[0008] In one or more embodiments, a cloud information service is configured to create and maintain a cache ring for each resource type in a cloud infrastructure. There may be any number of cache rings, depending on how many resource types exist in the cloud infrastructure. For clarity, the following description focuses on one cache ring for one resource type. However, one of ordinary skill in the art will appreciate that the description of one cache ring applies to any number of cache rings for any number of resource types in a cloud infrastructure, and that a cloud information service may use the various cache rings to provide information about any number of resource types to a user interface.
[0009] The cache ring can be implemented in memory (e.g., instead of some form of persistent storage). The cache ring can have entries added by the cloud information service as they are received by the cloud information service. The cloud information service can be provided with information each time an object corresponding to a resource in the cloud infrastructure is updated. For example, if the firmware of a chassis is updated, the object corresponding to the chassis can be updated to reflect the new firmware version. Another example: if the access rights for a scope are updated, the object corresponding to the scope can be updated to reflect the new access policy.Another example: If the number of pods of containers used to implement an application increases, the object corresponding to the container usage can be updated with the new number of pods. Other resource updates may lead to updates of the corresponding objects without breaking the framework of the embodiments disclosed herein. The cloud information service can receive information on object updates in any manner. For example, the cloud information service can receive information on container usage via a Kubernetes application programming interface (API) that provides information based on a custom resource definition (CRD). As another example, different APIs can exist and be configured to provide information on other resources (e.g., buckets, physical devices, logical components, etc.).
[0010] In one or more embodiments, each time the cloud information service is notified that an object has been updated, it may add an entry to a cache ring corresponding to a resource type to which the updated object belongs. In one or more embodiments, each such update to an object of the resource type to which the cache ring corresponds causes the cloud information service to add an entry to the cache ring, up to the configured maximum size of the cache ring (e.g., hundreds, thousands, millions, etc. of entries). In one or more embodiments, each entry added by the cloud information service to a cache ring includes a unique identifier (e.g., a unique name, a universally unique identifier (UUID), etc.) of the object that has been updated and a version data item.The version data element may include an encoding of the entry type (see below) as well as a representation of the entry's version number. For example, the version data element may be a 32-bit number, where the first two bits are used to encode one of four possible entry types and the remaining 30 bits are used to encode the integer value of the version number. In one or more embodiments, each entry added by the cloud information service to a cache ring includes a version number that has been incremented (e.g., by one) from the previous entry added to the cache ring.
[0011] As described above, a cache ring corresponds to a resource type, and there may be any number of objects of that resource type (e.g., millions of buckets, each corresponding to separate objects). In one or more embodiments, an update to any object of that resource type causes the cloud information service to add an entry to the corresponding cache ring for the resource type. However, in one or more embodiments, the version number represents a new entry in the cache ring and does not correspond to a specific object of the resource type.For example, an update of a first object of a certain resource type may cause the cloud information service to add a first entry to the cache ring with an identifier of the first object and a version data element that contains two bits for representing the update type and the remaining bits for representing version one. The cloud information service may then be informed of an update of a second object of the same resource type. Subsequently, the cloud information service may add a second entry to the cache ring with an identifier of the second object and a version data element that encodes the update type and contains a representation of version two.Although the objects are not the same object, when the cloud information service adds the second entry to the cache ring, the version number increases so that the second entry has a higher version number than the first entry.
[0012] In one or more embodiments, there are four types of entries. In one or more embodiments, the first type of entry is an update. In one or more embodiments, an update occurs when the information in an object (e.g., metadata corresponding to a resource in a cloud infrastructure) changes. For example, if the firmware of a network component of a chassis changes, the object may be modified to reflect a version number of the new firmware. In one or more embodiments, the second type of entry is a deletion. For example, a resource may be removed from the cloud infrastructure (e.g., a physical device is removed, a container pod is deleted, a bucket is deleted, etc.), and the object corresponding to that resource is deleted.
[0013] In one or more embodiments, the remaining two entry types are separator entries and refresh entries. In one or more embodiments, separator and refresh are entry types used whenever a full refresh is performed. In one or more embodiments, a full refresh (discussed below) is performed whenever a subscription request is received that requires all objects of a resource type corresponding to a cache ring to be made available to the user interface from which the subscription request was received. In one or more embodiments, a subscription request is received whenever the user accesses the user interface to view information about resources of a cloud infrastructure.For example, a subscription request may be received when a user uses the user interface for the first time and connects to a cloud information service, and also each time a user reconnects to the cloud information service after previously disconnecting from the cloud information service.
[0014] An initial subscription request may not include a version number. In one or more embodiments, when a subscription request is received without a version number, a full refresh is performed. In one or more embodiments, to perform a full refresh, the cloud information service creates a list of all objects of the resource type to which the cache ring corresponds. In one or more embodiments, the list of all objects is a list of objects that correspond to a resource currently present in the cloud infrastructure (e.g., the list does not include objects that were deleted before the full refresh began).In one or more embodiments, the cloud information service then adds to the cache ring an entry having a separation version type, then entries for all objects of the resource type to which the cache ring corresponds, each of these entries having a refresh entry type, and then another entry having a separation entry type, wherein the first separation entry, each of the refresh entries, and the second separation entry each have an ascending version number.
[0015] In one or more embodiments, the cloud information service then checks whether any updates to objects have occurred during the time the object list was created and the detach and update entries were added to the cache ring. However, in other embodiments, the time period for performing a full update is small, so the cloud information service may not check for updates that occur during an uninterrupted full update. Instead, in one or more embodiments, updates that occur during an uninterrupted full update may be processed after the full update is complete. In one or more embodiments, the cloud information service sends in one or more messages of any type (e.g.,in the form of data packets over a network) information about each update entry to the user interface if no updates have occurred during that time or if updates are not checked for in the case of uninterrupted full updates. In one or more embodiments, the information corresponding to an update entry is the metadata about the resource to which an object corresponds. In one or more embodiments, the cloud information service uses the unique identifiers (contained in the entries in the cache ring) of the objects to obtain the information from the objects by using the method appropriate for the resource type for obtaining such information (e.g., Kubernetes API for objects corresponding to a container deployment, other APIs for objects corresponding to physical resources, etc.).In one or more embodiments, the information is sent from the objects via one or more messages and used to update the user interface to display the information to the user.
[0016] In one or more embodiments, if updates to objects were added to the cache ring after the second detach entry of the full update but before the full update is complete, the cloud information service updates the list of objects to reflect the change, whatever the new version number of the one or more objects that were updated is, so that the cloud information service knows the most recent version number in the cache ring corresponding to the objects sent to the user interface as part of the full update. In one or more embodiments, the most recent version of the object is always sent to the user interface because the cloud information service does not maintain a history of object state after an object is updated.In one or more embodiments, if another subscription request is received (e.g., from a different user using a different user interface) that requires a full refresh before the cloud information service sends the object information to the user interface based on the first subscription request that required a full refresh (e.g., if a user interface is disconnected during a full refresh that is later resumed), the cloud information service may initiate a full refresh (as described above) in response to the subsequent subscription request.However, in this case, in one or more embodiments, the cloud information service skips the detach entries and the update entries of the later full refresh when determining whether changes were made to objects during the first full refresh.
[0017] In one or more embodiments, if a connection interruption occurs during a full update, the user interface reconnects, and a new subscription request is received, the new subscription request will include a version number that is the most recent version number received by the user interface during the attempted full update. In one or more embodiments, in this case, the cloud information service will continue the full update by starting with the next version number after the version number received in the new subscription request.In one or more embodiments, the full update is complete when all object information for all objects of the resource type to which the caching corresponds, including any updates that occurred before the full update was completed, is sent to the user interface, along with the highest version number in the caching of an entry for any object sent as part of the full update. Additionally or alternatively, during a full update, object information may be sent in a series of messages, with each message containing object information from any number of objects. In such cases, the highest version number of an object sent in a message is sent to the user interface for each message, even if higher version numbers exist in the cache ring.
[0018] In one or more embodiments, after the initial full refresh, if the user remains connected, the subscription is active, and the cloud information service sends any updates to objects that occur (each of which results in a new entry being added to the cache ring), skipping any entries added to the cache ring as part of a full refresh for a different user with a different user interface. In one or more embodiments, new entries other than Separator or Refresh entries (which are skipped when delivering updates to an active subscription) may be Update or Delete entries. As described above, for each update entry, the cloud information service retrieves the object information and sends it to the user interface.In one or more embodiments, for each deletion entry, the cloud information service sends a notification to the user interface that the object has been deleted. In one or more embodiments, the user interface updates the information for the user in response to each update received from the cloud information service and changes the information displayed on the user interface to reflect any deletions that the user interface is notified of by the cloud information service.
[0019] In one or more embodiments, a user interface may disconnect from the cloud information service for any reason. For example, the disconnection may occur intentionally (e.g., when the user closes the user interface) or result from a disruption of the connection between the user interface and the cloud information service (e.g., during a network outage). In one or more embodiments, if a user was previously connected to the cloud information service, a subscription request received as part of a reconnection includes the version number that was the highest version number present in the cache ring when the user was last connected.For example, if the user interface was first connected and a full refresh was performed, the version number is the highest version number received as part of the full refresh, or all updates received after the full refresh while the user remained connected to the cloud information service. In one or more embodiments, in response to a subscription request that includes a version number (e.g., for each reconnection after an initial connection), the cloud information service uses the version number to perform a binary search to determine whether the version number received in the subscription request is still in the cache ring.In one or more embodiments, the cloud information service may perform the binary search because the version of the entries that the cloud information service adds to the cache ring is always increasing.
[0020] In one or more embodiments, a binary search is performed by starting with the middle entry in the cache ring. In one or more embodiments, when the version number received in the subscription request is equal to the version number of the entry in the middle of the cache ring, the cloud information service creates a list of all object changes that correspond to entries with a higher version number, i.e., entries in the half of the cache ring that have a higher version number than the middle entry, excluding the separator entries and the refresh entries that may be in the cache ring for a full refresh that is performed for another user (and that are skipped by the cloud information service).In one or more embodiments, if the version number received in the subscription request does not match the version number of the middle entry of the cache ring, the half of the cache in which the version number cannot exist is excluded from the search, and the search is repeated with the middle element of the remaining half of the cache ring. In one or more embodiments, the binary search continues until the cloud information service finds an entry with a version number that matches the version number received in the subscription request, or until the cloud information service determines that the version number no longer exists in the cache ring. The cache ring is, for example, constructed as a ring.Therefore, when the number of entries in the cache ring reaches the configured maximum number of entries, the cloud information service returns to the beginning of the cache ring to add new entries. Therefore, in one or more embodiments, the version number received in a subscription request may no longer be present in the cache ring if the connection interruption period was long enough, as it may have been overwritten by newer entries in the cache ring.
[0021] In one or more embodiments, if the version number received in the subscription request is found via binary search, the cloud information service will provide updated object information or object deletion notifications for all entries in the cache ring that have a higher version number than the version number received in the subscription request, except for entries that are separator entries or update entries (which are skipped by the cloud information service). In one or more embodiments, if the version number received in the subscription request is not found via binary search, the cloud information service will perform a full update as described above, and information for all objects will be sent to the user interface from which the subscription request was received.
[0022] Certain embodiments of this disclosure may enable any number of user interfaces to obtain and maintain current information about resources in a cloud infrastructure without having to send all information about the resources each time the user interface connects to a cloud information service that seeks the resource information via a subscription request.In one or more embodiments, the amount of information transferred from the cloud information service to the user interface is reduced by maintaining a cache ring for each resource type in the cloud infrastructure, where entries in the cache ring include an object identifier, an entry type, and a version number, allowing the cloud information service to only provide information about objects that have been updated or deleted, and to only perform a full refresh of all information when a user interface connects to the cloud information service for the first time or when the version number received in a subscription request as part of a reconnection is no longer included in the cache ring.
[0023] Fig. 1 shows a block diagram of an example system for providing cloud infrastructure information to any number of users according to one or more embodiments disclosed herein. As in Fig. 1, the system may include a cloud infrastructure 100. The cloud infrastructure 100 may include cloud resources 102 and a cloud information service 108. The cloud resources may include physical resources 104 and logical resources 106. The system may also include a user 110 and a user interface 112. Each of these components is described below.
[0024] In one or more embodiments, cloud infrastructure 100 is a collection of any number of computing devices and other components in which a cloud computing environment is deployed and which may support any number of cloud-based applications, as-a-service (aaS) products (e.g., software aaS (SaaS), infrastructure aaS (laaS), platform aaS (PaaS), storage aaS (STaaS), etc.), microservices, container platforms, virtualization environments, infrastructure components, power supplies, racks, enclosures, environmental controls, physical spaces, cabling, etc. Cloud infrastructure 100 may include one or more private clouds, public clouds, and / or hybrid clouds. Cloud infrastructure 100 may be located at a single physical location and / or environment, or may be distributed across any number of separate locations and / or environments.The cloud infrastructure 100 may be owned or otherwise managed by a particular entity, or it may be provided by any number of separate entities without departing from the scope of the embodiments disclosed herein.
[0025] In one or more embodiments, cloud infrastructure 100 includes cloud resources 102. In one or more embodiments, cloud resources, as used herein, refer to the portion of cloud infrastructure 100 that can be used or otherwise accessed by any number of users (e.g., user 110) of cloud infrastructure 100. For example, cloud resources 102 may include the portion of cloud infrastructure 100 used by users to access aaS offerings, composable infrastructures, virtualization environments, microservices, storage and backup services, database management, etc.
[0026] In one or more embodiments, the cloud resources 102 include the physical resources 104. In one or more embodiments, the physical resources 104 include all physical (e.g., hardware) components of the cloud resources, such as computing devices, network components, storage components, racks, enclosures, etc.
[0027] In one or more embodiments, a computer (not shown) may be a single computing device, a set of computing devices, a portion of one or more computing devices, or any other physical or logical grouping of computing resources. In one or more embodiments, a computing device is any device, portion of a device, or group of devices capable of electronically processing instructions and may include, but is not limited to, one or more processors (e.g., components including circuitry), memory (e.g., random access memory (RAM)), input and output devices, non-volatile storage hardware (e.g., solid-state drives (SSDs), persistent memory (PMEM) devices, hard disk drives (HDDs)), one or more physical interfaces (e.g.,network ports, storage ports), any number of other hardware components (not shown) and / or any combination thereof.
[0028] Examples of computing devices include, but are not limited to, a server (e.g., a blade server in a blade server enclosure, a rack server in a rack, etc.), a desktop computer, a mobile device (e.g., a laptop computer, a smartphone, a personal digital assistant, a tablet computer, a computer system in a vehicle, and / or other mobile computing device), a storage device (e.g., a hard disk drive array, a Fibre Channel storage device, an Internet Small Computer Systems Interface (iSCSI) storage device, a tape storage device, a flash memory array, a network-attached storage device, etc.), a network device (e.g., a switch, router, multi-layer switch, etc.), an Internet of Things (IoT) device, an array of nodes of computing resources, a supercomputing device, a data center or part thereof, and / or any other type of computing device with the above requirements.In one or more embodiments, some or all of the above examples may be combined to create a system of such devices, or they may be separated into separate logical devices that may collectively be referred to as a computing device. Other types of computing devices may also be used without departing from the scope of the embodiments described herein, such as the computing device described in . Fig. 5 and described below. The physical resources 104 may include any number and / or type of such computing devices in any arrangement and / or configuration without departing from the scope of the embodiments disclosed herein.
[0029] In one or more embodiments, the storage and / or memory of a computing device or system of computing devices or other component of physical resources 104 may be and / or include one or more data repositories for storing any number of data structures that store any amount of data (e.g., information). In one or more embodiments, a data repository is any type of storage unit and / or device (e.g., a file system, a database, a spreadsheet, RAM, and / or other storage mechanism or storage medium) for storing data. Furthermore, the data repository may include multiple different storage units and / or devices. The different storage units and / or devices may be of the same type or located in the same physical location.
[0030] In one or more embodiments, any storage and / or memory of a computing device, system of computing devices, or other component of physical resources 104 may be considered, in whole or in part, a non-transitory computer-readable medium that stores software and / or firmware.
[0031] Such software and / or firmware may include instructions that, when executed by one or more processors (not shown) and / or other hardware (e.g., circuitry) of a computing device and / or system of computing devices, cause the one or more processors and / or other hardware components to perform operations in accordance with one or more embodiments described herein.
[0032] The software instructions may be in the form of computer-readable program code to perform methods, processes, etc. of the embodiments described herein, and may, for example, be stored, in whole or in part, temporarily or permanently, on a non-transitory computer-readable medium such as a compact disc (CD), a digital versatile disc (DVD), a storage device, a floppy disk, tape storage, flash memory, physical storage, or other non-transitory computer-readable medium.
[0033] The physical resources 104 may include any number of computing devices, any number of which may collectively be considered a computing device as used herein. All or a portion of the computing devices may be of the same type or of different types of computing devices.
[0034] In one or more embodiments, cloud resources 102 include logical resources 106. In one or more embodiments, logical resources 106 include any software, firmware, applications, container platforms, virtualization environments, microservices, communication protocols, storage areas, etc., that execute at least in part using physical resources 104.
[0035] For example, in one or more embodiments, all or any portion of the logical resources 106 may be managed at least in part by a container platform (not shown), such as Kubernetes. In one or more embodiments, a container platform includes a control plane (not shown). A control plane of a container platform may include various components for managing the logical resources (e.g., one or more API servers, controllers, schedulers, etc.). The control plane may, for example, be implemented on one or more master nodes, each of which may be a computing device (see above).
[0036] In one or more embodiments, the cloud resources 102 may host any number of cloud-based applications as part of the logical resources 106, which may be implemented using a microservice architecture that includes any number of application microservices as well as various other microservices (e.g., a user interface microservice, any number of general purpose microservices, etc.) and various communication components that enable the various microservices to interact with other microservices, other parts of the cloud resources 102, the cloud infrastructure 100, and / or entities and / or devices external to the cloud infrastructure 100.
[0037] In one or more embodiments, a microservice may be implemented with any number of containers, container pods, etc. Each microservice may implement a particular service component that is part of an overall cloud-based application provided as at least a portion of the logical resources 106.
[0038] In one or more embodiments, the logical resources 106 may include shared microservices, which may be a set of services common to all or a portion of the other microservices of the one or more cloud-based applications deployed using a microservice architecture in the cloud infrastructure 100. Examples of shared microservices include, but are not limited to, database services, authorization services, workflow orchestration microservices, auditing microservices, management microservices, etc.
[0039] In one or more embodiments, the logical resources 106 include various communication components. In one or more embodiments, the communication components used herein include logical devices and / or components that implement any number of communication protocols that enable communication within the cloud resources 102. The various communication protocols include, for example, the Representational State Transfer (REST) protocol, RPC frameworks (e.g., gRPC), the Kafka protocol, etc., as well as other underlying protocols that may be used in communication, such as the Hypertext Transfer Protocol (HTTP), the Transmission Control Protocol (TCP), the User Datagram Protocol (UDP), etc. Such protocols may be used for the transmission of data, commands, etc. The communication components of the logical resources 106 may, for example,be implemented at least partially using network devices of the physical resources 104.
[0040] In one or more embodiments, the logical resources 106 may include any number (e.g., hundreds, thousands, millions) of buckets (e.g., Amazon S3 buckets). A bucket may be a cloud storage container for storing any type or amount of information. The logical resources 106 may include any other type of logical entity (e.g., virtual machines, virtual network devices, virtual storage devices, hypervisors, management software, etc.) without departing from the scope of the embodiments disclosed herein.
[0041] Although in Fig. 1, in one or more embodiments, each of the physical resources 104 and / or logical resources 106 of the cloud resources 102 in the cloud infrastructure 100 corresponds to a data object (which may be stored anywhere in the cloud infrastructure 100) that contains information about the resource.
[0042] For example, a blade server chassis may have a firmware version, a certain number of installed components, each in a specific state (e.g., powered on or off, connected to or disconnected from a network, in a faulty state, functioning normally, etc.), and other relevant information related to the chassis, etc. The collection of such information about the chassis can be considered an object. Another example: A cloud-based application can be implemented in a Kubernetes container platform as a set of microservices deployed in any number of container pods, each containing any number of containers, and all information about that application or part of it (e.g., the container platform, the microservices, the pods, the containers, the devices on which these things are deployed, etc.) can be stored.) can be considered an object. As another example, a user may have created any number of buckets (e.g., Amazon S3 buckets) to store information of any kind, and information about each of the buckets (e.g., bucket size, remaining space in the bucket, access policy for the bucket, etc.) can be considered objects. Thus, as used herein, an object may refer to metadata about a resource (e.g., an enclosure, a container deployment, a bucket, any physical or logical component, etc.) in the cloud resources 102.
[0043] In one or more embodiments, objects may be grouped into resource types. For example, a "chassis" resource type may refer to all objects corresponding to enclosures, a "container" resource type may refer to a collection of objects corresponding to container deployments, a "bucket" resource type may refer to a collection of objects corresponding to buckets, and so on.
[0044] In one or more embodiments, cloud infrastructure 100 includes cloud information service 108. In one or more embodiments, the cloud information service is any hardware, software, firmware, or any combination thereof configured to manage information about objects (see above) corresponding to any physical resources 104 and / or logical resources 106 of cloud resources 102 of cloud infrastructure 100 and to make this information available to any number of user interfaces (e.g., user interface 112, see below). For example, cloud information service 108 may include any number of computing devices (see above).As another example, the cloud information service may be implemented as part of a cloud management service running in a cluster pod of a cluster managed by an entity that at least partially manages the cloud infrastructure 100.
[0045] In one or more embodiments, a cloud information service is configured to create and maintain a cache ring for each resource type in a cloud infrastructure. There can be any number of cache rings, depending on how many resource types are present in the cloud infrastructure. In one or more embodiments, the cache rings are used to maintain a versioned history of updates to objects that correspond to the physical resources 104 and / or logical resources 106 of the cloud resources 102, and to provide information about the objects for any number of user interfaces. The cache rings managed by the cloud information service and the operations of the cloud information service related to the management of the cache rings and the provision of information for user interfaces are described in Fig. 2, Fig. 3 and Fig. 4 explained below.
[0046] Although Fig. 1 shows the cloud information service 108 as part of the same cloud infrastructure 100 as the cloud resources 102, the cloud information service 108 may alternatively be provided in a separate cloud infrastructure and operatively connected to the cloud infrastructure 100. Although in Fig. 1 only a single cloud information service 108 is shown, the system may also include any number of cloud information services without departing from the scope of the embodiments disclosed herein.
[0047] In one or more embodiments, the system includes any number of users (e.g., user 110). In one or more embodiments, user 110 is any entity (e.g., a human, a software application, etc.) that desires to access information about one of the cloud resources 102 of cloud infrastructure 100. In one or more embodiments, information about one of the cloud resources 102 of cloud infrastructure 100 may be obtained by user 110 via one or more user interfaces (e.g., user interface 112). In one or more embodiments, user interface 112 is any hardware, software, firmware, or any combination thereof configured to enable user 110 to view or otherwise obtain information about all or a portion of cloud resources 102 of cloud infrastructure 100.In one or more embodiments, the user interface is at least temporarily operatively connected to the cloud information service 108. A particular user (e.g., user 110) can access the user interface 112 (e.g., a data services cloud console), in which the user 110 can view information about the various resources (e.g., the aforementioned physical resources 104 and / or logical resources 106) present in the cloud infrastructure 100. There may be any number of users using any number of user interfaces who wish to view information about resources in a particular cloud infrastructure.
[0048] In one or more embodiments, when user 110 first initiates (e.g., opens, runs, connects to, etc.) user interface 112 to display information about resources in cloud infrastructure 100, a subscription request may be sent to a cloud information service 108 operatively connected to cloud resources 102 in which physical resources 104 and logical resources 106 reside. Such subscription requests may also occur each time user interface 112 reconnects to cloud information service 108 (e.g., after a disconnection). User interface 112 may remain subscribed after a subscription request as long as user interface 112 remains connected to cloud information service 108.In response to the subscription request, the cloud information service 108 may access information about the cloud resources 102 and provide the information to the user interface 112 in response to the subscription request and provide updates as long as the user interface 112 maintains the connection and thus remains subscribed.
[0049] Although Fig. 1 shows a particular configuration of components, other configurations may be used without departing from the scope of the embodiments described herein. Although in Fig. 1 certain components are depicted as part of the same device, component, and / or infrastructure, each of the components may be grouped into sets of one or more components that may exist and execute as part of any number of separate and operatively connected devices. As another example, a single component may be configured to perform all or part of the functions required by all or part of the components shown in Fig. 1. Accordingly, the embodiments disclosed herein should not be limited to the components shown in Fig. 1 shown configuration of the components may be limited.
[0050] Fig. 2 shows an overview of an example method for providing information about cloud resources to user interfaces according to one or more embodiments disclosed herein. All or part of the Fig. The method shown in 2 can be performed, for example, by a cloud information service (e.g., the cloud information service 108 shown and described above in Fig. 1).
[0051] While the various steps in the flowchart shown in Fig. 2 are shown and described in sequence, some or all of the steps can be performed in a different order, some or all of the steps can be combined or omitted, other steps not shown in Fig. 2 can be additionally performed and / or some or all of the steps can be performed in parallel with other steps of Fig. 2.
[0052] In step 200, the method includes generating a cache ring that corresponds to a resource type. A cache ring can be generated, for example, by a cloud information service (e.g., the cloud information service 108 of Fig. 1). In one or more embodiments, a cloud information service is configured to create and manage a cache ring for each resource type in a cloud infrastructure. There may be any number of cache rings, depending on the number of resource types present in the cloud infrastructure.
[0053] The following description focuses on one cache ring for one resource type for clarity. However, one of ordinary skill in the art will appreciate that the description of one cache ring applies to any number of cache rings for any number of resource types in a cloud infrastructure, and that a cloud information service may use the various cache rings to provide information about any number of resource types to a user interface.
[0054] The cache ring can be implemented in memory (e.g., instead of some form of persistent storage). The cache ring can initially have no entries. The cache ring can have entries added as they are received from the cloud information service. The cloud information service can be provided with information each time an object corresponding to a resource in a cloud infrastructure is updated. For example, if the firmware of a chassis is updated, the object corresponding to the chassis can be updated to reflect the new firmware version. Another example: if the access rights for a bucket are updated, the object corresponding to the bucket can be updated to reflect the new access policy.As another example, if the number of pods of containers used to deploy an application increases, the object corresponding to the container deployment may be updated with the new number of pods. Other updates to resources may result in updates to the corresponding objects without exceeding the scope of the embodiments disclosed herein.
[0055] The Cloud Information Service can receive information about object updates in any way. For example, the Cloud Information Service can receive information about container deployments through a Kubernetes application programming interface (API) that provides information based on a custom resource definition (CRD). As another example, various APIs can exist and be configured to provide information about other resources (e.g., buckets, physical devices, logical components, etc.).
[0056] In one or more embodiments, each time the cloud information service is notified that an object has been updated, it may add an entry to a cache ring corresponding to a resource type to which the updated object belongs. In one or more embodiments, each such update of an object of the resource type to which the cache ring corresponds causes the cloud information service to add an entry to the cache ring, up to the configured maximum size of the cache ring (e.g., hundreds, thousands, millions, etc. of entries).
[0057] In one or more embodiments, each entry added by the cloud information service to a cache ring includes a unique identifier (e.g., a unique name, a universally unique identifier (UUID), etc.) of the object that was updated and a version data item. The version data item may include an encoding of the type of entry (see below) as well as a representation of the version number of the entry. For example, the version data item may be a 32-bit number, with the first two bits used to encode one of four possible entry types and the remaining 30 bits used to encode the integer value of the version number (meaning the cache ring can have up to 1,073,741,823 entries).In one or more embodiments, each entry added to a cache ring by the cloud information service includes a version number that has been incremented (e.g., by one) from the previous entry added to the cache ring.
[0058] As explained above, a cache ring corresponds to a resource type, and there may be any number of objects of that resource type (e.g., millions of buckets, each corresponding to separate objects). In one or more embodiments, an update to any object of that resource type results in the cloud information service inserting an entry into the corresponding cache ring. However, in one or more embodiments, the version number represents a new entry in the cache ring and does not correspond to a specific object of the resource type.
[0059] For example, an update to a first object of a particular resource type may cause the cloud information service to add a first entry to the cache ring containing an identifier of the first object and a version data element containing two bits representing the update type and the remaining bits representing version one. The cloud information service may then be notified of an update to a second object of the same resource type. The cloud information service may then add a second entry to the cache ring containing an identifier of the second object and a version data element encoding the update type and containing a representation of version two.Although the objects are not the same object, when the cloud information service adds the second entry to the cache ring, the version number increases so that the second entry has a higher version number than the first entry.
[0060] In one or more embodiments, there are four types of entries. In one or more embodiments, the first type of entry is an update. In one or more embodiments, an update occurs when the information in an object (e.g., metadata corresponding to a resource in a cloud infrastructure) changes. For example, if the firmware of a network component of a chassis changes, the object may be modified to reflect a version number of the new firmware. In one or more embodiments, the second type of entry is a deletion. For example, a resource may be removed from the cloud infrastructure (e.g., a physical device is removed, a container pod is deleted, a bucket is deleted, etc.), and the object corresponding to that resource is deleted.
[0061] In one or more embodiments, the remaining two entry types are separator entries and refresh entries. In one or more embodiments, separator and refresh are entry types used whenever a full refresh is performed. In one or more embodiments, a full refresh (discussed below) is performed whenever a subscription request is received that requires all objects of a resource type corresponding to a cache ring to be made available to the user interface from which the subscription request was received.
[0062] In one or more embodiments, however, Fig. 2 are not shown, the cloud information service may use the cache ring created as described above to service existing subscriptions. In one or more embodiments, any number of users may connect to the cloud information service through any number of user interfaces to receive updates about various physical and logical resources of a cloud infrastructure. Such subscriptions may remain active as long as the user interface remains connected to the cloud information service. As described above, in one or more embodiments, whenever the cloud information service detects that an object corresponding to a resource of a resource type of a cache ring has been updated, it updates the cache ring by adding a new entry with an incremented version number, an update type, and a unique name of the object.In one or more embodiments, the cloud information service then determines whether there are active subscriptions that should receive information from the cache ring. In one or more embodiments, if there are such active subscriptions, the cloud information service can retrieve object information for the updated object and send the updated object information to all active subscribers who should receive updates for the resource type of the cache ring.
[0063] In step 202, the method includes receiving a subscription request from a user interface. The request can be received, for example, by a cloud information service (e.g., the cloud information service 108 of Fig. 1). In one or more embodiments, a subscription request is received whenever the user accesses the user interface so that the user can view information about resources of a cloud infrastructure. Thus, a subscription request may be received when a user first uses the user interface and connects to a cloud information service, and also each time a user reconnects to the cloud information service after previously disconnecting from the cloud information service.
[0064] In step 204, the method includes determining whether the subscription request received in step 202 includes a version number. The determination may be made, for example, by a cloud information service (e.g., the cloud information service 108 of Fig. 1) be carried out. An initial subscription request may not contain a version number. Other scenarios are also conceivable in which a subscription request is received that does not contain a version number without deviating from the scope of the embodiments disclosed herein. In one or more embodiments, subscription requests received from a user interface that was previously connected to the cloud information service generally contain the highest version number in a cache ring that was present at the last connection of the user interface and that is received by the user interface from the cloud information service each time an update is provided to the user interface from the cache ring (e.g., each time an update of object information is provided while a subscription is active, as described above).
[0065] In one or more embodiments, the method continues with step 208 if the subscription request does not include a version number. In one or more embodiments, the method continues with step 206 if the subscription request includes a version number.
[0066] In step 206, the method includes determining whether the version number in the subscription request is a version number in an entry currently in the cache ring. As an example, a cloud information service (e.g., the cloud information service 108 of Fig. 1) Make the determination. In one or more embodiments, a user interface may disconnect from the cloud information service for any reason. For example, the disconnection may be intentional (e.g., when the user closes the user interface) or result from a disruption of the connection between the user interface and the cloud information service (e.g., during a network outage).
[0067] In one or more embodiments, if a user interface was previously connected to the cloud information service, a subscription request received as part of a reconnection includes the version number that was the highest version number in the cache ring the last time the user interface was connected. For example, if the user interface was first connected and a full update was completed, the version number is the highest version number received as part of the full update, or the highest version number of all updates received after the full update while the user remained connected to the cloud information service.
[0068] In one or more embodiments, in response to a subscription request that includes a version number (e.g., for each reconnection after an initial connection), the cloud information service uses the version number to perform a binary search to determine whether the version number received in the subscription request is still in the cache ring. In one or more embodiments, the cloud information service may perform the binary search because the version of entries that the cloud information service adds to the cache ring is always increasing.
[0069] In one or more embodiments, a binary search is performed, starting with the middle entry in the cache ring. In one or more embodiments, if the version number received in the subscription request does not match the version number of the middle entry of the cache ring, the half of the cache in which the version number cannot exist is excluded from the search, and the search is repeated with the middle element of the remaining half of the cache ring. In one or more embodiments, the binary search continues until the cloud information service finds an entry with a version number that matches the version number received in the subscription request, or until the cloud information service determines that the version number no longer exists in the cache ring. The cache ring is constructed, for example, as a ring.Therefore, when the number of entries in the cache ring reaches the configured maximum number of entries, the cloud information service returns to the beginning of the cache ring to add new entries. Therefore, in one or more embodiments, the version number received in a subscription request may no longer be present in the cache ring if the connection interruption period was long enough, as it may have been overwritten by newer entries in the cache ring.
[0070] In one or more embodiments, if the version number in the subscription request is found in the cache ring, the method continues with step 210. In one or more embodiments, if the version number in the subscription request is not found in the cache ring, the method continues with step 208.
[0071] In step 208, the method includes performing a full update. The full update may be performed, for example, by a cloud information service (e.g., the cloud information service 108 of Fig. 1). In one or more embodiments, a full update is performed when it is determined that a received subscription request does not contain a version number (as determined in step 204) or contains a version number that is no longer present in the cache ring (as determined in step 206).
[0072] In one or more embodiments, to perform a full refresh, the cloud information service creates a list of all objects of the resource type to which the cache ring corresponds. In one or more embodiments, the list of all objects is a list of objects that correspond to a resource currently present in the cloud infrastructure (e.g., the list does not include objects that were deleted before the full refresh began). In one or more embodiments, the cloud information service then adds to the cache ring an entry with a separation version type, then entries for all objects of the resource type to which the cache ring corresponds, each of these entries having a refresh entry type, and then another entry with a separation entry type, where the first separation entry, each of the refresh entries, and the second separation entry each have an ascending version number.
[0073] In one or more embodiments, the cloud information service then checks whether any updates were made to any objects during the time the object list was created and the detach and refresh entries were added to the cache ring. In one or more embodiments, if no updates have occurred during this time, the cloud information service sends information about each update entry to the user interface in one or more messages of any type (e.g., data packets over a network).
[0074] In one or more embodiments, the information corresponding to an update entry is metadata about the resource to which an object corresponds. In one or more embodiments, the cloud information service uses the unique identifiers (contained in the entries in the cache ring) of the objects to obtain the information from the objects using the method appropriate for the resource type for obtaining such information (e.g., Kubernetes API for objects corresponding to a container deployment, other APIs for objects corresponding to physical resources, etc.). In one or more embodiments, the information from the objects is sent to the user interface via one or more messages of any type and is used to update the user interface to display the information to the user.
[0075] In one or more embodiments, if updates to objects were added to the cache ring after the second detach entry of the full update but before the full update is complete, the cloud information service updates the list of objects to reflect the change, whatever the new version number of the one or more objects that were updated is, so that the cloud information service knows the most recent version number in the cache ring corresponding to the objects sent to the user interface as part of the full update. In one or more embodiments, the most recent version of the object is always sent to the user interface because the cloud information service does not maintain a history of object state after an object is updated.
[0076] In one or more embodiments, if another subscription request is received (e.g., from a different user using a different user interface) that requires a full update before the cloud information service sends the object information to the user interface based on the first subscription request that required a full update, the cloud information service may initiate a full update (as described above) in response to the subsequent subscription request. However, in one or more embodiments, the cloud information service skips the detach entries and the update entries of the later full update when determining whether any changes to the objects occurred during the first full update.
[0077] In one or more embodiments, if a connection interruption occurs during a full update, the user interface is reconnected, and a new subscription request is received, the new subscription request will include a version number that is the most recent version number received by the user interface during the attempted full update. In one or more embodiments, in this case, the cloud information service will continue the full update by starting with the next version number after the version number received in the new subscription request.In one or more embodiments, the full update is complete when all object information for all objects of the resource type to which the cache ring corresponds, including any updates made before the full update was completed, is sent to the user interface, along with the highest version number in the cache ring of any entry for any object sent as part of the full update. In one or more embodiments, after a full update, the cloud information service will continue to provide object information updates and object deletion notifications based on the entries added to the cache ring, as long as the user interface remains connected to the cloud information service.In one or more embodiments, if the user interface is disconnected from the cloud information service for any reason at some point in the future and the user interface is reconnected to the cloud information service at some point after the disconnection, the method returns to step 202 if the subscription request is received at the time of reconnection.
[0078] In step 210, the method includes creating a list of changed objects. A list of changed objects may be provided, for example, by a cloud information service (e.g., the cloud information service 108 of Fig. 1). In one or more embodiments, if the version number received in the subscription request is equal to the version number of the entry in the middle of the cache ring (e.g., at the beginning of the binary search described above), then the cloud information service creates a list of all object changes that correspond to entries with a higher version number, i.e., entries in the half of the cache ring that have a higher version number than the middle entry, excluding detachment entries and update entries that may be in the cache ring for a full update performed for another user (which are skipped by the cloud information service). Thus, the list of changed objects may include entries containing the type of update entry and the type of deleted entry.
[0079] In one or more embodiments, the cloud information service adds to the list of changed objects all objects that correspond to entries in the cache ring that have a higher version number than the version number received in the subscription request, except for entries that are detach entries or update entries (which are skipped by the cloud information service) if the version number received in the subscription request is found anywhere else via the binary search.
[0080] In step 212, the method includes obtaining object information based on the modified object list. For example, the object information may be obtained from a cloud information service (e.g., the cloud information service 108 of Fig. 1). In one or more embodiments, the cloud information service uses the unique identifiers (contained in the entries in the cache ring) of the objects to obtain the information from the objects using any method for obtaining such information appropriate to the resource type (e.g., Kubernetes API for objects corresponding to a container deployment, other APIs for objects corresponding to physical resources, etc.).
[0081] In step 214, the method includes transmitting the object information obtained in step 212 to the user interface. In one or more embodiments, transmitting the updated object information includes sending the object information for all objects corresponding to an update entry type in the cache ring, and notifying of object deletions corresponding to entries in the cache ring with a deleted entry type for all entries in the cache ring with a higher version number than that received as part of the subscription request. For example, the object information may be obtained from a cloud information service (e.g., the cloud information service 108 of Fig. 1) be transmitted to the user interface using any technique for transmitting information (e.g. as messages in data packets over a network).
[0082] Fig. 3 shows an example scenario for creating a cache ring and providing updates from the cache ring in response to a subscription request with a version number according to one or more embodiments of this disclosure. Fig. The example shown in Figure 3 and explained below is a highly simplified example for explanation purposes only and is not intended to limit the scope of the embodiments described herein. One skilled in the art familiar with this disclosure will understand that such a scenario may involve a much larger cache ring, many more objects corresponding to the objects in the cache ring, etc., than described in Fig. 3. Furthermore, while the example illustrates certain aspects of the embodiments disclosed herein, not all possible aspects of such embodiments may be illustrated in this particular example.
[0083] Consider a scenario where a cloud information service is configured to create and maintain a cache ring with a size of five entries. The cache ring corresponds to a specific resource type (e.g., buckets) in a cloud infrastructure. There are at least fifteen resources of the resource type, and each resource has a corresponding object containing metadata about the object, which is updated periodically.
[0084] As in Fig. As shown in Figure 3, at time T-0, the cache ring has no entries because, at that time, no updates have occurred to objects corresponding to resources of the resource type for which the cache ring exists. The creation of the cache ring begins when the cloud information service begins receiving updates to objects corresponding to resources of the resource type to which the cache ring corresponds.
[0085] At time T-1, the Cloud Information Service is notified that an object has been updated. Therefore, the Cloud Information Service adds an entry to the cache ring with a unique identifier of the object, Object 1, the update type "Update," and a version number, Version 1.
[0086] At this point and at all subsequent points of the Fig. 3, where an entry is added to the cache ring, the cloud information service can determine whether any user interfaces are actively subscribed to receive updates about the resources of the resource type to which the cache ring corresponds. If there are active subscriptions, the cloud information service makes the updates available to the subscribed user interfaces, which are either the object information retrieved from the cloud information service or the notification that an object has been deleted. That this occurs is not repeated in this example for clarity. Also, for clarity, this scenario does not include a subscription request that requires a full refresh. An example that includes a full refresh can be found below in the description of Fig. 5.
[0087] Some time later, at time T-2, the Cloud Information Service receives a notification about an update of object 2 and adds an entry to the cache ring containing object 1, the entry type "Update" and a version number "Version 2".
[0088] At time T-3, the Cloud Information Service receives a notification about the deletion of object 2 and adds an entry to the cache ring containing object 1, the entry type "Deleted" and a version number "Version 3".
[0089] At time T-4, the Cloud Information Service receives a notification about an update of an object 15 and adds an entry to the cache ring containing the object 15, the entry type “Update” and a version number “Version 4”.
[0090] At time T-5, the Cloud Information Service receives a notification about an update to object 8 and adds an entry to the cache ring containing object 8, the entry type "Update", and the version number "Version 5".
[0091] At this point, the cache ring has five entries and is therefore full. Therefore, the next update the cloud information service receives will overwrite the first entry in the cache ring.
[0092] At time T-6, the cloud information service receives a notification of an update to an object 5 and adds an entry to the cache ring containing the object 5, the entry type "Update" and the version number "Version 5", overwriting the previous first entry in the cache ring.
[0093] At time T-7, the Cloud Information Service receives a notification of the deletion of an object 7 and adds an entry to the cache ring containing the object 7, the entry type "Deleted" and a version number "Version 7", overwriting the previous second entry in the cache ring.
[0094] At time T-8, the cloud information service receives a notification of an update to an object 6 and adds an entry to the cache ring containing the object 6, the entry type "Update" and the version number "Version 8", overwriting the previous third entry in the cache ring.
[0095] At time T-9, the cloud information service receives a subscription request from a user interface. The subscription request contains a version number of 4. The cloud information service then performs a binary search (as described above in the description of Fig. 2) and determines that version 4 is still in the cache ring. Based on this determination, the cloud information service creates a list of changed objects based on all entries in the cache ring with a version number higher than 4. The list of changed objects therefore includes the update of object 8 with entry version 5, the update of object 5 with entry version 6, the deletion of object 7 with entry version 7, and the update of object 6 with entry version 8. Based on the changed object list, the cloud information service retrieves object information for object 8, object 5, and object 6. The cloud information service then prepares a message for the user interface from which the subscription request was received and sends the message to the user interface.The message contains the updated object information for object 8, object 5 and object 6 as well as a notification about the deletion of object 7.
[0096] Fig. 4 shows an example scenario for providing updates from a cache ring in response to two subscription requests, one of which has no version number and the other of which has a version number not found in the cache ring, in accordance with one or more embodiments of this disclosure. Fig. The example shown in Figure 4 and explained below is a highly simplified example intended for illustrative purposes only and is not intended to limit the scope of the embodiments described herein. One skilled in the art familiar with this disclosure will understand that such a scenario may involve a much larger cache ring, many more objects corresponding to the objects in the cache ring, etc., than described in Fig. 4. Furthermore, while the example illustrates certain aspects of the embodiments disclosed herein, not all possible aspects of such embodiments may be illustrated in this particular example.
[0097] Consider a scenario where a cache ring has been created and is maintained by a cloud information service. The cache ring corresponds to a resource type, of which three resources exist in a cloud infrastructure. Thus, there are three objects corresponding to the three resources and containing metadata about the resources.
[0098] At time T-0, the Cloud Information Service is notified that an object has been updated. Therefore, the Cloud Information Service adds an entry to the cache ring with a unique object identifier, O-3, the update type "Update," and a version number, V-1.
[0099] At this point and at all subsequent points of the Fig. 4, where an entry is added to the cache ring that is not a "Sep." (i.e., separator) or "Refr." (i.e., "Refresh"), the cloud information service can determine whether any user interfaces are actively subscribed to receive updates about the resources of the resource type to which the cache ring corresponds. If there are active subscriptions, the cloud information service makes the updates, which are either the object information retrieved from the cloud information service or a notification that an object has been deleted, available to the subscribed user interfaces. That this occurs is not repeated in this example for the sake of clarity.
[0100] After T-0, the cloud information service receives a subscription request that does not contain a version number. Therefore, the cloud information service performs a full update. The full update starts at time T-1, where the cloud information service adds an entry with a separator entry type (in Fig. 4 as "Sep.") and a version number V-2. The Cloud Information Service then creates a list of all objects of the resource type corresponding to the cache ring, i.e., objects O-1, O-2, and O-3. The Cloud Information Service then adds an entry to the cache ring for each of the objects, each of which has an update entry that is Fig. 4 is represented as "Refr." and which have the versions V-3, V-4, and V-5. The Cloud Information Service then inserts another Sep. entry with version V-6 into the cache ring. In Fig. 4, the Sep. and Refr. entries for the first full refresh are each shown with a timestamp of T-1, since the separation and refresh entries are generally added at essentially the same time. During the full refresh, O-1 is updated twice, as shown by two other entries in the cache ring, V-7 and V-8. Therefore, the Cloud Information Service updates the list of objects to include O-1 with V-8 instead of V-3.
[0101] Also during the full update, another user interface sends a subscription request containing a version number of 0. The Cloud Information Service determines that there is no longer an entry with V-0 in the cache ring and therefore another full update must be performed for the second user interface. Accordingly, the Cloud Information Service adds entries V-9 to V-13 to the cache ring, which contains a Sep. entry, three Refr. entries for the three objects, and a second Sep. entry. Each of these entries is in Fig. 4 as corresponding to a timestamp T-8, since the detach and update entries are generally added at substantially the same time. When the Cloud Information Service determines whether updates were made to the objects during the first full update (V-3 to V-6), the Cloud Information Service skips the Sep. and Ref. entries for the second full update.
[0102] The Cloud Information Service completes the first full update by retrieving the object information for O-1, O-2, and O-3 and sending the object information as part of a message containing V-8. The Cloud Information Service completes the second full update with object information for the three objects and version V-13.
[0103] Before the second update is complete, the UI that required the first full update is disconnected from the cloud information service due to a network failure. The UI then reconnects to the cloud information service after the cloud information service adds the V-14 entry for an update to O-1. The reconnect subscription request includes V-8, which was received when the UI received the first full update. The cloud information service uses V-8 to perform a binary search on the cache ring. The cloud information service finds V-8, skips V-9 and V-13 because they are Sep. and Refr. entries, and retrieves the object information for O-1. The cloud information service then sends the object information along with the version number V-14 to the UI.
[0104] Fig. Figure 5 shows a block diagram of a computing device according to one or more embodiments of this disclosure. As described above, the embodiments described herein may be implemented using computing devices. For example, all or any portion of the Fig. 1 are implemented at least in part using one or more computing devices, and all or any part of the system shown in Fig. The method shown in Figure 2 may be performed using one or more computing devices, such as computing device 500. Computing device 500 may include one or more computer processors 502, non-persistent memory 504 (e.g., volatile memory such as RAM, cache memory, etc.), persistent storage 506 (e.g., a hard drive, an optical drive such as a CD drive or a DVD drive, flash memory, etc.), a communications interface 512 (e.g., a Bluetooth interface, an infrared interface, a network interface, an optical interface, etc.), input devices 510, output devices 508, and numerous other elements (not shown) and functions. Each of these components is described below.
[0105] In one or more embodiments, the computer processor(s) 502 may be an integrated circuit for processing instructions. The computer processor(s) may be, for example, one or more cores or micro-cores of a processor. The processor 502 may be a general-purpose processor configured to execute program code included in the software executing on the computing device 500. The processor 502 may be a special-purpose processor with specific instructions integrated into the processor design. The processor 502 may be an application-specific integrated circuit (ASIC), a graphics processing unit (GPU), a data processing unit (DPU), a tensor processing unit (TPU), an association processing unit (APU), a vision processing unit (VPU), a quantum processing unit (QPU), and / or various other processing units that utilize specialized hardware (e.g.,field-programmable gate arrays (FPGAs), system-on-a-chips (SOCs), digital signal processors (DSPs), etc.) etc. Although in . Fig. 4 only one processor 502 is shown, the computing device 500 may include any number of processors without departing from the scope of the embodiments disclosed herein.
[0106] Computing device 500 may also include one or more input devices 510, such as a touchscreen, a keyboard, a mouse, a microphone, a touchpad, an electronic pen, a motion sensor, or another type of input device. Input devices 510 may enable a user to interact with computing device 500. In one or more embodiments, computing device 500 may include one or more output devices 508, such as a screen (e.g., a liquid crystal display (LCD), a plasma display, a touchscreen, a cathode ray tube (CRT) monitor, a projector, or other display device), a printer, external storage, or other output device. One or more of the output devices may be the same as or different from the input device(s).The input and output device(s) may be connected locally or remotely to the computer processor(s) 502, the non-persistent memory 504, and the persistent memory 506. There are many different types of computing devices, and the input and output device(s) mentioned above may take other forms. In some cases, multimodal systems may allow a user to provide multiple types of input / output to communicate with the computing device 500.
[0107] Additionally, the communications interface 512 may facilitate connection of the computing device 500 to a network (not shown) (e.g., a local area network (LAN), a wide area network (WAN) such as the Internet, a mobile network, or any other type of network) and / or to another device, such as another computing device.The communication interface 512 may perform or facilitate the reception and / or transmission of wired or wireless communications using wired and / or wireless transceiver devices, including those having an audio jack / plug, a microphone jack / plug, a Universal Serial Bus (USB) port / plug, an Apple® Lightning® port / plug, an Ethernet port / plug, a fiber optic port / plug, a proprietary wired port / plug, Bluetooth® wireless signaling, BLE wireless signaling, IBEACON® wireless signaling, RFID wireless signaling, Near Field Communication (NFC) wireless signaling, Dedicated Short Range Communication (DSRC) wireless signaling, 802.11 WiFi radio signal transmission, WLAN signal transmission, Visible Light Communication (VLC), Worldwide Interoperability for Microwave Access (WiMAX), IR communication radio signal transmission, PSTN (Public Switched Telephone Network) signal transmission, ISDN (Integrated Services Digital Network) signal transmission, 3G / 4G / 5G / LTE radio signal transmission for cellular data networks, ad hoc network signal transmission, radio wave signal transmission, microwave signal transmission, infrared signal transmission, visible light signal transmission, ultraviolet light signal transmission, radio signal transmission along the electromagnetic spectrum, or any combination thereof.The communication interface 512 may also include one or more Global Navigation Satellite System (GNSS) receivers or transceivers used to determine the location of the computing device 500 based on the reception of one or more signals from one or more satellites associated with one or more GNSS systems. GNSS systems include, but are not limited to, the U.S. GPS, the Russian Global Navigation Satellite System (GLONASS), the Chinese BeiDou Navigation Satellite System (BDS), and the European Galileo GNSS. There is no limitation to operation on any particular hardware arrangement, and therefore, the basic functions here can be easily replaced with improved hardware or firmware arrangements as they are developed.
[0108] The term "computer-readable medium" includes, but is not limited to, portable or non-portable storage devices, optical storage devices, and various other media capable of storing, containing, or transmitting instructions and / or data. A computer-readable medium may be a non-transitory medium capable of storing data and which does not contain carrier waves and / or transient electronic signals that propagate wirelessly or over wired connections. Examples of a non-transitory medium may include, but are not limited to, a magnetic disk or tape, optical storage media such as CDs or DVDs, flash memory, storage, or memory devices.A computer-readable medium may store code and / or machine-executable instructions that may represent a procedure, function, subroutine, program, routine, subprogram, module, software package, class, or any combination of instructions, data structures, or program instructions. A code segment may be coupled to another code segment or hardware circuit by passing and / or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc., may be passed, relayed, or transmitted by any means, such as memory sharing, message passing, token passing, network transmission, or the like.
[0109] All or a portion of the components of computing device 500 may be implemented in circuitry. For example, the components may include electronic circuitry or other electronic hardware and / or may be implemented using electronic circuitry, which may include one or more programmable electronic circuits (e.g., microprocessors, GPUs, DSPs, CPUs, and / or other suitable electronic circuits) and / or may be implemented using computer software, firmware, or any combination thereof to perform the various operations described herein. In some aspects, the computer-readable storage devices, media, and memories may include a wired or wireless signal containing a bitstream and the like.However, non-transitory computer-readable storage media expressly exclude media such as energy, carrier signals, electromagnetic waves and signals as such.
[0110] In the above description, numerous details are set forth as examples of embodiments described herein. Those skilled in the art (who will also benefit from this disclosure) will understand that one or more embodiments described herein may be practiced without these specific details, and that numerous variations or modifications are possible without departing from the scope of the embodiments described herein. Certain details known to those skilled in the art may be omitted in order not to obscure the description.
[0111] In the above description, specific details are set forth to provide a thorough understanding of the aspects and examples presented herein. However, one skilled in the art will appreciate that the aspects may be practiced without these specific details. For clarity, in some cases, the present technology may be represented as functional blocks, which may include devices, device components, steps or routines in a method embodied in software, or combinations of hardware and software. Components other than those shown in the figures and / or described herein may be used. For example, circuits, systems, networks, processes, and other components may be represented as components in block diagram form so as not to unnecessarily obscure the aspects.In other instances, well-known circuits, processes, algorithms, structures, and techniques may be shown without unnecessary detail so as not to obscure aspects of the embodiments disclosed herein.
[0112] Individual aspects can be described above as a process or method, which are represented in the form of a flowchart, a sequence diagram, a data flow diagram, a structure diagram, or a block diagram. Although a flowchart can describe the operations as a sequential process, many of the operations can be performed in parallel or simultaneously. Furthermore, the order of operations can be rearranged. A process terminates when its operations are complete, but may contain additional steps not included in a diagram. A process can correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. If a process corresponds to a function, its termination can correspond to the function returning to the calling function or to the main function.
[0113] Methods and techniques according to the examples described above may be implemented using computer-executable instructions stored on computer-readable media or otherwise available. Such instructions may include, for example, instructions and data that cause or otherwise configure a general-purpose computer, a special-purpose computer, or a processing device to perform a particular function or set of functions. Portions of the computing resources used may be accessible over a network. The computer-executable instructions may be, for example, binary files, instructions in intermediate formats such as assembly language, firmware, source code, etc.Examples of computer-readable media that can be used to store instructions, information used, and / or information created during the methods according to the described examples include magnetic or optical disks, flash memory, USB devices with non-volatile memory, networked storage devices, etc.
[0114] In the above description of the figures, each component described in one figure may, in various embodiments described herein, correspond to one or more equally or similarly named and / or numbered components described in another figure. For brevity, the descriptions of these components are not repeated for each figure. Therefore, each individual embodiment of the components of each figure is incorporated by reference and is understood to be optionally present in any other figure having one or more equally or similarly named and / or numbered components.Moreover, in accordance with various embodiments described herein, any description of the components of a figure is to be understood as an optional embodiment that may be implemented in addition to, in conjunction with, or in place of the embodiments described with respect to one or more like or similarly named and / or numbered components in another figure.
[0115] Throughout the application, ordinal numbers (e.g., first, second, third, etc.) may be used as an adjective for an element (i.e., any noun in the application). The use of ordinal numbers is not intended to imply a particular order of the elements, nor to limit an element to a single element, unless explicitly stated, e.g., by the use of the terms "before," "after," "single," and other such terms. Rather, the use of ordinal numbers serves to distinguish between the elements. For example, a first element is to be distinguished from a second element, and the first element may comprise more than one element and may follow (or precede) the second element in the order of the elements.
[0116] As used herein, the term "operatively connected" or "operative connection" means that there is a direct or indirect connection between elements / components / devices that enables the elements to interact with each other in some way. The expression "operatively connected" can refer to, for example, any direct (e.g., a directly wired connection between two devices or components) or indirect (e.g., wired and / or wireless connections between any number of devices or components that connect the operatively connected devices) connection. Thus, any path on which information can be transmitted can be considered an operative connection.
[0117] While the embodiments discussed herein have been described with respect to a limited number of embodiments, those skilled in the art, given the benefit of this disclosure, will recognize that other embodiments may be developed that do not depart from the scope of the embodiments disclosed herein. Accordingly, the scope of the embodiments described herein should be limited only by the appended claims.
Claims
[1] A device comprising: one or more processors; and one or more non-transitory computer-readable media storing instructions that, when executed by the one or more processors, cause the one or more processors to: create, by a cloud information service executing on the one or more processors, a cache ring corresponding to a resource type and comprising a plurality of entries, each corresponding to an object corresponding to a resource of the resource type in a cloud infrastructure; receive a subscription request from a user interface and at the cloud information service, the subscription request including a version number; performing a cache ring search by the cloud information service using the version number to determine whether any of the plurality of entries in the cache ring contains the version number; generate a list of changed objects when the version number is in the cache ring, the list of changed objects comprising a plurality of object identifiers corresponding to a first set of entries within the plurality of entries in the cache ring having an update entry type or a delete entry type; based on the plurality of object identifiers in the list of changed objects, obtain object information for a first plurality of objects corresponding to a portion of the first set of entries having the type of the update entry; and transmit to the user interface the object information for the first plurality of objects and a notification of deletion of a second plurality of objects corresponding to a second portion of the first set of entries having the deletion entry type. [2] The apparatus of claim 1, wherein execution of the instructions further causes the one or more processors to: receive from a second user interface a second subscription request that does not contain a version number; and to perform a full update in response to the second subscription request. [3] The apparatus of claim 1, wherein execution of the instructions further causes the one or more processors to: receive from a second user interface a second subscription request containing a second version number; perform a second search on the cache ring using the second version number to determine whether any entry of the plurality of entries in the cache ring includes the second version number; and perform a full refresh if the second search finds that the second version number is not included in the cache ring. [4] The apparatus of claim 1, wherein the resource type is a container resource type, a bucket resource type, or an enclosure resource type. [5] The apparatus of claim 1, wherein each of the plurality of entries in the cache ring comprises a unique object identifier, an entry type, and a unique version number. [6] The apparatus of claim 1, wherein the search is a binary search. [7] The apparatus of claim 1, wherein the cloud information service, in generating the list of changed objects, skips a second set of entries within the plurality of entries in the cache ring that have a separator entry type or a refresh entry type. [8] A computer-implemented method comprising: Creating, by a cloud information service executing on one or more processors, a cache ring corresponding to a resource type and comprising a plurality of entries, each corresponding to an object corresponding to a resource of the resource type in a cloud infrastructure; Receiving a subscription request from a user interface at the cloud information service, the subscription request including a version number; Performing a cache ring search by the cloud information service using the version number to determine whether any of the plurality of entries in the cache ring contains the version number; Generating a list of changed objects when the version number is in the cache ring, the list of changed objects comprising a plurality of object identifiers corresponding to a first set of entries within the plurality of entries in the cache ring having an update entry type or a delete entry type; Obtaining, based on the plurality of object identifiers in the list of changed objects, object information for a first plurality of objects corresponding to a portion of the first set of entries having the update entry type; and Transmitting to the user interface the object information for the first plurality of objects and a notification of deletion of a second plurality of objects corresponding to a second portion of the first set of entries having the deletion entry type. [9] Computer-implemented methods according to claim 8, further comprising: Receiving a second subscription request that does not include a version number from a second user interface; and Perform a full update in response to the second subscription request. [10] Computer-implemented methods according to claim 8 further comprise: Receiving a second subscription request containing a second version number from a second user interface; Performing a second search in the cache ring using the second version number to determine whether any entry of the plurality of entries in the cache ring includes the second version number; and Perform a full refresh if the second lookup finds that the second version number is not in the cache ring. [11] The computer-implemented method of claim 8, wherein the resource type is a container resource type, a bucket resource type, or an enclosure resource type. [12] The computer-implemented method of claim 8, wherein each of the plurality of entries in the cache ring comprises a unique object identifier, an entry type, and a unique version number. [13] Computer-implemented methods according to claim 8, wherein the search is a binary search. [14] The computer-implemented method of claim 8, wherein the cloud information service, in generating the list of changed objects, skips a second set of entries within the plurality of entries in the cache ring that have a separator entry type or a refresh entry type. [15] A non-transitory, computer-readable medium storing programming for execution by one or more processors, the programming comprising instructions to: create, by a cloud information service executing on the one or more processors, a cache ring corresponding to a resource type and comprising a plurality of entries, each corresponding to an object corresponding to a resource of the resource type in a cloud infrastructure; receive a subscription request from a user interface and from the cloud information service, the subscription request including a version number; perform a search of the cache ring by the cloud information service using the version number to determine whether any of the plurality of entries in the cache ring contains the version number; generate a list of changed objects when the version number is in the cache ring, the list of changed objects comprising a plurality of object identifiers corresponding to a first set of entries within the plurality of entries in the cache ring having an update entry type or a delete entry type; based on the plurality of object identifiers in the list of changed objects, obtain object information for a first plurality of objects corresponding to a portion of the first set of entries having the type of the update entry; and transmit to the user interface the object information for the first plurality of objects and a notification of deletion of a second plurality of objects corresponding to a second portion of the first set of entries having the deletion entry type. [16] The non-transitory computer-readable medium of claim 15, comprising further instructions that, when executed by the one or more processors, cause the one or more processors to: receive from a second user interface a second subscription request that does not contain a version number; and to perform a full update in response to the second subscription request. [17] The non-transitory computer-readable medium of claim 15, comprising further instructions that, when executed by the one or more processors, cause the one or more processors to: receive from a second user interface a second subscription request containing a second version number; perform a second search on the cache ring using the second version number to determine whether any entry of the plurality of entries in the cache ring includes the second version number; and perform a full refresh if the second search finds that the second version number is not included in the cache ring. [18] The non-transitory computer-readable medium of claim 15, wherein the resource type is a container resource type, a bucket resource type, or an enclosure resource type. [19] The non-transitory computer-readable medium of claim 15, wherein each of the plurality of entries in the cache ring comprises a unique object identifier, an entry type, and a unique version number. [20] The non-transitory computer-readable medium of claim 15, wherein the cloud information service, in generating the list of changed objects, skips a second set of entries within the plurality of entries in the cache ring that have a separator entry type or a refresh entry type.
Citation Information
Patent Citations
Configuring subscriptions for objects of third-party applications integrated into a communication platform
US20220244817A1
Managing I / O requests
US9893972B1