Autoscaling data plane

By monitoring the deployment plane status and dynamically adjusting the number of virtual machines in the data plane, the fixed number of virtual machines caused by changes in end users' needs in the cloud computing system is solved, and dynamic adjustment of resources and performance improvement is achieved.

CN119278436APending Publication Date: 2025-01-07INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380032150.8
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-06-29
Filing Date
2023-06-23
Publication Date
2025-01-07

AI Technical Summary

Technical Problem

In existing cloud computing systems, changes in demand from end users lead to a fixed number of virtual machines on the data plane and cannot be adjusted dynamically, resulting in excessive or insufficient supply.

Method used

By monitoring the status of the deployment plane, dynamically adjust the number of virtual machines in the data plane, and increase or decrease virtual machines according to changes in end users' needs to ensure sufficient computing resources and bandwidth support.

Benefits of technology

It realizes dynamic adjustment of the number of virtual machines according to the needs of end users, avoiding the problem of excessive or insufficient supply, and ensuring the normal operation and performance improvement of computing equipment.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119278436A_ABST
    Figure CN119278436A_ABST
Patent Text Reader

Abstract

A method of adjusting a number of virtual machines in a data plane is provided. A number of virtual machines are provisioned in the data plane, each virtual machine of the number of virtual machines having a data plane agent. The virtual machine provides data routing for a first number of operations pods in a deployment plane associated with the data plane. And monitoring the state of the deployment plane. The state reflects that the deployment plane has a second number of operation pods different from the first number of operation pods. The first number of operating pods is compared to the second number of operating pods. Based on the comparison, a number of virtual machines in the data plane is adjusted.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Priority claim

[0002] This patent application claims the benefit of priority to U.S. Application No. 17 / 809,653, filed on June 29, 2022, the entire contents of which are incorporated herein by reference. Technical Field

[0003] Examples relate generally to distributed computing environments, and more particularly, but not by way of limitation, to provisioning a data plane agent for a deployment plane based on changing data throughput requirements associated with the deployment plane. Background Art

[0004] Cloud computing systems have become increasingly popular as a method of providing computer-implemented resources. Service providers can provide services to each end user based on the needs of each end user. In order to ensure that traffic is correctly routed to each of the end users, a virtual machine running a data plane proxy is used.

[0005] Typically, end users request resources from service providers, and virtual machines residing at the data plane are allocated to assist in routing. To further illustrate, end users can use application instances such as Apache Kafka, Kafka Structured Query Language (KSQL), SchemaRegistry, Connect, etc., where application services are implemented at the pods of the deployment plane. At the data plane, virtual machines are provisioned based on the number of pods that will implement the application services. Virtual machines can be used to help route traffic for each pod at the deployment plane. Typically, the number of virtual machines allocated to each pod is fixed at deployment time. BRIEF DESCRIPTION OF THE DRAWINGS

[0006] The figures in the drawings depict only examples of the present disclosure and should not be considered limiting of its scope.

[0007] Figure 1 A computing environment with a data plane associated with a deployment plane is shown according to some examples.

[0008] Figure 2 Based on some examples Figure 1 The architecture of the cluster in the deployment plane.

[0009] Figure 3A and Figure 3B Methods for dynamically scaling a data plane according to some examples are shown.

[0010] Figure 4 is a block diagram illustrating the architecture of software for implementing displaying an interactive user interface according to some examples.

[0011] Figure 5 A machine is shown as an example computer system having instructions causing the machine to display an interactive user interface according to some examples. DETAILED DESCRIPTION

[0012] The following description includes systems, methods, techniques, instruction sequences and computer program products that embody illustrative examples of the present disclosure. In the following description, for the purpose of illustration, many specific details are set forth to provide an understanding of various examples of the subject matter of the present invention. However, it will be apparent to those skilled in the art that examples of the subject matter of the present invention can be practiced without these specific details. Typically, known instruction instances, protocols, structures and techniques are not necessarily shown in detail.

[0013] As mentioned above, the number of virtual machines allocated to each pod is fixed at deployment time. However, it may happen that after the virtual machines have been provisioned, the end user's needs change. To further illustrate, the end user may require fewer pods at the deployment plane to meet their needs, or may require more pods at the deployment plane to meet their needs. Despite this, the number of virtual machines allocated at the data plane is fixed. Therefore, if the end user implements fewer pods after the virtual machines have been provisioned, overprovisioning may occur, where too many virtual machines are allocated to the deployment plane with pods. If after provisioning, the user's needs increase and the end user implements more pods, underprovisioning may occur, where not enough virtual machines are allocated to the deployment plane with pods.

[0014] In another instance, the deployment plane can be assigned to the data plane before the service provider receives the request. Here, a fixed number of virtual machines are assigned to the deployment plane based on historical data associated with the deployment plane. To further illustrate, the deployment plane can traditionally have a throughput requirement of 10 gigabits per second (Gbps), which requires two virtual machines that can each support a throughput of 5Gbps in the data plane associated with the deployment plane. Therefore, regardless of the needs of the end user, that is, the end user may only need a throughput of 50 megabits per second (Mbps), two virtual machines will be assigned to the deployment plane. Similarly, this may cause oversupply. In addition, if the end user has a throughput requirement of 20Gbps, four virtual machines are typically required, and undersupply will occur because the data plane assigned to the deployment plane associated with the end user's pod has only two virtual machines.

[0015] Therefore, there is a need for a method to scale the data plane as end-user needs change after the data plane proxy is deployed.

[0016] Examples relate to systems and methods for dynamically adjusting the number of virtual machines in a data plane that route traffic for pods in a deployment plane. Initially, a first number of virtual machines may be provisioned for a deployment plane based on a first number of operational pods implemented at the deployment plane. The number of operational pods at the deployment plane may change based on the needs of the end user implementing the pods. Thus, in the example, after provisioning, the state of the deployment plane is monitored. In some examples, the state may be monitored during a first time period. The state may be related to the number of pods actually operating at the deployment plane. Thus, the state of the deployment plane may reveal that a second number of pods (the second number of pods may be different from the first number of pods) is operable at the deployment plane.

[0017] A first number of operating pods at a deployment plane is compared to a second number of operating pods at the deployment plane. In an example, the first number of operating pods may be related to the number of pods that the end user initially indicated would be needed. In addition, in some examples, the first number of pods may be the number of pods used when determining the number of virtual machines to be initially provisioned. Based on the comparison, the number of virtual machines operating at the data plane is adjusted. Throughout this document, reference will be made to dynamically changing the number of virtual machines. As mentioned above, the virtual machines are located at the data plane. Therefore, in the example, since the virtual machines are located at the data plane and the data plane changes due to changes in the number of active virtual machines, dynamically changing the number of virtual machines may also involve dynamically changing the data plane.

[0018] In an example, the second number of operating pods may be less than the first number of operating pods. Thus, the number of virtual machines in the data plane may be dynamically reduced after initial provisioning. In another example, the second number of operating pods may be greater than the first number of operating pods. Thus, the number of virtual machines in the data plane may be dynamically increased after initial provisioning.

[0019] In another example, after adjusting the number of virtual machines after the first time period, the state of the deployment plane continues to be monitored during the second time period. The state can reveal that a third number of pods (the third number of pods can be different from the second number of pods) are operational at the deployment plane. The second number of operational pods at the deployment plane is compared to the third number of operational pods at the deployment plane. Based on the comparison, the number of virtual machines operating in the data plane is adjusted.

[0020] The example improves the functionality of a computing device. As will be discussed below, the example determines whether the computing requirements of multiple computing devices (e.g., pods) exceed the ability of another computing device (e.g., a machine corresponding to a virtual machine) to provide those computing requirements. As will be described in detail below, a pod may have certain bandwidth requirements to properly execute application instances operating thereon. The example ensures that sufficient computing resources are provided to the pod by a virtual machine that implements a physical computing device to achieve the proper functionality of the pod. Therefore, without the examples set forth herein, the computing pod may not function properly, thereby failing to improve the functionality of a computing device (e.g., the pod mentioned above).

[0021] Referring now to the drawings and more particularly to Figure 1 , shows a computing environment 100 in which an example can operate. The computing environment 100 can include a virtual private cloud 102, from which data can be provided to clusters 104 and 106 in a deployment plane 107. Examples of virtual private clouds 102 can include Amazon Web Services TM (AWS TM ), IBM Cloud TM , Google Cloud Platform, Microsoft Azure, etc.

[0022] In an example, the data plane 108 facilitates routing data from the virtual private cloud 102 to each of the clusters 104 and 106. The data plane 108 may employ virtual machines 110A, 110B, 112A, and 112B (referred to herein as virtual machines 110 and 112) with data plane agents 114A, 114B, 116A, and 116B (referred to herein as data plane agents 114 and 116). The data plane agents 114 and 116 may mediate and control network communications between the virtual private cloud 102 and the clusters 104 and 106. The data plane agents 114 and 116 may run on the virtual machines 110 and 112. The virtual machines 110 and 112 may be based on a computer architecture and provide functionality associated with a physical computer. Thus, in an example, virtual machine 110 and virtual machine 112 may correspond to physical computers, such that in the context of improving performance of a computing device, the data plane may also correspond to a physical computer.

[0023] Virtual machines 110A and 110B may be associated with availability zone 118. Additionally, virtual machines 112A and 112B may be associated with availability zone 120. Availability zones 118 and 120 may correspond to virtual machines, such as virtual machines 110 and 112, that may be used to assist in routing data to clusters, such as routing data from virtual private cloud 102 to clusters 104 and 106. In an example, availability zones 118 and 120 and associated virtual machines 110 and 112 are initially provisioned to clusters 104 and 106. Thus, where virtual machines 110A and 110B are provisioned to cluster 104, as shown at 122, virtual machines 110A and 110B may route traffic corresponding to the data from virtual private cloud 102 to cluster 104. Virtual machines 110A and 110B may ensure that the traffic reaches the correct destination, such as a pod associated with cluster 104. In some cases, a pod associated with cluster 104 may be a stateful device. Therefore, if incorrect data is routed to a pod associated with cluster 104, the pod cannot process the data. Routing may be based on server name indication information (SNI) extracted from a connection establishment packet used during establishment of a communication link with virtual private cloud 102. Similarly, in the case where virtual machine 112A and virtual machine 112B are provisioned to cluster 106, as shown at 124, virtual machine 112A and virtual machine 112B may route traffic corresponding to the data from virtual private cloud 102 to cluster 106. In some cases, similar to cluster 104, a pod associated with cluster 106 may be a stateful device. Therefore, if incorrect data is routed to a pod associated with cluster 106, the pod cannot process the data. Routing may be based on SNI extracted from a connection establishment packet used during establishment of a communication link with virtual private cloud 102.

[0024] Although Figure 1 Only two clusters 104 and 106 are shown in FIG. 1 , but the example contemplates any number of clusters, wherein any number of available data planes with any number of virtual machines can be provisioned to the clusters. Figure 2As shown, cluster 104 / 106 may include stateful set 200 and stateful set 202. In an example, stateful set 200 may be associated with pods 204A to 204D, and stateful set 202 may be associated with pods 206A to 206D. Stateful set 200 and stateful set 202 may manage and maintain respective pods 204A to 204D and pods 206A to 206D. Pods 204A to 204D and pods 206A to 206D may be groups of one or more containers that may share storage resources along with network resources. Pods 204A to 204D and pods 206A to 206D may be any type of computing device as described herein. Each of pods 204A to 204D and pods 206A to 206D may include several components. To further illustrate, each of pods 204A to 204D and pods 206A to 206D may include ordered, stable storage and stable network identities. In addition, each of pods 204A to 204D and pods 206A to 206D may represent an application instance that may run an application within the physical cluster 104 / 106. Examples of application instances that may be run by each of pods 204A to 204D and pods 206A to 206D may include Apache Kafka TM 、Kafka TM Structured Query Language (KSQL), SchemaRegistry, Connect, etc. In the example, each of pods 204A to pod 204D and pods 206A to pod 206D can have their own life cycle and one of the following states: waiting, running, or terminated. In addition, when all pods 204A to pod 204D are in the running state, stateful set 200 is fully available. Similarly, when all pods 206A to pod 206D are in the running state, stateful set 202 is fully available.

[0025] Each of the stateful sets 200 and the stateful sets 202 may add labels to each of the pods 204A to 204D and pods 206A to 206D associated with the stateful sets 200 and the stateful sets 202. In an example, the labels may enable a user associated with the stateful sets 200 and 202 to attach a service to each of the pods 204A to 204D and pods 206A to 206D. Each of the stateful sets 200 and the stateful sets 202 may include a sequence index that assigns a sequence number assigned to the pods 204A to 204D and pods 206A to 206D. In addition, the stateful sets 200 and the stateful sets 202 may include a host name, a headless service, a domain, and a DNS subdomain associated with the stable network identity of the pods 204A to 204D and pods 206A to 206D. In an example, clusters 104 / 106 may implement a Kubernetes object resource type to support incremental change notification feeds, such as a monitoring application programming interface (API).

[0026] Return attention to Figure 1 In the computing environment 100, the traffic controller 126 can reside in the deployment plane 107. It should be noted that in some examples, the traffic controller 126 can also reside in the data plane 108. The traffic controller 126 can communicate with each of the clusters 104 and 106. The traffic controller 126 can also communicate with the cloud virtual machine API 128. The traffic controller 126 can monitor the operational status of the pods in the deployment plane 107, and issue API commands for adjusting the number of virtual machines 110 and virtual machines 112 provisioned for the deployment plane 107 based on the operational status of the pods in the deployment plane 107. In an example, the traffic controller 126 can be a Kubernetes controller that monitors the status of the clusters 104 and 106. Kubernetes is a container management system that allows web applications, batch jobs, and databases to be deployed via a unified API. The traffic controller 126 can listen to changes at the clusters 104 and 106. Examples of changes at one of clusters 104 and 106 may include adding or removing any of pods 204A-204D and pods 206A-206D associated with one of clusters 104 and 106 .

[0027] In addition, the traffic controller 126 can determine the expected traffic load. The traffic controller 126 can determine the traffic load as a function of the number of pods allocated for the service and service type according to the following equation:

[0028] T = sum(N*S)

[0029] Where T can correspond to traffic load requirements or traffic capacity requirements. In addition, N can correspond to the number of pods used for the service. For example, if the cluster is utilizing Apache Kafka TM , the cluster can have Apache Kafka TM , where N, in this example, may correspond to four. S may correspond to the type of service that the pod is utilizing. Different types of services may have different bandwidth requirements. To further illustrate, Apache Kafka TM May have high traffic loads that require more network bandwidth. Therefore, utilizing Apache Kafka TM Each pod may have higher network bandwidth requirements, where the VM may have to use more resources for a single pod based on the high network bandwidth requirements. TM , since each pod has a higher network requirement, the VM can be provisioned to three pods due to the higher network bandwidth requirement.

[0030] However, other services may be more computationally intensive and require less bandwidth. To further illustrate, KSQL has high computational requirements but requires less traffic. Therefore, each pod utilizing KSQL may have lower network bandwidth requirements, where the VM may have to use less resources for a single pod based on the lower network bandwidth requirements. Here, the same as Apache Kafka TM In contrast, due to lower network bandwidth requirements, a VM can be provisioned to ten pods, where when these pods utilize Apache Kafka TM , the same VM might only be able to support three pods.

[0031] In an example, when traffic controller 126 calculates that a change in traffic load will change the virtual machine demand of a cluster with a pod that has been added or removed, traffic controller 126 can issue instructions via cloud virtual machine API 128. Traffic controller 126 can issue instructions based on the state of cluster 104 and cluster 106 and the calculated expected traffic load. The instructions issued by traffic controller 126 can dynamically adjust the number of virtual machines (e.g., virtual machine 110 and virtual machine 112) provisioned to cluster 104 and cluster 106. Figure 3A and Figure 3B An example of a method for adjusting the number of virtual machines in a data plane that route traffic for pods in a deployment plane is shown.

[0032] Now refer to Figure 3A With method 300, initially, in operation 302, a plurality of virtual machines are provisioned for a deployment plane having a first number of operational pods. As discussed above, the virtual machine may route traffic corresponding to data from a source (e.g., virtual private cloud 102) to an end point (e.g., cluster 104). The routing may be based on an SNI extracted from a connection establishment packet used during establishment of a communication link with virtual private cloud 102. During operation 302, the type of service to be utilized by the pods of the cluster is determined. As used herein, the term "operation pod" or "multiple operation pods" may refer to one or more pods that will actively utilize a service, such as pod 204A to pod 204D and pod 206A to pod 206D. For example, pod 204A may utilize KSQL in which data comes from virtual private cloud 102. Thus, pod 204A may be considered an operational pod. In addition, pod 204D may remain in an offline state, i.e., pod 204D will not utilize any type of application instance. Here, pod 204D may be considered "non-operational". In addition, the pod is part of the deployment plane. Therefore, the operation pods may be considered as the operation pods that the deployment plane has, wherein the number of the operation pods may correspond to the first number.

[0033] As an example of method 300, referred to herein as "illustrative", during operation 302, as shown in FIG. Figure 1 As shown, virtual machines 110A and 110B may be provisioned to cluster 104. In this illustration, an end user associated with a pod in cluster 104 desires to use the application instance Apache Kafka at pods 204A to 204C and pods 206A and 206B. TM The end user wishes to combine the AWS R TM The received traffic is used by pods 204A to pods 204C, pods 206A, and pods 206B. Therefore, pods 204A to 204C, pods 206A, and pods 206B can be in an online state and can therefore be considered as operating pods because pods 204A to pods 204C, pods 206A, and pods 206B will be implemented.

[0034] In this illustration, for a total data throughput requirement of 125 Gbps, each of pods 204A to pod 204C, pod 206A, and pod 206B has a data throughput requirement of 25 Gbps. In addition, in this illustration, each of virtual machines 110A and virtual machines 110B can support a data throughput requirement of 100 Gbps. Therefore, during operation 302, virtual machines 110A and virtual machines 110B can be provisioned to cluster 104 to meet the data throughput requirement of 125 Gbps, wherein the total data throughput of the combination of virtual machines 110A and virtual machines 110B is 200 Gbps. In addition, pods 204A to pod 204C, pods 206A, and pods 206B are associated with cluster 104 as part of deployment plane 107. Since there are five operating pods in deployment plane 107, in this illustration, the first number of operating pods in deployment plane 107 is five.

[0035] Back to Figure 3A and method 300, after initially provisioning virtual machine 110A and virtual machine 110B during operation 302, method 300 performs operation 304. During operation 304, method 300 monitors the state of the deployment plane. In an example, the state may reflect that the deployment plane now has a second number of operational pods, and the second number of operational pods may be different from the first number of operational pods. For various reasons, the number of operational pods may change, so that the first number of operational pods is different from the second number of pods. To further illustrate, after provisioning, the data throughput requirements of the end user may change, wherein the data throughput requirements may increase or decrease. If the data throughput requirements of the end user increase, the end user may add more operational pods to the deployment plane. If the data throughput requirements of the end user decrease, the end user may remove the operational pods from the deployment plane. Alternatively, after provisioning, the end user may still be in the process of configuring a pod that will be operated at the deployment plane, wherein there are no operational pods yet. Since there are no operational pods yet at the deployment plane, there will be no data throughput requirements for the deployment plane, so that there is no need to provision virtual machines for the deployment plane. Regardless of whether an operation pod has been added to or removed from the deployment plane, in an example, a controller configured by Kubernetes (eg, traffic controller 126 ) may listen to a count of the number of pods for each service during operation 304 .

[0036] After monitoring the state of the deployment plane during operation 304, method 300 performs operation 306, where the first number of operating pods for which virtual machines are provisioned is compared to the second number of operating pods determined during operation 304. In an example, based on the comparison, it may be determined whether the number of virtual machines provisioned to the deployment plane should be adjusted during operation 308.

[0037] In some cases, although the number of operating pods in the deployment plane can change, the number of virtual machines supplied to the deployment plane may not necessarily change. For example, a single virtual machine is capable of supporting 100 Gbps of data throughput, and the first number of operating pods (which are four) in the deployment plane has a data throughput requirement of 25 Gbps for a total throughput requirement of 100 Gbps. During operation 304, if the state reflects that there are three pods operational in the deployment plane, the data throughput requirement drops to 75 Gbps. Here, since a single virtual machine is capable of providing 75 Gbps of throughput, i.e., 75 Gbps is less than the 100 Gbps capability of the virtual machine, it can be determined that the number of virtual machines to be supplied to the deployment plane should not be adjusted during operation 308.

[0038] As another example, still staying in the scenario where a single virtual machine can support a data throughput of 100 Gbps and the first number of operating pods (which are four) in the deployment plane have a data throughput requirement of 25 Gbps, during operation 304, the state can reflect that there are five pods operable in the deployment plane. Therefore, the second number of operating pods in the deployment plane has increased from four to five. In addition, the data throughput requirement of the fifth operating pod is 25 Gbps. Therefore, the virtual machines supplied in the data plane should be able to support a data throughput of 125 Gbps. However, a virtual machine with a data throughput of 100 Gbps is allocated to the deployment plane. Therefore, it can be determined that the number of virtual machines to be supplied to the deployment plane should be adjusted, wherein a second virtual machine with a throughput of at least 25 Gbps is supplied to the deployment plane that now has a second number of five operating pods.

[0039] As yet another example and remaining in the scenario where a single virtual machine is capable of supporting 100 Gbps of data throughput and a first number of operational pods in the deployment plane (which is four) have a data throughput requirement of 25 Gbps, during operation 304, the status reflects that no pods are operational in the deployment plane. This may occur when the end user is still preparing pods for deployment and has not yet begun deploying pods. Here, since there is no data throughput through the data plane with no operational pods, it may be determined that the number of virtual machines to be provisioned to the deployment plane should be adjusted, wherein virtual machines should not be provisioned to the deployment plane since no pods are operational at the deployment plane.

[0040] Returning to the example, during operation 304, traffic controller 126 can listen to the count of the operating pods to monitor the status of deployment plane 107. During operation 304, traffic controller 126 determines that there are no operating pods in cluster 104 via listening to the count. In this example, Apache Kafka is implemented at pods 204A to pod 204C, pod 206A, and pod 206B. TM The end user of the application instance is configuring these pods to implement Apache Kafka TM Therefore, pods 204A to 204C, pods 206A, and pods 206B are all inoperable. In this illustration, the second number of operational pods in deployment plane 107 is zero.

[0041] Continuing with this illustration, in operation 306, traffic controller 126 compares the first number of operating pods, which is five, with the second number of operating pods, which is zero. Based on the comparison, traffic controller 126 identifies that the virtual machine does not need to be provisioned to deployment plane 107, and determines that the number of virtual machines provisioned to deployment plane 107 should be adjusted during operation 308.

[0042] Back to Figure 3A and method 300, after operation 308, method 300 performs operation 310, at which operation 310, the number of virtual machines can be adjusted based on a comparison between the first number of operation pods and the second number of operation pods. As discussed above, in some cases, the second number of operation pods can be greater than the first number of pods. In addition, when a larger number of operation pods require additional virtual machines, such as in the above scenario where the total data throughput demand increases from 100 Gbps to 125 Gbps and a single virtual machine has a data throughput capability of 100 Gbps, the number of virtual machines provisioned can be adjusted so that the additional virtual machines are provisioned to the deployment plane with the added operation pods.

[0043] As also discussed above, in some cases, the second number of operating pods can be less than the first number of pods. When a smaller number of operating pods requires fewer virtual machines, such as in the above scenario where the total data throughput requirement is reduced from 125 Gbps to 100 Gbps and a single virtual machine has a data throughput capability of 100 Gbps, where two virtual machines are provisioned to the deployment plane, one of the virtual machines can be removed from the deployment plane. In particular, since one virtual machine is capable of providing 100 Gbps of data throughput, the number of virtual machines provisioned to the deployment plane can be adjusted so that a single virtual machine can be provisioned to the deployment plane.

[0044] Returning to the example, as described above, during operation 308, traffic controller 126 determines that the number of virtual machines provisioned to deployment plane 107 should be adjusted. More specifically, traffic controller 126 determines that pods 204A to pod 204C, pod 206A, and pod 206B are all inoperable. Therefore, traffic controller 126 determines in operation 308 that the number of virtual machines provisioned to deployment plane 107 should be adjusted. During operation 310, in this example, traffic controller 126 can issue an instruction to cloud virtual machine API 128 indicating that the virtual machine should be removed from the virtual machines provisioned to cluster 104. Therefore, during operation 310, virtual machine 110A will be removed so that virtual machine 110A is no longer provisioned to cluster 104.

[0045] Return attention to Figure 3A After completing operation 310, method 300 may perform operation 312, where a state of the deployment plane is monitored. In an example, the state may reflect that the deployment plane now has a third number of operational pods, and the third number of operational pods may be different from the second number of operational pods. As discussed above with reference to operation 304, the number of operational pods may change such that the second number of operational pods is different from the third number of pods for various reasons.

[0046] After monitoring the state of the deployment plane during operation 312, method 300 performs operation 314 where the second number of operating pods for which virtual machines are provisioned is compared to the third number of operating pods determined during operation 312. In an example, based on the comparison, it may be determined whether the number of virtual machines provisioned to the deployment plane should be adjusted during operation 316.

[0047] In some cases, although the number of operating pods in the deployment plane can change, the number of virtual machines supplied to the deployment plane may not necessarily change. For example, a single virtual machine is capable of supporting 100 Gbps of data throughput, and a second number of operating pods in the deployment plane may have a data throughput requirement of 25 Gbps for a total throughput requirement of 100 Gbps. During operation 312, if the status reflects that there are three pods operational in the deployment plane, the data throughput requirement drops to 75 Gbps. Here, since a single virtual machine is capable of providing 75 Gbps of throughput, i.e., 75 Gbps is less than the 100 Gbps capability of the virtual machine, it can be determined that the number of virtual machines to be supplied to the deployment plane should not be adjusted during operation 316.

[0048] As another example, still staying in the scenario where a single virtual machine is capable of supporting a data throughput of 100 Gbps and the second number of operating pods (which is four) in the deployment plane has a data throughput requirement of 25 Gbps, during operation 312, the state can reflect that there are five pods operable in the deployment plane. Therefore, the third number of operating pods in the deployment plane has increased from four to five. In addition, the fifth operating pod has a data throughput requirement of 25 Gbps. Therefore, the virtual machines supplied in the data plane should be able to support a data throughput of 125 Gbps. However, a virtual machine with a data throughput of 100 Gbps is allocated to the deployment plane. Therefore, it can be determined that the number of virtual machines to be supplied to the deployment plane should be adjusted, wherein a second virtual machine with a throughput of at least 25 Gbps is supplied to the deployment plane that now has a third number of five operating pods.

[0049] As yet another example and remaining in the scenario where a single virtual machine is capable of supporting 100 Gbps of data throughput and a second number of operational pods in the deployment plane (which is four) have a data throughput requirement of 25 Gbps, during operation 312, the status reflects that no pods are operational in the deployment plane. This may occur when the end user is still preparing pods for deployment and has not yet begun deploying pods. Here, since there is no data throughput through the data plane with no operational pods, it may be determined that the number of virtual machines to be provisioned to the deployment plane should be adjusted, wherein no virtual machines should be provisioned to the deployment plane since no pods are operational at the deployment plane.

[0050] Returning to the example, during operation 312, the traffic controller 126 can listen to the count of operational pods to monitor the status of the deployment plane 107. During operation 312, the traffic controller determines, via listening to the count, that pods 204A to 204C and pod 206A are operational pods in the cluster 104. In this example, an end user implementing pods at the cluster 104 desires to run an application instance of Apache Kafk at pods 204A to 204C and pod 206A, and therefore makes pods 204A to 204C and pod 206A operational. Here, while listening to the count, the traffic controller 126 determines that pods 204A to 204C and pod 206A are operational. Pods 204A to 204C and pod 206A can correspond to a third number of operational pods in operation 314, which is four in this example.

[0051] Continuing with the illustration, in operation 316, the traffic controller 126 compares the third number of operating pods (which is four) with the second number of operating pods (which is zero). Based on the comparison, since no virtual machines are provisioned to the deployment plane 107 (e.g., zero operating pods require zero virtual machines), the traffic controller 126 identifies that virtual machines should be provisioned to the deployment plane 107, and determines that the number of virtual machines provisioned to the deployment plane 107 should be adjusted during operation 316. More specifically, each of pods 204A to pod 204C and pod 206A is running an application instance of Apache Kafka, which requires a data throughput of 25 Gbps for each of pods 204A to pod 204C and pod 206A. Therefore, the deployment plane 107 has a total data throughput requirement of 100 Gbps.

[0052] Back to Figure 3B and method 300, after operation 316, method 300 performs operation 318, wherein the number of virtual machines can be adjusted based on a comparison between the second number of operation pods and the third number of operation pods. As discussed above, in some cases, the third number of operation pods can be greater than the second number of operation pods. In addition, when a larger number of operation pods require additional virtual machines, such as in the above scenario, where the total data throughput requirement increases from 100 Gbps to 125 Gbps and a single virtual machine has a data throughput capability of 100 Gbps, the number of virtual machines provisioned can be adjusted so that additional virtual machines are provisioned to the deployment plane with the added operation pods.

[0053] Also as discussed above, in some cases, the second number of operating pods may be less than the third number of pods. When a smaller number of operating pods requires fewer virtual machines, such as in the above scenario, where the total data throughput requirement is reduced from 125 Gbps to 100 Gbps, and a single virtual machine has a data throughput capability of 100 Gbps, where two virtual machines are provisioned to the deployment plane, one of the virtual machines may be removed from the deployment plane. In particular, since one virtual machine is capable of providing a data throughput of 100 Gbps, the number of virtual machines provisioned to the deployment plane may be adjusted so that a single virtual machine may be provisioned to the deployment plane.

[0054] Returning to the example, as described above, during operation 316, the traffic controller 126 determines that the number of virtual machines provisioned to the deployment plane 107 should be adjusted. More specifically, the traffic controller 126 determines that pods 204A to pods 204C and pod 206A are in operation. Therefore, the traffic controller 126 determines in operation 316 that the number of virtual machines provisioned for the deployment plane 107 should be adjusted. In particular, each of pods 204A to pods 204C and pods 206A is running an application instance of Apache Kafka, and each of pods 204A to pods 204C and pods 206A requires a data throughput of 25 Gbps to obtain a total data throughput of 100 Gbps. In the example, each of virtual machines 110A and virtual machines 110B is capable of providing a total data throughput of 100 Gbps. Therefore, during operation 318, the number of virtual machines is adjusted from zero virtual machines to one virtual machine based on a comparison between the second number of operating pods and the third number of operating pods.

[0055] During operation 318, in this illustration, traffic controller 126 may issue instructions to cloud virtual machine API 128 indicating that virtual machine 110A should be provisioned to cluster 104. Thus, during operation 318, virtual machine 110A will be provisioned to cluster 104. After completing operation 318, method 300 is complete.

[0056] Returning to operation 308, operation 308 involves determining whether the number of virtual machines should be adjusted based on a comparison between the first number of operating pods and the second number of operating pods, if it is determined that the number of virtual machines should be adjusted, method 300 performs operation 310. However, if method 300 determines during operation 308 that the number of virtual machines should not be adjusted, method 300 performs operation 312.

[0057] Furthermore, returning to operation 316 , which involves determining whether the number of virtual machines should be adjusted based on a comparison between the second number of operating pods and the third number of operating pods, if it is determined during operation 316 that the number of virtual machines should not be adjusted, then method 300 is complete.

[0058] Although method 300 describes monitoring the state of the deployment plane twice during operations 304 and 312, it should be noted that the state of the deployment plane may be monitored only once, i.e., operations 312 to 318 may be eliminated so that method 30 only performs operations 302 to 310. Here, if it is determined during operation 308 that the number of virtual machines should not be completed, then method 300 is completed.

[0059] In addition, method 300 describes monitoring the state of the deployment plane twice during operation 304 and operation 312, it should be noted that the state of the deployment plane can be monitored any number of times. In addition, the example contemplates that method 300 is not terminated after completing operation 318, but a continuous loop, wherein operations 302 to 318 or operations 304 to 318 are performed continuously.

[0060] Figure 1 and Figure 2 Any machine, database, or device shown in the may be implemented in a general-purpose computer that is modified (e.g., configured or programmed) by software to be a special-purpose computer to perform the functions described herein for that machine, database, or device. Figure 4 and Figure 5 A computer system capable of implementing any one or more of the methods described herein is discussed. As used herein, a "database" is a data storage resource and may store data structured as a text file, a table, a spreadsheet, a relational database (e.g., an object-relational database), a triple store, a hierarchical data store, or any suitable combination thereof. Figure 1 Any two or more of the machines, databases or devices shown in can be combined into a single machine, database or device, and the function described for any single machine, database or device herein can be subdivided between multiple machines, databases or devices. In an example, the communication link between the elements of computing environment 100 is realized via one or more data communication networks. These data communication networks can utilize any wired or wireless communication protocol and any type of communication medium. In some embodiments, the data communication network is a combination of two or more data communication networks (or subnetworks) coupled to each other.

[0061] Certain embodiments are described herein as including logic or multiple components, modules, or mechanisms. A module may constitute a software module (e.g., a code contained on a machine-readable medium) or a hardware module. A "hardware module" is a tangible unit that can perform certain operations and can be configured or arranged in a certain physical manner. In various example embodiments, one or more computer systems (e.g., a stand-alone computer system, a client computer system, or a server computer system) or one or more hardware modules of a computer system (e.g., a processor or a group of processors) may be configured by software (e.g., an application or application portion) as a hardware module that operates to perform certain operations as described herein.

[0062] In some embodiments, the hardware module can be implemented mechanically, electronically, or any suitable combination thereof. For example, the hardware module may include a dedicated circuit system or logic that is permanently configured to perform certain operations. For example, the hardware module may be a dedicated processor such as a field programmable gate array (FPGA) or an application specific integrated circuit (ASIC). The hardware module may also include a programmable logic or circuit system that is temporarily configured by software to perform certain operations. For example, the hardware module may include software executed by a general-purpose processor or other programmable processor. Once configured by such software, the hardware module becomes a specific machine (or a specific part of a machine) that is uniquely customized to perform the configured function, and is no longer a general-purpose processor. It should be understood that the decision to implement the hardware module mechanically, in a dedicated and permanently configured circuit system, or in a temporarily configured circuit system (e.g., configured by software) can be driven by cost and time considerations.

[0063] Therefore, the phrase "hardware module" should be understood to cover tangible entities, i.e., entities that are physically constructed, permanently configured (e.g., hardwired), or temporarily configured (e.g., programmed) to operate in some manner or perform certain operations described herein. As used herein, a "hardware-implemented module" refers to a hardware module. Considering implementations in which hardware modules are temporarily configured (e.g., programmed), it is not necessary to configure or instantiate each of the hardware modules at any one time. For example, in the case where a hardware module includes a general-purpose processor that is configured by software to become a special-purpose processor, the general-purpose processor can be configured as different special-purpose processors (e.g., including different hardware modules) at different times. For example, the software configures one or more specific processors accordingly to constitute a specific hardware module at one time, and to constitute different hardware modules at different times.

[0064] A hardware module can provide information to other hardware modules and receive information from other hardware modules. Therefore, the described hardware modules can be considered to be communicatively coupled. In the case of multiple hardware modules being present at the same time, communication can be achieved by signal transmission (e.g., through appropriate circuits and buses) between or among two or more hardware modules. In an embodiment in which multiple hardware modules are configured or instantiated at different times, communication between such hardware modules can be achieved, for example, by storing and retrieving information in a memory structure to which multiple hardware modules have access rights. For example, a hardware module can perform an operation and store the output of the operation in a memory device communicatively coupled thereto. Then, another hardware module can access the memory device at a later time to retrieve and process the stored output. The hardware module can also initiate communication with an input device or an output device, and can operate on a resource (e.g., a collection of information).

[0065] The various operations of the example methods described herein may be performed, at least in part, by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors constitute processor-implemented modules that operate to perform one or more operations or functions described herein. As used herein, a "processor-implemented module" refers to a hardware module implemented using one or more processors.

[0066] Similarly, the method described herein can be implemented at least in part by a processor, wherein one or more specific processors are examples of hardware. For example, at least some of the operations in the operation of the method can be performed by one or more processors or modules implemented by the processor. In addition, one or more processors can also operate to support the execution of related operations in a "cloud computing" environment or as a "software as a service" (SaaS). For example, at least some operations can be performed by a group of computers (as an example of a machine including a processor), which can be accessed via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., application program interface (API)).

[0067] The execution of certain operations may be distributed among processors, rather than residing only in a single machine, but deployed on multiple machines. In some example embodiments, the processor or processor-implemented modules may be located in a single geographic location (e.g., in a home environment, an office environment, or a server farm). In other example embodiments, the processor or processor-implemented modules are distributed in multiple geographic locations.

[0068] Combination Figures 1 to 3BThe described modules, methods, applications, etc. are implemented in some embodiments in the context of a machine and associated software architecture. The following section describes representative software architectures and machine (eg, hardware) architectures suitable for use with the disclosed embodiments.

[0069] Software architectures are used in conjunction with hardware architectures to create devices and machines that are tailored for specific purposes. For example, a specific hardware architecture coupled with a specific software architecture will create mobile devices such as mobile phones, tablet devices, etc. Slightly different hardware and software architectures may produce smart devices used in the "Internet of Things." Yet another combination produces server computers used within a cloud computing architecture. Not all combinations of such software and hardware architectures are presented here, as one skilled in the art can readily understand how to implement the subject matter of the present invention in contexts different from the disclosure contained herein.

[0070] Implementations of the described subject matter may include one or more of the features, alone or in combination, as shown below by way of example.

[0071] Example 1 is a method for dynamically adjusting the number of virtual machines in a data plane, the method comprising:

[0072] provisioning the number of virtual machines in the data plane, the number of virtual machines having data plane agents that provide data routing for a first number of operational pods in a deployment plane associated with the data plane;

[0073] monitoring a status of the deployment plane, the status reflecting that the deployment plane has a second number of operational pods different than the first number of operational pods;

[0074] comparing the first number of operating pods to the second number of operating pods; and

[0075] The number of the virtual machines in the data plane is dynamically adjusted based on a result of a comparison between the first number of the operation pods and the second number of the operation pods.

[0076] 2. The method of Example 1, wherein the deployment plane includes a traffic controller, and the traffic controller is configured to monitor a state of the deployment plane and compare a first number of the operating pods with a second number of the operating pods.

[0077] 3. A method according to Examples 1 and 2, wherein the traffic controller is configured to publish a virtual machine application programming interface (API) to a cloud-based virtual machine API based on a comparison between the first number of operating pods and the second number of operating pods.

[0078] 4. According to Examples 1 to 3, the second number of the operation pods is less than the first number of the operation pods, and the virtual machine API reduces the number of the virtual machines in the data plane.

[0079] 5. The method of Examples 1 to 4, wherein the second number of operation pods is zero, and the virtual machine API reduces the number of virtual machines in the data plane to zero.

[0080] 6. The method according to Examples 1 to 5, wherein the second number of the operation pods is greater than the first number of the operation pods, and the virtual machine API increases the number of the virtual machines in the data plane.

[0081] 7. The method according to example 1-6 further comprising:

[0082] monitoring a second state of the deployment plane after dynamically adjusting the number of the virtual machines in the data plane, the state reflecting that the deployment plane has a third number of operation pods different than the second number of operation pods;

[0083] comparing the second number of operating pods to a third number of operating pods; and

[0084] The number of the virtual machines in the data plane is dynamically adjusted based on a comparison between the second number of the operating pods and the third number of the operating pods, such that the number of the virtual machines is adjusted a second time after provisioning.

[0085] 8. A system comprising:

[0086] at least one processor; and

[0087] at least one memory, the at least one memory comprising instructions that, when executed by the at least one processor, cause the at least one processor to perform operations comprising:

[0088] Provisioning a number of virtual machines in a data plane, the number of virtual machines having data plane agents, the number of virtual machines providing data routing for a first number of operational pods in a deployment plane associated with the data plane;

[0089] monitoring a status of the deployment plane, the status reflecting that the deployment plane has a second number of operational pods different than the first number of operational pods;

[0090] comparing the first number of operating pods to the second number of operating pods; and

[0091] The number of the virtual machines in the data plane is dynamically adjusted based on a result of a comparison between the first number of the operation pods and the second number of the operation pods.

[0092] 9. The system of Example 8, wherein the deployment plane includes a traffic controller, and the traffic controller is configured to monitor a state of the deployment plane and compare the first number of operating pods with the second number of operating pods.

[0093] 10. A system according to Examples 8 and 9, wherein the traffic controller is configured to publish a virtual machine application programming interface (API) to a cloud-based virtual machine API based on a comparison between the first number of operating pods and the second number of operating pods.

[0094] 11. The system of Examples 8 to 10, wherein the second number of operation pods is less than the first number of operation pods, and the virtual machine API reduces the number of virtual machines in the data plane.

[0095] 12. The system of Examples 8 to 11, wherein the second number of operation pods is greater than the first number of operation pods, and the virtual machine API increases the number of virtual machines in the data plane.

[0096] 13. The system of examples 8-12, wherein the instructions further cause the device to perform operations comprising:

[0097] monitoring a second state of the deployment plane after dynamically adjusting the number of the virtual machines in the data plane, the state reflecting that the deployment plane has a third number of operation pods different than the second number of operation pods;

[0098] comparing the second number of operating pods to a third number of operating pods; and

[0099] The number of the virtual machines in the data plane is dynamically adjusted based on a comparison between the second number of the operating pods and the third number of the operating pods, such that the number of the virtual machines is adjusted a second time after provisioning.

[0100] 14. A non-transitory machine-readable medium having instructions embodied thereon, the instructions being executable by a processor of a machine to perform operations comprising:

[0101] Provisioning a number of virtual machines in a data plane, the number of virtual machines having data plane agents, the number of virtual machines providing data routing for a first number of operational pods in a deployment plane associated with the data plane;

[0102] monitoring a status of the deployment plane, the status reflecting that the deployment plane has a second number of operational pods different than the first number of operational pods;

[0103] comparing the first number of operating pods to the second number of operating pods; and

[0104] The number of the virtual machines in the data plane is dynamically adjusted based on a comparison result between the first number of the operation pods and the second number of the operation pods.

[0105] 15. The non-transitory machine-readable medium of Example 14, wherein the deployment plane includes a traffic controller, and the traffic controller is configured to monitor a state of the deployment plane and compare the first number of operating pods with the second number of operating pods.

[0106] 16. The non-transitory machine-readable medium of Examples 14 and 15, wherein the traffic controller is configured to publish a virtual machine application programming interface (API) to a cloud-based virtual machine API based on a comparison between the first number of operating pods and the second number of operating pods.

[0107] 17. The non-transitory machine-readable medium of Examples 14 to 16, wherein the second number of operation pods is less than the first number of operation pods, and the virtual machine API reduces the number of virtual machines in the data plane.

[0108] 18. The non-transitory machine-readable medium of Examples 14 to 17, wherein the second number of operation pods is zero and the virtual machine API reduces the number of virtual machines in the data plane to zero.

[0109] 19. The non-transitory machine-readable medium of Examples 14 to 18, wherein the second number of operation pods is greater than the first number of operation pods, and the virtual machine API increases the number of virtual machines in the data plane.

[0110] 20. The non-transitory machine-readable medium of examples 14 to 19, wherein the operations further comprise:

[0111] monitoring a second state of the deployment plane after dynamically adjusting the number of the virtual machines in the data plane, the state reflecting that the deployment plane has a third number of operation pods different than the second number of operation pods;

[0112] comparing the second number of operating pods to a third number of operating pods; and

[0113] The number of the virtual machines in the data plane is dynamically adjusted based on a comparison between the second number of the operating pods and the third number of the operating pods, such that the number of the virtual machines is adjusted a second time after provisioning.

[0114] Figure 4 is a block diagram 400 illustrating a software architecture 402 that may be installed on any one or more of the devices described above. Figure 4 This is merely a non-limiting example of a software architecture, and it will be appreciated that many other architectures may be implemented to facilitate the functionality described herein. The software architecture 402 may be comprised of, for example, Figure 5 4. The hardware implementation of machine 500 of FIG. 4 includes processor 502, memory 504 and storage 506, and I / O components 510 to 514. In this example, software architecture 402 can be conceptualized as a stack of layers, each of which can provide specific functionality. For example, software architecture 402 includes layers such as operating system 404, library 406, framework 408, and application 410. In operation, according to some implementations, application 410 triggers application programming interface (API) calls 412 through the software stack and receives messages 414 in response to API calls 412.

[0115] In various implementations, operating system 404 manages hardware resources and provides public services. Operating system 404 includes, for example, kernel 420, service 422, and driver 424. In some implementations, kernel 420 acts as an abstraction layer between hardware and other software layers. For example, kernel 420 provides functions such as memory management, processor management (e.g., scheduling), component management, networking, and security settings. Service 422 can provide other public services for other software layers. Driver 424 can be responsible for controlling the underlying hardware or interfacing with the underlying hardware. For example, driver 424 can include a display driver, a camera driver, a Bluetooth driver, a flash driver, a serial communication driver (e.g., a universal serial bus (USB) driver), a Wi-Fi driver, an audio driver, a power management driver, etc.

[0116] In some implementations, the library 406 provides a low-level common infrastructure that can be utilized by the application 410. The library 406 may include a system library 430 (e.g., a C standard library) that may provide functions such as memory allocation functions, string manipulation functions, mathematical functions, etc. In addition, the library 406 may include an API library 432, such as a media library (e.g., a library for supporting the rendering and manipulation of various media formats such as Moving Picture Experts Group-4 (MPEG4), Advanced Video Coding (H.264 or AVC), Moving Picture Experts Group Layer-3 (MP3), Advanced Audio Coding (AAC), Adaptive Multi-Rate (AMR) audio codec, Joint Photographic Experts Group (JPEG or JPG), or Portable Network Graphics (PNG), etc.), a graphics library (e.g., an OpenGL framework for rendering in two dimensions (2D) and three dimensions (3D) in a graphics context on a display), a database library (e.g., SQLite for providing various relational database functions), a web library (e.g., WebKit for providing web browsing functions), etc. The library 406 may also include a variety of other libraries 434 to provide many other APIs to the application 410 .

[0117] According to some implementations, the framework 408 provides a high-level common infrastructure that can be utilized by the applications 410. For example, the framework 408 provides various graphical user interface (GUI) functions, advanced resource management, advanced location services, etc. The framework 408 can provide a wide range of other APIs that can be utilized by the applications 410, some of which can be specific to a particular operating system or platform.

[0118] In the example, the application 410 includes a home application 450, a contact application 452, a browser application 454, a book reader application 456, a positioning application 458, a media application 460, a message application 462, a game application 464, and a variety of other applications such as a third-party application 466. According to some examples, the application 410 is a program that performs the functions defined in the program. Various programming languages, such as object-oriented programming languages ​​(e.g., Objective-C, Java, or C++) or procedural programming languages ​​(e.g., C or assembly language) can be used to create one or more of the applications 410 constructed in various ways. In a specific example, the third-party application 466 (e.g., an application developed using an Android or iOS software development kit (SDK) by an entity other than the supplier of a specific platform) can be a mobile software running on a mobile operating system such as iOS, Android, Windows Phone, or other mobile operating systems. In this example, the third-party application 466 can call an API call 412 provided by the mobile operating system (e.g., operating system 404) to facilitate the functions described herein.

[0119] Certain examples are described herein as including logic or multiple components, modules, or mechanisms. A module may constitute a software module (e.g., code contained in (1) a non-transitory machine-readable medium or (2) a transmission signal) or a hardware-implemented module. A hardware-implemented module is a tangible unit that is capable of performing certain operations and may be configured or arranged in a certain manner. In an example, one or more computer systems (e.g., stand-alone, client, or server computer systems) or one or more processors may be configured by software (e.g., an application or application portion) to operate as a hardware-implemented module that performs certain operations as described herein.

[0120] In various examples, hardware-implemented modules can be implemented mechanically or electronically. For example, a hardware-implemented module can include a dedicated circuit system or logic that is permanently configured (e.g., as a dedicated processor, such as a field programmable gate array (FPGA) or an application-specific integrated circuit (ASIC)) to perform certain operations. A hardware-implemented module can also include a programmable logic or circuit system (e.g., as contained in a general-purpose processor or other programmable processor) that is temporarily configured by software to perform certain operations. It should be understood that the decision to implement a hardware-implemented module mechanically, in a dedicated and permanently configured circuit system, or in a temporarily configured circuit system (e.g., configured by software) can be driven by cost and time considerations.

[0121] Thus, the term "hardware-implemented module" should be understood to encompass tangible entities, i.e., entities that are physically constructed, permanently configured (e.g., hardwired), or temporarily or provisionally configured (e.g., programmed) to operate in a certain manner and / or perform certain operations described herein. Considering an example where a hardware-implemented module is temporarily configured (e.g., programmed), each of the hardware-implemented modules need not be configured or instantiated at any one time. For example, where the hardware-implemented module includes a general-purpose processor configured using software, the general-purpose processor can be separately configured as different hardware-implemented modules at different times. Thus, software can configure a processor to, for example, constitute a particular hardware-implemented module at one time and constitute different hardware-implemented modules at different times.

[0122] The modules of hardware implementation can provide information to the modules of other hardware implementations and receive information from the modules of other hardware implementations. Therefore, the modules of described hardware implementation can be considered to be coupled in communication. In the case of multiple such hardware-implemented modules at the same time, communication can be achieved by signal transmission (e.g., by suitable circuits and buses) connecting the modules of hardware implementation. In the example of configuring or instantiating multiple hardware-implemented modules at different times, the communication between such hardware-implemented modules can be achieved, for example, by storing and retrieving information in a memory structure to which multiple hardware-implemented modules have access rights. For example, a module of hardware implementation can perform an operation and store the output of the operation in a memory device coupled in communication with it. Then, another module of hardware implementation can access the memory device at a later time to retrieve and process the stored output. The module of hardware implementation can also initiate communication with an input or output device, and can operate on resources (e.g., a collection of information).

[0123] The various operations of the example methods described herein may be performed at least in part by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform the related operations. Whether temporarily or permanently configured, such a processor may constitute a processor-implemented module that operates to perform one or more operations or functions. In some examples, the modules mentioned in this article may include processor-implemented modules.

[0124] Similarly, the method described herein can be implemented at least in part by a processor. For example, at least some of the operations in the method's operation can be performed by one or more processors or a module implemented by the processor. The execution of some operations can be distributed between one or more processors, not only residing in a single machine, but also deployed across multiple machines. In some examples, one or more processors can be located in a single location (e.g., in a home environment, an office environment, or as a server group), and in other examples, the processor can be distributed across multiple locations.

[0125] The one or more processors may also operate to support execution of the related operations in a "cloud computing" environment or as "software as a service" (SaaS). For example, at least some operations may be performed by a group of computers (as an example of a machine including a processor), which may be accessed via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., an application program interface (API)).

[0126] Examples may be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or a combination thereof. Examples may be implemented using a computer program product, for example, by a computer program tangibly embodied in an information carrier, for example, in a machine-readable medium for execution by a data processing apparatus (e.g., a programmable processor, a computer, or multiple computers) or for controlling the operation of the data processing apparatus.

[0127] A computer program may be written in any form of programming language, including compiled or interpreted languages, and may be deployed in any form, including as a stand-alone program or as a module, subroutine, or other unit suitable for use in a computing environment. A computer program may be deployed to be executed on one computer or on multiple computers, distributed at one site or across multiple sites, and interconnected by a communication network.

[0128] The computing system may include a client and a server. The client and the server are usually far away from each other, and usually interact through a communication network. The relationship between the client and the server is generated in view of the computer programs running on the respective computers and having a client-server relationship with each other. In the example of deploying a programmable computing system, it will be understood that both the hardware architecture and the software architecture need to be considered. Specifically, it should be understood that the selection of implementing certain functions in the hardware of a permanent configuration (e.g., ASIC), in the hardware of a temporary configuration (e.g., a combination of software and a programmable processor), or in the combination of the hardware of a permanent configuration and a temporary configuration can be a design choice. The hardware architecture (e.g., machine) and the software architecture that can be deployed in various examples are described below.

[0129] Figure 5 It is a block diagram of a machine, in which instructions can be executed to make the machine perform any one or more of the methods discussed herein. In one example, the machine can be any device described above. In an alternative example, the machine operates as a standalone device or can be connected (e.g., networked) to other machines. In a networked deployment, the machine can operate with the ability of a server or client machine in a server-client network environment, or operate as a peer machine in a point-to-point (or distributed) network environment. The machine can be a personal computer (PC), a tablet PC, a set-top box (STB), a personal digital assistant (PDA), a cellular phone, a network device, a network router, a switch or a bridge, or any machine that can (sequentially or otherwise) execute instructions specifying the action to be taken by the machine. In addition, although only a single machine is shown, the term "machine" should also be considered to include any machine collection, which executes a set (or multiple sets) of instructions individually or jointly to perform any one or more methods discussed herein.

[0130] The machine 500, which may be a computer system, includes a processor 502 (e.g., a central processing unit (CPU), a graphics processing unit (GPU), or both), a main memory 504, and a static memory 506, which communicate with each other via a bus 508. The machine 500 may also include a video display unit 510 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)). The machine 500 also includes an alphanumeric input device 512 (e.g., a keyboard), a user interface (UI) navigation device (cursor control device) 514 (e.g., a mouse), a disk drive unit 516, a signal generating device 518 (e.g., a speaker), and a network interface device 520.

[0131] The drive unit 516 includes a machine-readable medium 522 on which is stored one or more sets of instructions and data structures (e.g., software) 524, which embody or are used for any one or more methods or functions described herein. During execution by the machine 500, the instructions 524 may also reside completely or at least partially in the main memory 504 and / or in the processor 502, which also constitute machine-readable media. The instructions 524 may also reside in the static memory 506.

[0132] Although the machine-readable medium 522 is shown as a single medium in the example, the term "machine-readable medium" may include a single medium or multiple media (e.g., a centralized or distributed database, and / or associated caches and servers) storing one or more instructions or data instructions 524. The term "machine-readable medium" should also be deemed to include: any tangible medium capable of storing, encoding or carrying instructions 524 for execution by a machine and causing the machine to perform any one or more methods of the present invention, or any tangible medium capable of storing, encoding or carrying data structures used by or associated with such instructions 524. Therefore, the term "machine-readable medium" should be deemed to include, but is not limited to, solid-state memory and optical and magnetic media. Specific examples of machine-readable media include non-volatile memory, such as semiconductor memory devices, such as erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), and flash memory devices; magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks.

[0133] Instructions 524 may also be sent or received over a communication network 526 using a transmission medium. Instructions 524 may be sent using a network interface device 520 and any of a number of well-known transmission protocols (e.g., HTTP). Examples of communication networks include a local area network ("LAN"), a wide area network ("WAN"), the Internet, a mobile telephone network, a plain old telephone (POTS) network, and wireless data networks (e.g., Wi-Fi and Wi-Max networks). The term "transmission medium" should be taken to include any intangible medium that is capable of storing, encoding, or carrying instructions 524 for execution by a machine, and includes digital or analog communication signals or other intangible media that facilitates communication of such software.

[0134] Although examples have been described with reference to specific examples, it will be apparent that various modifications and changes may be made to these examples without departing from the broader spirit and scope of the present invention. Therefore, the description and the accompanying drawings are considered to be illustrative rather than restrictive. The accompanying drawings forming a part of this article illustrate specific examples in which the subject matter can be practiced by way of illustration and not limitation. The examples shown are described in sufficient detail to enable those skilled in the art to practice the teachings disclosed herein. Other examples may be utilized and derived therefrom so that structural and logical replacements and changes may be made without departing from the scope of the present disclosure. Therefore, this detailed description should not be considered to be restrictive, and the scope of the various examples is limited only by the appended claims and the full scope of equivalents given by such claims.

[0135] For convenience only, the term "invention" may be used herein to refer to such examples of the subject matter of the present invention individually and / or collectively, and if more than one invention or inventive concept is in fact disclosed, it is not intended to actively limit the scope of the present application to any single invention or inventive concept. Therefore, although specific examples have been shown and described herein, it should be understood that any arrangement to achieve the same purpose may replace the specific examples shown. The present disclosure is intended to cover any and all adjustments or variations of the various examples. For those skilled in the art, after reviewing the above description, the combination of the above examples and other examples not specifically described herein will be obvious.

[0136] An abstract of the present disclosure is provided to comply with 37 CFR § 1.72(b), which requires that the abstract will allow the reader to quickly ascertain the nature of the technical disclosure. The abstract is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing detailed description, it can be seen that various features are grouped together in a single example for the purpose of simplifying the present disclosure. The method of the present disclosure should not be interpreted as reflecting an intention that the claimed examples require more features than those expressly recited in each claim. On the contrary, as reflected in the appended claims, the inventive subject matter lies in less than all the features of a single disclosed example. Therefore, the appended claims are hereby incorporated into the detailed description, with each claim independently serving as a separate example.

[0137] Executable instructions and machine storage media

[0138] Various memories and / or storage units may store one or more sets of instructions and data structures (e.g., software) that embody or are used for any one or more methods or functions described herein. When these instructions are executed by a processor, various operations are caused to implement the disclosed embodiments.

[0139] As used herein, the terms "machine storage medium," "device storage medium," and "computer storage medium" mean the same thing and may be used interchangeably in this disclosure. These terms refer to a single or multiple storage devices and / or media (e.g., centralized or distributed databases, and / or associated caches and servers) that store executable instructions and / or data. Thus, these terms should be considered to include, but are not limited to, solid-state memory and optical and magnetic media, including memory internal or external to the processor. Specific examples of machine storage medium, computer storage medium, and / or device storage medium include nonvolatile memory, including, for example, semiconductor memory devices such as erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), FPGAs, and flash memory devices; magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The terms "machine storage medium," "computer storage medium," and "device storage medium" specifically exclude carrier waves, modulated data signals, and at least some of other such media that are encompassed by the term "signal media" discussed below.

[0140] Transmission medium

[0141] In various examples, one or more portions of a network, such as a network-based system can be an ad hoc network, an intranet, an extranet, a VPN, a LAN, a WLAN, a WAN, a WWAN, a MAN, the Internet, a portion of the Internet, a portion of the PSTN, a plain old telephone service (POTS) network, a cellular telephone network, a wireless network, a Wi-Fi network, another type of network, or a combination of two or more such networks. To further illustrate, the network or a portion of the network can include a wireless network or a cellular network, wherein the coupling can be a code division multiple access (CDMA) connection, a global system for mobile communications (GSM) connection, or another type of cellular coupling or wireless coupling. In this illustration, the coupling can implement any of various types of data transmission technologies, such as single carrier radio transmission technology (1xRTT), evolution data optimized (EVDO) technology, general packet radio service (GPRS) technology, enhanced data rates for GSM evolution (EDGE) technology, the third generation partnership project (3GPP) including 3G, fourth generation wireless (4G) networks, universal mobile telecommunications system (UMTS), high speed packet access (HSPA), world wide interoperability for microwave access (WiMAX), long term evolution (LTE) standards, other standards defined by various standards setting organizations, other long range protocols, or other data transmission technologies.

[0142] Instructions can be sent or received over a network using a transmission medium via a network interface device and utilizing any of a plurality of well-known transmission protocols (e.g., Hypertext Transfer Protocol (HTTP)). Similarly, instructions can be sent or received using a transmission medium via coupling (e.g., point-to-point coupling) to a device. The terms "transmission medium" and "signal medium" represent the same thing and can be used interchangeably in this disclosure. The terms "transmission medium" and "signal medium" should be deemed to include any intangible medium capable of storing, encoding, or carrying instructions for execution by a machine, and include digital or analog communication signals or other intangible media that facilitate the communication of such software. Therefore, the terms "transmission medium" and "signal medium" should be deemed to include any form of modulated data signals, carrier waves, etc. The term "modulated data signal" refers to a signal having one or more of its characteristics set or changed in a manner that encodes information in the signal.

[0143] Computer readable medium

[0144] The terms "machine-readable medium," "computer-readable medium," and "device-readable medium" mean the same thing and are used interchangeably in this disclosure. These terms are defined to include both machine storage media and transmission media. Thus, the terms include both storage devices / medium and carrier / modulated data signals.

Claims

1. A method for dynamically adjusting the number of virtual machines in a data plane, the method comprising: provisioning the number of virtual machines in the data plane, the number of virtual machines having data plane agents that provide data routing for a first number of operational pods in a deployment plane associated with the data plane; monitoring a status of the deployment plane, the status reflecting that a number of the operation pods operating in the deployment plane has changed from the first number to a second number of operation pods, the second number being different from the first number of operation pods; comparing the first number of the operating pods to the second number of the operating pods to determine a value of a change in the number of the operating pods operating in the deployment plane; as well as The number of the virtual machines in the data plane is dynamically adjusted based on a changing value of the number of the operation pods operating in the deployment plane, wherein the number of the virtual machines in the data plane changes with the value of the number of the operation pods operating in the deployment plane, such that when the number of the operation pods decreases, the number of the virtual machines in the data plane decreases, and when the number of the operation pods increases, the number of the virtual machines in the data plane increases.

2. The method according to claim 1, wherein: The deployment plane includes a traffic controller, and the traffic controller is configured to monitor a state of the deployment plane and compare the first number of the operating pods with the second number of the operating pods.

3. The method according to claim 2, wherein: The traffic controller is configured to publish a virtual machine API to a cloud-based virtual machine application programming interface API based on a comparison between the first number of the operating pods and the second number of the operating pods.

4. The method according to claim 3, wherein: The second number of the operation pods is zero, and the virtual machine API reduces the number of the virtual machines in the data plane to zero.

5. The method according to claim 1, further comprising: monitoring a second state of the deployment plane after dynamically adjusting the number of the virtual machines in the data plane, the state reflecting that the deployment plane has a third number of operation pods different than the second number of operation pods; comparing the second number of operating pods to a third number of operating pods; and The number of the virtual machines in the data plane is dynamically adjusted based on a comparison between the second number of the operating pods and the third number of the operating pods, such that the number of the virtual machines is adjusted a second time after the provisioning.

6. A system comprising: at least one processor; as well as at least one memory, the at least one memory comprising instructions that, when executed by the at least one processor, cause the at least one processor to perform operations comprising: Provisioning a number of virtual machines in a data plane, the number of virtual machines having data plane agents, the number of virtual machines providing data routing for a first number of operational pods in a deployment plane associated with the data plane; monitoring a status of the deployment plane, the status reflecting that a number of the operation pods operating in the deployment plane has changed from the first number to a second number of operation pods, the second number being different from the first number of operation pods; comparing the first number of operating pods to the second number of operating pods to determine a value of a change in the number of operating pods operating in the deployment plane; and The number of the virtual machines in the data plane is dynamically adjusted based on a changing value of the number of the operation pods operating in the deployment plane, wherein the number of the virtual machines in the data plane changes with the value of the number of the operation pods operating in the deployment plane, such that when the number of the operation pods decreases, the number of the virtual machines in the data plane decreases, and when the number of the operation pods increases, the number of the virtual machines in the data plane increases.

7. The system according to claim 6, wherein: The deployment plane includes a traffic controller, and the traffic controller is configured to monitor a state of the deployment plane and compare the first number of the operating pods with the second number of the operating pods.

8. The system according to claim 7, wherein: The traffic controller is configured to publish a virtual machine API to a cloud-based virtual machine application programming interface API based on a comparison between the first number of the operation pods and the second number of the operation pods.

9. The system according to claim 6, wherein: The instructions also cause the device to perform operations including: monitoring a second state of the deployment plane after dynamically adjusting the number of the virtual machines in the data plane, the state reflecting that the deployment plane has a third number of operation pods different than the second number of operation pods; comparing the second number of operating pods to a third number of operating pods; and The number of the virtual machines in the data plane is dynamically adjusted based on a comparison between the second number of the operating pods and the third number of the operating pods, such that the number of the virtual machines is adjusted a second time after the provisioning.

10. A non-transitory machine-readable medium having instructions embodied thereon, the instructions being executable by a processor of a machine to perform operations comprising: Provisioning a number of virtual machines in a data plane, the number of virtual machines having data plane agents, the number of virtual machines providing data routing for a first number of operational pods in a deployment plane associated with the data plane; monitoring a status of the deployment plane, the status reflecting that a number of the operation pods operating in the deployment plane has changed from the first number to a second number of operation pods, the second number being different from the first number of operation pods; comparing the first number of operating pods to the second number of operating pods to determine a value of a change in the number of operating pods operating in the deployment plane; and The number of the virtual machines in the data plane is dynamically adjusted based on a changing value of the number of the operation pods operating in the deployment plane, wherein, The number of the virtual machines in the data plane changes with the value of the number of the operation pods operating in the deployment plane, such that when the number of the operation pods decreases, the number of the virtual machines in the data plane decreases, and when the number of the operation pods increases, the number of the virtual machines in the data plane increases.

11. The non-transitory machine-readable medium of claim 10, wherein: The deployment plane includes a traffic controller, and the traffic controller is configured to monitor a state of the deployment plane and compare the first number of the operating pods with the second number of the operating pods.

12. The non-transitory machine-readable medium of claim 11, wherein: The traffic controller is configured to publish a virtual machine API to a cloud-based virtual machine application programming interface API based on a comparison between the first number of the operating pods and the second number of the operating pods.

13. The non-transitory machine-readable medium of claim 12, wherein: The second number of the operation pods is zero, and the virtual machine API reduces the number of the virtual machines in the data plane to zero.

14. The non-transitory machine-readable medium of claim 10, wherein: The operations also include: monitoring a second state of the deployment plane after dynamically adjusting the number of the virtual machines in the data plane, the state reflecting that the deployment plane has a third number of operation pods different than the second number of operation pods; comparing the second number of operating pods to a third number of operating pods; and The number of the virtual machines in the data plane is dynamically adjusted based on a comparison between the second number of the operating pods and the third number of the operating pods, such that the number of the virtual machines is adjusted a second time after the provisioning.