Multi-client version control system for retrieving a list of changed objects

By maintaining a high-speed cache ring in the cloud information service to record the update information of resource objects, the problem of information retransmission caused by frequent user disconnection is solved, and efficient information update and transmission are achieved.

CN119960816BActive Publication Date: 2026-04-28HEWLETT PACKARD ENTERPRISE DEV LP
View PDF 2 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
HEWLETT PACKARD ENTERPRISE DEV LP
Filing Date
2024-07-05
Publication Date
2026-04-28

AI Technical Summary

Technical Problem

In cloud infrastructure, frequent disconnections from the user interface by users lead to information updates, requiring the transmission of a large amount of resource information each time a connection is re-established, resulting in a waste of computing and network resources.

Method used

By maintaining a high-speed cache ring in the cloud information service, updating information of resource objects is recorded, and only the updated information is transmitted when the user interface reconnects, thus reducing duplicate transmissions.

Benefits of technology

This reduces the amount of information transmitted with each user interface connection, keeps resource information up-to-date, improves information transmission efficiency, and reduces the consumption of computing and network resources.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119960816B_ABST
    Figure CN119960816B_ABST
Patent Text Reader

Abstract

Embodiments of the present application relate to a multi-client version control system for retrieving a list of changed objects. In certain embodiments, a method includes generating a cache ring corresponding to a resource type and including entries corresponding to objects for resources of the resource type in a cloud infrastructure; receiving a subscription request including a version number; searching the cache ring using the version number; when the version number is in the cache ring, generating a list of changed objects including object identifiers corresponding to entries in the cache ring having an update entry type or a delete entry type; retrieving object information for objects corresponding to a first set of entries having an update entry type based on the object identifiers in the list of changed objects; and transmitting the object information for the objects and a deletion notification for other objects corresponding to a second set of entries having a delete entry type to a user interface.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Various embodiments of this application relate to a multi-client version control system for retrieving a list of changed objects. Background Technology

[0002] Users of computing resources typically want to view information related to those resources. For example, a user might access a user interface to view information about the resource. However, for various reasons, users may periodically disconnect from such a user interface. If the disconnection is long enough, the information about the resource may change. However, re-providing all resource-related information every time the user interface reconnects to an entity capable of providing such information can be inefficient. Attached Figure Description

[0003] Some embodiments discussed herein will be described with reference to the accompanying drawings listed below. However, the drawings are merely illustrative of 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 of an example system for providing cloud infrastructure information to any number of users, according to one or more embodiments disclosed herein, is shown.

[0005] Figure 2 An overview of example methods 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 is shown 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;

[0007] Figure 4 An example scenario is illustrated, according to one or more embodiments disclosed herein, for providing updates from a cache ring in response to two subscription requests, one subscription request having no version number and the other subscription request having a version number not found in the cache ring; and

[0008] Figure 5 A block diagram of a computing device according to one or more embodiments of the present disclosure is shown. Detailed Implementation

[0009] A variety of computing resources (e.g., any physical and / or logical resources) can reside within 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 can access a user interface (e.g., the data service cloud console) where they can view information about the various resources (e.g., the aforementioned physical and / or logical resources) existing within the cloud infrastructure. Any number of users using any number of user interfaces may wish to view information about resources within a specific cloud infrastructure.

[0010] However, the amount of information about resources corresponding to a specific user, and the amount of information the user wants to view, can be substantial. For example, a particular cloud infrastructure may contain hundreds, thousands, or even millions of resources. Therefore, every time a user accesses the user interface, whether it's the first time or any subsequent time after a disconnection from a previous session (e.g., intentionally due to connection interruption), all information about all resources associated with the user accessing the user interface must be retrieved and provided to the user interface for display. However, transmitting such a large amount of information about resources in the cloud infrastructure every time a user connects or reconnects to the cloud information service can be expensive in terms of computing resources, storage resources, network resources, transmission time, costs, etc.

[0011] To at least address the aforementioned problem of providing information about resources in a cloud infrastructure to users interested in viewing such information, the embodiments disclosed herein provide techniques for reducing the amount of information about resources transmitted to users while allowing the information available to users to remain up-to-date with respect to the state of resources in 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 the cloud infrastructure, a subscription request can be sent to a cloud information service operatively connected to the cloud infrastructure where the resources reside. Such a subscription request can also occur each time the user interface reconnects to the service (e.g., after disconnection). The user interface can maintain its subscription after the subscription request, as long as the user interface remains connected to the cloud information service. For example, the cloud information service can be implemented on a Kubernetes pod running in the cloud infrastructure. In response to the subscription request, the cloud information service can access information about various resources and provide that information to the user in response to the subscription request, and provide updates as long as the user interface remains connected and thus maintains its subscription.

[0013] In one or more embodiments, each resource 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 number of installed components (each component being in a certain state, such as being on, off, connected to or disconnected from the network, in a degraded state, etc.), any other relevant information associated with the shell, and the collection of such information about the shell can be considered an object. As another example, an application may be deployed in a Kubernetes container platform as a set of microservices implemented on multiple container pods, and all information about that application or any part thereof (e.g., the container platform, microservices, pods, containers, devices on which such things are deployed, etc.) can be considered objects. 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 (e.g., bucket size, remaining space in the bucket, bucket access policy, etc.) can be considered an object. Therefore, as used herein, an object can refer to metadata about resources in the cloud infrastructure (e.g., shells, container deployments, buckets, any physical or logical components, etc.). In one or more embodiments, objects may be grouped into resource types. For example, a shell resource type can refer to all objects corresponding to a shell, a container resource type can refer to the set of objects corresponding to a container deployment, a bucket resource type can refer to the set 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 cache rings for each resource type in the cloud infrastructure. Depending on the resource type present in the cloud infrastructure, there can be any number of cache rings. For clarity, the following description will focus on one cache ring for one resource type. However, those skilled in the art will understand that the description of cache rings applies to any number of cache rings for any number of resource types in the cloud infrastructure, and the cloud information service can use various cache rings to provide information about any number of resource types to the user interface.

[0015] The cache ring can be implemented in memory (e.g., rather than some form of persistent storage). The cache ring can have entries added by the cloud information service as received. Information can 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 a shell is updated, the object corresponding to the shell can 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 can be updated to reflect the new access policy. As another example, when the number of pods used to implement an application increases, the object corresponding to the container deployment can be updated with the 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 can use any method of receiving information to receive information about object updates. For example, the cloud information service can 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 can 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 to 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 maximum size of the cache ring configuration (e.g., hundreds, thousands, millions, etc.). In one or more embodiments, each entry added to the cache ring by the cloud information service includes a unique identifier of the updated object (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 entry's version number. 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 for the version number. In one or more embodiments, each entry added to the cache ring by the cloud information service includes a version number incremented (e.g., incremented by 1) from a previous entry added to the cache ring.

[0017] As described above, the cache ring corresponds to a resource type, and this resource type can contain any number of objects (e.g., millions of buckets, each bucket corresponding to a single object). In one or more embodiments, an update to any object of this resource type causes the cloud information service to add an entry to the appropriate cache ring for that 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 to the cache ring with an identifier for the first object and a version data item, the version data item including two bits for indicating the update type and the remaining bits for indicating version one. The cloud information service can then be notified of an update to a second object of the same resource type. In response, the cloud information service can add a second entry to the cache ring with an identifier for the second object and a version data item that encodes the update type and includes a representation of version two. Thus, even if the objects are not the same, the version number increases as the cloud information service adds the second entry to the cache ring, resulting in the second entry having 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 resources in the cloud infrastructure) changes. For example, when the firmware of a network component of the shell changes, the object can be modified 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 can be removed from the cloud infrastructure (e.g., removing a physical device, deleting a container pod, deleting a bucket, etc.), and the object corresponding to that resource can 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 full refresh is performed. In one or more embodiments, a full refresh (discussed further below) is performed whenever a subscription request is received that requests all objects of the resource type corresponding to the cache ring to be made available to the user interface from which the subscription request was received. In one or more embodiments, subscription requests are received whenever a user accesses the user interface, allowing the user to view information about resources in the cloud infrastructure. Therefore, subscription requests can be received when a user first uses the user interface and connects to the cloud information service, and each time a user reconnects to the cloud information service after previously disconnecting from it.

[0020] The initial subscription request may not include a version number. In one or more embodiments, if a subscription request without a version number is received, 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 corresponding to the cache ring. In one or more embodiments, the list of all objects is a list of objects corresponding to resources currently existing in the cloud infrastructure (e.g., the list does not include objects deleted before the full refresh began). In one or more embodiments, the cloud information service then adds entries with a delimiter version type to the cache ring, then adds entries for all objects of the resource type corresponding to the cache ring, each such entry having 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.

[0021] In one or more embodiments, the cloud information service then checks to determine whether any objects were updated during the creation of the object list and the addition of delimiters and refresh entries to the cache ring. However, in other embodiments, the amount of time required to perform a full refresh is small, and therefore, the cloud information service may not check for updates occurring during a continuous full refresh. Instead, in one or more embodiments, updates occurring during a continuous full refresh may be processed after the full refresh is complete. In one or more embodiments, if no updates occurred during that period, or in embodiments where updates were not checked during a continuous 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 the 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 retrieve information from the object using any method suitable for the resource type (e.g., the Kubernetes API for objects corresponding to container deployments, other APIs for objects corresponding to physical resources, etc.). In one or more embodiments, information from an object is sent via one or more messages and used to update the user interface to display information to the user.

[0022] In one or more embodiments, if any updates to an object are added to the cache ring after the second delimiter entry of a 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 one or more objects, thereby enabling the cloud information service to know 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 an object is always sent to the user interface because the cloud information service does not maintain any history of the object's state 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 a different user interface) before the cloud information service sends object information to the user interface based on a first subscription request requiring a full refresh (e.g., when the user interface is disconnected during a full refresh (which it later recovers)), the cloud information service may initiate 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 delimiter entry and subsequent full refresh entries.

[0023] In one or more embodiments, if a disconnection occurs during a full refresh, the new subscription request will include a version number that is the latest version number received by the user interface during the attempt to refresh when the user interface reconnects and a new subscription request is received. In one or more embodiments, in this case, the cloud information service will resume the full refresh by starting with the next version number after the version number received in the new subscription request. In one or more embodiments, a full refresh is complete when all object information (including any updates that occurred before the full refresh was complete) for all objects of the resource type corresponding to the cache ring, along with the highest version number in the cache ring for any entry of any object sent as part of the full refresh, is sent to the user interface. Additionally or alternatively, during a full refresh, object information may be sent in a series of messages, each containing object information from any number of objects. In such an embodiment, even if a higher version number exists in the cache ring, the highest version number of the object sent in the message is also sent to the user interface for each message.

[0024] In one or more embodiments, after the initial full refresh, if the user remains connected, the subscription is active, and the cloud messaging service will send any updates that occur to the object (each update results in a new entry being added to the cache ring), skipping any entries added to the cache ring, as part of a full refresh for another user using a different user interface. In one or more embodiments, new entries that are not delimiter type entries or refresh type entries (skipped when updates are provided to the active subscription) can be update type entries or deletion entries. As described above, for any update entry, the cloud messaging service will obtain the object information and send the object information to the user interface. In one or more embodiments, for any deletion entry, the cloud messaging service will send a notification to the user interface that the object has been deleted. In one or more embodiments, the user interface will update the user's information in response to any updates received from the cloud messaging service and modify the information displayed in the user interface to reflect any deletion notified to the user interface by the cloud messaging service.

[0025] In one or more embodiments, the user interface may disconnect from the cloud information service for any reason. For example, disconnection may be intentional (e.g., the user closes the user interface) or may be due to an interruption of the connection between the user interface and the cloud information service (e.g., a network outage). In one or more embodiments, if the user was previously connected to the cloud information service, the subscription request received as part of a reconnection will include a version number, which is the highest version number present in the cache ring at the time of the user's last connection. For example, if the user interface initially connected and a full refresh was completed, the version number would be the highest version number received as part of the full refresh, or the highest version number of any updates received after a full refresh while the user remained connected to the cloud information service. In one or more embodiments, in response to a subscription request including a version number (e.g., for any reconnection after the initial connection), the cloud information service uses the version number to perform a binary search to determine whether the version number received in the subscription request is still in the cache ring. In one or more embodiments, the fact that the version of entries added to the cache ring by the cloud information service always increments allows the cloud information service to perform a binary search.

[0026] In one or more embodiments, the binary search begins with an intermediate 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 an entry in the middle of the cache ring, the cloud information service creates a list of all object changes corresponding to entries with higher version numbers. These entries will be entries in one half of the cache ring with version numbers higher than the intermediate entry, except for delimiter entries and refresh entries in the cache ring that could be used to perform a full refresh for another user (which are skipped by the cloud information service). In one or more embodiments, if the version number received in the subscription request is not equal to the version number of an intermediate entry in the cache ring, the cache half in which the version number could not possibly exist is eliminated from the search, and the search is repeated using the intermediate 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 a new entry. Thus, 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 provides updated object information or object deletion notifications to all entries in the cache ring with version numbers higher than the version number received in the subscription request, except for delimiter 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 this disclosure can allow any number of user interfaces to receive and maintain current information about resources in the cloud infrastructure without having to send all information about resources every time a user interface connects to the cloud information service to seek resource information via a subscription request. In one or more embodiments, the amount of information transmitted from the cloud information service to the user interface is reduced by maintaining a cache ring for each type of resource in the cloud infrastructure, wherein entries in the cache ring include object identifiers, entry types, and version numbers. This allows the cloud information service to provide information only about objects that have been updated or deleted, and to perform a complete refresh of all information only when the user interface first connects to the cloud information service, or when the version number received in a subscription request as part of a reconnection is no longer in 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 cloud infrastructure 100. Cloud infrastructure 100 may include cloud resources 102 and cloud information services 108. Cloud resources may include physical resources 104 and logical resources 106. The system may also include users 110 and user interfaces 112. Each of these components will be described below.

[0030] In one or more embodiments, cloud infrastructure 100 is a collection of any number of computing devices and other components in which a cloud computing environment is deployed, and which can host any number of cloud-based applications, as-a-service (aaS) products (e.g., Software as-a-Service (SaaS), Infrastructure as-a-Service (IaaS), Platform as-a-Service (PaaS), Storage as-a-Service (STaaS), etc.), microservices, container platforms, virtualization environments, infrastructure components, power supplies, racks, enclosures, environmental controls, physical space, cabling, etc. Cloud infrastructure 100 may include one or more private clouds, public clouds, and / or hybrid clouds. 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, 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, as used herein, cloud resources refer to portions of cloud infrastructure 100 that can be used or otherwise accessed by any number of users (e.g., user 110) of cloud infrastructure 100. For example, cloud resources 102 may include portions of cloud infrastructure 100 used by users to access aaS products, composable infrastructure, virtualization environments, microservices, storage and backup services, database management, etc.

[0032] In one or more embodiments, cloud resource 102 includes physical resource 104. In one or more embodiments, physical resource 104 includes any physical (e.g., hardware) components of the cloud resource, such as, for example, computing devices, network components, storage components, racks, enclosures, etc.

[0033] In one or more embodiments, as used herein, a computing device (not shown) can 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 circuitry), memory (e.g., random access memory (RAM)), input and output devices(s), non-volatile storage hardware (e.g., solid-state drives (SSDs), persistent memory (Pmem) devices, hard disk drives (HDDs)), one or more physical interfaces (e.g., network ports, storage ports), any number of other hardware components (not shown), and / or any combination thereof.

[0034] Examples of computing devices include, but are not limited to, servers (e.g., blade servers in a blade server chassis, rack servers in a rack, etc.), desktop computers, mobile devices (e.g., laptops, smartphones, personal digital assistants, tablets, 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 memory 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 part thereof, and / or any other type of computing device having the foregoing requirements. In one or more embodiments, any or all of the foregoing 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 computing device shown and described below. Physical resource 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 physical resource 104, may be and / or include one or more data repositories for storing any number of data structures that store any amount of data (e.g., information). In one or more embodiments, the data repository is any type of storage unit and / or device for storing data (e.g., file system, database, collection of tables, RAM, and / or any other storage mechanism or medium). Furthermore, the data repository may include multiple different storage units and / or devices. These multiple different storage units and / or devices may or may not be of the same type or located in the same physical location.

[0036] In one or more embodiments, any storage device and / or memory of the computing device, the system of the computing device, or any other component of physical resource 104 may be regarded 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 a computing device system, cause one or more processors and / or other hardware components to perform operations according to one or more embodiments described herein.

[0038] The software instructions may be in the form of computer-readable program code for performing the methods, processes, etc., of the embodiments described herein, and by way of example, may be stored, in whole or in part, temporarily or permanently, on a non-transitory computer-readable medium, such as an optical disc (CD), a digital multifunction disc (DVD), a storage device, a floppy disk, a magnetic tape storage device, flash memory, physical memory, or any other non-transitory computer-readable medium.

[0039] Physical resource 104 may include any number of computing devices, which may be collectively referred to as computing devices as used herein. All or any part of the computing devices may be computing devices of the same or different types.

[0040] In one or more embodiments, cloud resource 102 includes logical resource 106. In one or more embodiments, as used herein, logical resource 106 includes any software, firmware, application, container platform, virtualization environment, microservice, communication protocol, bucket, etc., that at least partially uses physical resource 104 to execute.

[0041] For example, in one or more embodiments, all or any portion of logical resource 106 may be managed at least partially by a container platform (not shown), such as 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 the logical resource (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 resource 102 may host any number of cloud-based applications as part of logical resource 106, which may 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 microservices, etc.) and various communication components that allow the various microservices to interact with other microservices, other parts of cloud resource 102, cloud infrastructure 100, and / or entities and / or devices outside of cloud infrastructure 100.

[0043] In one or more embodiments, microservices can be implemented using any number of containers, container pods, etc. Each microservice can implement a specific service component that forms part of the overall cloud-based application deployed as at least a portion of logical resource 106.

[0044] In one or more embodiments, logical resource 106 may include public microservices, which may be a set of services common to all or any part of other microservices of one or more cloud-based applications deployed using a 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, etc.

[0045] In one or more embodiments, logical resource 106 includes 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 cloud resource 102. For example, the various communication protocols may include, but are not limited to, the Representative State Transfer (REST) ​​protocol, Remote Procedure Call (RPC) frameworks (e.g., gRPC), the Kafka protocol, and other underlying protocols that can be used in communication, such as Hypertext Transfer Protocol (HTTP), Transmission Control Protocol (TCP), User Datagram Protocol (UDP), etc. Such protocols can be used to transmit data, commands, etc. For example, the communication components of logical resource 106 may be implemented using at least part of the network devices of physical resource 104.

[0046] In one or more embodiments, logical resource 106 may include any number (e.g., hundreds, thousands, millions) of buckets (e.g., Amazon S3 buckets). A bucket may be a cloud storage container used to store any type or amount of information. Logical resource 106 may include any other type of logical entity (e.g., virtual machine, virtual network device, virtual storage device, hypervisor, 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 shell can have firmware versions, a certain number of installed components (each component in a specific state, such as on, off, connected to or disconnected from the network, in a degraded state, or functioning normally), any other relevant information related to the shell, and the collection of such information about the shell can be considered an object. As another example, a cloud-based application can be deployed in a Kubernetes container platform as a set of microservices implemented on multiple container pods, each pod having any number of containers, and all information about the application or any part thereof (e.g., the container platform, microservices, pods, containers, the devices on which such things are deployed, etc.) can be considered an object. As yet 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 within the buckets (e.g., bucket size, remaining space in the bucket, bucket access policy, etc.) can be considered an object. Therefore, as used herein, an object can refer to metadata about resources in cloud resource 102 (e.g., shells, container deployments, buckets, any physical or logical components, etc.).

[0049] In one or more embodiments, objects can be grouped into resource types. For example, a shell resource type can refer to all objects corresponding to a shell, a container resource type can refer to the set of objects corresponding to a container deployment, a bucket resource type can refer to the set of objects corresponding to a bucket, and so on.

[0050] In one or more embodiments, cloud infrastructure 100 includes cloud information service 108. In one or more embodiments, the cloud information service is any hardware, software, firmware, or any combination thereof configured to maintain information about objects (as described above) corresponding to any one of the physical resources 104 and / or logical resources 106 of cloud resources 102 of cloud infrastructure 100, and to provide such information to any number of user interfaces (e.g., user interface 112, as described below). For example, 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 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. Depending on the resource types present in the cloud infrastructure, there may be any number of cache rings. In one or more embodiments, the cache rings are used to maintain a versioned history of updates to objects corresponding to physical resources 104 and / or logical resources 106 of cloud resource 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 related to maintaining the cache rings and providing information to user interfaces, are described below. Figure 2 , Figure 3 and Figure 4 Further discussion will follow in the description.

[0052] although Figure 1 Cloud information service 108 is shown as part of the same cloud infrastructure 100 as cloud resource 102, but cloud information service 108 may alternatively be deployed in a separate cloud infrastructure and operatively connected to cloud infrastructure 100. Furthermore, although 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., user 110). In one or more embodiments, user 110 is any entity (e.g., a human, software application, etc.) seeking access to information about any cloud resource 102 of cloud infrastructure 100. In one or more embodiments, information about any cloud resource 102 of cloud infrastructure 100 may be obtained by user 110 via one or more user interfaces (e.g., user interface 112). In one or more embodiments, user interface 112 is any hardware, software, firmware, or any combination thereof configured to allow user 110 to view or otherwise obtain information about all or any part of cloud resource 102 of cloud infrastructure 100. In one or more embodiments, the user interface is operatively connected to cloud information service 108 at least at some point. A given user (e.g., user 110) can access user interface 112 (e.g., data service cloud console), in which user 110 can view information about various resources present in cloud infrastructure 100 (e.g., the aforementioned physical resource 104 and / or logical resource 106). It is possible for any number of users to use any number of user interfaces and wish to view information about resources in a specific 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, which is operatively connected to cloud resource 102, where physical resource 104 and logical resource 106 reside. Such a subscription request may also occur each time user interface 112 reconnects to cloud information service 108 (e.g., after disconnection). User interface 112 may maintain its subscription after the 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 resource 102 and provide that information to user interface 112 in response to the subscription request, and provide updates as long as user interface 112 remains connected and thus maintains its subscription.

[0055] Although Figure 1 A specific configuration of the component is shown, but other configurations may be used without departing from the scope of the embodiments described herein. For example, although Figure 1 Some components may be shown as part of the same device, component, and / or infrastructure, but any component can be grouped into a collection of one or more components that can exist and perform as part of any number of separate and operatively connected devices. As another example, a single component can be configured to perform... Figure 1 All or any part of the components shown perform all or any part of the functionality. Therefore, the embodiments disclosed herein should not be limited to... Figure 1 The configuration of the components shown.

[0056] Figure 2 An overview of example methods for providing information about cloud resources to a user interface, according to one or more embodiments disclosed herein, is shown. Figure 2 All or any part of the method shown can be provided, for example, by cloud information services (e.g., Figure 1 As shown and as described above, the cloud information service 108 is executed.

[0057] Although Figure 2 The steps in the flowchart shown are presented and described in sequence, but some or all steps may be performed in a different order, and some or all steps may be combined or omitted. Figure 2 Other steps not shown may be performed separately, and / or some or all of the 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 the resource type. For example, the cache ring may be generated by a cloud information service (e.g., Figure 1The cloud information service 108 is generated. 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. Depending on the resource types present in the cloud infrastructure, there may be any number of cache rings.

[0059] For clarity, the following description will focus on one cache ring for one resource type. However, those skilled in the art will understand 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 cloud information services can use various cache rings to provide information about any number of resource types to the user interface.

[0060] A cache ring can 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 upon receipt. Information can 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 a shell is updated, the object corresponding to the shell can 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 can be updated to reflect the new access policy. As yet another example, when the number of pods used to implement an application increases, the object corresponding to the container deployment can be updated with the 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.

[0061] Cloud information services can use any method to receive information about object updates. For example, cloud information services can receive information about container deployments via Kubernetes application programming interfaces (APIs) that provide information based on custom resource definitions (CRDs). As another example, various APIs can exist and be configured to provide information about other resources, such as 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 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 to 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 maximum size of the cache ring configuration (e.g., hundreds, thousands, millions, etc.).

[0063] In one or more embodiments, each entry added to the cache ring by the cloud information service includes a unique identifier of the updated object (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 entry's version number. 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 for the version number (this means 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., increased by 1) from the previous entry added to the cache ring.

[0064] As described above, the cache ring corresponds to a resource type, and this resource type can contain any number of objects (e.g., millions of buckets, each corresponding to a separate object). In one or more embodiments, an update to any object of this resource type causes the cloud information service to add the entry to the appropriate cache ring. However, in one or more embodiments, the version number indicates a new entry in the cache ring and does not correspond to any specific object of the resource type.

[0065] For example, updating a first object of a specific resource type can cause the cloud information service to add a first entry to the cache ring containing an identifier and a version data item for the first object. This version data item includes two bits representing the update type and the remaining bits representing version one. The cloud information service can then be notified of an update to a second object of the same resource type. In response, the cloud information service can add a second entry to the cache ring containing an identifier and a version data item for the second object, encoding the update type and including a representation of version two. Therefore, even if the objects are not the same, the version number increases as the cloud information service adds the second entry to the cache ring, resulting in a higher version number for the second entry 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 resources in the cloud infrastructure) changes. For example, when the firmware of a network component of the shell changes, the object can be modified 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 can be removed from the cloud infrastructure (e.g., removing a physical device, deleting a container pod, deleting a bucket, etc.), and the object corresponding to that resource can be deleted.

[0067] In one or more embodiments, the remaining two entry types are delimiter entries and refresh entries. In one or more embodiments, delimiter and refresh are entry types used whenever a full refresh is performed. In one or more embodiments, a full refresh is performed whenever a subscription request is received that requires all objects of the resource type corresponding to the cache ring to be made available to the user interface from which the subscription request was received (discussed further below).

[0068] In one or more embodiments, although Figure 2 Not shown, but the cloud information service can use the cache ring generated as described above to serve 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 on various physical and logical resources of the cloud infrastructure. Such subscriptions can remain active as long as the user interfaces remain connected to the cloud information service. As described above, in one or more embodiments, whenever the cloud information service becomes aware that an object corresponding to a resource of a resource type in the cache ring has been updated, the cloud information service updates the cache ring by adding a new entry with an incrementing version number, 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 such an active subscription exists, the cloud information service can retrieve the object information of the updated object and send the updated object information to all active subscribers who wish to receive updates on the resource type of the cache ring.

[0069] In step 202, the method includes receiving a subscription request from a user interface. For example, this request could be from a cloud information service (e.g., Figure 1 The subscription request is received by the cloud information service 108. In one or more embodiments, the subscription request is received whenever a user accesses the user interface, allowing the user to view information about resources in the cloud infrastructure. Therefore, the subscription request can be received when a user first uses the user interface and connects to the cloud information service, and each time a user reconnects to the cloud information service after previously disconnecting from it.

[0070] In step 204, the method includes determining whether the subscription request received in step 202 includes a version number. For example, this determination may be made by a cloud information service (e.g., Figure 1The subscription request is made through the cloud information service 108. The initial subscription request may not include a version number. Other scenarios may exist where a subscription request without a version number can be received without departing from the scope of the embodiments disclosed herein. In one or more embodiments, a subscription request received from a user interface that has previously connected to the cloud information service will typically include the highest version number in the cache ring that existed at the time of the last connection to the user interface, which is received by the user interface from the cloud information service each time an update is provided from the cache ring to the user interface (e.g., 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 the same as the version number of an entry in the current cache ring. For example, cloud information services (e.g., Figure 1 The cloud information service 108) can make this determination. In one or more embodiments, the user interface may disconnect from the cloud information service for any reason. For example, disconnection may be intentional (e.g., the user closes the user interface) or may be caused by an interruption of the connection between the user interface and the cloud information service (e.g., network interruption).

[0073] In one or more embodiments, if the user interface was previously connected to the cloud information service, the subscription request received as part of the reconnection will include a version number, which is the highest version number present in the cache ring at the time of the user interface's last connection. For example, if the user interface initially connected and a full refresh was completed, the version number would be either 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 remained 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 entries added to the cache ring by the cloud information service is always incremented allows the cloud information service to perform the binary search.

[0075] In one or more embodiments, the binary search begins with an intermediate 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 an intermediate entry in the cache ring, the half of the cache in which the version number could not possibly exist is eliminated from the search, and the search is repeated using the intermediate 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 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 overwritten 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 can be performed by a cloud information service (e.g., Figure 1 The cloud information service 108) is executed. In one or more embodiments, a full refresh is performed 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 is no longer present in the cache ring (as determined in step 206).

[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 corresponding to the cache ring. In one or more embodiments, the list of all objects is a list of objects corresponding to resources currently existing in the cloud infrastructure (e.g., the list does not include objects deleted before the full refresh begins). In one or more embodiments, the cloud information service then adds entries with a delimiter version type to the cache ring, and then adds entries for all objects of the resource type corresponding to the cache ring, where each such entry has a refresh entry type, followed by another entry with a delimiter entry type, where 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 objects were updated during the creation of the object list and the addition of delimiters and refresh entries to the cache ring. In one or more embodiments, if no updates occurred during that period, 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 the network).

[0080] In one or more embodiments, the information corresponding to the refresh entry is metadata about the resource to which the object belongs. 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 retrieve information from the object using any method suitable for the resource type (e.g., the 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 the user interface via one or more messages of any type and used to update the user interface to display information to the user.

[0081] In one or more embodiments, if any updates to an object are added to the cache ring after the second delimiter entry of a full refresh but before the full refresh is complete, the cloud information service updates the object list to reflect any changes to the new version numbers of the updated one or more objects, thereby enabling the cloud information service to know 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 an object is always sent to the user interface because the cloud information service does not maintain any history of the object's state after the object is updated.

[0082] In one or more embodiments, if another subscription request requiring a full refresh is received (e.g., from another user using a different user interface) before the cloud information service sends object information to the user interface based on a first subscription request requiring a full refresh, the cloud information service may initiate 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 for subsequent full refreshes.

[0083] In one or more embodiments, if a disconnection occurs during a full refresh, the new subscription request will include a version number, which is the latest version number received by the user interface during the attempt to refresh, when the user interface reconnects and a new subscription request is received. In one or more embodiments, in this case, the cloud information service will resume the full refresh by starting with the next version number after the version number received in the new subscription request. In one or more embodiments, a full refresh is complete when all object information (including any updates that occurred before the full refresh was complete) for all objects of the resource type corresponding to the cache ring, along with the highest version number in the cache ring for any entry of any object sent as part of the full refresh, is sent to the user interface. In one or more embodiments, after a full refresh, the cloud information service will continue to provide updates to object information and object deletion notifications based on 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 disconnects from the cloud information service at some point in the future for any reason, and the user interface reconnects to the cloud information service at some point after the disconnection, the method returns to step 202 when a subscription request is received upon reconnection.

[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 The cloud information service (108) generates this list. In one or more embodiments, if the version number received in the subscription request is equal to the version number of an entry in the middle of the cache ring (e.g., at the start of the binary search described above), the cloud information service creates a list of all object changes corresponding to entries with higher version numbers. These entries will be those in the half of the cache ring with version numbers higher than the middle entry, except for delimiter entries and refresh entries in the cache ring that can be used to perform a full refresh for another user (which are skipped by the cloud information service). Therefore, 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 at any other point via binary search, the cloud information service will add all objects corresponding to the entries in the cache ring to the list of changed objects, whose version numbers are higher 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 a changed object list. For example, the object information may be obtained from a cloud information service (e.g., Figure 1The cloud information service 108) obtains the information. In one or more embodiments, the cloud information service uses the object's unique identifier (which is included in an entry in the cache ring) to obtain the information from the object using any method suitable for the resource type (e.g., the 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 acquired in step 212 to the user interface. In one or more embodiments, transmitting the updated object information includes sending object information for any object in the cache ring corresponding to an updated entry type in the cache ring, and object deletion notifications for entries in the cache ring corresponding to entries with a deleted entry type, for all entries in the cache ring having a version number higher than the version number received as part of a subscription request. For example, any technology used for transmitting information (e.g., as a message in a data packet on a network) can be used to transmit object information from a cloud information service (e.g., Figure 1 The cloud information service 108) is transmitted to the user interface.

[0088] Figure 3 An example scenario is illustrated, according to one or more embodiments of the present disclosure, for generating a cache ring and providing updates from the cache ring in response to a subscription request with a version number. Figure 3 The examples shown and discussed below are highly simplified examples, intended for illustrative purposes only, and not for limiting the scope of the embodiments described herein. Those skilled in the art who benefit from this disclosure will understand that... Figure 3 Compared to what is shown, such a scenario could include a much larger cache ring, more objects corresponding to objects in the cache ring, and so on. Furthermore, while this example illustrates some aspects of the embodiments disclosed herein, not all possible aspects of these embodiments may be shown in this particular example.

[0089] Consider a scenario where a cloud information service is configured to generate and maintain a cache ring, the size of which allows for five entries. The cache ring corresponds to a specific resource type (e.g., a bucket) in the cloud infrastructure. This resource type has at least fifteen resources, and each resource has a corresponding object containing metadata associated with that object, which is updated periodically.

[0090] like Figure 3As shown, at time T-0, the cache ring has no entries because there are no updates to the objects corresponding to the resource type for which the cache ring exists. The generation of the cache ring will begin when the cloud information service starts receiving updates to the objects corresponding to the resource type for which the cache ring exists.

[0091] At time T-1, the cloud information service is notified that the object has been updated. Therefore, the cloud information service adds an entry to the cache ring, which has the object's unique identifier Object1, the update type "Update", and the version number Version1.

[0092] On 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 if any user interfaces are actively subscribed to receive updates about resources of the resource type corresponding to the cache ring. If an active subscription exists, the cloud information service will provide updates to the subscribed user interfaces; these updates will be either object information retrieved by the cloud information service or notifications that an object has been deleted. For clarity, this scenario will not be repeated in this example. Furthermore, for clarity, this scenario does not include any subscription requests requiring a full refresh. See below... Figure 5 Examples including a full refresh can be found in the description.

[0093] After a period of time, at time T-2, the cloud information service receives an update notification for object 2 and adds an entry to the cache ring. This entry includes object 1, entry type "update", and version number "version 2".

[0094] At time T-3, the cloud information service receives a deletion notification for object 2 and adds an entry to the cache ring. This entry includes 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, which includes 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, which includes 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, which includes 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, which includes 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 version number 4. Then, the cloud information service performs a binary search (in... Figure 2 As described above, and it is determined that version 4 is still in the cache ring. Based on this determination, the cloud information server generates a list of changed objects based on all entries in the cache ring with version numbers higher than version 4. Therefore, the list of changed objects includes updates to object 8 at entry version 5, updates to object 5 at entry version 6, deletions of object 7 at entry version 7, and updates to object 6 at entry version 8. Based on the list of changed objects, the cloud information service retrieves the object information for objects 8, 5, and 6. Then, the cloud information service prepares a message for the user interface that receives the subscription request from it and sends the message to the user interface. The message includes the updated object information for objects 8, 5, and 6, and a deletion notification for object 7.

[0102] Figure 4 An example scenario is illustrated according to one or more embodiments of the present disclosure for providing an update from a cache ring in response to two subscription requests, one subscription request having no version number and the other subscription request having a version number not found in the cache ring. Figure 4 The examples shown and discussed below are highly simplified examples, intended for illustrative purposes only, and not for limiting the scope of the embodiments described herein. Those skilled in the art who benefit from this disclosure will understand that... Figure 4 Compared to what is shown, such a scenario could include a much larger cache ring, more objects corresponding to objects in the cache ring, and so on. Furthermore, while this example illustrates some aspects of the embodiments disclosed herein, not all possible aspects of these embodiments may be shown 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 three resource types existing in the cloud infrastructure. Therefore, there are three objects corresponding to the three resources, each containing metadata about the resource.

[0104] At time T-0, the cloud information service is notified that the object has been updated. Therefore, the cloud information service adds an entry to the cache ring, which has the object's unique identifier O-3, the update type "update", and the version number V-1.

[0105] On this point, and in Figure 4 In the example shown, at all subsequent points where entries are added to the cache ring that are not of type "Sept." (meaning delimiter) or "Refr." (meaning refresh), the cloud information service can determine whether any user interface is actively subscribed to receive updates about resources of the resource type corresponding to the cache ring. If an active subscription exists, the cloud information service will provide updates to the subscribed user interface, which will be either object information retrieved by the cloud information service or a notification that an object has been deleted. For clarity, this will not be repeated in this 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, during which the cloud information service adds an entry to the cache ring, this entry having a separator entry type (e.g., ...). Figure 4 The "separator (Sep.)" in the image is shown, along with the version number V-2. Then, the cloud information service creates a list of all objects of the resource type corresponding to the cache ring; these objects are objects O-1, O-2, and O-3. Then, the cloud information service adds an entry to the cache ring for each object, with each object having a refresh entry (such as...). Figure 4 The "refresh" option shown in the image has versions V-3, V-4, and V-5. The cloud information service then adds another delimiter entry with version V-6 to the cache ring. Figure 4 In the diagram, each of the separators and refresh entries used for the first full refresh is shown as corresponding to a timestamp T-1, since separators and refresh entries are typically added substantially simultaneously. When a full refresh is performed, O-1 is updated twice, as shown by the other two 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] Similarly, during a full refresh, another user interface sends a subscription request including version number 0. The cloud information service determines that no entries in the cache ring now have V-0, and therefore another full refresh must be performed on the second user interface. Therefore, the cloud information service adds entries V-9 through V-13 to the cache ring, which includes a delimiter entry, three refresh entries for three objects, and a second delimiter entry. Each of these entries in... Figure 4 The timestamp T-8 is shown because the separator and refresh entries are typically added almost simultaneously. 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 entries used for the second full refresh.

[0108] The cloud messaging service completes the first full refresh by retrieving the object information for O-1, O-2, and O-3, and sends the object information as part of a message including V-8. The cloud messaging service completes the second full refresh using the object information for the three objects and version V-13.

[0109] Before the second refresh was completed, the user interface, which required the first full refresh, disconnected from the cloud information service due to a network error. Then, after the cloud information service had added the V-14 entry for the update to O-1, the user interface reconnected to the cloud information service. The subscription request used for reconnection included V-8, which was received by the user interface when it received the first full refresh. The cloud information service used V-8 to perform a binary search on the cache ring. The cloud information service found V-8, skipped V-9 to V-13 (because they are separators and refresh entries), and retrieved the object information from O-1. The cloud information service then sent the object information along with the version number V-14 to the user interface.

[0110] Figure 5 A block diagram of a computing device according to one or more embodiments of the present disclosure is shown. As described above, the embodiments described herein can be implemented using a computing device. For example, Figure 1 All or any part of the components shown can be implemented using at least one or more computing devices, and Figure 2All or any part of the methods shown can 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 devices 504 (e.g., volatile memory, such as random access memory (RAM), cache memory, etc.), persistent storage devices 506 (e.g., hard disks, optical drives such as optical disc (CD) drives or digital versatile disc (DVD) drives, flash memory, etc.), communication interfaces 512 (e.g., Bluetooth interfaces, infrared interfaces, network interfaces, optical interfaces, etc.), input devices 510, output devices 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) may be one or more cores or microcores of a processor. Processor 502 may be a general-purpose processor configured to execute program code included in software executed on computing device 500. Processor 502 may be a special-purpose processor, in which certain instructions are incorporated into the processor design. Processor 502 may be an application-specific integrated circuit (ASIC), graphics processing unit (GPU), data processing unit (DPU), tensor processing unit (TPU), associative processing unit (APU), vision processing unit (VPU), quantum processing unit (QPU), and / or various other processing units using special-purpose hardware (e.g., field-programmable gate array (FPGA), system-on-a-chip (SoC), digital signal processor (DSP), etc.). 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 touchscreen, keyboard, mouse, microphone, touchpad, electronic pen, motion sensor, or any other type of input device. Input devices 510 allow users 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), plasma display, touchscreen, cathode ray tube (CRT) display, projector, or other display device), printer, external storage device, or any other output device. One or more of the output devices may be the same as or different from the input devices(s). The input and output devices(s) may be locally or remotely connected to the computer processor(s) 502, non-persistent storage device(s) 504, and persistent storage device(s) 506. Many different types of computing devices exist, and the aforementioned input and output devices(s) may take other forms. In some cases, a multi-mode system allows users to provide multiple types of input / output to communicate with the computing device 500.

[0113] Furthermore, communication interface 512 can facilitate the connection of 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). Communication interface 512 can use wired and / or wireless transceivers to perform or facilitate the reception and / or transmission of wired or wireless communications, including transceivers using audio jacks / plugs, microphone jacks / plugs, Universal Serial Bus (USB) ports / plugs, etc. 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, 802.11 WiFi wireless signal transmission, WLAN signal transmission, Visible Light Communication (VLC), Global Microwave Access Interoperability (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 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, Russian-based GLONASS, Chinese-based BeiDou Navigation Satellite System (BDS), and European-based Galileo GNSS. There are no restrictions on operation on any particular hardware layout, and therefore the basic features here can be easily replaced by improved hardware or firmware layouts that are 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 instructions and / or data. Computer-readable media can include non-transitory media, which may store data and do not include carrier waves and / or transient electronic signals propagated wirelessly or via a wired connection. Examples of non-transitory media may include, but are not limited to, magnetic disks or magnetic tapes, optical storage media such as CDs or DVDs, flash memory, memory, or memory devices. Computer-readable media may store code and / or machine-executable instructions thereon, which may represent procedures, functions, subroutines, programs, routines, subroutines, modules, software packages, classes, or any combination of instructions, data structures, or program statements. A code segment can be coupled to another code segment or hardware circuitry by passing and / or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc., can be passed, forwarded, or transmitted in any suitable manner, including memory sharing, message passing, token passing, network transmission, etc.

[0115] All or any part of the components of computing device 500 can be implemented in a circuit system. For example, components may include and / or be implemented using electronic circuits 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 be able to 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 containing bit streams, etc. However, when referred to, non-transitory computer-readable storage media expressly exclude media such as energy, carrier signals, electromagnetic waves, and the signals themselves.

[0116] In the foregoing description, many details have been set forth as examples of the embodiments described herein. Those skilled in the art (and who also benefit from this disclosure) will understand that one or more of the embodiments described herein can be practiced without these specific details, and that many variations or modifications can be made without departing from the scope of the embodiments described herein. Certain details known to those skilled in the art may have been omitted to avoid obscuring the description.

[0117] Specific details are provided in the foregoing description to provide a full understanding of the aspects and examples presented herein. However, those skilled in the art will understand that these aspects can be practiced without these specific details. For clarity, in some instances, the technology may be presented as including functional blocks that may include devices, device components, steps, or routines in a method embodied in software or a combination of hardware and software. Other components may be used in addition to those shown in the figures and / or described herein. For example, circuits, systems, networks, processes, and other components may be shown as components in block diagram form so as not to obscure aspects with unnecessary detail. In other instances, well-known circuits, processes, algorithms, structures, and techniques may be shown without unnecessary detail to avoid obscuring aspects of the embodiments disclosed herein.

[0118] The above can be described as processes or methods shown in flowcharts, flow diagrams, data flow diagrams, structure diagrams, or block diagrams. Although flowcharts can describe operations as sequential processes, many operations can be executed in parallel or concurrently. Furthermore, the order of operations can be rearranged. A process terminates when its operations are completed, but there may be additional steps not included in the diagram. A process can correspond to a method, function, procedure, subroutine, subroutine, etc. When a process corresponds to a function, its termination can correspond to the function returning from the calling function or the main function.

[0119] The processes and methods described in the examples above can be implemented using stored or otherwise accessible computer-executable instructions from a computer-readable medium. For example, such instructions may include instructions and data that cause or otherwise configure a general-purpose computer, special-purpose computer, or processing device to perform a specific function or group of functions. Parts of the computer resources used may be accessible via a network. The computer-executable instructions may be, for example, binary files, intermediate format instructions (such as assembly language, firmware, source code, etc.). Examples of computer-readable media that may be used to store instructions, information used, and / or information created during the methods according to the examples include hard disks or optical disks, flash memory, USB devices equipped with non-volatile memory, network storage devices, etc.

[0120] In the above description of the accompanying drawings, any component described with respect to the drawings in the various embodiments described herein may be equivalent to one or more components with the same or similar names and / or numbers described with respect to 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 in each drawing is combined by reference, and it is assumed that it may optionally exist in each other drawing having one or more components with the same or similar names and / or numbers. Furthermore, any description of components in the figures according to the various embodiments described herein should be interpreted as an alternative embodiment that may be implemented as a supplement, combination, or substitution to the embodiments described with respect to one or more corresponding components with the same or similar names and / or numbers in any other drawing.

[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 a single element, unless explicitly stated otherwise, such as through the use of terms like “before,” “after,” “single,” and others. Rather, ordinal numbers are used to distinguish elements. For example, the first element is different from the second element, and the first element may include more than one element and is after (or before) the second element in the element order.

[0122] As used herein, the phrase "operable connection" or "operable link" refers to a direct or indirect connection between elements / components / devices that allows the elements to interact in a certain way. For example, the phrase "operable connection" can refer to any direct (e.g., a direct wire between two devices or components) or indirect (e.g., a wired and / or wireless connection between any number of devices or components that are connected in an operable connection) connection. Therefore, any path through which information can pass can be considered an operable connection.

[0123] While 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 understand that other embodiments can be devised 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. An apparatus comprising: One or more processors; as well as One or more non-transitory computer-readable media store instructions that, when executed by the one or more processors, cause the one or more processors to: A cache ring is generated by a cloud information service executed on one or more processors. The cache ring corresponds to a resource type among multiple resource types of the cloud infrastructure and includes multiple entries, each of which corresponds to an object among multiple objects, wherein each of the multiple objects corresponds to a corresponding resource of the resource type in the cloud infrastructure. The cloud information service receives a subscription request from the user interface, wherein the subscription request includes a version number that corresponds to the highest version number that existed in the cache ring during a previous connection between the user interface and the cloud information service. The cloud information service performs 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, wherein a particular entry among the plurality of entries includes the version number indicating that the particular entry was previously transmitted from the cloud information service to the user interface; When the version number is in the cache ring, a list of changed objects is generated, where: The list of changed objects includes multiple object identifiers, which correspond to a first group of entries within the multiple entries in the cache ring that have an update entry type or a delete entry type. Each entry in the first group of entries includes a corresponding higher version number that is numerically higher than the version number; Based on the plurality of object identifiers in the changed object list, object information for a first plurality of objects is obtained, the first plurality of objects corresponding to a portion of the first group of entries having the updated entry type; and The object information for the first plurality of objects and the deletion notification for the second plurality of objects are transmitted to the user interface, the second plurality of objects corresponding to the second part of the first group of entries that has the deletion entry type.

2. The apparatus of claim 1, wherein the execution of the instructions further causes the one or more processors to: Receive a second subscription request from the 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 the execution of the instructions further causes the one or more processors to: Receive a second subscription request, including a second version number, from the second user interface; A second search is performed 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 refresh is performed.

4. The apparatus according to claim 1, wherein the resource type is a container resource type, a barrel resource type, or a shell resource type.

5. The apparatus of claim 1, wherein each of the plurality of entries in the cache ring includes a unique object identifier, an entry type, and a unique version number.

6. The apparatus of claim 1, wherein the search is a binary search.

7. The apparatus of claim 1, wherein the cloud information service skips a second group of entries with a separator entry type or a refresh entry type within the plurality of entries in the cache ring while generating the change object list.

8. A computer-implemented method, comprising: A cache ring is generated by a cloud information service executed on one or more processors. The cache ring corresponds to a resource type among multiple resource types of the cloud infrastructure and includes multiple entries, each of which corresponds to one of multiple objects, wherein each of the multiple objects corresponds to a corresponding resource of the resource type in the cloud infrastructure. The cloud information service receives a subscription request from the user interface, wherein the subscription request includes a version number that corresponds to the highest version number that existed in the cache ring during a previous connection between the user interface and the cloud information service. The cloud information service performs 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, wherein a particular entry among the plurality of entries includes the version number indicating that the particular entry was previously transmitted from the cloud information service to the user interface; When the version number is in the cache ring, a list of changed objects is generated, where: The list of changed objects includes multiple object identifiers, which correspond to a first group of entries within the multiple entries in the cache ring that have an update entry type or a delete entry type. Each entry in the first group of entries includes a corresponding higher version number that is numerically higher than the version number; Based on the plurality of object identifiers in the changed object list, object information for a first plurality of objects is obtained, the first plurality of objects corresponding to a portion of the first group of entries having the updated entry type; and The object information for the first plurality of objects and the deletion notification for the second plurality of objects are transmitted to the user interface, the second plurality of objects corresponding to the second part of the first group of entries that has the deletion entry type.

9. The computer-implemented method according to claim 8, further comprising: Receive a second subscription request from the second user interface 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 according to claim 8, further comprising: Receive a second subscription request, including a second version number, from the second user interface; A second search is performed 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 refresh 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 of the plurality of entries in the cache ring includes 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 with a separator entry type or a refresh entry type within the plurality of entries in the cache ring while generating the change object list.

15. A non-transitory computer-readable medium storing a program for execution by one or more processors, the program comprising instructions for: A cache ring is generated by a cloud information service executed on one or more processors. The cache ring corresponds to a resource type among multiple resource types of the cloud infrastructure and includes multiple entries, each of which corresponds to an object among multiple objects, wherein each of the multiple objects corresponds to a corresponding resource of the resource type in the cloud infrastructure. The cloud information service receives a subscription request from the user interface, wherein the subscription request includes a version number that corresponds to the highest version number that existed in the cache ring during a previous connection between the user interface and the cloud information service. The cloud information service performs 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, wherein a particular entry among the plurality of entries includes the version number indicating that the particular entry was previously transmitted from the cloud information service to the user interface; When the version number is in the cache ring, a list of changed objects is generated. in: The list of changed objects includes multiple object identifiers, which correspond to a first group of entries within the multiple entries in the cache ring that have an update entry type or a delete entry type. Each entry in the first group of entries includes a corresponding higher version number that is numerically higher than the version number; Based on the plurality of object identifiers in the changed object list, object information for a first plurality of objects is obtained, the first plurality of objects corresponding to a portion of the first group of entries having the updated entry type; and The object information for the first plurality of objects and the deletion notification for the second plurality of objects are transmitted to the user interface, the second plurality of objects corresponding to the second part of the first group of entries that has the deletion entry type.

16. The non-transitory computer-readable medium of claim 15, further comprising additional instructions, which, when executed by the one or more processors, cause the one or more processors to: Receive a second subscription request from the 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, further comprising additional instructions, which, when executed by the one or more processors, cause the one or more processors to: Receive a second subscription request, including a second version number, from the second user interface; A second search is performed 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 refresh 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 of the plurality of entries in the cache ring includes 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 with a separator entry type or a refresh entry type within the plurality of entries in the cache ring while generating the list of changed objects.

Citation Information

Patent Citations

  • Resource subscription method and device and storage medium

    CN114641974A

  • Automated conflict resolution and synchronization of objects

    US11397750B1