Multi-customer versioning system for retrieving list of change objects
By maintaining the cache ring in the cloud information service, the inefficiency problem of re-providing resource information after the user interface is disconnected, and the efficiency of information updates and the reduction of resource consumption is achieved.
Patent Information
- Application Number
- CN202410901068.0
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2023-11-09
- Filing Date
- 2024-07-05
- Publication Date
- 2025-05-09
- Estimated Expiration
- 2044-07-05
AI Technical Summary
The inefficiency problem of reproviding all resource-related information after the user is disconnected from the user interface of the cloud infrastructure has resulted in increased computing resources, memory resources, network resources, transmission time and expenses.
By maintaining the cache ring in the cloud information service, recording the update information of resource types, and using the cache ring to provide the latest resource information updates when the user interface is reconnected, reducing duplicate information transmission.
It effectively reduces the amount of information transmitted to the user interface, improves the efficiency of information updates, reduces the consumption of computing resources and network resources, and maintains the latest status of resource information.
Smart Images

Figure CN119960816A_ABST
Abstract
Description
Technical Field
[0001] Embodiments of the present application relate to a multi-client version control system for retrieving a list of changed objects. Background Art
[0002] Users of computing resources often wish to view information related to such resources. For example, a user may access a user interface to view information about a resource. However, due to various reasons, a user may be disconnected from such a user interface from time to time. When the time of disconnection is long enough, the information about the resource may change. However, it may be inefficient to re-provide all resource-related information whenever the user interface is reconnected to an entity that can provide resource-related information. BRIEF DESCRIPTION OF THE DRAWINGS
[0003] Certain embodiments discussed herein will be described with reference to the drawings listed below. However, the drawings merely illustrate certain aspects or implementations of the embodiments described herein and are not intended to limit the scope of the claims.
[0004] Figure 1 A block diagram illustrating an example system for providing cloud infrastructure information to any number of users according to one or more embodiments disclosed herein;
[0005] Figure 2 An overview of an example method for providing information about cloud resources to a user interface according to one or more embodiments disclosed herein is shown;
[0006] Figure 3 An example scenario for generating 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 disclosed herein is shown;
[0007] Figure 4 An example scenario for providing updates from a cache ring in response to two subscription requests, one subscription request without a version number and another subscription request with a version number not found in the cache ring, according to one or more embodiments disclosed herein is shown; and
[0008] Figure 5 A block diagram of a computing device according to one or more embodiments of the present disclosure is shown. DETAILED DESCRIPTION
[0009] There may be various computing resources (e.g., any physical resources and / or logical resources) in a cloud infrastructure. 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 given user may access a user interface (e.g., a data service cloud console) in which the user may view information about various resources (e.g., the physical resources and / or logical resources described above) 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 particular cloud infrastructure.
[0010] However, the amount of information about resources corresponding to a particular user and the information that the user wishes to view may be large. For example, there may be hundreds, thousands, millions, etc. of resources in a particular cloud infrastructure. Therefore, each time a user accesses a user interface, whether for the first time or any subsequent time after being disconnected from a previous session (e.g., intentionally due to a connection interruption, etc.), all information about all resources associated with the user accessing the user interface must be retrieved and provided to the user interface for display to the user. However, transmitting large amounts of information about resources in a cloud infrastructure each time a user connects or reconnects to a cloud information service may be expensive in terms of computing resources, memory resources, network resources, transmission time, fees, etc.
[0011] To at least address the above-mentioned problem of providing information about resources in a cloud infrastructure to users interested in viewing such information, embodiments disclosed herein provide techniques for reducing the amount of information about resources transmitted to users while allowing the information available to the users to remain up to date with respect to the state of the resources of the cloud infrastructure.
[0012] In one or more embodiments, when a user first initiates (e.g., opens, executes, connects to, etc.) a user interface to view information about resources in a cloud infrastructure, a subscription request may be sent to a cloud information service operably connected to the cloud infrastructure where the resources exist. Such a subscription request may also occur each time the user interface reconnects to the service (e.g., after a disconnect). The 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 on a Kubernetes pod executed in a cloud infrastructure. In response to the subscription request, the cloud information service may access information about various resources and provide the information to the user in response to the subscription request, and provide updates, as long as the user interface remains connected and thereby remains subscribed.
[0013] In one or more embodiments, each of the resources in the cloud infrastructure corresponds to a data object that includes information about the resource. For example, a shell may have a firmware version, a certain number of components installed (each component is in a certain state (e.g., turned on, turned off, connected to or disconnected from the network, in a degraded state, etc.), any other relevant information related to the shell, etc., and the collection of such information about the shell can be considered an object. As another example, an application can be deployed in a Kubernetes container platform as a set of microservices implemented on multiple container pods, and all information about the application or any part thereof (e.g., container platform, microservices, pods, containers, devices on which such 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) for storing any type of information, and information about each bucket in the bucket (e.g., bucket size, space remaining in the bucket, bucket access policy, etc.) can be considered an object. Therefore, as used herein, an object can refer to metadata about a resource in a cloud infrastructure (e.g., a shell, a container deployment, a bucket, any physical or logical component, etc.). In one or more embodiments, objects can be grouped into resource types. For example, a shell resource type may refer to all objects corresponding to a shell, a container resource type may refer to a collection of objects corresponding to a container deployment, a bucket resource type may refer to a collection of objects corresponding to a bucket, and so on.
[0014] In one or more embodiments, the cloud information service is configured to create and maintain a cache ring for each resource type in the cloud infrastructure. There may be any number of cache rings depending on the resource types present in the cloud infrastructure. For clarity, the following description will focus on one cache ring for one resource type. However, one of ordinary skill in the art will appreciate that the description of cache rings applies to any number of cache rings for any number of resource types in the cloud infrastructure, and that the cloud information service may use various cache rings to provide information about any number of resource types to the user interface.
[0015] The cache ring may be implemented in memory (e.g., rather than some form of persistent storage). The cache ring may have entries added by the cloud information service when received by the cloud information service. Information may be provided to the cloud information service each time an object corresponding to a resource in the cloud infrastructure is updated. For example, when the firmware of the shell is updated, the object corresponding to the shell may be updated to reflect the new firmware version. As another example, when the access rights to the bucket are updated, the object corresponding to the bucket may be updated to reflect the new access policy. As another example, when the number of pods for implementing the container of the application increases, the object corresponding to the container deployment may be updated with a new number of pods. Other updates to resources may result in updates to the corresponding objects without departing from the scope of the embodiments disclosed herein. The cloud information service may use any way of receiving information to receive information about object updates. For example, the cloud information service may receive information about container deployments via a Kubernetes application programming interface (API) that provides information based on a custom resource definition (CRD). As another example, various APIs may exist and be configured to provide information about other resources (e.g., buckets, physical devices, logical components, etc.).
[0016] In one or more embodiments, each time the cloud information service is notified that an object has been updated, the cloud information service may add an entry to the cache ring corresponding to the resource type to which the updated object belongs. In one or more embodiments, each such update of an object of the resource type corresponding to the cache ring causes the cloud information service to add an entry to the cache ring until the configured maximum size of the cache ring (e.g., hundreds, thousands, millions, etc. of entries). In one or more embodiments, each entry added to the cache ring by the cloud information service includes a unique identifier (e.g., a unique name, a universally unique identifier (UUID), etc.) of the object being updated and a version data item. The version data item may include an encoding of the entry type (discussed below) and a representation of the version number of the entry. For example, the version data item may be a 32-bit number, in which the first two bits are used to encode one of four possible entry types and the remaining thirty bits are used to encode an integer value of the version number. In one or more embodiments, each entry added to the cache ring by the cloud information service includes a version number that is increased (e.g., increased by 1) from the previous entry added to the cache ring.
[0017] As described above, a cache ring corresponds to a resource type, and any number of objects (e.g., millions of buckets, each corresponding to a separate object) may exist for the resource type. In one or more embodiments, an update to any object of the resource type causes the cloud information service to add an entry to the appropriate 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 any specific object of the resource type. For example, an update to a first object of a specific resource type may cause the cloud information service to add a first entry with an identifier of the first object and a version data item to the cache ring, the version data item including two bits for indicating the update type and the remaining bits for indicating version one. The cloud information service may then be notified of an update to a second object of the same resource type. In response, the cloud information service may add a second entry with an identifier of the second object and a version data item to the cache ring, the version data item encoding the update type and including a representation of version two. Therefore, even if the objects are not the same object, the version number increases as the cloud information service adds the second entry to the cache ring, so that the second entry has a higher version number than the first entry.
[0018] 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 is performed when information in an object (e.g., metadata corresponding to a resource in a cloud infrastructure) changes. For example, when the firmware of a network component of a shell changes, the object may be changed to reflect the 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 a cloud infrastructure (e.g., a physical device may be removed, a container pod may be deleted, a bucket may be deleted, etc.), and the object corresponding to the resource may be deleted.
[0019] 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 complete refresh is performed. In one or more embodiments, a complete refresh (discussed further below) is performed whenever a subscription request is received that requires all objects of a resource type corresponding to a cache ring to be provided to a user interface from which a subscription request is received. In one or more embodiments, a subscription request is received whenever a user accesses a user interface, so that the user can view information about resources of the cloud infrastructure. Therefore, a subscription request can be received when a user first uses the user interface and connects to a cloud information service, and each time a user reconnects to a cloud information service after previously disconnecting from the cloud information service.
[0020] The initial subscription request may not include a version number. In one or more embodiments, if 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 corresponding to resources 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 an entry with a delimiter version type to the cache ring, and then adds entries for all objects of the resource type to which the cache ring corresponds, wherein each such entry has a refresh entry type, followed by another entry with a delimiter entry type, wherein the first delimiter entry, each refresh entry, and the second delimiter entry each have an increased version number.
[0021] In one or more embodiments, the cloud information service then checks to determine whether any updates have been made to any object during the creation of the object list and the addition of the separator and refresh entries to the cache ring. However, in other embodiments, the amount of time used to perform a full refresh is small, and therefore, the cloud information service may not check for updates that occur during an uninterrupted full refresh. Instead, in one or more embodiments, updates that occur during an uninterrupted full refresh can be processed after the full refresh is completed. In one or more embodiments, if no updates occur during that period of time, or in embodiments in which no updates are checked during an uninterrupted full refresh, the cloud information service sends information corresponding to each refresh entry to the user interface in one or more messages of any type (e.g., data packets on a network). In one or more embodiments, the information corresponding to the refresh entry is metadata about the resource to which the object corresponds. In one or more embodiments, the cloud information service uses the object's unique identifier (which is included in the entry in the cache ring) to obtain information from the object using any method suitable for the resource type to obtain such information (e.g., Kubernetes APIs for objects corresponding to container deployments, other APIs for objects corresponding to physical resources, etc.). In one or more embodiments, information from the object is sent via one or more messages and used to update a user interface to display the information to the user.
[0022] In one or more embodiments, if any updates to the object are added to the cache ring after the second separator entry of the full refresh but before the full refresh is completed, the cloud information service updates the object list to reflect any new version number changes to the one or more objects that were updated, so that the cloud information service knows the latest version number in the cache ring corresponding to the object sent to the user interface as part of the full refresh. In one or more embodiments, the latest version of the object is always sent to the user interface because the cloud information service does not maintain any history of the state of the object after the object is updated. In one or more embodiments, if another subscription request requiring a full refresh is received (e.g., from another user using another user interface) before the cloud information service sends object information to the user interface based on the first subscription request requiring a full refresh (e.g., when the user interface is disconnected during the full refresh (which is later restored)), the cloud information service can start a full refresh in response to the subsequent subscription request (as described above). However, in this case, in one or more embodiments, when determining whether any changes have occurred to the object during the first full refresh, the cloud information service will skip the separator entry and the refresh entries of the subsequent full refresh.
[0023] In one or more embodiments, if a disconnection occurs during a full refresh, when the user interface reconnects and a new subscription request is received, the new subscription request will include a version number that is the latest version number received by the user interface during the attempt to fully refresh. In one or more embodiments, in this case, the cloud information service will resume the full refresh by starting from the next version number after the version number received in the new subscription request. In one or more embodiments, the full refresh is completed when all object information of all objects of the resource type corresponding to the cache ring (including any updates that occurred before the full refresh is completed) is sent to the user interface together with the highest version number in the cache ring of any entry of any object sent as part of the full refresh. Additionally or alternatively, during a full refresh, object information can be sent in a series of messages, each of which has object information from any number of objects. In such an embodiment, even if there is a higher version number in the cache ring, for each message, the highest version number of the object sent in the message is also sent to the user interface.
[0024] In one or more embodiments, after the initial full refresh, if the user remains connected, the subscription is active and the cloud information service will send any updates that occur to the object (each update will result in a new entry being added to the cache ring), skipping any entries that were added to the cache ring as part of a full refresh by another user using another user interface. In one or more embodiments, new entries that are not separator type entries or refresh type entries (skipped when providing updates to an active subscription) can be update type entries or deletion entries. As described above, for any update entries, the cloud information service will obtain the object information and send the object information to the user interface. In one or more embodiments, for any deletion entries, the cloud information service sends a notification to the user interface that the object was deleted. In one or more embodiments, the user interface will update the user's information in response to any updates received from the cloud information service, and modify the information displayed in the user interface to reflect any deletions notified to the user interface by the cloud information service.
[0025] In one or more embodiments, the user interface may be disconnected from the cloud information service for any reason. For example, the disconnection may be intentional (e.g., the user closes the user interface), or may be caused by a connection interruption between the user interface and the cloud information service (e.g., a network interruption). In one or more embodiments, if the user has previously been connected to the cloud information service, the subscription request received as part of the reconnection will include a version number that is the highest version number that existed in the cache ring when the user last connected. For example, if the user interface is initially connected, and a full refresh is completed, the version number will be the highest version number received as part of the full refresh, or the highest version number of any updates received after the full refresh while the user remains 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 any reconnection after the initial connection), the cloud information service performs a binary search using the version number to determine whether the version number received in the subscription request is still in the cache ring. In one or more embodiments, the fact that the version of an entry added to the cache ring by the cloud information service is always increased allows the cloud information service to perform a binary search.
[0026] In one or more embodiments, the binary search is performed starting from the middle entry in the cache ring. 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, the cloud information service makes a list of all object changes corresponding to the entry with the higher version number, which will be the entries in the half of the cache ring with a higher version number than the middle entry, but the separator entry and refresh entry (which are skipped by the cloud information service) that can be used in the cache ring to perform a full refresh for another user are excluded. In one or more embodiments, if the version number received in the subscription request is not equal to the version number of the middle entry of the cache ring, the half of the cache in which the version number cannot exist is eliminated from the search, and the search is repeated using the middle elements 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 equal to the version number received in the subscription request, or until the cloud information server determines that the version number is no longer in the cache ring. For example, the cache ring is 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, if the disconnection period is long enough, the version number received in the subscription request may not exist in the cache ring because it may have been overwritten by a newer entry in the cache ring.
[0027] In one or more embodiments, if the version number received in the subscription request is found via a binary search, the cloud information service will provide updated object information or object deletion notifications for all entries in the cache ring with a version number higher than the version number received in the subscription request, except for separator entries or refresh 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 a binary search, the cloud information service performs a full refresh as described above, and information for all objects is sent to the user interface from which the subscription request was received.
[0028] Certain embodiments of the present disclosure may allow any number of user interfaces to receive and maintain current information about resources in a cloud infrastructure without having to send all information about resources each time the user interface connects to a cloud information service to seek resource information via a subscription request. In one or more embodiments, the amount of information transmitted from a cloud information service to a user interface is reduced by maintaining a cache ring for each resource type in the cloud infrastructure, wherein entries in the cache ring include an object identifier, an entry type, and a version number, which allows the cloud information service to provide information only about objects that have been updated or deleted, and to perform a full refresh of all information only when the user interface first connects to the cloud information service, or when a version number received in a subscription request as part of a reconnection is no longer within the cache ring.
[0029] Figure 1 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 is shown. Figure 1 As shown, the system may include a cloud infrastructure 100. The cloud infrastructure 100 may include cloud resources 102 and cloud information services 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 will be described below.
[0030] In one or more embodiments, the 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 can host any number of cloud-based applications, as-a-service (aaS) products (e.g., software aaS (SaaS), infrastructure aaS (IaaS), platform aaS (PaaS), storage aaS (STaaS), etc.), microservices, container platforms, virtualized environments, infrastructure components, power supplies, racks, enclosures, environmental controls, physical space, cabling, etc. The cloud infrastructure 100 may include one or more private clouds, public clouds, and / or hybrid clouds. The cloud infrastructure 100 may be located in a single physical location and / or environment, or distributed across any number of separate locations and / or environments. Without departing from the scope of the embodiments disclosed herein, the cloud infrastructure 100 may be owned or otherwise maintained by a particular entity, or provided by any number of separate entities.
[0031] In one or more embodiments, cloud infrastructure 100 includes cloud resources 102. In one or more embodiments, cloud resources, as used herein, refer to portions of cloud infrastructure 100 that may be used or otherwise accessed by any number of users (e.g., users 110) of cloud infrastructure 100. For example, cloud resources 102 may include portions of cloud infrastructure 100 used by users to access aaS offerings, composable infrastructure, virtualized environments, microservices, storage and backup services, database management, and the like.
[0032] In one or more embodiments, cloud resources 102 include physical resources 104. In one or more embodiments, physical resources 104 include any physical (e.g., hardware) components of cloud resources, such as, for example, computing devices, network components, storage components, racks, enclosures, and the like.
[0033] In one or more embodiments, as used herein, a computing device (not shown) may be any single computing device, a group 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, a portion of a device, or any group of devices capable of electronically processing instructions, and may include, but is not limited to, any of the following: one or more processors (e.g., components including circuit systems), memory (e.g., random access memory (RAM)), (multiple) input and output devices, non-volatile storage hardware (e.g., solid state drive (SSD), persistent memory (Pmem) device, hard disk drive (HDD)), one or more physical interfaces (e.g., network ports, storage ports), any number of other hardware components (not shown), and / or any combination thereof.
[0034] Examples of computing devices include, but are not limited to, servers (e.g., blade servers in blade server chassis, rack servers in racks, etc.), desktop computers, mobile devices (e.g., laptops, smart phones, personal digital assistants, tablet computers, automotive computing systems, and / or any other mobile computing devices), storage devices (e.g., disk drive arrays, Fibre Channel storage devices, Internet Small Computer System Interface (iSCSI) storage devices, tape storage devices, flash arrays, network attached storage devices, etc.), network devices (e.g., switches, routers, multilayer switches, etc.), Internet of Things (IoT) devices, node arrays of computing resources, supercomputing devices, data centers or any portion thereof, and / or any other type of computing device having the above requirements. In one or more embodiments, any or all of the above examples may be combined to create a system of such devices, or may be divided into separate logical devices, which may be collectively referred to as computing devices. Other types of computing devices may be used without departing from the scope of the embodiments described herein, such as, for example, Figure 5 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.
[0035] In one or more embodiments, the storage device and / or memory of the computing device or computing device system, or any other component of the physical resource 104, may be and / or include one or more data repositories for storing any number of data structures storing any amount of data (e.g., information). In one or more embodiments, a data repository is any type of storage unit and / or device for storing data (e.g., a file system, a database, a collection of tables, RAM, and / or any other storage mechanism or medium). In addition, a data repository may include multiple different storage units and / or devices. Multiple different storage units and / or devices may or may not be of the same type or located at the same physical location.
[0036] In one or more embodiments, any storage and / or memory of a computing device, a system of a computing device, or any other component of physical resources 104 may be considered, in whole or in part, as a non-transitory computer-readable medium storing software and / or firmware.
[0037] 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 computing device system, cause the one or more processors and / or other hardware components to perform operations in accordance with one or more embodiments described herein.
[0038] The software instructions may be in the form of computer-readable program code for executing the methods, processes, etc. of the embodiments described herein, and may, by way of example, be stored in whole or in part, temporarily or permanently, on a non-transitory computer-readable medium, such as a compact disk (CD), a digital versatile disk (DVD), a storage device, a floppy disk, a tape storage device, flash memory, a physical memory, or any other non-transitory computer-readable medium.
[0039] Physical resources 104 may include any number of computing devices, which may be collectively referred to as computing devices as used herein. All or any portion of the computing devices may be the same type or different types of computing devices.
[0040] In one or more embodiments, cloud resources 102 include logical resources 106. In one or more embodiments, as used herein, logical resources 106 include any software, firmware, application, container platform, virtualization environment, microservice, communication protocol, storage bucket, etc. that is executed at least in part using physical resources 104.
[0041] For example, in one or more embodiments, all or any portion of the logical resources 106 may be at least partially managed by a container platform (not shown), such as, for example, Kubernetes. In one or more embodiments, the container platform includes a control plane (not shown). The control plane of the container platform may include various components for managing logical resources (e.g., one or more API servers, controllers, schedulers, etc.). For example, the control plane may be implemented on one or more master nodes, each of which may be a computing device (as described above).
[0042] In one or more embodiments, cloud resources 102 can host any number of cloud-based applications as part of logical resources 106, which can be implemented using a microservices architecture that includes any number of application microservices, as well as various other microservices (e.g., user interface microservices, any number of general-purpose microservices, etc.) and various communication components that allow the various microservices to interact with other microservices, other parts of cloud resources 102, cloud infrastructure 100, and / or entities and / or devices external to cloud infrastructure 100.
[0043] In one or more embodiments, microservices may be implemented using any number of containers, container pods, etc. Each microservice may implement a specific service component that constitutes part of an overall cloud-based application that is deployed as at least a portion of logical resources 106 .
[0044] In one or more embodiments, logical resources 106 may include public microservices, which may be a set of services that are common to all or any portion of other microservices of one or more cloud-based applications deployed using the microservices architecture in cloud infrastructure 100. Examples of public microservices include, but are not limited to, database services, authorization services, workflow orchestration microservices, auditing microservices, management microservices, and the like.
[0045] In one or more embodiments, the logical resources 106 include various communication components. In one or more embodiments, as used herein, the communication components include logical devices and / or components that implement any number of communication protocols that allow communication within the cloud resources 102. For example, various communication protocols may include, but are not limited to, a representative state transfer (REST) protocol, a remote procedure call (RPC) framework (e.g., gRPC), a Kafka protocol, etc., and other underlying protocols that may be used in communication, such as a hypertext transfer protocol (HTTP), a transmission control protocol (TCP), a user datagram protocol (UDP), etc. Such protocols can be used to transmit data, commands, etc. For example, the communication components of the logical resources 106 can be implemented at least in part using the network devices of the physical resources 104.
[0046] In one or more embodiments, logical resources 106 may include any number (e.g., hundreds, thousands, millions) of buckets (e.g., Amazon S3 buckets). Buckets may be cloud storage containers for storing any type or amount of information. 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.
[0047] although Figure 1 Not shown, but 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 includes information about the resource.
[0048] For example, a blade server housing may have a firmware version, a certain number of components installed, each in a particular state (e.g., turned on, turned off, connected to or disconnected from a network, in a degraded state, functioning normally, etc.), any other relevant information related to the housing, etc., and a collection of such information about the housing may be considered an object. As another example, a cloud-based application may be deployed in a Kubernetes container platform as a set of microservices implemented on multiple container pods, each container pod having any number of containers, and all information about the application or any portion thereof (e.g., the container platform, microservices, pods, containers, devices on which such things are deployed, etc.) may be considered an object. As another example, a user may have created any number of buckets (e.g., Amazon S3 buckets) for storing any type of information, and information about each of the buckets (e.g., bucket size, space remaining in the bucket, access policy for the bucket, etc.) may be considered an object. Thus, as used herein, an object may refer to metadata about a resource (e.g., a housing, a container deployment, a bucket, any physical or logical component, etc.) in cloud resources 102.
[0049] In one or more embodiments, objects may be grouped into resource types. For example, a shell resource type may refer to all objects corresponding to a shell, a container resource type may refer to a collection of objects corresponding to a container deployment, a bucket resource type may refer to a collection of objects corresponding to a bucket, and so on.
[0050] In one or more embodiments, the cloud infrastructure 100 includes a cloud information service 108. In one or more embodiments, the cloud information service is any hardware, software, firmware, or any combination thereof that is configured to maintain information about objects corresponding to any of the physical resources 104 and / or logical resources 106 of the cloud resources 102 of the cloud infrastructure 100 (as described above), and to provide such information to any number of user interfaces (e.g., user interface 112, described below). For example, the cloud information service 108 may include any number of computing devices (as described above). As another example, the cloud information service may be implemented as part of a cloud management service executed in a cluster pod of a cluster maintained by an entity that at least partially manages the cloud infrastructure 100.
[0051] In one or more embodiments, the cloud information service is configured to create and maintain cache rings for each resource type in the cloud infrastructure. There may be any number of cache rings, depending on the resource types present in the cloud infrastructure. In one or more embodiments, the cache rings are used to maintain a versioned history of updates to objects corresponding to the physical resources 104 and / or logical resources 106 of the cloud resources 102, and to provide information about the objects to any number of user interfaces. The cache rings maintained by the cloud information service, and the operations of the cloud information service associated with maintaining the cache rings and providing information to the user interfaces are described below. Figure 2 , Figure 3 and Figure 4 is discussed further in the description of .
[0052] although Figure 1 The cloud information service 108 is shown as part of the same cloud infrastructure 100 as the cloud resources 102, but the cloud information service 108 may alternatively be deployed in a separate cloud infrastructure and operatively connected to the cloud infrastructure 100. Figure 1 Only a single cloud information service 108 is shown, but the system may include any number of cloud information services without departing from the scope of the embodiments disclosed herein.
[0053] In one or more embodiments, the system includes any number of users (e.g., users 110). In one or more embodiments, a user 110 is any entity (e.g., a human, a software application, etc.) seeking to access information about any cloud resource 102 of the cloud infrastructure 100. In one or more embodiments, information about any cloud resource 102 of the cloud infrastructure 100 can be obtained by the user 110 via one or more user interfaces (e.g., user interface 112). In one or more embodiments, the user interface 112 is any hardware, software, firmware, or any combination thereof configured to allow the user 110 to view or otherwise obtain information about all or any portion of the cloud resources 102 of the cloud infrastructure 100. In one or more embodiments, the user interface is operably connected to the cloud information service 108 at least at some time. A given user (e.g., user 110) can access a user interface 112 (e.g., a data service cloud console) in which the user 110 can view information about various resources (e.g., the physical resources 104 and / or logical resources 106 described above) present in the cloud infrastructure 100. There may be any number of users using any number of user interfaces wishing to view information about resources in a particular cloud infrastructure.
[0054] In one or more embodiments, when user 110 first initiates (e.g., opens, executes, connects to, etc.) user interface 112 to view information about resources in cloud infrastructure 100, a subscription request may be sent to cloud information service 108 operatively connected to cloud resources 102 in which physical resources 104 and logical resources 106 exist. Such a subscription request 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, cloud information service 108 may access information about cloud resources 102 and provide the information to user interface 112 in response to the subscription request, and provide updates, as long as user interface 112 remains connected and thereby remains subscribed.
[0055] Although Figure 1 Although a particular configuration of components is shown, other configurations may be used without departing from the scope of the embodiments described herein. Figure 1 Certain components are shown as part of the same device, component, and / or infrastructure, but any component may be grouped into a collection of one or more components that may exist and execute as part of any number of separate and operably connected devices. As another example, a single component may be configured to execute a function executed by Figure 1 All or any part of the functions performed by all or any part of the components shown. Therefore, the embodiments disclosed herein should not be limited to Figure 1 Configuration of components shown.
[0056] Figure 2 An overview of an example method for providing information about cloud resources to a user interface according to one or more embodiments disclosed herein is presented. Figure 2 All or any part of the method shown may be provided, for example, by a cloud information service (e.g., Figure 1 The cloud information service 108) as shown and described above is executed.
[0057] Although Figure 2 The various steps in the flowchart shown are presented and described in sequence, but some or all of the steps may be performed in a different order, some or all of the steps may be combined or omitted, Figure 2 Other steps not shown in the figure may be performed in addition, and / or some or all steps may be combined with Figure 2 The other steps are executed in parallel.
[0058] In step 200, the method includes generating a cache ring corresponding to a resource type. For example, the cache ring can be generated by a cloud information service (e.g., Figure 1In one or more embodiments, the cloud information service is configured to create and maintain a cache ring for each resource type in the cloud infrastructure. Depending on the resource types present in the cloud infrastructure, there may be any number of cache rings.
[0059] For the sake of clarity, the following description will focus on one cache ring for one resource type. However, one of ordinary skill in the art will appreciate that the description of cache rings is applicable to any number of cache rings for any number of resource types in a cloud infrastructure, and that a cloud information service can use various cache rings to provide information about any number of resource types to a user interface.
[0060] The cache ring may be implemented in memory (e.g., rather than some form of persistent storage). The cache ring may initially have no entries. The cache ring may have entries added by the cloud information service when received by the cloud information service. Information may be provided to the cloud information service each time an object corresponding to a resource in the cloud infrastructure is updated. For example, when the firmware of the shell is updated, the object corresponding to the shell may be updated to reflect the new firmware version. As another example, when access permissions to a bucket are updated, the object corresponding to the bucket may be updated to reflect the new access policy. As another example, when the number of pods for implementing a container of 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 corresponding objects without departing from the scope of the embodiments disclosed herein.
[0061] The cloud information service may receive information about object updates using any means of receiving information. For example, the cloud information service may receive information about container deployments via a Kubernetes application programming interface (API) that provides information based on a custom resource definition (CRD). As another example, various APIs may exist and be configured to provide information about other resources (e.g., buckets, physical devices, logical components, etc.).
[0062] In one or more embodiments, each time the cloud information service is notified that an object has been updated, the cloud information service can add an entry to the cache ring corresponding to the 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 a configured maximum size of the cache ring (e.g., hundreds, thousands, millions, etc. of entries).
[0063] In one or more embodiments, each entry added to the cache ring by the cloud information service includes a unique identifier of the object being updated (e.g., a unique name, a universally unique identifier (UUID), etc.) and a version data item. The version data item may include an encoding of the entry type (discussed below) and a representation of the version number of the entry. For example, the version data item may be a 32-bit number, where the first two bits are used to encode one of four possible entry types and the remaining thirty bits are used to encode an integer value of the version number (which means that the cache ring can have up to 1,073,741,823 entries). In one or more embodiments, each entry added to the cache ring by the cloud information service includes a version number that is incremented (e.g., incremented by 1) from the previous entry added to the cache ring.
[0064] 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 a separate object). 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 appropriate cache ring. However, in one or more embodiments, the version number represents a new entry in the cache ring and does not correspond to any particular object of the resource type.
[0065] 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 having an identifier of the first object and a version data item, the version data item including two bits for indicating the update type and a remaining bit for indicating version one. The cloud information service may then be notified of an update to a second object of the same resource type. In response, the cloud information service may add a second entry to the cache ring having an identifier of the second object and a version data item, the version data item encoding the update type and including a representation of version two. Therefore, even if the objects are not the same object, the version number increases as the cloud information service adds the second entry to the cache ring, so that the second entry has a higher version number than the first entry.
[0066] 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 is performed when information in an object (e.g., metadata corresponding to a resource in a cloud infrastructure) changes. For example, when the firmware of a network component of a shell changes, the object may be changed to reflect the 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 a cloud infrastructure (e.g., a physical device may be removed, a container pod may be deleted, a bucket may be deleted, etc.), and the object corresponding to the resource may be deleted.
[0067] 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 the entry types used whenever a full refresh is performed. In one or more embodiments, a full refresh (discussed further below) is performed whenever a subscription request is received that requires all objects of a resource type corresponding to a cache ring to be provided to a user interface from which the subscription request was received.
[0068] In one or more embodiments, although Figure 2 , but the cloud information service can use the cache ring generated as described above to provide services for existing subscriptions. In one or more embodiments, any number of users using any number of user interfaces can connect to the cloud information service to receive updates about various physical and logical resources of the cloud infrastructure. Such a subscription can 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 realizes that an object corresponding to a resource of a resource type of the cache ring has been updated, the cloud information service 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 any 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 the object information of the updated object and send the updated object information to all active subscribers who are to receive updates of the resource type of the cache ring.
[0069] In step 202, the method includes receiving a subscription request from a user interface. For example, the request may be received by a cloud information service (e.g., Figure 1 The subscription request is received by the cloud information service 108 of the user. In one or more embodiments, the subscription request is received each time the user accesses the user interface, so that the user can view information about the resources of the cloud infrastructure. Therefore, the subscription request can be received when the user first uses the user interface and connects to the cloud information service, and each time the user reconnects to the cloud information service after previously disconnecting from the cloud information service.
[0070] In step 204, the method includes determining whether the subscription request received in step 202 includes a version number. For example, the determination may be made by a cloud information service (e.g., Figure 1The initial subscription request may not include a version number. Without departing from the scope of the embodiments disclosed herein, there may be other scenarios for receiving a subscription request that does not include a version number. In one or more embodiments, a subscription request received from a user interface that has previously been connected to a cloud information service will typically include the highest version number in the cache ring that existed when the user interface was last connected, and this highest version number 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 (for example, as described above, each time an update to object information is provided during a subscription activity).
[0071] In one or more embodiments, if the subscription request does not include a version number, the method proceeds to step 208. In one or more embodiments, if the subscription request includes a version number, the method proceeds to step 206.
[0072] In step 206, the method includes determining whether the version number in the subscription request is a version number in an entry in the current cache ring. Figure 1 The cloud information service 108 of the user interface may make this determination. In one or more embodiments, the user interface may be disconnected from the cloud information service for any reason. For example, the disconnection may be intentional (e.g., the user closes the user interface), or may be caused by a disruption in the connection between the user interface and the cloud information service (e.g., a network outage).
[0073] In one or more embodiments, if the user interface has previously been connected to the cloud information service, the subscription request received as part of the reconnection will include a version number that is the highest version number that existed in the cache ring when the user interface was last connected. For example, if the user interface is initially connected, and a full refresh is done, the version number will be the highest version number received as part of the full refresh, or the highest version number of any updates received after the full refresh while the user remains connected to the cloud information service.
[0074] In one or more embodiments, in response to a subscription request that includes a version number (e.g., for any reconnection after the initial connection), the cloud information service performs a binary search using the version number to determine whether the version number received in the subscription request is still in the cache ring. In one or more embodiments, the fact that the version of an entry added to the cache ring by the cloud information service is always incremented allows the cloud information service to perform a binary search.
[0075] In one or more embodiments, the binary search is performed starting from the middle entry in the cache ring. In one or more embodiments, if the version number received in the subscription request is not equal to the version number of the middle entry of the cache ring, half of the cache in which the version number cannot exist is eliminated from the search, and the search is repeated using the middle elements 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 equal to the version number received in the subscription request, or until the cloud information server determines that the version number is no longer in the cache ring. For example, the cache ring is 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 starting point of the cache ring to add a new entry. Therefore, in one or more embodiments, if the disconnection period is long enough, the version number received in the subscription request may not exist in the cache ring because it may have been covered by a newer entry in the cache ring.
[0076] In one or more embodiments, if the version number in the subscription request is found in the cache ring, the method proceeds to step 210. In one or more embodiments, if the version number in the subscription request is not found in the cache ring, the method proceeds to step 208.
[0077] In step 208, the method includes performing a full refresh. For example, a full refresh may be performed by a cloud information service (e.g., Figure 1 In one or more embodiments, when it is determined that the received subscription request does not include a version number (as determined in step 204), or includes a version number that no longer exists in the cache ring (as determined in step 206), a full refresh is performed.
[0078] 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 corresponding to resources 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 an entry with a delimiter version type to the cache ring, and then adds entries for all objects of the resource type to which the cache ring corresponds, wherein each such entry has a refresh entry type, followed by another entry with a delimiter entry type, wherein the first delimiter entry, each refresh entry, and the second delimiter entry each have an incremented version number.
[0079] In one or more embodiments, the cloud information service then checks to determine whether any updates were made to any objects during the time that the object list was created and the separator and refresh entries were added to the cache ring. In one or more embodiments, if no updates occurred during that time, the cloud information service sends information corresponding to each refresh entry to the user interface in one or more messages of any type (e.g., data packets on a network).
[0080] In one or more embodiments, the information corresponding to the refresh entry is metadata about the resource to which the object corresponds. In one or more embodiments, the cloud information service uses the object's unique identifier (which is included in the entry in the cache ring) to obtain information from the object using any method appropriate for the resource type to obtain such information (e.g., a Kubernetes API for objects corresponding to container deployments, other APIs for objects corresponding to physical resources, etc.). In one or more embodiments, the information from the object is sent to a user interface via one or more messages of any type and is used to update the user interface to display information to the user.
[0081] In one or more embodiments, if any updates to the object are added to the cache ring after the second delimiter entry of the full refresh but before the full refresh is complete, the cloud information service updates the object list to reflect any new version number changes to the updated object or objects, so that the cloud information service knows the latest version number in the cache ring corresponding to the object sent to the user interface as part of the full refresh. In one or more embodiments, the latest version of the object is always sent to the user interface because the cloud information service does not maintain any history of the state of the object after it is updated.
[0082] In one or more embodiments, if another subscription request requiring a full refresh is received (e.g., from another user using another user interface) before the cloud information service sends object information to the user interface based on the first subscription request requiring a full refresh, 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, when determining whether any changes have occurred to the object during the first full refresh, the cloud information service will skip the delimiter entry and the refresh entries for the subsequent full refresh.
[0083] In one or more embodiments, if a disconnection occurs during a full refresh, when the user interface reconnects and a new subscription request is received, the new subscription request will include a version number that is the latest version number received by the user interface during the attempt to fully refresh. In one or more embodiments, in this case, the cloud information service will resume the full refresh by starting from the next version number after the version number received in the new subscription request. In one or more embodiments, the full refresh is completed when all object information of all objects of the resource type corresponding to the cache ring (including any updates that occurred before the full refresh was completed) is sent to the user interface together with the highest version number in the cache ring of any entry of any object sent as part of the full refresh. In one or more embodiments, after the full refresh, the cloud information service will continue to provide updates to object information 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 time in the future, and the user interface reconnects to the cloud information service at some time after the disconnection, when the subscription request is received upon reconnection, the method returns to step 202.
[0084] In step 210, the method includes generating a list of changed objects. For example, the list of changed objects may be generated by a cloud information service (e.g., Figure 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 above binary search), the cloud information service makes a list of all object changes corresponding to the entry with the higher version number, which will be the entries in the half of the cache ring that have a higher version number than the middle entry, except for the separator entry and the refresh entry (which is skipped by the cloud information service) that can be used in the cache ring to perform a full refresh for another user. Thus, the list of changed objects can include entries, including update entry types and delete entry types.
[0085] In one or more embodiments, if the version number received in the subscription request is found via binary search at any other point, the cloud information service adds to the list of changed objects all objects corresponding to entries in the cache ring that have a higher version number than the version number received in the subscription request, except for delimiter entries or refresh entries (which are skipped by the cloud information service).
[0086] In step 212, the method includes obtaining object information based on the changed object list. For example, the object information can be provided by a cloud information service (e.g., Figure 1In one or more embodiments, the cloud information service uses the object's unique identifier (which is included in the entry in the cache ring) to obtain information from the object using any method of obtaining such information appropriate for the resource type (e.g., a Kubernetes API for objects corresponding to container deployments, other APIs for objects corresponding to physical resources, etc.).
[0087] 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 object information corresponding to an updated entry type in the cache ring and object deletion notifications corresponding to entries in the cache ring having a deleted entry type for all entries in the cache ring having a version number higher than the version number received as part of the subscription request. For example, the object information may be transmitted from a cloud information service (e.g., a server) using any technique for transmitting information (e.g., as a message in a data packet over a network). Figure 1 The cloud information service 108) is transmitted to the user interface.
[0088] Figure 3 An example scenario for generating 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 the present disclosure is shown. Figure 3 The examples shown in and discussed below are highly simplified examples that are used for explanation purposes only and are not intended to limit the scope of the embodiments described herein. A person of ordinary skill in the art having the benefit of this disclosure will appreciate that Figure 3 Such a scenario may include cache rings of much larger sizes, more objects corresponding to objects in the cache rings, etc. than shown. Furthermore, while this example illustrates certain aspects of the embodiments disclosed herein, not all possible aspects of these embodiments may be illustrated in this particular example.
[0089] Consider a scenario where a cloud information service is configured to generate and maintain a cache ring that is sized to allow five entries. The cache ring corresponds to a specific resource type (e.g., bucket) in the cloud infrastructure. The resource type has at least fifteen resources, and each resource has a corresponding object that includes metadata associated with the object that is updated from time to time.
[0090] like Figure 3As shown, at time T-0, the cache ring has no entries because there is no update to the object corresponding to the resource of the resource type in which the cache ring exists. When the cloud information service starts to receive updates to the object corresponding to the resource of the resource type to which the cache ring corresponds, the generation of the cache ring will begin.
[0091] At time T-1, the cloud information service is notified that the object is updated. Therefore, the cloud information service adds an entry to the cache ring, which has the object's unique identifier Object 1, the update type "Update" and the version number Version 1.
[0092] At this point, and in Figure 3 At all subsequent points in the example shown where entries are added to the cache ring, the cloud information service can determine whether any user interface is actively subscribed to receive updates about resources of the resource type to which the cache ring corresponds. If there is an active subscription, the cloud information service will provide updates to the subscribed user interface, which will be either information about the object retrieved by the cloud information service, or a notification that the object was deleted. For clarity, this scenario is not repeated in this example. Also, for clarity, this scenario does not include any subscription requests that require a full refresh. In the following Figure 5 An example including a complete refresh can be found in the description.
[0093] Some time later, at time T-2, the cloud information service receives an update notification for object 2 and adds an entry to the cache ring, the entry including object 1, entry type "update" and version number "version 2".
[0094] At time T-3, the cloud information service receives a deletion notification of object 2 and adds an entry to the cache ring, the entry including object 1, entry type "Deleted" and version number "Version 3".
[0095] At time T-4, the cloud information service receives an update notification for object 15 and adds an entry to the cache ring, the entry including object 15, entry type "update" and version number "version 4".
[0096] At time T-5, the cloud information service receives an update notification for object 8 and adds an entry to the cache ring, the entry including object 8, entry type "update" and version number "version 5".
[0097] At this point, the cache ring has five entries and is therefore full. Therefore, the next update received by the cloud information service will overwrite the first entry in the cache ring.
[0098] At time T-6, the cloud information service receives an update notification for object 5 and adds an entry to the cache ring, the entry including object 5, entry type "update" and version number "version 5" to overwrite the previous first entry in the cache ring.
[0099] At time T-7, the cloud information service receives a deletion notification for object 7 and adds an entry to the cache ring, which includes object 7, entry type "Deleted" and version number "Version 7" to overwrite the previous second entry in the cache ring.
[0100] At time T-8, the cloud information service receives an update notification for object 6 and adds an entry to the cache ring, the entry including object 6, entry type "update" and version number "version 8" to overwrite the previous third entry in the cache ring.
[0101] At time T-9, the cloud information service receives a subscription request from the user interface. The subscription request includes a version number of 4. The cloud information service then performs a binary search (on Figure 2 ), and determines that version 4 is still in the cache ring. Based on this determination, the cloud information server generates a changed object list based on all entries in the cache ring with version numbers higher than version 4. Therefore, the changed object list includes the update of object 8 at entry version 5, the update of object 5 at entry version 6, the deletion of object 7 at entry version 7, and the update of object 6 at entry version 8. Based on the changed object list, the cloud information service retrieves the object information of 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 includes updated object information of object 8, object 5, and object 6, and a deletion notification of object 7.
[0102] Figure 4 An example scenario is shown for providing updates from a cache ring in response to two subscription requests, one with no version number and another with a version number not found in the cache ring, in accordance with one or more embodiments of the present disclosure. Figure 4 The examples shown in and discussed below are highly simplified examples that are used for explanation purposes only and are not intended to limit the scope of the embodiments described herein. A person of ordinary skill in the art having the benefit of this disclosure will appreciate that Figure 4 Such a scenario may include cache rings of much larger sizes, more objects corresponding to objects in the cache rings, etc. than shown. Furthermore, while this example illustrates certain aspects of the embodiments disclosed herein, not all possible aspects of these embodiments may be illustrated in this particular example.
[0103] Consider a scenario where a cache ring has been generated and maintained by a cloud information service. The cache ring corresponds to a resource type where three resources exist in the cloud infrastructure. Therefore, there are three objects corresponding to the three resources including metadata about the resources.
[0104] At time T-0, the cloud information service is notified that the object is updated. Therefore, the cloud information service adds an entry to the cache ring with the object's unique identifier O-3, update type "update" and version number V-1.
[0105] At this point, and in Figure 4 At all subsequent points in the example shown where an entry of a type other than "Sept." (denoting a separator) or "Refr." (denoting a refresh) is added to the cache ring, the cloud information service can determine whether any user interface is actively subscribed to receive updates about resources of the resource type to which the cache ring corresponds. If there is an active subscription, the cloud information service will provide an update to the subscribed user interface, which will be either the object information retrieved by the cloud information service, or a notification that the object was deleted. For clarity, this situation will not be repeated in the example.
[0106] After T-0, the cloud information service receives a subscription request that does not include a version number. Therefore, the cloud information service performs a full refresh. The full refresh begins at time T-1, where the cloud information service adds an entry to the cache ring that has a separator entry type (such as Figure 4 The cloud information service then makes a list of all objects of the resource type corresponding to the cache ring, which are objects O-1, O-2, and O-3. The cloud information service then adds an entry to the cache ring for each object, each with a refresh entry (such as Figure 4 The cloud information service then adds another separator entry with version V-6 to the cache ring. Figure 4 , each of the separator and refresh entries for the first full refresh is shown as corresponding to timestamp T-1, because the separator and refresh entries are usually added at substantially the same time. When a full refresh is performed, O-1 is updated twice, as shown by the two additional entries V-7 and V-8 in the cache ring. Therefore, the cloud information service updates the object list to include O-1 with V-8 instead of V-3.
[0107] Likewise, during a full refresh, another user interface sends a subscription request that includes version number 0. The cloud information service determines that there are no longer any entries in the cache ring with V-0, and therefore another full refresh must be performed for the second user interface. Therefore, the cloud information service adds entries V-9 through V-13 to the cache ring, which include a separator entry, three refresh entries for the three objects, and a second separator entry. Each of these entries is in Figure 4 8, because the separator and refresh entry are usually added substantially at the same time. When the cloud information service determines whether any updates have occurred to the object during the first full refresh (V-3 to V-6), the cloud information service skips the separator and refresh entry for the second full refresh.
[0108] The cloud information service completes the first full refresh by retrieving the object information of O-1, O-2 and O-3, and sends the object information as part of the message including V-8. The cloud information service completes the second full refresh using the object information of the three objects and version V-13.
[0109] Before the second refresh is completed, the user interface that requires a first full refresh is disconnected from the cloud information service due to a network error. The user interface then reconnects to the cloud information service after the cloud information service has added the V-14 entry for the update to O-1. The subscription request for reconnection includes V-8, which is received when the user interface receives the first full refresh. The cloud information service performs a binary search on the cache ring using V-8. The cloud information service finds V-8, skips V-9 to V-13 (because they are delimiters and refresh entries), and retrieves the object information for O-1. The cloud information service then sends the object information to the user interface along with the version number V-14.
[0110] Figure 5 1 shows a block diagram of a computing device according to one or more embodiments of the present disclosure. As described above, the embodiments described herein may be implemented using a computing device. For example, Figure 1 All or any portion of the components shown may be implemented at least in part using one or more computing devices, and Figure 2All or any part of the method shown 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 storage 504 (e.g., volatile memory such as random access memory (RAM), cache memory, etc.), persistent storage 506 (e.g., hard disk, optical drive such as compact disk (CD) drive or digital versatile disk (DVD) drive, flash memory, etc.), communication interface 512 (e.g., Bluetooth interface, infrared interface, network interface, optical interface, etc.), input device 510, output device 508, and many other elements (not shown) and functions. Each of these components will be described below.
[0111] In one or more embodiments, the computer processor(s) 502 may be an integrated circuit for processing instructions. For example, the computer processor(s) 502 may be 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 software executed on the computing device 500. The processor 502 may be a special-purpose processor in which certain instructions are incorporated 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 associative processing unit (APU), a visual processing unit (VPU), a quantum processing unit (QPU), and / or various other processing units using dedicated hardware (e.g., a field programmable gate array (FPGA), a system on a chip (SOC), a digital signal processor (DSP), etc.). Although in Figure 4 Only one processor 502 is shown, but computing device 500 may include any number of processors without departing from the scope of the embodiments disclosed herein.
[0112] The computing device 500 may also include one or more input devices 510, such as a touch screen, a keyboard, a mouse, a microphone, a touchpad, an electronic pen, a motion sensor, or any other type of input device. The input device 510 may allow a user to interact with the computing device 500. In one or more embodiments, the 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 touch screen, a cathode ray tube (CRT) display, a projector, or other display device), a printer, an external storage device, or any other output device. One or more of the output devices may be the same or different from the (multiple) input devices. The (multiple) input and output devices may be locally or remotely connected to the (multiple) computer processors 502, the non-persistent storage device 504, and the persistent storage device 506. There are many different types of computing devices, and the (multiple) input and output devices may take other forms. In some cases, a multi-mode system may allow a user to provide multiple types of input / output to communicate with the computing device 500.
[0113] Additionally, the communication interface 512 may facilitate connecting 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 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 transceivers, including those using: an audio jack / plug, a microphone jack / plug, a universal serial bus (USB) port / plug, Ports / plugs, Ethernet ports / plugs, Fiber optic ports / plugs, Dedicated wired ports / plugs, Wireless signal transmission, BLE wireless signal transmission, Wireless signal transmission, RFID wireless signal transmission, near field communication (NFC) wireless signal transmission, dedicated short range communication (DSRC) wireless signal transmission and 802.11 WiFi wireless signal transmission, WLAN signal transmission, visible light communication (VLC), World Interoperability for Microwave Access (WiMAX), IR communication wireless signal transmission, public switched telephone network (PSTN) signal transmission, integrated services digital network (ISDN) signal transmission, 3G / 4G / 5G / LTE cellular data network wireless signal transmission, ad hoc network signal transmission, radio wave signal transmission, microwave signal transmission, infrared signal transmission, visible light signal transmission, ultraviolet light signal transmission, wireless signal transmission along the electromagnetic spectrum, or some combination thereof. The communication interface 512 may also include one or more global navigation satellite system (GNSS) receivers or transceivers for determining the location of the computing device 500 based on one or more signals received from one or more satellites associated with one or more GNSS systems. GNSS systems include, but are not limited to, US-based GPS, Russia-based Global Navigation Satellite (GLONASS), China-based Beidou Navigation Satellite System (BDS), and Europe-based Galileo GNSS. There is no restriction to operate on any particular hardware arrangement and thus the basic features herein may be readily replaced by improved hardware or firmware arrangements as developed.
[0114] 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 carrying (multiple) instructions and / or data. Computer-readable media may include non-transient media, in which data may be stored and does not include carrier waves and / or transient electronic signals that are propagated wirelessly or by wired connections. Examples of non-transient media may include, but are not limited to, disks or tapes, optical storage media such as CDs or DVDs, flash memory, memory, or memory devices. Computer-readable media may store codes and / or machine-executable instructions thereon, which may represent any combination of processes, functions, subroutines, programs, routines, subroutines, modules, software packages, classes, or instructions, data structures, or program statements. A code segment may be coupled to another code segment or hardware circuit by passing and / or receiving information, data, independent variables, parameters, or memory contents. Information, independent variables, parameters, data, etc. may be passed, forwarded, or transmitted in any suitable manner, including memory sharing, message passing, token passing, network transmission, etc.
[0115] All or any portion of the components of computing device 500 may be implemented in circuitry. For example, a component may include and / or may be implemented using electronic circuitry or other electronic hardware (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, computer-readable storage devices, media, and memories may include wired or wireless signals including bitstreams, etc. However, when referred to, non-transitory computer-readable storage media explicitly excludes media such as energy, carrier signals, electromagnetic waves, and signals themselves.
[0116] In the foregoing description, many details are set forth as examples of the embodiments described herein. Those skilled in the art (who also benefit from this disclosure) will appreciate that one or more of the embodiments described herein may be practiced without these specific details, and that many changes or modifications may be made without departing from the scope of the embodiments described herein. Certain details known to those of ordinary skill in the art may be omitted to avoid confusing the description.
[0117] Specific details are provided in the above description to provide a comprehensive understanding of the aspects and examples provided herein. However, it will be understood by those of ordinary skill in the art that these aspects can be practiced without these specific details. For clarity of explanation, in some cases, the present technology may be presented as including a functional block, which may include a device, device component, step or routine in a method embodied in software or a combination of hardware and software. In addition to the components shown in the figure and / or described herein, other components may also be used. For example, circuits, systems, networks, processes and other components may be shown as components in the form of block diagrams so as not to obscure various aspects due to unnecessary details. In other cases, known circuits, processes, algorithms, structures and techniques may be shown without unnecessary details to avoid confusing various aspects of the embodiments disclosed herein.
[0118] The above various aspects may be described as a process or method shown in a flowchart, flow diagram, data flow diagram, structure diagram, or block diagram. Although a flowchart may describe the operations as a sequential process, many operations may be performed in parallel or concurrently. In addition, the order of the operations may be rearranged. A process terminates when its operations are completed, but there may be additional steps not included in the diagram. A process may correspond to a method, function, procedure, subroutine, subprogram, etc. When a process corresponds to a function, its termination may correspond to the function returning to the calling function or the main function.
[0119] The process and method according to the above examples can be implemented using computer executable instructions that are stored or can otherwise be obtained from a computer readable medium. For example, such instructions may include instructions and data that enable or otherwise configure a general-purpose computer, a special-purpose computer, or a processing device to perform a specific function or functional group. The part of the computer resources used can be accessed through a network. The computer executable instructions can be, for example, binary files, intermediate format instructions (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 method according to the examples include disks or optical disks, flash memory, USB devices equipped with non-volatile memory, network storage devices, etc.
[0120] In the above description of the drawings, in the various embodiments described herein, any component described for a drawing may be equivalent to one or more components of the same or similar name and / or number described for any other drawing. For the sake of brevity, the description of these components may not be repeated for each drawing. Therefore, each embodiment of each component of each drawing is incorporated by reference, and it is assumed that it is optionally present in each other drawing with one or more identical or similar named and / or coded components. In addition, according to the various embodiments described herein, any description of the components in the figure should be interpreted as an optional embodiment, which can be implemented as a supplement, combination or replacement of the embodiments described with respect to one or more identical or similar named and / or numbered components corresponding to any other figure.
[0121] Throughout the application, ordinal numbers (e.g., first, second, third, etc.) may be used as adjectives for elements (i.e., any noun in the application). The use of ordinal numbers does not imply or create any particular order of elements, nor does it limit any element to only a single element, unless explicitly disclosed, such as by using the terms "before," "after," "single," and other such terms. Instead, the use of ordinal numbers is to distinguish elements. For example, a first element is different from a second element, and a first element may include more than one element and is after (or before) a second element in the ordering of elements.
[0122] As used herein, the phrases operably connected or operably connected refer to the presence of a direct or indirect connection between elements / components / devices that allows the elements to interact in some manner. For example, the phrase "operably connected" may refer to any direct (e.g., a wired connection directly between two devices or components) or indirect (e.g., a wired and / or wireless connection between any number of devices or components that connect operably connected devices) connection. Thus, any path that information can take can be considered an operably connected connection.
[0123] Although the embodiments discussed herein are described with respect to a limited number of embodiments, those skilled in the art who benefit from this disclosure will appreciate that other embodiments may be designed without departing from the scope of the embodiments disclosed herein. Therefore, the scope of the embodiments described herein should be limited only by the appended claims.
Claims
1. A device comprising: one or more processors; as well as 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: generating, 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, the plurality of entries each corresponding to an object in a cloud infrastructure corresponding to a resource of the resource type; receiving, at the cloud information service, a subscription request from a user interface, wherein the subscription request includes a version number; performing, by the cloud information service, a search on the cache ring using the version number to determine whether any of the plurality of entries in the cache ring includes the version number; generating a changed object list when the version number is in the cache ring, wherein the changed object list includes a plurality of object identifiers corresponding to a first group of entries having an update entry type or a delete entry type among the plurality of entries in the cache ring; acquiring object information for a first plurality of objects based on the plurality of object identifiers in the changed object list, the first plurality of objects corresponding to a portion of the first set of entries having the updated entry type; as well as The object information for the first plurality of objects and a deletion notification of a second plurality of objects corresponding to a second portion of the first set of entries having the deleted entry type are transmitted to the user interface.
2. The apparatus of claim 1 , wherein execution of the instructions further causes the one or more processors to: receiving a second subscription request from a second user interface that does not include any version number; and In response to the second subscription request, a full refresh is performed.
3. The apparatus of claim 1 , wherein execution of the instructions further causes the one or more processors to: receiving, from a second user interface, a second subscription request including a second version number; performing a second search on the cache ring using the second version number to determine whether any of the plurality of entries in the cache ring includes the second version number; and When the second search determines that the second version number is not in the cache ring, a full flush is performed. The apparatus according to claim 1 , wherein the resource type is a container resource type, a bucket resource type, or a shell resource type.
5. The apparatus of claim 1, wherein each entry of the plurality of entries in the cache ring comprises a unique object identifier, an entry type, and a unique version number. The apparatus of claim 1 , wherein the search is a binary search. 7 . The apparatus of claim 1 , wherein the cloud information service skips a second group of entries having a delimiter entry type or a refresh entry type among the plurality of entries in the cache ring while generating the changed object list.
8. A computer-implemented method comprising: generating, 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, the plurality of entries each corresponding to an object in a cloud infrastructure corresponding to a resource of the resource type; receiving, at the cloud information service, a subscription request from a user interface, wherein the subscription request includes a version number; performing, by the cloud information service, a search on the cache ring using the version number to determine whether any of the plurality of entries in the cache ring includes the version number; generating a changed object list when the version number is in the cache ring, wherein the changed object list includes a plurality of object identifiers corresponding to a first group of entries having an update entry type or a delete entry type among the plurality of entries in the cache ring; acquiring object information for a first plurality of objects based on the plurality of object identifiers in the changed object list, the first plurality of objects corresponding to a portion of the first set of entries having the updated entry type; as well as The object information for the first plurality of objects and a deletion notification of a second plurality of objects corresponding to a second portion of the first set of entries having the deleted entry type are transmitted to the user interface.
9. The computer-implemented method of claim 8, further comprising: receiving, from a second user interface, a second subscription request that does not include any version number; as well as In response to the second subscription request, a full refresh is performed.
10. The computer-implemented method of claim 8, further comprising: receiving, from a second user interface, a second subscription request including a second version number; performing a second search on the cache ring using the second version number to determine whether any of the plurality of entries in the cache ring includes the second version number; as well as When the second search determines that the second version number is not in the cache ring, a full flush is performed.
11. The computer-implemented method of claim 8, wherein the resource type is a container resource type, a bucket resource type, or a shell resource type.
12. The computer implemented method of claim 8, wherein each entry of the plurality of entries in the cache ring comprises a unique object identifier, an entry type, and a unique version number.
13. The computer implemented method of claim 8, wherein the search is a binary search.
14. The computer-implemented method of claim 8, wherein the cloud information service skips a second group of entries having a delimiter entry type or a refresh entry type among the plurality of entries in the cache ring while generating the changed object list.
15. A non-transitory computer-readable medium storing a program for execution by one or more processors, the program comprising instructions for: generating, 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, the plurality of entries each corresponding to an object in a cloud infrastructure corresponding to a resource of the resource type; receiving, at the cloud information service, a subscription request from a user interface, wherein the subscription request includes a version number; performing, by the cloud information service, a search on the cache ring using the version number to determine whether any of the plurality of entries in the cache ring includes the version number; generating a changed object list when the version number is in the cache ring, wherein the changed object list includes a plurality of object identifiers corresponding to a first group of entries having an update entry type or a delete entry type among the plurality of entries in the cache ring; acquiring object information for a first plurality of objects based on the plurality of object identifiers in the changed object list, the first plurality of objects corresponding to a portion of the first set of entries having the updated entry type; as well as The object information for the first plurality of objects and a deletion notification of a second plurality of objects corresponding to a second portion of the first set of entries having the deleted entry type are transmitted to the user interface.
16. The non-transitory computer readable medium of claim 15, comprising further instructions which, when executed by the one or more processors, cause the one or more processors to: receiving a second subscription request from a second user interface that does not include any version number; and In response to the second subscription request, a full refresh is performed.
17. The non-transitory computer readable medium of claim 15, comprising further instructions which, when executed by the one or more processors, cause the one or more processors to: receiving, from a second user interface, a second subscription request including a second version number; performing a second search on the cache ring using the second version number to determine whether any of the plurality of entries in the cache ring includes the second version number; and When the second search determines that the second version number is not in the cache ring, a full flush is performed.
18. The non-transitory computer-readable medium of claim 15, wherein the resource type is a container resource type, a bucket resource type, or a shell resource type.
19. The non-transitory computer readable medium of claim 15, wherein each entry 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 skips a second group of entries having a delimiter entry type or a refresh entry type among the plurality of entries in the cache ring while generating the changed object list.
Citation Information
Patent Citations
Resource subscription method and device and storage medium
CN114641974A
Automated conflict resolution and synchronization of objects
US11397750B1
Design component dependency tree normalization through automatic conflict resolution and / or contextual dependency
US20190339967A1
Propagating ordered object changes
US20200159560A1
Dynamic latency-responsive cache management
US20220224776A1