Message transmission between points of presence

By implementing message bus proxy in network devices, the problem of message transmission management in multi-cloud or multi-tenant environments is solved, the GDPR requirements are met and the dynamic management of tenants/POPs is achieved, and resource allocation and load balancing are optimized.

CN119484414APending Publication Date: 2025-02-18HEWLETT PACKARD ENTERPRISE DEV LP
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202311693299.9
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-10-19
Filing Date
2023-12-11
Publication Date
2025-02-18

AI Technical Summary

Technical Problem

It is difficult to effectively manage and transmit tenant-related messages in multi-cloud or multi-tenant environments, especially when meeting GDPR requirements and dynamically adding/deleting tenants and POPs.

Method used

Selective message transmission across multiple clouds is achieved by implementing a message bus agent in a network device, receiving messages associated with the tenant, and identifying and transmitting the corresponding POP in the second cloud deployment based on these messages.

Benefits of technology

Ensure that the deployment topology of multi-POP tenants complies with GDPR requirements, provide programmability support for dynamic addition and removal of tenants and POPs, and optimize resource allocation and load balancing in multi-tenant SAAS environment.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119484414A_ABST
    Figure CN119484414A_ABST
Patent Text Reader

Abstract

The embodiment of the invention relates to message transmission between presence points. In some implementations, one or more network devices may receive, by one or more network devices associated with a first point of presence (POP) in a first cloud deployment, a message associated with a tenant. The one or more network devices may identify one or more second POPs associated with the tenant in one or more second cloud deployments based at least in part on the message. The one or more network devices may transmit messages to the one or more second POPs.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This patent application claims the priority of Indian Patent Application No. 202341053364, entitled “MESSAGE BUS PROXY FOR MULTI-CLOUD OR MULTI-TENANT ENVIRONMENTS” filed on August 9, 2023. The disclosure of the prior application is considered as part of this patent application and is incorporated by reference into this patent application. Background Art

[0003] The Secure Access Service Edge (SASE) architecture integrates networking and security while providing direct, protected access to geographically dispersed users. The Secure Service Edge (SSE) capability leverages the cloud to optimize the network and security experience. SASE deployments can include centralized deployments and point-of-presence (POP) cloud deployments. Summary of the invention

[0004] Some implementations described herein relate to a method. The method may include receiving a message associated with a tenant by one or more network devices associated with a first point of presence (POP) in a first cloud deployment. The method may include identifying, by one or more network devices, one or more second POPs associated with the tenant in one or more second cloud deployments based at least in part on the message. The method may include transmitting a message to one or more second POPs by one or more network devices.

[0005] Some implementations described herein involve one or more network devices. One or more network devices may include one or more memories and one or more processors. One or more processors may receive a message associated with a tenant. One or more processors may identify one or more second POPs associated with a tenant in one or more second cloud deployments based at least in part on the message. One or more processors may transmit a message to one or more second POPs.

[0006] Some implementations described herein relate to a non-transitory computer-readable medium storing an instruction set. The instruction set includes one or more instructions that, when executed by one or more processors of one or more network devices, may cause the one or more network devices to receive a message associated with a tenant. When executed by one or more processors of one or more network devices, the one or more instructions may cause the one or more network devices to identify one or more second POPs associated with the tenant in one or more second cloud deployments based at least in part on the message. When executed by one or more processors of one or more network devices, the one or more instructions may cause the one or more network devices to transmit a message to the one or more second POPs. BRIEF DESCRIPTION OF THE DRAWINGS

[0007] Figure 1 is a diagram of an example implementation associated with message transmission between POPs.

[0008] Figure 2 is a diagram of an example implementation associated with a system including multiple POPs and a regional manager in a corresponding cloud deployment.

[0009] Figure 3 is a diagram of an example implementation associated with a queue topology in a POP deployment.

[0010] Figure 4 is a diagram of an example implementation associated with programmability support.

[0011] Figure 5 is a diagram of an example implementation associated with a multi-tenant software as a service (SAAS) environment.

[0012] Figure 6 is a diagram of an example implementation associated with partition-based load balancing.

[0013] Figure 7 is a diagram of an example implementation associated with programmable federated exclusivity in a message bus broker in a multi-cloud environment.

[0014] Figure 8 is a diagram of an example environment in which the systems and / or methods described herein may be implemented.

[0015] Fig. 9 is a diagram of example components of equipment associated with message transmission between POPs.

[0016] Fig.10 is a flow diagram of an example process associated with message transmission between POPs. DETAILED DESCRIPTION

[0017] The following detailed description of example implementations refers to the accompanying drawings.The same reference numbers in different drawings may identify the same or similar elements.

[0018] In some tenant deployment topologies, messages transmitted between POPs without geographic restrictions may not comply with General Data Protection Regulation (GDPR) requirements. Some tenant deployment topologies may also lack programmability support for dynamic addition and / or removal of tenants and POPs.

[0019] In addition, in a SAAS system that includes multiple services that share resources, a chatty tenant may consume most or all of the resources, which may affect other tenants and ultimately lead to unfair sharing of resources between tenants. For example, one tenant's operations may use resources that were originally allocated to other tenants' operations. For example, a tenant's batch device operation may queue (e.g., delay) another tenant's simple device operation task. In addition, in a cloud-based system that includes multiple services that share resources, a chatty service may consume most or all of the resources, which may affect other cloud-based services.

[0020] Some implementations described herein enable selective transmission (e.g., broadcast and / or multicast) of messages (e.g., services or content) for tenants across multiple clouds based on customer GDPR requirements. For example, a programmable message bus agent deployed in a POP can transmit messages based on a geographic deployment selected by the tenant. In some examples, the implementations described herein can support multi-center deployments (e.g., deployments involving multiple central POPs) based on tenant GDPR requirements. Messages can be broadcast or multicast based on a tenant's preferred central POP. In addition, some aspects provide programmable support for dynamic addition and / or removal of tenants and POPs.

[0021] In some implementations, a multi-tenant SAAS environment can dynamically adjust resource allocation based on incoming tenant message rates, allocate resources based on high priority tenant requests, predict (e.g., estimate) tenant message rates, and proactively allocate resources, etc. Some implementations support federated exclusivity for a given service in a message bus proxy. Federated exclusivity can be controlled by programmability at runtime. Some examples can enable ordered processing based on each service while delivering messages through federation.

[0022] As a result, some implementations described herein can help ensure that multi-POP tenant deployment topologies comply with GDPR requirements. For example, a multi-center deployment may help ensure compliance with GDPR requirements. Some implementations may also enable programmability support for dynamic addition and / or removal of tenants and POPs. In some implementations, a multi-tenant SAAS environment can spread load across tenants, use resources efficiently, handle high-priority tenant requests, use more resources without reducing response time, and so on. In some implementations, certain services can be prevented from consuming resources at the expense of other services.

[0023] Figure 1 is a diagram of an example implementation 100 associated with message transmission between POPs. Figure 1 As shown in , the example implementation 100 includes multiple POPs in a corresponding cloud deployment. Each POP may include one or more network devices and may be associated with a tenant. Figure 8 and Fig. 9 These devices are described in more detail.

[0024] As shown in reference numeral 110, the network device may receive a message (e.g., a payload message) associated with a tenant. The message may include an event message, a firewall policy configuration message, a security log, etc. In some examples, the message may include one or more of the following: a logical grouping (e.g., a topic) associated with the message, a payload, or a message key associated with the order of multiple messages including the message, the multiple messages being associated with the message key. For example, the message may include the following data model:

[0025]

[0026] The Subject field may contain an indication of the subject to which the message is to be delivered. The Payload field may contain an opaque message payload. In some examples, the POP field may contain an array of POPs to which the message will be delivered. In some examples, the POP field may contain a value of "global," which may indicate that the message will be delivered to all POPs. The Message Key field may contain a message key that helps to ensure a specific message order for messages that share the same message key.

[0027] The network device may identify other POPs associated with the tenant based at least in part on the message, as indicated by reference numeral 120. For example, the network device may identify the other POPs based on the value of the POP field.

[0028] As shown at reference numeral 130, the network device can transmit the message to other POPs. In some examples, the network device can multicast the message to one or more other POPs (e.g., where the POP field contains an array (e.g., a subset) of POPs). In some examples, the network device can broadcast the message to all POPs associated with the tenant (e.g., where the value of the POP field is "global").

[0029] Transmitting messages to other POPs may enable selective transmission (e.g., broadcast and / or multicast) of messages to tenants across multiple clouds based on customer GDPR requirements. For example, a network device may transmit messages based on a geographic deployment selected by a tenant. For example, transmitting messages may help support a multi-center deployment (e.g., a deployment involving multiple central POPs) based on tenant GDPR requirements. For example, a Singapore POP may be designated as the central POP for tenants with deployments based in Asia, a German POP may be designated as the central POP for tenants with deployments based in Europe, and so on.

[0030] As indicated above, provide Figure 1 As an example. Other examples can be related to Figure 1 Different than described. Figure 1 The number and arrangement of devices shown in the figure are provided as examples. In practice, there may be more than Figure 1 More devices, fewer devices, different devices, or differently arranged devices as shown. In addition, Figure 1 Two or more of the devices shown in may be implemented in a single device, or Figure 1 The single device shown in can be implemented as multiple distributed devices. Additionally or alternatively, Figure 1 The device set (e.g., one or more devices) shown in FIG. 1 may perform the operations described by Figure 1 One or more functions performed by another set of devices shown in .

[0031] Figure 2 2 is a diagram of an example implementation 200 associated with a system including multiple POPs and a regional manager (which may also be referred to as a POP manager) in a respective cloud deployment. As shown, each cloud deployment includes a message bus proxy ("MBP"). The message bus proxy may be supported by any suitable technology, such as a Kafka cluster, RabbitMQ, etc. Each message bus proxy may be responsible for broadcasting or multicasting messages to remote message buses associated with other POPs.

[0032] In some examples, the regional manager may include a database (e.g., a global customer database) that maps POPs to tenants that use the POPs. In some aspects, one of the message bus agents may identify other POPs to which to send messages based at least in part on the database. In some examples, the database may maintain a list of all POPs associated with a tenant. In some examples, one of the POPs may be designated as a central POP, and the database may maintain an association of the tenant to the central POP. In some examples, the data may include a list of central POPs and POPs to which SASE users can connect.

[0033] As indicated above, provide Figure 2 As an example. Other examples can be related to Figure 2 Different than described. Figure 2 The number and arrangement of devices shown in the figure are provided as examples. In practice, there may be more than Figure 2 More devices, fewer devices, different devices, or differently arranged devices as shown. In addition, Figure 2 Two or more of the devices shown in may be implemented in a single device, or Figure 2 The single device shown in can be implemented as multiple distributed devices. Additionally or alternatively, Figure 2 The device set (e.g., one or more devices) shown in FIG. 1 may perform the operations described by Figure 2 One or more functions performed by another set of devices shown in .

[0034] Figure 3 is a diagram of an example implementation 300 associated with a queue topology in a POP deployment. Figure 3 The topology shown in can be used to buffer messages to be published to other regions or a central POP (e.g., a cluster). As shown, a producer transmits a message to a source message bus that includes a queue associated with a network federation ("federation") and multiple queues associated with the POPs, respectively. In some examples, the queue associated with the network federation can be referred to as a federation topic (and thus a producer can publish messages to a federation topic), and the queues associated with the POPs, respectively, can be referred to as POP topics. The message bus agent can maintain a POP topic (e.g., queue) corresponding to each POP associated with a tenant.

[0035] The source message bus may buffer messages in a queue associated with the network federation. A federation topic processor (e.g., a consumer of a message bus proxy) may process messages in a federation topic and forward the messages to one or more POP topics in a POP topic. For example, a federation topic processor may identify which POP(s) the message will be forwarded to. For example, upon determining that the message is to be forwarded to the first remote message bus, the POP topic processor may forward the message to the POP 1 topic, upon determining that the message is to be forwarded to the Nth remote message bus, the POP topic processor may forward the message to the POP N topic, and so on.

[0036] A POP topic processor (e.g., a consumer of a message bus proxy) can process (multiple) messages in a POP topic and forward the messages to a cluster of POPs. For example, a POP topic processor can forward messages in a POP 1 topic to the first remote message bus, forward messages in a POP N topic to the Nth remote message bus, and so on. A POP topic processor may also be referred to as a regional topic processor. POP-specific topics can prevent network problems at one POP from affecting other POPs.

[0037] The message bus agent that receives messages from producers can be located in a central POP or a non-central (e.g., regional) POP. A central POP can be connected to multiple regional POPs that can provide services in corresponding geographic locations for a given tenant. Thus, events (e.g., messages) can be broadcast or multicast between central and / or non-central cloud deployments depending on the geographic deployment selected by the tenant, thereby complying with GDPR requirements.

[0038] In the case where the message bus agent is located in a central POP, the message bus agent can receive one or more messages from a producer and buffer the messages in a federated topic. The message bus agent can determine an identifier of a tenant associated with the message and POP information (e.g., the POP(s) to which the message is to be transmitted). For example, the payload of the message can contain a tenant identifier. In some aspects, for each message in a federated topic, the message bus agent (e.g., a federated topic processor) can identify in the message an indication that the message is associated with a global POP set that is associated with the tenant. For example, the message bus agent can determine that the value of the POP field is "global." Based on the indication that the message is associated with a global POP set, the message bus agent can identify the POP to which the message is to be transmitted. For example, the message bus agent can obtain a list of POPs associated with a tenant (e.g., a tenant identifier). For example, the message bus agent can obtain the POP list from a regional manager ( Figure 2). The source message bus can buffer the message in the POP topic. For example, the federated topic processor can clone the message and publish the message to each POP topic associated with the tenant (e.g., in addition to the topic associated with the central POP).

[0039] In the case where the message bus agent is in a non-central POP, the message bus agent can receive a message from a producer and buffer the message in a federated topic. The message bus agent can determine an identifier of the tenant associated with the message and information associated with the central POP. For example, the payload of the message can contain a tenant identifier. In some aspects, for each message in a federated topic, the message bus agent (e.g., a federated topic processor) can identify an indication in the message that the message is associated with a global POP set that is associated with the tenant. For example, the message bus agent can determine that the value of the POP field is "global." Based on the indication that the message is associated with a global POP set, the message bus agent can identify a central POP associated with the tenant (e.g., a tenant identifier). For example, the message bus agent can obtain an indication of the central POP from a regional manager ( Figure 2 ). The source message bus can buffer messages in POP topics. For example, a federated topic processor can publish messages to a central POP topic.

[0040] In some aspects, for a message bus agent in a central or non-central POP, the message bus agent may identify in a message an indication that the message is associated with a subset of POPs that are associated with a tenant. For example, the message bus agent may determine that the value of the POP field includes an indication of a subset of POPs. Based on the indication identifying that the message is associated with a subset of POPs, the message bus agent may identify a POP (e.g., a subset of POPs) to which the message is to be transmitted. For example, the message bus agent may obtain an indication of a subset of POPs from a regional manager (e.g., a subset of POPs). Figure 2 ). The source message bus can buffer messages in one or more POP topics. For example, the joint topic processor can clone the message and publish the message to the POP topic (e.g., POP subset) to which the message is to be transmitted.

[0041] In some aspects, for a message bus agent in a central or non-central POP, the message bus agent (e.g., a POP topic handler) can obtain a topic name from the message and obtain an indication of the POP(s) (e.g., the central or non-central POP(s) to which the message is to be transmitted). For example, the message bus agent can obtain a POP Kafka endpoint from a regional manager. The message bus agent (e.g., a POP topic handler) can attempt to publish a message on a topic of the POP(s). In some aspects, the message bus agent can receive an acknowledgment associated with the message from the POP(s) (e.g., an acknowledgment that the message has been received). The acknowledgment can indicate that the message has been successfully delivered. In some aspects, the message bus agent can determine that a time window associated with an acknowledgment associated with the message has expired. The message bus agent can retransmit the message to the POP(s) (e.g., the message bus agent can sleep and retry the message). Determining that the time window has expired and retransmitting the message can help ensure that the message is successfully delivered.

[0042] As indicated above, provide Figure 3 As an example. Other examples can be related to Figure 3 Different than described. Figure 3 The number and arrangement of devices shown in the figure are provided as examples. In practice, there may be more than Figure 3 More devices, fewer devices, different devices, or differently arranged devices as shown. In addition, Figure 3 Two or more of the devices shown in may be implemented in a single device, or Figure 3 The single device shown in can be implemented as multiple distributed devices. Additionally or alternatively, Figure 3 The device set (e.g., one or more devices) shown in FIG. 1 may perform the operations described by Figure 3 One or more functions performed by another set of devices shown in .

[0043] Figure 4 4 is a diagram of an example implementation 400 associated with programmability support. For example, a database maintained by a regional manager can be dynamically programmable. As shown, a user (a network administrator associated with a tenant) and / or a message bus agent can communicate with the regional manager (e.g., dynamically programmable).

[0044] In some aspects, a database can maintain a dynamic mapping of POPs to tenants. For example, new POPs can be added based on demand, which can enable the system to avoid downtime, thereby supporting the tenant's related service level agreement. An application programming interface (API) can be provided to add new POPs (and / or associated tenants) to the database. A database that maintains a dynamic mapping of POPs to tenants can enable the database to be dynamically updated to reflect changes in POPs associated with tenants.

[0045] In some aspects, a database may maintain a dynamic indication of which POP is the central POP for a tenant. For example, an API may be provided to add an association of a tenant to a POP, including a list of central POPs and / or POPs to which a SASE user may connect. A database maintaining a dynamic indication of which POP is the central POP for a tenant may enable the database to be dynamically updated to reflect changes in the central POP associated with a tenant.

[0046] In some examples, the message bus proxy can read the deployment topology of the tenant when it occurs. For each deployment topology change, the message bus proxy can detect the deployment topology change event and update the deployment topology.

[0047] The following data model (eg, POP model) can implement the programmability of POP.

[0048] rw POP*[name]

[0049] +--rw name

[0050] +--rw description? string

[0051] +--rw Kafka end point? string

[0052] +--rw north-bound-loadlanacer? string

[0053] +--rw south-bound-loadlanacer? string

[0054] The following data model (eg, tenant-to-POP association model) may enable programmability of tenant-to-POP association.

[0055] rw tenant-region-association*[name]

[0056] +--rw tenant-id

[0057] +--rw central-po-id? string

[0058] +--rw pop-ids*

[0059] As indicated above, provide Figure 4 As an example. Other examples can be related to Figure 4 Different than described. Figure 4The number and arrangement of devices shown in the figure are provided as examples. In practice, there may be more than Figure 4 More devices, fewer devices, different devices, or differently arranged devices as shown. In addition, Figure 4 Two or more of the devices shown in may be implemented in a single device, or Figure 4 The single device shown in can be implemented as multiple distributed devices. Additionally or alternatively, Figure 4 The device set (e.g., one or more devices) shown in FIG. 1 may perform the operations described by Figure 4 One or more functions performed by another set of devices shown in .

[0060] Figure 5 5 is a diagram of an example implementation 500 associated with a multi-tenant SAAS environment. SAAS is a software distribution model in which a cloud provider hosts applications and provides them to end users over the Internet. Implementation 500 includes multiple cloud deployments or POPs. Each POP can include multiple services, a message bus agent, and a resource controller. The resource controller can be a centralized controller that tracks computing resources and allocates resources to tenant jobs. For example, tenants in a SAAS environment can share the same computing and storage resources, which can improve resource usage, and an operating system (OS) scheduler can be designed to allocate and share computing resources across processes.

[0061] In some aspects, a POP can receive multiple messages from multiple tenants and load balance the multiple messages across multiple resources (e.g., computing resources). For example, the message load can be dispersed across tenants and / or instances. Multiple messages can be associated with one or more tenants. As described above, a POP can also identify one or more POPs to which a message is to be transmitted, and transmit the message to the one or more POPs. Load balancing multiple messages can enable computing resources to be shared between tenants in a manner that end users are allocated a fair share of resources. For example, a message bus agent can efficiently utilize resources and achieve fair sharing.

[0062] As indicated above, provide Figure 5 As an example. Other examples can be related to Figure 5 Different than described. Figure 5 The number and arrangement of devices shown in the figure are provided as examples. In practice, there may be more than Figure 5 More devices, fewer devices, different devices, or differently arranged devices as shown. In addition, Figure 5 Two or more of the devices shown in may be implemented in a single device, or Figure 5 The single device shown in can be implemented as multiple distributed devices. Additionally or alternatively, Figure 5The device set (e.g., one or more devices) shown in FIG. 1 may perform the operations described by Figure 5 One or more functions performed by another set of devices shown in .

[0063] Figure 6 6 is a diagram of an example implementation 600 associated with partition-based load balancing. Implementation 600 includes multiple tenants, multiple partitions, and topics. The multiple tenants include priority tenants and non-priority tenants, and the multiple partitions include partitions associated with a priority partition pool and partitions associated with a non-priority partition pool. Each partition can be associated with a set of resources (e.g., computing resources) that will be load balanced between messages associated with the tenants.

[0064] Each tenant can be soft mapped to a partition. For example, a priority tenant is mapped to a priority partition pool, and a non-priority tenant is mapped to a non-priority partition pool. The mapping can change over time based on event rates (e.g., based on the rate of incoming messages associated with the tenant to be transmitted to other POPs). The resource controller can monitor the event rate for a given tenant and assign a weight to the tenant. Based on the event rate, messages can be placed in federated and POP topic partitions, and the resource controller can actively reallocate tenants between partitions and / or automatically scale the message bus agent by predicting (e.g., estimating) the message rate of the tenant.

[0065] In some aspects, a POP (e.g., one or more network devices associated with the POP) can load balance multiple messages based on multiple weights associated with multiple partitions and multiple weights associated with multiple tenants. For example, a POP can support load balancing by calculating a weight for each tenant and partition based on the message rate and load balancing or reallocating tenants to partitions.

[0066] The partition weight can be calculated as follows. The partition pool to which the message is to be published can be represented as P = P1, P2, P3, ... P n The partition weight can be calculated based on the message rate threshold and the current processing rate of each partition: PW i =MR i / MR t , where PW i is the weight of partition “i”, MR i is the message rate for partition “i”, and MR t Message rate threshold. In some examples, PW0=0.3, PW1=0.5, PW2=0.9, etc. The message rate of each partition can be processed periodically (e.g., every five minutes), and based on the message rate, a weight W for each partition can be calculated. i .

[0067] Tenant weights may be calculated as follows. Tenant weights may be calculated based on a message rate threshold and the current processing rate of each tenant. In some examples, TW i =TMR i / MR t , where TW i is the weight of tenant “i”, TMR i is the message rate of tenant “i”, and MR t is the message rate threshold. In some examples, TW0=0.1, TW1=0.7, TW2=0.9, etc. The message rate of each tenant can be processed periodically (e.g., every five minutes), and based on the message rate, a weight W for each tenant can be calculated. i .

[0068] Load balancing multiple messages based on multiple weights associated with multiple partitions and multiple weights associated with multiple tenants can enable the POP to balance messages between instances in a weight-aware manner. The weights can be dynamically calculated based on the message rate and the tenant. Therefore, the message bus agent can be horizontally scalable.

[0069] In some aspects, the POP may load balance one or more first messages among one or more first partitions based at least in part on the one or more first messages being associated with a first tenant associated with a first priority for the first partition. Additionally or alternatively, the POP may load balance one or more second messages between one or more second partitions based at least in part on the one or more second messages being associated with a second tenant associated with a second priority for the second partition. For example, the first priority may be higher than the second priority, the first partition may be a priority partition, and the second priority may be a non-priority partition.

[0070] Partition allocations may be determined (e.g., periodically, such as once an hour) as follows: The pool of available partitions may be split based on a priority threshold "k". In some examples, P = [P1, P2, P3, ... P k ]+[P k+1 …P n ], the priority partition pool can be ΣPP i , where i = 1…k, and the non-priority partition pool can be ΣNPP i , where i=k+1…n.

[0071] For each partition i in the priority partition pool PPi, if the weight PW i >1, then the partition assignment can be determined to optimally map tenants to partitions without exceeding the constraints (e.g., PW i>1). If all partitions reach the threshold, the message bus broker can autoscale. In some examples, ΣPW i =n, where i=0…n.

[0072] For non-priority partition pool NPP j For each partition j in j >1, then the partition assignment can be determined to optimally map tenants to partitions without exceeding the constraints (e.g., PW j >1). If all partitions reach the threshold, the message bus broker can autoscale. In some examples, ΣPW j =n, where j = 0…n.

[0073] In some aspects, the POP can predict message rates associated with a tenant. For example, a message rate can be predicted (e.g., estimated). Based on current and past message rates for a given tenant, a machine learning process (e.g., a machine learning algorithm) can be used to predict future rates. For example, a univariate time series forecast can be used to predict message rates.

[0074] Univariate time series forecasting can involve at least two variables: time and message count. Based on at least these two variables, the message rate can be predicted. The message rate can be analyzed at a uniform rate (e.g., every five minutes). For example, a univariate time series model can be created separately for each tenant. Each model can be fed with the message rate analyzed at a uniform rate. For example, each model can be fed periodically (e.g., every five minutes).

[0075] In some examples, the tenant partition assignments may change. For example, the following process may be performed for each tenant. The process may be performed periodically (e.g., once every 24 hours). The process may involve obtaining a predicted rate (e.g., based on the rate predicted by the model for the next day). The tenant prediction weight may be calculated as TFW i =TMR i / MR t , where TMR i is the predicted message rate of tenant “i”, and MR t is the message rate threshold. t Can be calculated as DR t =TFW i -TW i , where TW i is the predicted weight of tenant “i”.

[0076] The predicted partition weight can be calculated using the predicted rate. If the tenant is a priority tenant, then FPW i =ΣPPWi +DR t , where FPW i is the predicted (eg, expected) weight of partition “i”, and PPW i is the weight of priority partition "i". If the tenant is a non-priority tenant, then FPW i =ΣNPPW i +DR t , where NPPW i is the weight of non-priority partition “i”. If FPW i <1, no action may be taken; if FPW i ≥1, the tenant can use TFW in the priority partition pool (if the tenant is a priority tenant) or in the non-partition pool (if the tenant is a non-priority tenant). i Redistribute among partitions as weights.

[0077] Predicting the message rates associated with tenants can enable efficient handling of tenant allocation. For example, tenants can be proactively allocated to avoid bottlenecks caused by inefficient resource allocation.

[0078] As indicated above, provide Figure 6 As an example. Other examples can be related to Figure 6 Different than described. Figure 6 The number and arrangement of devices shown in the figure are provided as examples. In practice, there may be more than Figure 6 More devices, fewer devices, different devices, or differently arranged devices as shown. In addition, Figure 6 Two or more of the devices shown in may be implemented in a single device, or Figure 6 The single device shown in can be implemented as multiple distributed devices. Additionally or alternatively, Figure 6 The device set (e.g., one or more devices) shown in FIG. 1 may perform the operations described by Figure 6 One or more functions performed by another set of devices shown in .

[0079] Figure 7 is a diagram of an example implementation 700 associated with programmable federated exclusivity in a message bus proxy in a multi-cloud environment. Implementation 700 can be similar to implementation 300 ( Figure 3), except that implementation 700 includes multiple federated topics and multiple groups of POP topics (e.g., a first group of POP 1-POP N topics, a second group of POP 1-POP N topics, etc.). Each federated topic and each group of POP 1 to POP N topics can be associated with a service (e.g., a microservice). In some examples, the model can allow registration of service processors (e.g., federated processors and / or POP topic processors) in the message bus agent. The service processor can be configured at runtime of the message bus agent. The model can capture categories (e.g., message categories on which federated exclusivity is to be created) and / or one or more service processor types and corresponding configurations.

[0080] The message bus agent can initialize the service processor based on the model and create dedicated federated topics and POP topics for the category. If the service processor enables ordered processing, a single thread can read messages in batches and publish the messages to one or more remote message buses, which can confirm the messages after successful delivery. If the service processor enables concurrent processing, concurrent threads can read messages in batches and publish the messages to remote messages.

[0081] As an example, the model is provided as follows:

[0082] processor:

[0083] -name:DefaultFederation

[0084] batch_size:2000

[0085] batch_max_wait: 5

[0086] enable_ordered_processing:true

[0087] -name:jobstore

[0088] batch_size:2000

[0089] batch_max_wait: 5

[0090] -name:iam

[0091] batch_size:2000

[0092] batch_max_wait: 5

[0093] The "name" field may provide a name for the processor. The "batch_size" field may provide a message quantity threshold (e.g., once the number of collected messages meets the "batch_size", the collected messages may be sent out as a single batch). The "batch_max_wait" field may provide a maximum time (in milliseconds) to wait for a batch size of messages to be ready before sending the batch (e.g., even if the "batch_size" is not met, if the "batch_max_wait" is met, the collected messages may be sent). The "enable_ordered_processing" field may enable ordered processing when delivering messages to a remote message bus.

[0094] In some aspects, the message transmitted by the producer can be associated with one or more services (e.g., microservices), and the message bus agent can buffer the message in a queue associated with the service. For example, the message bus agent can buffer the message in a joint topic or a POP topic associated with the service. For example, a separate joint topic, a separate POP topic, and a service processor can be created for each service category. Regarding service processor creation, a joint processor and a POP processor can be created for each service. In some examples, if ordered message processing is enabled, a single joint and POP-specific processor can be created. In some examples, if ordered message processing is enabled, multiple joint and POP-specific processors can be created. Buffering messages in a queue associated with a service can help ensure that one service does not consume all resources (e.g., so that services do not affect each other).

[0095] A federated ordered processor (e.g., a federated processor) may be mapped to one of a federated topic and / or partition. A federated ordered processor may continuously read messages and push messages to a local queue (e.g., to one or more POP topics in a POP topic). A POP ordered processor (e.g., a POP processor in a POP processor) may be mapped to a partition in a partition and / or to a POP topic. A POP ordered processor may continuously read messages and push messages to a local queue. If the service process is a concurrent processor, multiple routines may monitor messages for each partition. Each routine may pull messages and add messages to the local queue of the routine.

[0096] In some aspects, where a federated in-order processor, a POP in-order processor, or a concurrent processor is involved, a message bus agent may be based at least in part on whether the queue size of a queue associated with the message meets a configured batch size threshold or the batch time associated with the queue meets a configured batch time threshold. For example, a separate routine may check a queue to determine whether the queue size matches the configured batch size or whether the batch maximum time has been met. If the queue size matches the configured batch size, or if the batch maximum time has been met, the processor may publish the message to a POP queue / topic or a remote message bus. Transmitting a message based at least in part on whether the queue size of a queue associated with the message meets a configured batch size threshold or the batch time associated with the queue meets a configured batch time threshold can help ensure that message buffering is not longer than a configurable amount of time.

[0097] In some aspects, a message transmitted by a producer may include a message key associated with the order of multiple messages including the message, the multiple messages being associated with the message key. For example, a producer may add a key (e.g., a message key) to each message. When a message is in a POP topic, when a message is published to a remote topic in a remote message bus, a message bus agent may read the message key, which may be included in the message. Thus, message keys (e.g., message partitions) may be utilized to support ordering of messages.

[0098] As indicated above, provide Figure 7 As an example. Other examples can be related to Figure 7 Different than described. Figure 7 The number and arrangement of devices shown in the figure are provided as examples. In practice, there may be more than Figure 7 More devices, fewer devices, different devices, or differently arranged devices as shown. In addition, Figure 7 Two or more of the devices shown in may be implemented in a single device, or Figure 7 The single device shown in can be implemented as multiple distributed devices. Additionally or alternatively, Figure 7 The device set (e.g., one or more devices) shown in FIG. 1 may perform the operations described by Figure 7 One or more functions performed by another set of devices shown in .

[0099] Figure 8 8 is a diagram of an example environment 800 in which the systems and / or methods described herein may be implemented. Figure 8As shown in FIG. 8 , environment 800 may include a POP messaging system 801, which may include one or more elements of a cloud computing system 802 and / or may be executed within the cloud computing system 802. The cloud computing system 802 may include one or more elements 803-812, as described in more detail below. Figure 8 As further shown in FIG. 8 , environment 800 may include network 820, network devices 830 through 870. Devices and / or elements of environment 800 may be interconnected via wired connections and / or wireless connections.

[0100] The cloud computing system 802 may include computing hardware 803, a resource management component 804, a host operating system (OS) 805, and / or one or more virtual computing systems 806. The cloud computing system 802 may be executed on the following system: for example, an Amazon Web Services platform, a Microsoft Azure platform, or a Snowflake platform. The resource management component 804 may perform virtualization (e.g., abstraction) of the computing hardware 803 to create one or more virtual computing systems 806. Using virtualization, the resource management component 804 enables a single computing device (e.g., a computer or server) to operate like multiple computing devices, such as by creating multiple isolated virtual computing systems 806 from the computing hardware 803 of a single computing device. In this way, the computing hardware 803 may operate more efficiently, with lower power consumption, higher reliability, higher availability, higher utilization, greater flexibility, and lower cost than using separate computing devices.

[0101] The computing hardware 803 may include hardware and corresponding resources from one or more computing devices. For example, the computing hardware 803 may include hardware from a single computing device (e.g., a single server) or from multiple computing devices (e.g., multiple servers) (such as multiple computing devices in one or more data centers). As shown, the computing hardware 803 may include one or more processors 807, one or more memories 808, and / or one or more networking components 809. Examples of processors, memories, and network components (e.g., communication components) are described elsewhere herein.

[0102] The resource management component 804 may include a virtualization application (e.g., executed on hardware such as computing hardware 803) that can virtualize the computing hardware 803 to start, stop, and / or manage one or more virtual computing systems 806. For example, such as when the virtual computing system 806 is a virtual machine 810, the resource management component 804 may include a hypervisor (e.g., a bare metal or type 1 hypervisor, a hosted or type 2 hypervisor, or another type of hypervisor) or a virtual machine monitor. Additionally or alternatively, such as when the virtual computing system 806 is a container 811, the resource management component 804 may include a container manager. In some implementations, the resource management component 804 executes within and / or in coordination with the host operating system 805.

[0103] The virtual computing system 806 may include a virtual environment that enables cloud-based execution of the operations and / or processes described herein using computing hardware 803. As shown, the virtual computing system 806 may include a virtual machine 810, a container 811, or a hybrid environment 812 including virtual machines and containers, etc. The virtual computing system 806 may execute one or more applications using a file system that includes binary files, software libraries, and / or other resources required to execute applications on a client operating system (e.g., within the virtual computing system 806) or a host operating system 805.

[0104] Although the POP messaging system 801 may include one or more elements 803 to 812 of the cloud computing system 802, may be executed within the cloud computing system 802, and / or may be hosted within the cloud computing system 802, in some implementations, the POP messaging system 801 may not be cloud-based (e.g., may be implemented outside the cloud computing system) or may be partially cloud-based. For example, the POP messaging system 801 may include one or more devices that are not part of the cloud computing system 802, such as Fig. 9 Device 900, which may include a standalone server or another type of computing device. POP message transmission system 801 may perform one or more operations and / or processes described in more detail elsewhere herein.

[0105] The network 820 may include one or more wired and / or wireless networks. For example, the network 820 may include a cellular network, a public land mobile network (PLMN), a local area network (LAN), a wide area network (WAN), a private network, the Internet, and / or a combination of these or other types of networks. The network 820 enables communication between devices in the environment 800.

[0106] The network devices 830 to 870 may include one or more devices capable of receiving, generating, storing, processing, providing and / or routing information associated with the transmission of messages between POPs, as described elsewhere herein. The network devices 830 to 870 may include communication devices and / or computing devices. For example, the network devices 830 to 870 may include a server, such as a virtual server (e.g., executed on computing hardware) or a server in a cloud computing system. In some implementations, the network devices 830 to 870 may include computing hardware used in a cloud computing environment. In some examples, the network devices 830 to 870 may include one or more POPs in which one or more messages are to be transmitted.

[0107] Figure 8 The number and arrangement of devices and networks shown in are provided as examples. Figure 8 There may be more devices and / or networks, fewer devices and / or networks, different devices and / or networks, or differently arranged devices and / or networks than those shown in . In addition, Figure 8 Two or more of the devices shown in FIG. 1 may be implemented in a single device, or Figure 8 The single device shown in the environment 800 may be implemented as multiple distributed devices. Additionally or alternatively, a set of devices (eg, one or more devices) of environment 800 may perform one or more functions described as being performed by another set of devices of environment 800.

[0108] Fig. 9 8 is a diagram of example components of a device 900 associated with message transmission between POPs. Device 900 may correspond to POP message transmission system 801. In some implementations, POP message transmission system 801 may include one or more devices 900 and / or one or more components of device 900. Fig. 9 As shown in , device 900 may include a bus 910 , a processor 920 , a memory 930 , an input component 940 , an output component 950 , and / or a communication component 960 .

[0109] The bus 910 may include one or more components that enable wired and / or wireless communications between components of the device 900. ... Fig. 9Two or more components of a computer program product may be coupled together, such as via operational coupling, communication coupling, electronic coupling, and / or electrical coupling. For example, bus 910 may include electrical connections (e.g., wires, traces, and / or leads) and / or wireless buses. Processor 920 may include a central processing unit, a graphics processing unit, a microprocessor, a controller, a microcontroller, a digital signal processor, a field programmable gate array, an application specific integrated circuit, and / or another type of processing component. Processor 920 may be implemented in hardware, firmware, or a combination of hardware and software. In some implementations, processor 920 may include one or more processors that can be programmed to perform one or more operations or processes described elsewhere herein.

[0110] The memory 930 may include volatile and / or non-volatile memory. For example, the memory 930 may include random access memory (RAM), read-only memory (ROM), a hard drive, and / or other types of memory (e.g., flash memory, magnetic memory, and / or optical memory). The memory 930 may include internal memory (e.g., RAM, ROM, or hard drive) and / or removable memory (e.g., removable via a universal serial bus connection). The memory 930 may be a non-transitory computer-readable medium. The memory 930 may store information, one or more instructions, and / or software (e.g., one or more software applications) associated with the operation of the device 900. In some implementations, the memory 930 may include one or more memories such as coupled to (e.g., communicatively coupled to) one or more processors (e.g., processor 920) via bus 910. The communication coupling between the processor 920 and the memory 930 may enable the processor 920 to read and / or process information stored in the memory 930 and / or store information in the memory 930.

[0111] Input assembly 940 can enable device 900 to receive input, such as user input and / or sensed input. For example, input assembly 940 can include touch screen, keyboard, keypad, mouse, button, microphone, switch, sensor, GPS sensor, GNSS sensor, accelerometer, gyroscope and / or actuator. Output assembly 950 can enable device 900 to provide output such as via display, speaker and / or light emitting diode. Communication assembly 960 can enable device 900 to communicate with other devices via wired connection and / or wireless connection. For example, communication assembly 960 can include receiver, transmitter, transceiver, modem, network interface card and / or antenna.

[0112] The device 900 may perform one or more operations or processes described herein. For example, a non-transitory computer-readable medium (e.g., memory 930) may store an instruction set (e.g., one or more instructions or codes) for execution by the processor 920. The processor 920 may execute the instruction set to perform one or more operations or processes described herein. In some implementations, the instruction set is executed by one or more processors 920 to cause one or more processors 920 and / or the device 900 to perform one or more operations or processes described herein. In some implementations, a hardwired circuit may be used instead of an instruction or in combination with an instruction to perform one or more operations or processes described herein. Additionally or alternatively, the processor 920 may be configured to perform one or more operations or processes described herein. Therefore, the implementation described herein is not limited to any particular combination of hardware circuits and software.

[0113] Fig. 9 The number and arrangement of components shown in FIG. 9 are provided as examples. Fig. 9 More components, fewer components, different components, or differently arranged components than those shown in . Additionally or alternatively, a set of components (eg, one or more components) of device 900 may perform one or more functions described as being performed by another set of components of device 900.

[0114] Fig.10 is a flow chart of an example process 1000 associated with message transmission between POPs. In some implementations, Fig.10 One or more processing blocks of are executed by one or more network devices (e.g., POP message transmission system 801). In some implementations, Fig.10 One or more processing blocks of are performed by another device or set of devices separate from or including one or more network devices (such as network devices 830 to 870). Additionally or alternatively, Fig.10 One or more processing blocks of may be performed by one or more components of device 900 , such as processor 920 , memory 930 , input component 940 , output component 950 , and / or communication component 960 .

[0115] like Fig.10 As shown in , process 1000 may include receiving, by one or more network devices associated with a first point of presence (POP) in a first cloud deployment, a message associated with a tenant (block 1010). For example, as described above, one or more network devices may receive, by one or more network devices associated with a first point of presence (POP) in a first cloud deployment, a message associated with a tenant.

[0116] like Fig.10As further shown in , process 1000 may include identifying one or more second POPs associated with the tenant in one or more second cloud deployments based at least in part on the message (block 1020). For example, as described above, one or more network devices may identify one or more second POPs associated with the tenant in one or more second cloud deployments based at least in part on the message.

[0117] like Fig.10 As further shown, process 1000 may include transmitting the message to one or more second POPs (block 1030). For example, as described above, one or more network devices may transmit the message to one or more second POPs.

[0118] Process 1000 may include additional implementations, such as any single implementation or any combination of implementations described below and / or in combination with one or more other processes described elsewhere herein.

[0119] In a first implementation, the message includes one or more of: a logical grouping associated with the message, a payload, or a message key associated with a sequence of a plurality of messages including the message, the plurality of messages being associated with the message key.

[0120] In a second implementation, alone or in combination with the first implementation, process 1000 includes buffering messages in a queue associated with a network federation.

[0121] In a third implementation, alone or in combination with one or more of the first and second implementations, identifying one or more second POPs includes identifying an indication in the message that the message is associated with a global set of POPs that is associated with the tenant, and identifying the one or more second POPs based at least in part on the indication identifying the message is associated with the global set of POPs, and process 1000 includes buffering the message in one or more queues respectively associated with the one or more second POPs.

[0122] In a fourth implementation, alone or in combination with one or more of the first to third implementations, identifying one or more second POPs includes identifying an indication in the message that the message is associated with a global set of POPs associated with the tenant, and identifying the one or more second POPs based at least in part on the indication identifying the message is associated with the global set of POPs, and process 1000 includes buffering the message in a queue associated with a central POP.

[0123] In a fifth implementation, alone or in combination with one or more of the first to fourth implementations, identifying one or more second POPs includes identifying an indication in a message that the message is associated with a subset of POPs, the subset of POPs being associated with a tenant, and identifying the one or more second POPs based at least in part on the indication identifying the message is associated with the subset of POPs, and process 1000 includes buffering the messages in one or more queues respectively associated with the one or more second POPs.

[0124] In a sixth implementation, alone or in combination with one or more of the first to fifth implementations, process 1000 includes receiving one or more acknowledgments associated with the message from one or more second POPs.

[0125] In a seventh implementation, alone or in combination with one or more of the first to sixth implementations, process 1000 includes determining that a time window associated with an acknowledgement associated with the message has expired, and retransmitting the message to one or more second POPs.

[0126] In an eighth implementation, alone or in combination with one or more of the first to seventh implementations, identifying one or more second POPs includes identifying one or more second POPs based at least in part on a database that maps POPs including the first POP and one or more second POPs to tenants.

[0127] In a ninth implementation, alone or in combination with one or more of the first to eighth implementations, a database maintains a dynamic mapping of POPs to tenants.

[0128] In a tenth implementation, alone or in combination with one or more of the first to ninth implementations, the database maintains a dynamic indication of which of the POPs is the central POP for the tenant.

[0129] In an eleventh implementation, alone or in combination with one or more of the first to tenth implementations, process 1000 includes receiving a plurality of messages including the message from a plurality of tenants including the tenant, and load balancing the plurality of messages across a plurality of resources.

[0130] In a twelfth implementation, alone or in combination with one or more of the first to eleventh implementations, load balancing the plurality of messages comprises load balancing the plurality of messages based at least in part on a plurality of first weights associated with the plurality of partitions and a plurality of second weights associated with the plurality of tenants.

[0131] In a thirteenth implementation, alone or in combination with one or more of the first to twelfth implementations, one or more first resources among the multiple resources are associated with one or more first partitions, one or more second resources among the multiple resources are associated with one or more second partitions, the first priority of the one or more first partitions is higher than the second priority of the one or more second partitions, and load balancing multiple messages includes: load balancing the one or more first messages among the one or more first partitions based at least in part on the one or more first messages among the multiple messages being associated with a first tenant among the multiple tenants associated with the first priority, or load balancing the one or more second messages among the one or more second partitions based at least in part on the one or more second messages among the multiple messages being associated with a second tenant among the multiple tenants associated with the second priority.

[0132] In a fourteenth implementation, alone or in combination with one or more of the first to thirteenth implementations, process 1000 includes predicting a message rate associated with a tenant.

[0133] In a fifteenth implementation, alone or in combination with one or more of the first to fourteenth implementations, the message is associated with a service, and the process 1000 includes buffering the message in a queue associated with the service.

[0134] In a sixteenth implementation, alone or in combination with one or more of the first to fifteenth implementations, transmitting the message to one or more second POPs includes transmitting the message to the one or more second POPs based at least in part on a queue size of a queue associated with the message satisfying a configured batch size threshold or a batch time associated with the queue satisfying a configured batch time threshold.

[0135] In a seventeenth implementation, alone or in combination with one or more of the first to sixteenth implementations, the message includes a message key associated with an order of a plurality of messages including the message, the plurality of messages being associated with the message key.

[0136] although Fig.10 An example block diagram of process 1000 is shown, but in some implementations, process 1000 includes Fig.10 More blocks, fewer blocks, different blocks, or differently arranged blocks than those depicted in . Additionally or alternatively, two or more blocks of process 1000 may be performed in parallel.

[0137] The foregoing disclosure provides illustration and description, but is not intended to be exhaustive or to limit the implementations to the precise forms disclosed. Modifications and variations may be made in light of the above disclosure or may be acquired from practice of the implementations.

[0138] As used herein, a service or content may include a set of data packets. A data packet may refer to a communication structure for transmitting information, such as a protocol data unit (PDU), a service data unit (SDU), a network data packet, a datagram, a segment, a block, a frame (e.g., an Ethernet frame), a portion of any of the above, and / or another type of formatted or unformatted data unit capable of being transmitted via a network.

[0139] As used herein, satisfying a threshold may refer to being greater than a threshold, greater than or equal to a threshold, less than a threshold, less than or equal to a threshold, equal to a threshold, not equal to a threshold, etc., depending on the context.

[0140] As used herein, the term "component" is intended to be broadly interpreted as hardware, firmware, or a combination of hardware and software. Obviously, the systems and / or methods described herein can be implemented in different forms of hardware, firmware, and / or a combination of hardware and software. The actual dedicated control hardware or software code used to implement these systems and / or methods does not limit these implementations. Therefore, the operation and behavior of the systems and / or methods are described herein without reference to specific software codes-it should be understood that software and hardware can be used to implement the systems and / or methods described herein.

[0141] Although specific combinations of features are described in the claims and / or disclosed in the specification, these combinations are not intended to limit the disclosure of various implementations. In fact, many of these features can be combined in a manner not specifically described in the claims and / or disclosed in the specification. Although each dependent claim listed below may be directly subordinate to only one claim, the disclosure of various implementations includes the combination of each dependent claim with each other claim in the claim set. As used herein, a phrase referring to "at least one of" a list of items refers to any combination of those items, including a single member. As an example, "at least one of a, b, or c" is intended to cover a, b, c, ab, ac, bc, and abc, as well as any combination of multiple identical items.

[0142] When "a processor" or "one or more processors" (or another device or component, such as "a controller" or "one or more controllers") is described or claimed (either within a single claim or across multiple claims) as performing or being configured to perform multiple operations, the language is intended to broadly cover a variety of processor architectures and environments. For example, unless explicitly stated otherwise (e.g., by use of "a first processor" and "a second processor" or other language that distinguishes the processors in the claims), the language is intended to cover a single processor that performs or is configured to perform all operations, a group of processors that collectively perform or are configured to perform all operations, a first processor that performs or is configured to perform a first operation and a second processor that performs or is configured to perform a second operation, or any combination of processors that perform or are configured to perform operations. For example, when a claim has the form "one or more processors that: perform X; perform Y; and perform Z," the claim should be interpreted to mean "one or more processors that perform X; one or more (possibly different) processors that perform Y; and one or more (possibly different) processors that perform Z."

[0143] Unless explicitly described as such, any element, action or instruction used herein should not be interpreted as critical or necessary. In addition, as used herein, the articles "one" and "an" are intended to include one or more projects, and can be used interchangeably with "one or more". In addition, as used herein, the article "the" is intended to include one or more projects associated with the article "the", and can be used interchangeably with "one or more". In addition, as used herein, the term "set" is intended to include one or more projects (e.g., related projects, unrelated projects, or a combination of related and unrelated projects), and can be used interchangeably with "one or more". If only one project is referred to, the phrase "only one" or similar language is used. In addition, as used herein, the term "having", "possession", etc. is intended to be an open term. In addition, unless otherwise clearly stated, the phrase "based on" is intended to mean "based at least in part". In addition, as used herein, the term "or" is intended to be included when used in series, and can be used interchangeably with "and / or", unless otherwise clearly stated (e.g., if used in combination with "either" or "only one of them".

Claims

1. A method comprising: receiving, by one or more network devices associated with a first point of presence (POP) in a first cloud deployment, a message associated with a tenant; identifying, by the one or more network devices, one or more second POPs associated with the tenant in one or more second cloud deployments based at least in part on the message; as well as The message is transmitted by the one or more network devices to the one or more second POPs.

2. The method of claim 1, wherein the message comprises one or more of: a logical grouping associated with the message, a payload, or a message key associated with a sequence of multiple messages including the message, the multiple messages being associated with the message key.

3. The method according to claim 1, further comprising: The message is buffered in a queue associated with the network association.

4. The method of claim 1 , wherein identifying the one or more second POPs comprises: identifying, in the message, an indication that the message is associated with a global POP set, the global POP set being associated with the tenant; as well as identifying the one or more second POPs based at least in part on the indication identifying that the message is associated with the global set of POPs, wherein the method further comprises: The messages are buffered in one or more queues respectively associated with the one or more second POPs.

5. The method of claim 1 , wherein identifying the one or more second POPs comprises: identifying, in the message, an indication that the message is associated with a global POP set, the global POP set being associated with the tenant; as well as identifying the one or more second POPs based at least in part on the indication identifying that the message is associated with the global set of POPs, wherein the method further comprises: The messages are buffered in a queue associated with the central POP.

6. The method of claim 1 , wherein identifying the one or more second POPs comprises: identifying, in the message, an indication that the message is associated with a subset of POPs, the subset of POPs being associated with the tenant; as well as identifying the one or more second POPs based at least in part on the indication identifying that the message is associated with the subset of POPs, wherein the method further comprises: The messages are buffered in one or more queues respectively associated with the one or more second POPs.

7. The method according to claim 1, further comprising: One or more acknowledgments associated with the message are received from the one or more second POPs.

8. The method according to claim 1, further comprising: determining that a time window associated with an acknowledgement associated with the message has expired; as well as The message is retransmitted to the one or more second POPs.

9. The method of claim 1 , wherein identifying the one or more second POPs comprises: The one or more second POPs are identified based at least in part on a database that maps POPs including the first POP and the one or more second POPs to the tenant.

10. The method of claim 9, wherein the database maintains a dynamic mapping of the POPs to the tenants.

11. The method of claim 9, wherein the database maintains a dynamic indication of which of the POPs is a central POP for the tenant.

12. One or more network devices, including: one or more memories; as well as One or more processors to: Receive messages associated with a tenant; identifying one or more second POPs associated with the tenant in one or more second cloud deployments based at least in part on the message; as well as The message is transmitted to the one or more second POPs.

13. The one or more network devices of claim 12, wherein the one or more processors are further configured to: receiving a plurality of messages including the message from a plurality of tenants including the tenant; and The plurality of messages are load balanced across the plurality of resources.

14. The one or more network devices of claim 13, wherein when load balancing the plurality of messages, the one or more processors are configured to: The plurality of messages are load balanced based on a plurality of first weights associated with a plurality of partitions and a plurality of second weights associated with the plurality of tenants.

15. The one or more network devices of claim 13, wherein one or more first resources of the plurality of resources are associated with one or more first partitions, one or more second resources of the plurality of resources are associated with one or more second partitions, a first priority of the one or more first partitions is higher than a second priority of the one or more second partitions, and when load balancing the plurality of messages, the one or more processors are configured to: load balancing the one or more first messages among the one or more first partitions based at least in part on the one or more first messages of the plurality of messages being associated with a first tenant of the plurality of tenants associated with the first priority, or Based at least in part on one or more second messages of the plurality of messages being associated with a second tenant of the plurality of tenants associated with the second priority, the one or more second messages are load balanced among the one or more second partitions.

16. The one or more network devices of claim 12, wherein the one or more processors are further configured to: A message rate associated with the tenant is predicted.

17. A non-transitory computer readable medium storing an instruction set, the instruction set comprising: One or more instructions that, when executed by one or more processors of one or more network devices, cause the one or more network devices to: Receive messages associated with a tenant; identifying one or more second POPs associated with the tenant in one or more second cloud deployments based at least in part on the message; as well as The message is transmitted to the one or more second POPs.

18. The non-transitory computer-readable medium of claim 17, wherein the message is associated with a service, and wherein the one or more instructions further cause the one or more network devices to: The message is buffered in a queue associated with the service.

19. The non-transitory computer-readable medium of claim 17, wherein the one or more instructions that cause the one or more network devices to transmit the message to the one or more second POPs cause the one or more network devices to: The message is transmitted to the one or more second POPs based at least in part on a queue size of a queue associated with the message satisfying a configured batch size threshold or a batch time associated with the queue satisfying a configured batch time threshold.

20. The non-transitory computer-readable medium of claim 17, wherein the message includes a message key associated with an order of a plurality of messages including the message, the plurality of messages being associated with the message key.