Cloud service request processing method and system
By using a plugin management component to manage plugins in the cloud service request processing system, process isolation between the plugin framework and plugins is achieved, solving the problem of the impact of plugin modifications and exceptions on business operations and ensuring the stability and security of the system.
Patent Information
- Application Number
- CN202410231608.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2024-01-31
- Filing Date
- 2024-02-29
- Publication Date
- 2025-08-01
AI Technical Summary
In the existing cloud service request processing system, the static linking between plugins and plugin frameworks means that the entire framework needs to be restarted when a plugin is modified, which affects business stability and security. Furthermore, plugin malfunctions can affect other cloud services.
Plugins are managed through a plugin management component. The plugin framework and plugins run in different processes, achieving isolation. This allows for dynamic loading and updating of plugins without restarting the framework. Furthermore, the interaction between the plugin framework and the plugin management component is isolated through an access proxy component.
It ensures the operational security and stability of the plugin framework, avoids the impact of plugin modifications or anomalies on other plugins and services, and improves access security and plugin management efficiency in a multi-tenant environment.
Smart Images

Figure CN120407035A_ABST
Abstract
Description
[0001] This application claims the priority of a Chinese patent application with the application number 202410137693.2 and the invention title "Management System for Cloud Service Plugins" filed on January 31, 2024, the entire content of which is incorporated herein by reference. Technical Field
[0002] This application relates to the technical field of cloud services, and particularly to a method and system for processing cloud service requests. Background Art
[0003] In the field of cloud services, when a tenant needs a server to provide cloud services to it, it can send a cloud service request to the server through the client it uses. After receiving the cloud service request, the server can process the cloud service request and provide cloud services to the tenant based on the processed cloud service request.
[0004] Currently, servers usually use a plugin framework and plugins to process cloud service requests. For example, the server's use of a sidecar proxy to process cloud service requests is usually implemented using a plugin framework and plugins. The plugins used by the plugin framework are statically linked to the plugin framework.
[0005] In such a case, if it is necessary to modify the plugin, such as dynamically loading or updating the plugin, after modifying the plugin, the entire plugin framework needs to be restarted, which will affect the services that are relying on the plugin framework to run. Summary of the Invention
[0006] This application provides a method and system for processing cloud service requests. This application isolates the plugin framework from the framework, so that the plugin framework and the plugins do not affect each other, ensuring the security and stability of the operation of the plugin framework. The technical solutions provided by this application are as follows:
[0007] In a first aspect, this application provides a cloud service request processing system. This cloud service request processing system is deployed in a server managed by a cloud management platform. The cloud management platform is used to manage the infrastructure that provides cloud services. The infrastructure includes multiple servers. This cloud service request processing system includes: an interaction component, a plugin framework, a plugin management component, and at least one plugin associated with the plugin framework. The interaction component is used to obtain the cloud service request sent by the tenant and provide the cloud service request to the plugin framework. The cloud service request is used to request the server to provide cloud services to the tenant. The plugin framework is used to run based on the cloud service request and send a plugin access request to the plugin management component. The plugin access request indicates an access to a first plugin for processing the cloud server request. The first plugin is one of the at least one plugin. The plugin management component is used to access the first plugin based on the plugin access request, obtain an access result, and feedback the access result to the plugin framework. The plugin framework is also used to obtain a processing result for the cloud service request based on the access result.
[0008] During the process of the cloud service request processing system processing cloud service requests, since the plug-ins are managed by the plug-in management component, when a plug-in needs to run, the plug-in framework needs to first send a plug-in access request to the plug-in management component. After receiving the plug-in access request, the plug-in management component accesses the plug-in based on the plug-in access request. In this way, the operation of the plug-in framework and the operation of the plug-in belong to different processes, which is equivalent to achieving isolation between the plug-in framework and the plug-in, so that the plug-in framework and the plug-in do not affect each other, ensuring the security and stability of the operation of the plug-in framework. When a tenant needs to modify a plug-in, such as dynamically loading or updating a plug-in, there is no need to restart the entire plug-in framework, so that the behavior of modifying the plug-in will not affect the plug-ins managed by other plug-in management components, and thus will not affect the tenant services that depend on the operation of these other plug-ins. Similarly, when a certain plug-in runs abnormally, it will not affect the plug-in framework and will not affect the plug-ins managed by other plug-in management components associated with the plug-in framework.
[0009] In a possible implementation, the cloud service request processing system further includes: an access proxy component. The plug-in framework is specifically configured to send a plug-in access request to the access proxy component, so that the access proxy component sends a plug-in access request to the plug-in management component. When the interaction between the plug-in framework and the plug-in management component is implemented through the access proxy component, the access proxy component isolates the plug-in framework and the plug-in management component. When the plug-in fails to start or runs into an error, the plug-in management component will return information indicating an error in the execution to the access proxy component, without causing problems with the access proxy component, and even less likely to affect the plug-in framework, which can further ensure the security and stability of the operation of the plug-in framework.
[0010] In a possible implementation, the interaction component is further configured to obtain a plug-in loading request of the tenant and forward the plug-in loading request to the plug-in management component, where the plug-in loading request instructs to load a first plug-in; the plug-in management component is further configured to load the first plug-in based on the plug-in loading request. Since the first plug-in is loaded by the plug-in management component, the operation of the plug-in framework and the operation of the plug-in belong to different processes, which is equivalent to achieving isolation between the plug-in framework and the plug-in, so that the process of loading the plug-in will not affect the operation of the plug-in framework, and further the process of loading the plug-in will not affect the plug-ins managed by other plug-in management components, enabling dynamic loading of the plug-in.
[0011] In a possible implementation, the cloud service request processing system further includes: an other plugin management component. At this time, the plugin management component is specifically configured to: based on a plugin loading request, send a plugin acquisition request to the plugin registration component, where the plugin acquisition request indicates to acquire a first plugin, and the plugin registration component is used to store all the plugins required for processing cloud service requests; receive a plugin acquisition response sent by the plugin registration component, where the plugin acquisition response carries indication information of the other plugin management component, or the plugin acquisition response carries indication information of the storage address of the first plugin in the plugin registration component; based on the indication of the plugin acquisition response, acquire the first plugin and load the first plugin.
[0012] When the plugin management component downloads the executable code of the first plugin from the other plugin management component, it can reduce the download pressure on the plugin registration component and reduce the network traffic of the plugin registration component. When the number of plugin management components included in the cloud service request processing system is larger, this effect is more obvious.
[0013] In a possible implementation, the plugin management component is further configured to: acquire an update request indicating to update the first plugin; based on the update request, acquire an updated version of the first plugin from the other plugin management component, or acquire the updated version from the plugin registration component; update the first plugin based on the updated version.
[0014] When the plugin management component downloads the updated version of the first plugin from the other plugin management component, it can reduce the download pressure on the plugin registration component and reduce the network traffic of the plugin registration component. When the number of plugin management components included in the cloud service request processing system is larger, this effect is more obvious.
[0015] In a possible implementation, the update request is sent by the plugin registration component. By way of example, after storing the updated version of the first plugin, the plugin registration component spontaneously sends an update request to the plugin management component to prompt the plugin management component to update the first plugin.
[0016] In another implementation, the update request is sent by the interaction component to the plugin registration component. By way of example, the interaction component can receive a plugin update indication from a tenant, and after acquiring the plugin update indication from the tenant, send an update request to the plugin management component based on the plugin update indication. The plugin update indication is used to indicate to update the first plugin.
[0017] In a possible implementation, the plugin management component is further configured to send an update notification to the first plugin before updating the first plugin based on the updated version, where the update notification indicates that the first plugin needs to be updated; the first plugin is further configured to provide the running information of the first plugin to the plugin management component based on the update notification; the plugin management component is further configured to store the running information; the plugin management component is further configured to provide the running information to the first plugin after updating the first plugin based on the updated version; and the first plugin is further configured to run based on the running information.
[0018] Before updating the first plugin, the running information of the first plugin is saved by the plugin management component, so that after the update of the first plugin is completed, the first plugin can continue to run in the same running state as before the update, ensuring the continuity of the running state of the first plugin before and after the update, and making the tenant and the business unaware of the update process.
[0019] In a possible implementation, when the plugin management component downloads the executable code of the first plugin from the other plugin management component, the plugin management component and the other plugin management component are used to manage the plugins of the same tenant. In this way, the plugin management components belonging to the same tenant can download the executable code of the plugins from each other, and the plugin management components belonging to different tenants cannot download the executable code of the plugins from each other, ensuring the isolation of the plugins between different tenants.
[0020] In a possible implementation, the transmission delay between the other plugin management component and the plugin management component is less than the transmission delay between the plugin registration component and the plugin management component. In this way, it is convenient for the plugin management component to download the executable code of the first plugin nearby, shortening the time-consuming for loading the first plugin, and thus shortening the preparation time of the first plugin and reducing the access delay of the tenant.
[0021] In a possible implementation, the plugin registration component includes a system registration sub-component and a tenant registration sub-component. The system registration sub-component of the cloud service request processing system is used to store the executable code of the cloud service request processing system plugin, and the tenant registration sub-component is used to store the executable code of the tenant plugin, and the tenant does not have the access right to the system registration sub-component of the cloud service request processing system. In this way, the system plugin and the tenant plugin can be managed separately, and the system plugin is set to have a higher security level to prevent malicious tenants from tampering with the trusted system plugin, thereby ensuring the security of the system plugin.
[0022] In a possible implementation, the cloud service request processing system is used to process cloud service requests of multiple tenants. The cloud service request processing system includes multiple plugin management components corresponding to the multiple tenants. The plugin management components are used to manage the plugins belonging to the corresponding tenants, and all the plugins managed by any one plugin management component belong to the same tenant. That is to say, each tenant has its own plugin management component. The plugin management component owned by any tenant is used to manage the plugins belonging to that tenant, and the plugin management components belonging to different tenants are used to manage the plugins of different tenants. In this way, since different plugin management components run in different processes, the plugins managed by different plugin management components belong to different processes, achieving isolation between the plugins belonging to different tenants, so that the plugins of one tenant cannot access the plugins of other tenants, improving the access security in the multi-tenant scenario.
[0023] In a possible implementation, the plugin framework is used to process cloud service requests of multiple cloud services. Processing the cloud service request of the target cloud service is achieved by running the plugin framework and the plugin corresponding to the target cloud service. The target cloud service is any one of the multiple cloud services. At this time, the multiple cloud services share the plugin framework, and by dynamically loading the plugins associated with the plugin framework, the startup memory of the plugin framework is very small, and the time-consuming for loading the plugins is short, reducing the impact on the user access latency.
[0024] In a possible implementation, the cloud service request processing system includes multiple plugin frameworks and at least one plugin management component belonging to the same tenant. The multiple plugin frameworks are used to implement the same function. In response to the cloud service request processing system including one plugin management component of the same tenant, the multiple plugin frameworks share one plugin management component. At this time, the plugin management component is shared by different plugin frameworks in the server. In this case, since the calls of the plugins managed by the shared plugin management component by the multiple plugin frameworks are all recorded by the plugin management component, the states of the multiple plugin frameworks can be guaranteed to be unified. In response to the cloud service request processing system including multiple plugin management components of the same tenant, at least some of the multiple plugin frameworks use one plugin management component separately. At this time, exclusive use of the plugin management component by the plugin framework is achieved.
[0025] Second aspect, the present application provides a cloud service request processing method. The cloud service request processing method is applied to a cloud service request processing system. The cloud service request processing system is deployed in a server managed by a cloud management platform. The cloud management platform is used to manage the infrastructure that provides cloud services. The infrastructure includes multiple servers. The cloud service request processing system includes: an interaction component, a plugin framework, a plugin management component, and at least one plugin associated with the plugin framework. The cloud service request processing method includes: the interaction component obtains a cloud service request sent by a tenant and provides the cloud service request to the plugin framework. The cloud service request is used to request the server to provide cloud services to the tenant; the plugin framework runs based on the cloud service request and sends a plugin access request to the plugin management component. The plugin access request indicates an access to a first plugin for processing the cloud server request. The first plugin is one of the at least one plugin; the plugin management component accesses the first plugin based on the plugin access request, obtains an access result, and feeds back the access result to the plugin framework; the plugin framework obtains a processing result for the cloud service request based on the access result.
[0026] In a possible implementation manner, the cloud service request processing system further includes: an access proxy component. The plugin framework sending a plugin access request to the plugin management component includes: the plugin framework sending a plugin access request to the access proxy component, so that the access proxy component sends a plugin access request to the plugin management component.
[0027] In a possible implementation manner, before the plugin management component accesses the first plugin based on the plugin access request, the cloud service request processing method further includes: the interaction component obtains a plugin loading request of the tenant and forwards the plugin loading request to the plugin management component. The plugin loading request indicates to load the first plugin; the plugin management component loads the first plugin based on the plugin loading request.
[0028] In a possible implementation manner, the cloud service request processing system further includes: another plugin management component. The plugin management component loading the first plugin based on the plugin loading request includes: the plugin management component sending a plugin acquisition request to the plugin registration component based on the plugin loading request. The plugin acquisition request indicates to acquire the first plugin. The plugin registration component is used to store all plugins required for processing cloud service requests; the plugin management component receives a plugin acquisition response sent by the plugin registration component. The plugin acquisition response carries indication information of another plugin management component, or the plugin acquisition response carries indication information of the storage address of the first plugin in the plugin registration component; the plugin management component obtains the first plugin based on the indication of the plugin acquisition response and loads the first plugin.
[0029] In a possible implementation, after the plugin management component loads the first plugin, the cloud service request processing method further includes: the plugin management component obtains an update request indicating to update the first plugin; the plugin management component obtains an updated version of the first plugin from other plugin management components based on the update request, or obtains the updated version from the plugin registration component; the plugin management component updates the first plugin based on the updated version.
[0030] In a possible implementation, the update request is sent by the plugin registration component; or, the cloud service request processing method further includes: the interaction component obtains a plugin update indication of the tenant and sends an update request to the plugin management component based on the plugin update indication, where the plugin update indication is used to indicate to update the first plugin.
[0031] In a possible implementation, before the plugin management component updates the first plugin based on the updated version, the cloud service request processing method further includes: the plugin management component sends an update notification to the first plugin, where the update notification indicates that the first plugin needs to be updated; the first plugin provides the running information of the first plugin to the plugin management component based on the update notification; the plugin management component stores the running information. After the plugin management component updates the first plugin based on the updated version, the cloud service request processing method further includes: the plugin management component provides the running information to the first plugin; the first plugin runs based on the running information.
[0032] In a possible implementation, the plugin management component and other plugin management components are used to manage the plugins of the same tenant.
[0033] In a possible implementation, the transmission delay between other plugin management components and the plugin management component is less than the transmission delay between the plugin registration component and the plugin management component.
[0034] In a possible implementation, the plugin registration component includes a system registration sub-component and a tenant registration sub-component. The system registration sub-component of the cloud service request processing system is used to store the executable code of the plugins of the cloud service request processing system, and the tenant registration sub-component is used to store the executable code of the tenant plugins, and the tenant does not have access to the system registration sub-component of the cloud service request processing system.
[0035] In a possible implementation, the cloud service request processing system is used to process cloud service requests of multiple tenants. The cloud service request processing system includes multiple plugin management components corresponding to multiple tenants. The plugin management component is used to manage the plugins belonging to the corresponding tenant, and all the plugins managed by any plugin management component belong to the same tenant.
[0036] In a possible implementation, the plugin framework is used to process cloud service requests of multiple cloud services. Processing the cloud service request of the target cloud service is achieved by running the plugin framework and the plugin corresponding to the target cloud service, where the target cloud service is any one of the multiple cloud services.
[0037] In a possible implementation, the cloud service request processing system includes multiple plugin frameworks and at least one plugin management component belonging to the same tenant. The multiple plugin frameworks are used to implement the same function. In response to the cloud service request processing system including one plugin management component of the same tenant, the multiple plugin frameworks share one plugin management component. In response to the cloud service request processing system including multiple plugin management components of the same tenant, at least some of the multiple plugin frameworks use one plugin management component separately.
[0038] In a third aspect, the present application provides a computing device, including a memory and a processor. The memory stores program instructions, and the processor runs the program instructions to implement the system provided in the first aspect of the present application and any of its possible implementation manners.
[0039] In a fourth aspect, the present application provides a computing device cluster, including multiple computing devices. The multiple computing devices include multiple processors and multiple memories. Program instructions are stored in the multiple memories, and the multiple processors run the program instructions, so that the computing device cluster implements the system provided in the first aspect of the present application and any of its possible implementation manners.
[0040] In a fifth aspect, the present application provides a computer-readable storage medium, which is a non-volatile computer-readable storage medium. The computer-readable storage medium includes program instructions. When the program instructions run on a computing device, the computing device implements the system provided in the first aspect of the present application and any of its possible implementation manners.
[0041] In a sixth aspect, the present application provides a computer program product containing instructions. When the computer program product runs on a computer, the computer implements the system provided in the first aspect of the present application and any of its possible implementation manners. Description of the Drawings
[0042] Figure 1 is a schematic diagram of statically compiling a plugin into the binary of a plugin framework provided by an embodiment of the present application;
[0043] Figure 2 is a schematic structural diagram of an implementation scenario involved in a cloud service request processing method provided by an embodiment of the present application;
[0044] Figure 3 is a schematic diagram of the deployment of basic resources in a data center provided by an embodiment of the present application;
[0045] Figure 4 It is a schematic diagram of a cloud service request processing system provided by an embodiment of the present application;
[0046] Figure 5 It is a flowchart of a cloud service request processing method executed by a cloud service request processing system provided by an embodiment of the present application;
[0047] Figure 6 It is a schematic diagram of another cloud service request processing system provided by an embodiment of the present application;
[0048] Figure 7 It is a flowchart of another cloud service request processing method executed by a cloud service request processing system provided by an embodiment of the present application;
[0049] Figure 8 It is a flowchart of loading a first plugin provided by an embodiment of the present application;
[0050] Figure 9 It is a schematic diagram of yet another cloud service request processing system provided by an embodiment of the present application;
[0051] Figure 10 It is a flowchart of a plugin management component loading a first plugin based on a plugin loading request provided by an embodiment of the present application;
[0052] [[ID=3~0]] Figure 11 It is a flowchart of updating a first plugin provided by an embodiment of the present application;
[0053] Figure 12 It is a flowchart of a plugin management component updating a first plugin based on an updated version provided by an embodiment of the present application;
[0054] Figure 13 It is a schematic diagram of yet another cloud service request processing system provided by an embodiment of the present application;
[0055] Figure 14 It is a flowchart of an L7 data plane invoking a plugin provided by an embodiment of the present application;
[0056] Figure 15 It is a flowchart of loading a plugin provided by an embodiment of the present application;
[0057] Figure 16 It is a flowchart of updating a plugin provided by an embodiment of the present application;
[0058] Figure 17 It is a schematic diagram of the structure of a computing device provided by an embodiment of the present application;
[0059] Figure 18It is a schematic structural diagram of a computing device cluster provided by an embodiment of the present application;
[0060] Figure 19 It is another schematic structural diagram of a computing device cluster provided by an embodiment of the present application. Detailed implementation manners
[0061] To make the objectives, technical solutions and advantages of the present application clearer, the following will further describe in detail the embodiments of the present application with reference to the accompanying drawings.
[0062] For ease of understanding, the technologies and backgrounds involved in the embodiments of the present application will be introduced first below.
[0063] A cloud data center is a facility and related service system for the operation and maintenance of devices that centrally collect, store, process, and send data based on the Internet network. Conceptually, it can be understood as a public commercial Internet "computer room", and at the same time, it is also an information technology (IT) professional service and an important infrastructure of the IT industry. A cloud data center is not only a service concept but also a network concept. It constitutes a part of the network infrastructure, just like the backbone network and the access network, providing a high-end data delivery service and a high-speed access service.
[0064] Plugin: When a software project is developed and its application program is delivered for use, when new functions need to be added to it, it is usually desired to implant the newly added functions into the application program without modifying the original application program. This is what is called plug-inization, and the functional module used to implement the newly added functions is called a plugin. Plug-inization can greatly reduce the coupling between functional modules, facilitate the independent maintenance of each functional module, and improve the maintenance and update efficiency of the software project. A plugin must rely on the application program to play its own function and cannot run properly only by the plugin.
[0065] A plugin framework is a basic functional module within a plug-inized application program. The plugin framework can be regarded as a reusable design of the entire or part of the application program. Another definition holds that the plugin framework is an application skeleton that can be customized by application developers. Exemplarily, the plugin framework is an architecture formed by extracting the common parts of software in a specific domain during the software project development process, responsible for implementing the most basic functions of the application program, such as managing functions like downloading, installing, loading, and unloading plugins. For example, in the field of cloud computing, the common parts of multiple cloud services can be extracted into a plugin framework. Any one of the multiple cloud services can be implemented by running this plugin framework and the plugin of this one cloud service.
[0066] Currently, as Figure 1As shown, plugins (such as Figure 1 the C++ plugin and the cgo plugin in it) are statically compiled into the binary of the plugin framework. In such a case, if a tenant modifies a plugin, such as dynamically loading or updating the plugin, the entire plugin framework needs to be restarted after the plugin is modified, which will affect the business of the tenants who are relying on the plugin framework to run. In addition, it is also necessary to replace the original plugin framework with a new image file that uses the plugin framework.
[0067] For example, with the increasingly widespread application of service mesh technology in the cloud computing field, when deploying cloud services, more and more non-functional service governance logics in distributed applications of cloud service architectures are stripped from business processes to sidecar processes outside the process, providing capabilities such as connection, security, flow control, canary release, and observability between services in a non-intrusive manner, realizing business lightweighting and service governance infrastructureization. In the cloud service field, a sidecar proxy can be used to intercept cloud service requests sent by tenants, and the cloud service requests are used to request the server to provide cloud services to tenants. Then the sidecar proxy processes the cloud service requests and provides the processed cloud service requests to the executor of the cloud service (such as the server). Taking layer 7 (L7) governance as an example, the processing of cloud service requests by the sidecar proxy includes: performing load balancing on the cloud service requests, rate limiting the cloud service requests, and observing the call chain and call time of the cloud services, etc.
[0068] The processing of cloud service requests by the sidecar proxy can be achieved through a plugin framework and plugins. At this time, the sidecar is also called the sidecar proxy. When the sidecar proxy implements seven-layer governance, the sidecar proxy is also called the L7 proxy or the L7 data plane. The sidecar supports the use of multiple plugins to process customer connections and requests. Its plugin types support native plugin languages such as C++ and cgo language, and the plugins need to be statically linked to the sidecar before use. Therefore, once compiled, the available C++ and cgo plugins for the sidecar are fixed. If a tenant modifies the plugin, a new proxy image needs to be uploaded and the original sidecar proxy needs to be replaced, which will cause a restart operation of the sidecar proxy and also affect the running tenant business. In addition, when the plugin framework is shared by multiple cloud services, since the plugin is statically linked to the plugin framework, when the plugin of one cloud service among multiple cloud services runs abnormally, it will cause problems with the entire plugin framework and affect other cloud services sharing the plugin framework. Similarly, when the plugin framework is shared by multiple tenants, the abnormal operation of the plugin of one tenant will cause problems with the entire plugin framework and affect the access of other tenants sharing the plugin framework. For example, in the four-layer (L4) / seven-layer (L7) separation mode, the L7 proxy will be centrally deployed and elastically scaled. Each L7 proxy can be accessed by multiple tenants, and the C++ plugins written by each tenant are directly statically linked to the L7 proxy. Due to the static linking of the plugin to the L7 proxy, it is impossible to dynamically update the plugin. Moreover, due to the large volume of the executable code of the L7 proxy's plugin, it takes a long time to load the plugin. During the operation of the L7 proxy, if the plugin of a certain tenant is unstable, it will cause the entire L7 proxy to crash, affecting the access of other tenants, and its explosion range is uncontrollable.
[0069] Based on this, an embodiment of the present application provides a cloud service request processing method and system. The cloud service request processing system is deployed in a server managed by a cloud management platform. The cloud management platform is used to manage the infrastructure that provides cloud services. The infrastructure includes multiple servers. The cloud service request processing method and system are used to process cloud service requests. The cloud service request is used to request the server to provide cloud services to tenants. The cloud service request processing system includes: an interaction component, a plugin framework, at least one plugin associated with the plugin framework, and a plugin management component. The process of the cloud service request processing system processing the cloud service request includes: the interaction component obtains the cloud service request sent by the tenant and provides the cloud service request to the plugin framework; the plugin framework runs based on the cloud service request and sends a plugin access request to the plugin management component. The plugin access request indicates accessing a first plugin for processing the cloud server request. The first plugin is one of the at least one plugin; the plugin management component accesses the first plugin based on the plugin access request, obtains an access result, and feeds back the access result to the plugin framework; the plugin framework obtains a processing result for the cloud service request based on the access result.
[0070] In this cloud service request processing system, since the plugins are managed by the plugin management component, when a plugin needs to be run, the plugin framework needs to first send a plugin access request to the plugin management component. After receiving the plugin access request, the plugin management component accesses the plugin based on the plugin access request. In this way, the operation of the plugin framework and the operation of the plugin belong to different processes, which is equivalent to achieving isolation between the plugin framework and the plugin, so that the plugin framework and the plugin do not affect each other, ensuring the security and stability of the operation of the plugin framework. When a tenant needs to modify a plugin, such as dynamically loading or updating a plugin, there is no need to restart the entire plugin framework, so that the behavior of modifying the plugin will not affect the plugins managed by other plugin management components, and thus will not affect the tenant services that depend on the operation of these other plugins. Similarly, when a certain plugin runs abnormally, it will not affect the plugin framework and will not affect the plugins managed by other plugin management components associated with the plugin framework.
[0071] This article introduces the technical solution of the present application in detail from multiple perspectives such as implementation scenarios, method processes, hardware devices, and software devices.
[0072] First, the application scenarios of the embodiments of the present application will be illustrated by examples below.
[0073] Figure 2 It is a schematic structural diagram of the implementation scenario involved in a cloud service request processing method provided by an embodiment of the present application. As Figure 2As shown in the figure, the implementation environment includes: a data center 1 and a client 2. A communication connection can be established between the data center 1 and the client 2 through a network. Optionally, the network can be the Internet or other networks, which is not limited in the embodiments of the present application. A tenant can interact with the data center 1 through the client 2. For example, the tenant can send information such as a cloud service request to the data center 1 through the client 2. The data center 1 is used to respond based on the information sent by the client 2 to the data center 1.
[0074] A large number of infrastructures owned by a cloud service provider are deployed in the data center 1, such as computing resources, storage resources, and network resources. For example, the computing resources can be computing devices (such as servers, etc.) that can provide computing capabilities. As Figure 2 shown, the data center 1 includes a cloud management platform and an infrastructure ( Figure 2 not shown in the figure). The cloud management platform and the infrastructure are connected through the internal network of the data center. The cloud management platform is used to manage the infrastructure. The infrastructure is used to provide public cloud services. The infrastructure includes multiple servers. The cloud service can be optionally deployed in the servers. A tenant can send a cloud service request to the server through the client 2 it uses, and the server can process the cloud service request and provide cloud services based on the processed cloud service request. For example, the server can process the cloud service request through the cloud service request processing method provided in the embodiments of the present application.
[0075] The cloud management platform can be logically divided into: a tenant console, a computing management service, a network management service, a storage management service, an authentication service, and an image management service. The tenant console provides an interface or an application program interface (API) to interact with the tenant. The computing management service is used to manage the servers running virtual instances and bare metal servers. The network management service is used to manage network services (such as gateways, firewalls, etc.). The storage management service is used to manage storage services (such as data bucket services). The authentication service is used to manage the accounts and passwords of tenants. The image management service is used to manage the images of virtual instances.
[0076] In Figure 2 the shown implementation scenario, multiple servers are set in a data center. The server includes a hardware layer and a software layer. The hardware layer is the conventional configuration of the server. Hardware devices such as a processor, a memory, a network card, a disk, and a bus are deployed in the hardware layer. The software layer includes an operating system installed and running on the server. The operating system of the host can be called the host operating system relative to the virtual machine. A virtual machine manager (also called a Hypervisor) runs in the host operating system. The role of the virtual machine manager is to implement computing virtualization, network virtualization, and storage virtualization of the virtual machine and is responsible for managing the virtual machine.
[0077] A cloud management platform client runs in the virtual machine manager. The cloud management platform client can receive control plane commands sent by the cloud management platform, create virtual instances on the server according to the control plane control commands, and perform full life cycle management on the virtual instances. For example, the cloud management platform client can detect the usage of the hardware resources of the server where it is located in real time and report it to the cloud management platform. When the cloud management platform confirms to create a virtual instance on a certain server, it will send a virtual instance creation command to the cloud management platform client on that server. After receiving the command, the cloud management platform client creates a virtual instance on that server. In this way, tenants can create, manage, log in to, and operate virtual instances in the data center through the cloud management platform.
[0078] The server can be used to run virtual machines of different specifications. The virtual machine specifications are divided into: general computing type, memory optimized type, extra-large memory type, etc. There are specific specifications under each type. After the tenant selects the virtual machine specification, the cloud management platform selects a server that supports this specification in the data center, determines that there are sufficient idle hardware resources on this server, and then creates a virtual machine with this specification set on this server. By configuring the server through the cloud management platform, it is possible to analyze and plan the hardware resources of the server, plan the corresponding computing products of the physical hardware according to the hardware performance of the server, such as planning virtual machines of different specifications, to meet the different demands of different tenants. Moreover, according to the performance differences of virtual machines of different specifications, a differential pricing strategy can be implemented. For example, virtual instances with high-performance specifications are sold at a higher price, and virtual instances with ordinary performance specifications are sold at a lower price, so that tenants can purchase virtual instances according to their needs.
[0079] In one implementation, such as Figure 3As shown, the location of the basic resources in the data center can be described by the cloud resource deployment region (region) and the availability zone (AZ). Tenants can choose to deploy cloud services based on the resources in a specific region and AZ. Among them, regions are divided from the dimensions of geographical location and network latency. The same resource pool is used within the same region, which can be understood as sharing common services such as elastic computing, block storage, object storage, virtual private cloud (VPC) network, elastic internet protocol (EIP) address, and images. Regions are divided into general regions and exclusive regions. A general region refers to a region that provides general cloud services for public tenants. An exclusive region refers to a dedicated region that hosts the same type of business or provides business services for specific tenants. A region usually includes multiple AZs. Multiple AZs in a region are connected by high-speed optical fibers to meet the needs of tenants to build highly available systems across AZs. An AZ is a set of one or more Figure 3 data centers as shown. The resources such as computing, network, and storage within an AZ are logically divided into multiple clusters.
[0080] Tenants can send instructions to the cloud management platform through the client 2 they use to create, manage, log in to, and operate virtual instances on the server, and use the cloud services provided by the virtual instances. For example, the cloud management platform can provide access interfaces. The access interfaces can optionally be provided in the form of an interface or an API. Tenants can operate the client to remotely access the access interface to register cloud accounts and passwords on the cloud management platform and use the cloud accounts and passwords to log in to the cloud management platform. The cloud management platform can also authenticate the cloud accounts and passwords. After successful authentication, tenants can further select and purchase virtual instances of specific specifications (processors, memory, disks) on the cloud management platform. After tenants successfully purchase virtual instances, the cloud management platform provides the remote login accounts and passwords of the purchased virtual instances to tenants. Tenants can use the remote login accounts and passwords to remotely log in to the virtual instances on the client, install and run the tenants' applications in the virtual instances, and implement the tenants' businesses through the applications.
[0081] The client 2 can optionally be a computer, a personal computer, a laptop, a mobile phone, a smartphone, a tablet, a cloud host, a portable mobile terminal, a multimedia player, an e-book reader, a wearable device, a smart home appliance, an artificial intelligence device, a smart wearable device, a smart vehicle device, or an Internet of Things device, etc.
[0082] In one implementation, the cloud service request processing method provided by the embodiments of the present application can be implemented by running an executable program on a computing device in Data Center 1. Optionally, the cloud service request processing method provided by the embodiments of the present application can be optionally applied to a cloud service request processing system. The cloud service request processing system is deployed in a server managed by a cloud management platform. By running the executable program of the cloud service request processing method provided by the embodiments of the present application, the cloud service request processing system can implement the cloud service request processing method provided by the embodiments of the present application. Moreover, the executable program for implementing the cloud service request processing method can be optionally presented in the form of an application installation package. After the server installs the application installation package, it can implement the cloud service request processing method provided by the embodiments of the present application by running the executable program therein.
[0083] It should be understood that the above content is an exemplary description of the implementation scenario of the cloud service request processing method provided by the embodiments of the present application, and does not constitute a limitation on the implementation scenario of the cloud service request processing method. Those of ordinary skill in the art know that with the change of business requirements, its implementation scenario can be adjusted according to application requirements. For example, the present application can be applied to all application scenarios of service mesh transparent proxy, and the embodiments of the present application do not make specific limitations thereto. Moreover, when the cloud service request processing method provided by the embodiments of the present application is applied to other scenarios, the executable program of the method can also be presented in the form of an application installation package or in other ways, and the embodiments of the present application do not list them one by one.
[0084] Next, the implementation process of the cloud service request processing system provided by the embodiments of the present application and its execution of the cloud service request processing method will be described. The cloud service request processing system is deployed in a server managed by a cloud management platform and is used to process cloud service requests. The cloud service request is used to request the server to provide cloud services to tenants. Figure 4 It is a schematic diagram of a cloud service request processing system provided by the embodiments of the present application. As Figure 4 shown, the cloud service request processing system 10 includes: an interaction component 101, a plugin framework 102, a plugin management component 103, and at least one plugin 104 associated with the plugin framework 102. As Figure 5 shown, the implementation process of the cloud service request processing system executing the cloud service request processing method includes:
[0085] Step 501, the interaction component obtains the cloud service request sent by the tenant and provides the cloud service request to the plugin framework. The cloud service request is used to request the server to provide cloud services to the tenant.
[0086] When a tenant needs to use cloud services, the tenant can perform specified operations on the client it uses to trigger a cloud service request, and the client can provide the cloud service request to the server for providing cloud services. After the client provides the cloud service request to the server, the interaction component can obtain the cloud service request. In one implementation, the cloud service request processing system is a part of the cloud service providing system for providing cloud services. At this time, the interaction component is a component in the cloud service providing system, and all requests sent by the tenant to the cloud service providing system are received by this interaction component. In another implementation, the cloud service request processing system is not a part of the cloud service providing system. For example, when the cloud service providing system is deployed on a server, the cloud service request processing system is also deployed on this server, and all requests sent to the cloud service providing system can optionally be processed by this cloud service request processing system first, and the requests after being processed are then sent to the cloud service providing system. At this time, the interaction component can intercept the requests sent by the tenant to the cloud service providing system. For example, the interaction component intercepts the cloud service request sent by the tenant to the cloud service providing system. This cloud service request is triggered by performing specified operations on the client used by the tenant when the tenant needs to use cloud services, and this cloud service request is used to instruct the cloud service providing system deployed on the server to provide cloud services to the tenant.
[0087] Optionally, according to different cloud service requirements, the cloud service request may also be processed by other systems in advance. By way of example, the cloud service request processing system of the present application and this other system are optionally systems that process cloud server requests according to different objectives, and the processing process of the cloud service request by the other system needs to be executed before the processing process of the cloud service request processing system, then the cloud service request received by the interaction component has been processed by this other system. For example, in the L4 / L7 separation mode, assume that the cloud service request needs to be processed by the L4 proxy first, and then the L7 proxy processes the processed cloud service request, then the cloud service request received by the interaction component is the cloud service request processed by the L4 proxy.
[0088] During the process of the cloud service request processing system processing the cloud service request, the plug-in framework needs to run based on the cloud service request and call a plug-in to process the cloud service request during the running process, and the plug-in framework can obtain the processing result of the cloud service request by the cloud service request processing system according to the processing result of the plug-in on the cloud service request. Therefore, after the interaction component obtains the cloud service request, it needs to provide the cloud service request to the plug-in framework so that the plug-in framework processes this cloud service request. In one possible implementation, the interaction component is optionally an input component of the cloud service request processing system.
[0089] Step 502: The plug-in framework runs based on the cloud service request and sends a plug-in access request to the plug-in management component. The plug-in access request indicates an access to a first plug-in for processing the cloud server request, and the first plug-in is one of at least one plug-in.
[0090] After obtaining the cloud service request, the plug-in framework can run based on the cloud service request and call the plug-in during the running process. In this application, since the plug-in management component is used to manage the plug-ins, the plug-in framework calls the plug-in by sending a plug-in access request to the plug-in management component through the plug-in framework, and then the plug-in management component accesses the plug-in based on the plug-in access request. For example, with the development of service mesh technology, the non-functional service governance logic of many cloud services has been separated from the business process to the sidecar process. When the non-functional service governance logic is used to process the cloud service request, the non-functional service governance logic can be implemented through the cloud service request processing system. The plug-in framework of this system is used to implement the basic functions of the non-functional service governance logic, and the plug-in of this system is used to implement the additional functions of the non-functional service governance logic. For a certain cloud service, its non-functional service governance logic can be implemented by running the plug-in framework and at least some of the plug-ins of the plug-in framework. In one implementation, the plug-in framework can obtain the correspondence between the plug-in management component and the plug-ins it manages. When the plug-in framework determines that it needs to access the first plug-in, it can determine the plug-in management component that manages the first plug-in according to this correspondence and send a plug-in access request to the plug-in management component. The first plug-in can be optionally a system-owned plug-in (i.e., a system plug-in) or a plug-in provided by the tenant (i.e., a tenant plug-in, such as a tenant-customized plug-in), and the embodiments of this application do not make specific limitations on it.
[0091] In this application, a plugin framework can be used to process cloud service requests for one or more cloud services. When the plugin framework is used to process a cloud service request for a certain cloud service, when processing the cloud service request for that cloud service, it is necessary to run the plugin framework and the corresponding plugin. The corresponding plugin is a plugin that implements the specified processing function. When the plugin framework is used to process cloud service requests for multiple cloud services, processing the cloud service request for the target cloud service is achieved by running the plugin framework and the plugin corresponding to the target cloud service. The target cloud service is any one of the multiple cloud services. The plugin corresponding to the target cloud service is a plugin used to process the cloud service request for the target cloud service and implement the specified processing function. For example, in service mesh technology, when the basic functions of the non-functional service governance logic of multiple cloud services are the same, the basic function is used to process the cloud service requests for multiple cloud services, and the basic function can be implemented through the same plugin framework. Moreover, the plugin framework is configured with multiple plugins, and the multiple plugins correspond to multiple cloud services respectively. The plugin corresponding to a certain cloud service is used to implement the additional function of the non-functional service governance logic of that cloud service. At this time, multiple cloud services share the plugin framework, and by dynamically loading the plugins associated with the plugin framework, the startup memory of the plugin framework is very small, and the time-consuming for loading plugins is short, reducing the impact on the user access latency. In addition, since the basic functions of the non-functional service governance logic of multiple cloud services are implemented by the same plugin framework, this deployment method is also called the centralized deployment of the plugin framework.
[0092] Similarly, a cloud service request processing system can be used to process cloud service requests for one or more tenants. At this time, the cloud service request processing system correspondingly includes multiple plugin management components corresponding to multiple tenants. Any plugin management component is used to manage the plugins belonging to the corresponding tenant, and all the plugins managed by any plugin management component belong to the same tenant. That is to say, each tenant has its own plugin management component. The plugin management component owned by any tenant is used to manage the plugins belonging to that tenant, and the plugin management components belonging to different tenants are used to manage the plugins of different tenants. In this way, since different plugin management components run in different processes, the plugins managed by different plugin management components belong to different processes, realizing the isolation between the plugins belonging to different tenants, so that the plugins of one tenant cannot access the plugins of other tenants, improving the access security in the multi-tenant scenario. For example, by isolating the plugins belonging to different tenants, the plugins of a malicious tenant can be isolated from the plugins of other tenants, so that the plugins maliciously written by one tenant cannot access the plugins of other tenants, avoiding the damage caused by the malicious tenant to the plugins of other tenants, reducing the security risk of the plugins, and helping to ensure the safe operation of the plugins.
[0093] In addition, the cloud service request processing system may optionally include multiple plug-in frameworks and at least one plug-in management component belonging to the same tenant. The multiple plug-in frameworks are configured to implement the same functionality. In response to the cloud service request processing system including multiple plug-in management components belonging to the same tenant, at least some of the multiple plug-in frameworks independently utilize a single plug-in management component. When a plug-in framework independently utilizes a single plug-in management component, the plug-in frameworks have exclusive access to the plug-in management component. In response to the cloud service request processing system including a plug-in management component belonging to the same tenant, the multiple plug-in frameworks may share a single plug-in management component. For example, a server may deploy multiple plug-in frameworks and a plug-in management component belonging to the same tenant. In this case, the plug-in management component is shared by different plug-in frameworks within the server. In this case, since calls to plug-ins managed by the shared plug-in management component by multiple plug-in frameworks are all recorded by the plug-in management component, the unified state of the multiple plug-in frameworks can be ensured. Optionally, shared memory may be used to store information indicating whether the plug-in management component has been started and the address information of the plug-in management component, enabling the plug-in management component to be shared by different plug-in frameworks.
[0094] It should be noted that the plug-ins of the cloud service request processing system usually include system plug-ins and tenant plug-ins. The plug-in management component that manages the system plug-in is also called the system plug-in management component. The tenant plug-in is also called the tenant plug-in management component. The system plug-in is the plug-in that comes with the cloud service request processing system and has higher security and stability. The tenant plug-in is the plug-in uploaded by the tenant, and its security and stability performance are slightly worse. Therefore, the plug-in framework can still optionally access the plug-in that comes with the system through the in-process access of the plug-in framework, and the plug-in framework can optionally access the tenant plug-in through the plug-in management component. At this time, since the system plug-in can be called by the plug-in framework through the function address, the access to the system plug-in is in-process access, which can ensure higher plug-in performance.
[0095] In one possible implementation, Figure 6 As shown, the cloud service request processing system 10 further includes an access proxy component 105. At this time, the interaction between the plug-in framework 102 and the plug-in management component 103 can be implemented through the access proxy component 105. For example, the plug-in framework sends a plug-in access request to the plug-in management component, including: the plug-in framework sends a plug-in access request to the access proxy component, and the access proxy component sends a plug-in access request to the plug-in management component. Figure 7 As shown, step 502 includes step 5021 and step 5022. Step 5021, the plug-in framework runs based on the cloud service request and sends a plug-in access request to the access proxy component. Step 5022, the access proxy component sends a plug-in access request to the plug-in management component. It should be noted that, as Figure 6As shown, since the system plug-in has high security and stability, the interaction between the plug-in framework 102 and the system plug-in management component 103 can optionally be implemented without accessing the proxy component 105.
[0096] The plug-in framework sends a plug-in access request to the access proxy component. From the perspective of the plug-in framework, its implementation method is basically the same as the way existing plug-in frameworks access plug-ins. In a possible implementation, the access proxy component and the plug-in framework are functional modules running in the same process. At this time, the communication between the plug-in framework and the access proxy component is inter-process communication. By way of example, the access proxy component is a stub. The access proxy component sends a plug-in access request to the plug-in management component. It is necessary for the access proxy component to first parse the plug-in access request sent by the plug-in framework into a data packet, then determine the plug-in indicated by the plug-in framework to be accessed according to the indication of the data packet, then determine the plug-in management component that manages the plug-in, and then send a plug-in access request to the plug-in management component. Among them, the plug-in access request can indicate the first plug-in requested by the plug-in framework to be accessed and the methods and related parameters therein. In a possible implementation, the access proxy component sending a plug-in access request to the plug-in management component is equivalent to converting the plug-in access request sent by the plug-in framework into a socket request and then sending the socket request to the plug-in management component. It can be implemented by means of interprocess communication (IPC) or shared memory (SHM). For example, interprocess communication can be implemented using UNIX domain sockets (UDS), which is an IPC mechanism developed on the basis of the socket framework. In this way, in order to access the plug-in through the access proxy component, the main improvement to the plug-in framework is to modify the call extension of the plug-in framework to the access proxy component, and the modification to the plug-in framework is less, which can reduce the development pressure on the plug-in framework developers. Moreover, when the interaction between the plug-in framework and the plug-in management component is implemented through the access proxy component, the access proxy component isolates the plug-in framework and the plug-in management component. When the plug-in fails to start or runs into an error, the plug-in management component will return information indicating an error in the execution to the access proxy component, rather than causing problems with the access proxy component, let alone affecting the plug-in framework, which can ensure the security and stability of the plug-in framework operation.
[0097] Step 503: The plug-in management component accesses the first plug-in based on the plug-in access request, obtains an access result, and feeds back the access result to the plug-in framework.
[0098] After obtaining a plugin access request, the plugin management component can determine the first plugin indicated by the plugin framework request to be accessed, as well as the methods and related parameters therein, and then access the first plugin according to it. After the plugin management component obtains the access result of the first plugin, it needs to feedback the access result to the plugin framework. When the cloud service request processing system includes an access proxy component, the plugin management component can also feedback the access result to the plugin framework through the access proxy component. For example, the plugin management component feedbacks the access result to the plugin framework, including: the plugin management component sends the access result to the access proxy component, and the access proxy component sends the access result to the plugin framework. Then, as Figure 7 shown, step 503 includes step 5031 and step 5032. Step 5031: The plugin management component accesses the first plugin based on the plugin access request, obtains the access result, and sends the access result to the access proxy component. Step 5032: The access proxy component sends the access result to the plugin framework. For the implementation method, please refer to the relevant description in step 502, which will not be elaborated here.
[0099] Step 504: The plugin framework obtains the processing result for the cloud service request based on the access result.
[0100] After the plugin framework obtains the access result of the first plugin, it can obtain the processing result for processing the cloud service request based on this access result. For example, according to different processing flows of the plugin framework for the cloud service request, the plugin framework can use this access result as the processing result for the cloud service request, or, after receiving the processing result, the plugin framework still needs to run based on this processing result and use the running result as the processing result for the cloud service request.
[0101] During the process of the cloud service request processing system processing the cloud service request, since the plugin is managed by the plugin management component, when the plugin needs to be run, the plugin framework needs to first send a plugin access request to the plugin management component. After receiving the plugin access request, the plugin management component then accesses the plugin based on this plugin access request. In this way, the operation of the plugin framework and the operation of the plugin belong to different processes, which is equivalent to achieving isolation between the plugin framework and the plugin, so that the plugin framework and the plugin do not affect each other, ensuring the security and stability of the operation of the plugin framework. When a tenant needs to modify a plugin, such as dynamically loading or updating a plugin, there is no need to restart the entire plugin framework, so that the behavior of modifying the plugin will not affect the plugins managed by other plugin management components, and thus will not affect the tenant business that depends on the operation of other plugins. Similarly, when a certain plugin runs abnormally, it will not affect the plugin framework and will not affect the plugins managed by other plugin management components associated with the plugin framework.
[0102] Before using the first plugin, the plugin management component needs to load the first plugin first. The implementation process of loading the first plugin is described below. As Figure 8 shown, the implementation process of loading the first plugin includes the following steps:
[0103] Step 801: The interaction component obtains the plugin loading request of the tenant and forwards the plugin loading request to the plugin management component. The plugin loading request indicates to load the first plugin.
[0104] When the tenant needs to use the first plugin to process the cloud service request process, the tenant can perform a specified operation on the client it uses to trigger the plugin loading request indicating to load the first plugin. The client can provide the plugin loading request to the server for providing cloud services. After the client provides the plugin loading request to the server, the interaction component can obtain the plugin loading request. Since the plugin is managed by the plugin management component, and this management includes loading the plugin, after the interaction component obtains the plugin loading request, it needs to forward the plugin loading request to the plugin management component, so that the plugin management component can load the first plugin based on the plugin loading request. In one implementation, the plugin framework can obtain the correspondence between the plugin management component and the plugins it manages. When the plugin framework determines that the first plugin needs to be loaded, it can determine the plugin management component that manages the first plugin according to this correspondence and send the plugin loading request to this plugin management component.
[0105] Step 802: The plugin management component loads the first plugin based on the plugin loading request.
[0106] After the plugin management component obtains the plugin loading request, it can load the first plugin based on the plugin loading request. Since the first plugin is loaded by the plugin management component, the operation of the plugin framework and the operation of the plugin belong to different processes, which is equivalent to realizing the isolation between the plugin framework and the plugin, so that the process of loading the plugin will not affect the operation of the plugin framework, and further the process of loading the plugin will not affect the plugins managed by other plugin management components, and the dynamic loading of the plugin can be realized.
[0107] After the plugin management component obtains the plugin loading request, it can first query whether it caches the executable code of the first plugin based on the plugin loading request. When it caches the executable code of the first plugin, it loads the first plugin based on the executable code of the first plugin. When it does not cache the executable code of the first plugin, it needs to first obtain the executable code of the first plugin. In one possible implementation, the plugin management component can obtain the executable code of the first plugin from the plugin registration component or other plugin management components. The plugin registration component is used to store all the plugins required to process cloud service requests. At this time, as Figure 9As shown in the figure, the cloud service request processing system 10 further includes: an other plug-in management component 103. The plug-in registration component may belong to the cloud service request processing system, or the plug-in registration component is independent of the cloud service request processing system. For example, the plug-in registration component is a separate cloud service provided by the cloud management platform. Figure 9 FIG. is a schematic diagram of the plug-in registration component 20 being independent of the cloud service request processing system 10. At this time, as Figure 10 shown, the implementation process includes:
[0108] Step 8021, based on the plug-in loading request, the plug-in management component sends a plug-in acquisition request to the plug-in registration component, and the plug-in acquisition request indicates to acquire a first plug-in.
[0109] Since the plug-in registration component is used to store all the plug-ins required for processing cloud service requests, when the plug-in management component does not cache the executable code of the first plug-in, the plug-in management component can first send a plug-in acquisition request to the plug-in registration component to facilitate obtaining the acquisition address of the first plug-in. To facilitate the plug-in registration component to determine the plug-in that the plug-in management component needs to acquire, the plug-in acquisition request carries indication information of the first plug-in. When the cloud service request processing system is started, the cloud service administrator can specify the access address of the plug-in registration component to the plug-in management component. After the plug-in management component obtains the plug-in loading request, it can send a plug-in acquisition request to the plug-in registration component based on the access address of the plug-in registration component.
[0110] Before the plug-in management component sends a plug-in acquisition request to the plug-in registration component, if no communication connection is established between the plug-in management component and the plug-in registration component, the plug-in management component needs to first establish a communication connection with the plug-in registration component. The communication connection can be selected as a secure sockets layer (SSL) connection. During the establishment of the communication connection, two-way security authentication is required between the plug-in management component and the plug-in registration component to ensure the security of the communication connection. For example, the plug-in registration component and the plug-in management component can mutually send security certificates and verify the security certificates of each other. In one implementation, when the cloud service administrator loads the tenant configuration into the cloud service request processing system, the security certificate of the tenant is also sent to the plug-in framework, and the security certificate can be forwarded by the access proxy component to the plug-in management component corresponding to the tenant. After receiving the security certificate, the plug-in management component can cache the security certificate for subsequent use.
[0111] Step 8022, the plug-in management component receives the plug-in acquisition response sent by the plug-in registration component, and the plug-in acquisition response carries indication information of an other plug-in management component, or the plug-in acquisition response carries indication information of the storage address of the first plug-in in the plug-in registration component.
[0112] After the plug-in registration component receives the plug-in acquisition component, it will query whether any other plug-in management components have downloaded the executable code of the first plug-in. When any other plug-in management components have downloaded the executable code of the first plug-in, the plug-in registration component can preferentially provide the plug-in management component with the indication information of that other plug-in management component. When none of the other plug-in management components have downloaded the executable code of the first plug-in, the plug-in registration component provides the plug-in management component with the indication information of the storage address of the executable code of the first plug-in in the plug-in registration component. The indication information can be optionally carried in the plug-in acquisition response to the plug-in acquisition request. Here, the other plug-in management components can be optionally deployed on the same server as the plug-in management component, or the other plug-in management component and the plug-in management component are in the same network segment. The plug-in registration component preferentially provides the plug-in management component with the indication information of the other plug-in management component that has downloaded the executable code of the first plug-in, so that the plug-in management component can preferentially download the executable code of the first plug-in from that other plug-in management component, which can reduce the download pressure of the plug-in registration component and reduce the network traffic of the plug-in registration component. When the number of plug-in management components included in the cloud service request processing system is larger, this effect is more obvious.
[0113] Optionally, when any other plug-in management components have downloaded the executable code of the first plug-in, the indication information can optionally indicate the other plug-in management component closest to the plug-in management component. This closest distance means the minimum transmission delay to the plug-in management component. Or, the indication information can optionally indicate multiple other plug-in management components that are relatively close to the plug-in management component. For example, the indication information indicates multiple other plug-in management components, and these multiple other plug-in management components are sorted according to the distance to the plug-in management component. Further, the distance from the plug-in management component to the other plug-in management component indicated by the indication information can be optionally less than the distance from the plug-in management component to the plug-in registration component. For example, the transmission delays of these multiple other plug-in management components to the plug-in management component are all less than the transmission delays of the remaining other plug-in management components to the plug-in management component, and are all less than the transmission delay of the plug-in management component to the plug-in registration component. In this way, it is convenient for the plug-in management component to download the executable code of the first plug-in nearby, shorten the time-consuming for loading the first plug-in, and thus shorten the preparation time of the first plug-in and reduce the access delay of the tenant.
[0114] When the cloud service request processing system includes multiple plugin management components corresponding to multiple tenants, any plugin management component is used to manage the plugins belonging to the corresponding tenant, and all the plugins managed by any plugin management component belong to the same tenant, the plugin management component and the other plugin management components are used to manage the plugins of the same tenant. In this way, the plugin management components for managing the plugins of the same tenant can download the executable code of the plugins from each other, and the plugin management components belonging to different tenants cannot download the executable code of the plugins from each other, which can ensure the isolation of plugins between different tenants.
[0115] Step 8023: Based on the indication of the plugin acquisition response, the plugin management component acquires a first plugin and loads the first plugin.
[0116] After the plugin management component acquires the indication information carried in the plugin acquisition response, it can acquire the executable code of the first plugin based on the indication of the indication information. For example, the plugin management component downloads the executable code of the first plugin from the other plugin management components indicated by the indication information. When the indication information indicates multiple other plugin management components, the plugin management component can optionally screen out one other plugin management component from these other plugin management components and download the executable code of the first plugin from the screened-out other plugin management component. For example, the screened-out other plugin management component can optionally be the one closest to this plugin management component among the multiple other plugin management components indicated by the indication information. Or, the screened-out other plugin management component can optionally be the one closest to this plugin management component among the multiple other plugin management components determined by the plugin management component through detection. Among them, when the plugin management component downloads the executable code of the first plugin from other plugin management components or the plugin registration component according to the indication information, the plugin management component can also optionally send its own security credentials to other plugin management components or the plugin registration component to facilitate the security verification of this plugin management component by other plugin management components or the plugin registration component. By way of example, the security credentials can optionally be the token of the plugin management component.
[0117] Among them, as Figure 9 shown, the plugin registration component 20 can optionally include a system registration sub-component 201 and a tenant registration sub-component 202. The system registration sub-component 201 is used to store the executable code of the cloud service request processing system plugins. Then this first sub-component is also called the system plugin library. The tenant registration sub-component 202 is used to store the executable code of the tenant plugins. Then the tenant registration sub-component 202 is also called the tenant plugin library. Since the system plugins have high security and stability, it can be set that the tenant does not have the access right to the system registration sub-component 201 to manage the system plugins and tenant plugins separately, and the system plugins are set to have a high security level to prevent malicious tenants from tampering with the trusted system plugins, thereby ensuring the security of the system plugins.
[0118] After the plug-in management component loads the first plug-in, it may still be necessary to update the first plug-in. The implementation process of updating the first plug-in will be described below. As Figure 11 shown, the implementation process of updating the first plug-in includes the following steps:
[0119] Step 1101, the plug-in management component obtains an update request indicating to update the first plug-in.
[0120] There are multiple implementation methods for the update request. In the embodiments of the present application, two implementation methods are taken as examples to illustrate it. In one implementation method, the update request is sent by the plug-in registration component. For example, after storing the updated version of the first plug-in, the plug-in registration component spontaneously sends an update request to the plug-in management component to prompt the plug-in management component to update the first plug-in. For example, a tenant can upload the updated version of the first plug-in to the plug-in registration component. After receiving the updated version of the first plug-in, the plug-in registration component sends an update request to all plug-in management components that have loaded the first plug-in to prompt all these plug-in management components to update the first plug-in. At this time, after establishing a communication connection between the plug-in management component and the plug-in registration component, the communication connection can be maintained to facilitate the plug-in registration component to send the update request to the plug-in management component. In another implementation method, the update request is sent by the interaction component to the plug-in registration component. For example, the interaction component can receive the tenant's plug-in update instruction, and after obtaining the tenant's plug-in update instruction, send an update request to the plug-in management component based on the plug-in update instruction. The plug-in update instruction is used to indicate to update the first plug-in. For example, a tenant can perform a specified operation on the client it uses to trigger the plug-in update instruction, and the client can send the plug-in update instruction to the interaction component to prompt the plug-in management component to update the first plug-in through the plug-in update instruction. Optionally, regardless of which of the above implementation methods the update request is implemented, the update request can only indicate to update the first plug-in. Or, the update request also carries the download address of the updated version of the first plug-in. The update request can carry the version number of the first plug-in to indicate the version of the first plug-in.
[0121] Step 1102, the plug-in management component obtains the updated version of the first plug-in from other plug-in management components based on the update request, or obtains the updated version from the plug-in registration component.
[0122] After the plugin management component obtains an update request, it needs to obtain the updated version of the first plugin. The implementation logic for the plugin management component to obtain the updated version of the first plugin is similar to the logic for obtaining the executable code of the first plugin before loading the first plugin. That is, when another plugin management component has downloaded the updated version of the first plugin, the plugin management component preferentially downloads the updated version of the first plugin from another plugin management component. When no other plugin management component has downloaded the updated version of the first plugin, the plugin management component downloads the updated version of the first plugin from the plugin registration component. At this time, when the update request carries the download address of the updated version of the first plugin, the download address can be the address of another plugin management component that has downloaded the updated version of the first plugin, or the download address is the storage address of the updated version of the first plugin in the plugin registration component. When the update request only indicates an update to the first plugin, the plugin management component also needs to send a plugin query request to the plugin registration component to query the download address of the updated version of the first plugin. Alternatively, the plugin management component sends a query request to another plugin management component with an existing communication connection to query whether the other plugin management component has downloaded the updated version of the first plugin. The plugin registration component can send a query response to the plugin management component based on the query request. When another plugin management component has downloaded the updated version of the first plugin, the query response feedbacks the address of another plugin management component that has downloaded the updated version of the first plugin to the plugin management component. When no other plugin management component has downloaded the updated version of the first plugin, the query response feedbacks the storage address of the updated version of the first plugin in the plugin registration component to the plugin management component. For the implementation process, please refer to the relevant description in step 802 accordingly, which will not be elaborated here.
[0123] It should be noted that after the plugin management component receives the update request sent by the plugin registration component, it can optionally determine whether to update the first plugin according to a preset update policy. When it is determined that the first plugin needs to be updated, step 1102 is executed. When it is determined that the first plugin does not need to be updated, step 1102 does not need to be executed.
[0124] Step 1103: The plugin management component updates the first plugin based on the updated version.
[0125] After the plugin management component obtains the updated version of the first plugin, it can update the first plugin based on the updated version. Optionally, before the plugin management component updates the first plugin, the first plugin can save its running state. After completing the update of the first plugin, it then obtains the running state and continues to run based on the running state. In one implementable manner, such as Figure 12As shown in the figure, the implementation process includes: Step 11031: Before the plugin management component updates the first plugin based on the updated version, the plugin management component sends an update notification to the first plugin, and the update notification indicates that the first plugin needs to be updated. Step 11032: Based on the update notification, the first plugin provides the running information of the first plugin to the plugin management component. Step 11033: The plugin management component stores the running information and updates the first plugin based on the updated version. Step 11034: After the plugin management component updates the first plugin based on the updated version, the plugin management component provides the running information to the first plugin. Step 11035: The first plugin runs based on the running information.
[0126] After the plugin management component obtains the updated version of the first plugin, it may first call back the plugin preparation update function to the first plugin. At this time, as a response, if the first plugin needs to save its own running information, the first plugin can call the interface of the plugin management component and provide the running information of the first plugin to the plugin management component through this interface. After receiving the running information, the plugin management component saves it. Then the plugin management component uninstalls the first plugin and loads the updated version of the first plugin to implement the update of the first plugin. After completing the update of the first plugin, the plugin management component calls the recovery callback of the updated first plugin and provides the saved running information to the updated first plugin based on this recovery callback. After obtaining the running information, the updated first plugin resumes to the state before the first plugin was updated based on this running information. Among them, the running information is used to indicate the running state of the first plugin. As Figure 13 As shown in the figure, the plugin management component 103 includes a status cache module 1031 and a plugin cache module 1032. The status cache module 1031 is used to store the running information of the plugin, and the plugin cache module 1032 is used to cache the executable code of the plugin. Optionally, the running information can be stored in the form of key-value pairs (such as key = value).
[0127] Before updating the first plugin, the running information of the first plugin is saved through the plugin management component, so that after the update of the first plugin is completed, the first plugin can continue to run in the running state before the update, which can ensure the continuity of the running state of the first plugin before and after the update, making the tenant and the business unaware of the update process.
[0128] Next, taking the implementation of the cloud service request processing system through the L7 proxy of the service mesh in the L4 / L7 separation mode as an example, the implementation process of the present application will be illustrated.
[0129] In the L4 / L7 separation scenario, the L7 proxy is generally a data plane proxy within a centralized hosting cluster, and each L7 is used to process cloud service requests from different tenants. The plug-in framework of the cloud service request providing system of this application is implemented through the L7 data plane. The L7 data plane binary does not contain trusted system C++ plug-ins and tenant C++ plug-ins. When the L7 data plane starts, cloud service administrators need to specify the access address of the plug-in registration component for the L7 data plane and issue the security certificate of the service mesh to the L7 data plane. When a system plug-in management component is created in the L7 data plane, this security certificate can be cached in the system plug-in management component. In this way, when the L7 data plane queries and downloads plug-ins from the plug-in registration component as needed, the L7 data plane and the plug-in registration component can perform two-way security authentication based on this security certificate. When it is necessary to load the configuration of the tenant C++ plug-in into the L7 data plane, cloud service administrators need to issue the tenant certificate to the L7 data plane at the same time. When a tenant plug-in management component is created in the L7 data plane, this tenant certificate can be cached in the tenant plug-in management component. The tenant certificate is used for two-way verification with the plug-in registration component when the tenant plug-in management component connects to the plug-in registration component. Among them, the system plug-in management component is used to manage system C++ plug-ins. The tenant plug-in management component is used to manage tenant C++ plug-ins. The system plug-in management component is launched during the startup process of the L7 data plane. The system plug-in management component and the L7 data plane are in the same process. After loading the system C++ plug-in, the system plug-in management component can be called by the L7 data plane within the process through the function address to obtain the best performance.
[0130] As Figure 14 shown, when a tenant creates a container (pod), the cloud services of this tenant will be provided by the cloud management platform (such as Figure 14It is created correspondingly for the cloud service. The control plane of the cloud service integrates the configurations of the L7 data plane and sends the tenant configuration and tenant certificate of this tenant to the L7 data plane. The tenant configuration indicates the C++ plug-in used by the tenant and the configuration information of the plug-in, enabling the L7 data plane to distinguish between the system C++ plug-in and the tenant C++ plug-in based on this tenant configuration. After the configuration is completed, the L7 data plane loads the system C++ plug-in. Before loading the system C++ plug-in, if the executable code of the system C++ plug-in is cached in the system plug-in management component, the system plug-in management component can directly load the system C++ plug-in based on this executable code. If the executable code of the system C++ plug-in is not cached in the system plug-in management component, the system plug-in management component needs to establish an SSL connection with the plug-in registration component and download the executable code of the system C++ plug-in through this SSL connection. Also, the L7 data plane needs to create an access proxy component stub. Additionally, if the tenant plug-in management component has not been created for this tenant, the L7 data plane is responsible for creating it and designating the subsequent use of the access proxy component stub to communicate with the tenant plug-in management component, and the communication method can use inter-process communication technologies such as UDS and SHM. The L7 data plane also needs to send the tenant certificate to the tenant plug-in management component. The tenant plug-in management component is responsible for pulling and loading the tenant C++ plug-in. Before loading the tenant C++ plug-in, if the executable code of the tenant C++ plug-in is cached in the tenant plug-in management component, the tenant plug-in management component can directly load the tenant C++ plug-in based on this executable code. If the executable code of the tenant C++ plug-in is not cached in the tenant plug-in management component, the tenant plug-in management component needs to establish an SSL connection with the plug-in registration component and download the executable code of the tenant C++ plug-in through this SSL connection. After the loading of the tenant C++ plug-in is completed, the L7 data plane also needs to complete the service configuration settings based on the loading result. After the L7 data plane receives a cloud service request, if it is necessary to use the system C++ plug-in to process this cloud service request, the L7 data plane needs to call the corresponding system C++ plug-in to process the cloud service request. If it is necessary to use the tenant C++ plug-in to process this cloud service request, the L7 data plane needs to send a plug-in access request to the tenant plug-in management component through the access proxy component stub, enabling the tenant plug-in management component to call the tenant C++ plug-in and return a call structure to the L7 data plane through the access proxy component stub to implement the processing of the cloud service request. If the plug-in fails to start, the tenant plug-in management component will return information indicating an execution error to the access proxy component stub. Among them, during the communication process between the access proxy component stub and the plug-in management component, the access proxy component stub also needs to perform related operations such as serializing and deserializing the communication messages according to the inter-process communication method adopted.
[0131] According to the implementation process, each plugin management component manages the plugins belonging to the same tenant, and also uses the certificate of this tenant itself for security authentication when connecting to the plugin registration component. Moreover, the tenant plugins can be isolated from the system plugins. In this way, on the one hand, it can prevent malicious tenant plugins from contaminating the system plugins or the tenant plugins of other tenants. On the other hand, it can also ensure that the crash of this tenant plugin or malicious code will not affect the normal operation of the system plugins, the tenant plugins of other tenants, and the L7 data plane.
[0132] Such as Figure 15As shown, whether it is the system plugin management component or the tenant plugin management component, when a plugin needs to be loaded, it first checks whether the executable code of this plugin already exists in the local cache. If the executable code of the plugin is not cached locally, it is necessary to first create a secure connection with the plugin registration component and use this secure connection to query the plugin. Then, download the executable code of the plugin according to the response returned by the plugin registration component. After the plugin management component downloads the executable code of the plugin, it can cache this executable code and load the plugin based on it. When the executable code of this plugin has been downloaded by other plugin management components, the response returned by the plugin registration component includes the indication information of these other plugin management components. When the response includes the indication information of multiple other plugin management components, the plugin management component can optionally select one other plugin management component based on the address and subnet address of the node where it is located. When downloading the executable code of the plugin from other plugin management components, the plugin management component needs to establish a communication connection with this other plugin management component according to the address of the other plugin management component, and download the executable code of this plugin from the cache of this other plugin management component through this communication connection. When the executable code of the first plugin has not been downloaded by any other plugin management components, the response returned by the plugin registration component includes the indication information of the storage address of the executable code of the first plugin in the plugin registration component. Among them, when the plugin management component is a tenant plugin management component, this other plugin management component and this plugin management component belong to the same tenant, which can ensure the isolation of different tenant plugins. Among them, when establishing a connection between the plugin management component and the plugin registration component, it is necessary to use the system certificate or the tenant certificate. For example, when the plugin to be loaded is a tenant plugin, the plugin management component passes the tenant certificate to the plugin registration component, and the plugin registration component judges the source tenant of the connection based on this tenant certificate, that is, judges the identity of the tenant. Then, filter out the plugins that do not belong to this tenant based on this identity, and provide the executable code of the plugin to be loaded to the plugin management component. The tenant can upload the executable code of the plugin to the plugin registration component through the console, and this executable code carries tenant information. After receiving this executable code, the plugin registration component can save the executable code according to the tenant information it carries. When the plugin to be loaded is a tenant plugin, the response returned by the plugin registration component also includes the tenant's token. When the plugin management component downloads the executable code of the plugin from the plugin registration component according to the response, the plugin management component can optionally send this token to the plugin registration component so that the plugin registration component can authenticate the tenant based on this token. Or the plugin management component can also not send this token to the plugin registration component. At this time, the plugin management component can send the tenant certificate to the plugin registration component so that the plugin registration component can authenticate the tenant based on this tenant certificate. When the plugin registration management component authenticates the tenant, it can also register this plugin management component.Similarly, when other plugin management components need to download the executable code of a plugin, the download process also follows this implementation method.
[0133] According to this implementation process, it can be seen that the cloud service request processing system of the present application can not only achieve the dynamic loading of plugins. When a plugin management component downloads the executable code of a plugin from a nearby other plugin management component, and the other plugin management component and the plugin management component belong to the same user, it can also ensure the plugin download requirements of tenant isolation, improve the download speed of the plugin, reduce the preparation time of the plugin, and can reduce the network download traffic of the plugin registration component, realizing the diversion of the network download traffic of the plugin registration component. For example, when a new service is created for a certain tenant, a large number of plugin management components need to download the executable code of the plugin. At this time, by downloading the executable code of the plugin from a nearby other plugin management component, the download traffic can be diverted.
[0134] As Figure 16 shown, when a tenant updates the version of a plugin through the console, after the plugin registration component obtains the updated version, it can cache the updated version and update the relevant information of the plugin, such as updating the latest version number of the plugin. At the same time, the plugin registration component can also send an update notification to all plugin management components that have downloaded the plugin. After obtaining the update notification, the plugin management component can optionally determine whether to update the plugin according to the pre-configured update policy. When the plugin management component determines to keep the plugin based on the update policy, it does not update the plugin. When the plugin management component determines to update the plugin based on the update policy, the plugin management component can query other plugin management components that are connected to it and belong to the same tenant to check whether they have downloaded the updated version of the plugin. When other plugin management components have downloaded the updated version of the plugin, the plugin management component directly downloads the updated version from the other plugin management component. When none of the other plugin management components have downloaded the updated version, the plugin management component downloads the updated version from the plugin registration component, or downloads the updated version from other plugin management components recommended by the plugin management component. Then, the plugin is updated based on the updated version. In another scenario, the tenant can instruct the plugin management component to update the plugin through the console. For example, the tenant sends an update request to the plugin management component through the console. At this time, the plugin management component needs to send a plugin update query request to the plugin registration component and download the updated version of the plugin according to the response of the plugin registration component. For the implementation process of downloading the updated version according to the response, please refer to the relevant description of the plugin management component downloading the updated version based on the update notification accordingly, which will not be elaborated here.
[0135] After the plug-in management component downloads an updated version of a plug-in, the plug-in management component can first call back the plug-in preparation update function to the plug-in. At this time, in response, if the first plug-in needs to save its own running information, the first plug-in can call the interface of the plug-in management component and provide the running information of the first plug-in to the plug-in management component through this interface. After receiving the running information, the plug-in management component saves it. Then the plug-in management component uninstalls the old version of the first plug-in and loads the updated version of the first plug-in to complete the update of the first plug-in. After completing the update of the first plug-in, the plug-in management component calls the recovery callback of the updated first plug-in and provides the saved running information to the updated first plug-in based on this recovery callback. After obtaining the running information, the updated first plug-in restores to the state before the update of the first plug-in based on this running information.
[0136] In addition, after the plug-in management component establishes a connection with other plug-in management components of the same tenant, this connection can be used for mutual query and is not limited to only sending messages from the plug-in management component that actively establishes the connection.
[0137] According to the implementation process, it can be seen that the cloud service request processing system of the present application supports plug-in upgrade during operation, and the plug-in management component saves the running information of the first plug-in, so that after the update of the first plug-in is completed, the first plug-in can continue to run in the same running state as before the update, ensuring the continuity of the running state of the first plug-in before and after the update, and making the tenant and the business unaware of the update process.
[0138] As can be seen from the above, in the cloud service request processing system provided by the present application, since the plug-ins are managed by the plug-in management component, when a plug-in needs to be run, the plug-in framework needs to first send a plug-in access request to the plug-in management component. After receiving the plug-in access request, the plug-in management component accesses the plug-in based on this plug-in access request. In this way, the operation of the plug-in framework and the operation of the plug-in belong to different processes, which is equivalent to achieving isolation between the plug-in framework and the plug-in, so that the plug-in framework and the plug-in do not affect each other, ensuring the security and stability of the operation of the plug-in framework. When a tenant needs to modify a plug-in, such as dynamically loading or updating a plug-in, there is no need to restart the entire plug-in framework, so that the behavior of modifying the plug-in will not affect the plug-ins managed by other plug-in management components, and thus will not affect the tenant business that depends on the operation of these other plug-ins. Similarly, when a certain plug-in runs abnormally, it will not affect the plug-in framework and will not affect the plug-ins managed by other plug-in management components associated with the plug-in framework. For example, even if a plug-in of a certain tenant crashes, it only affects the restart of the plug-in management component of this tenant and does not affect the access of other tenants, and will not cause the restart of the L7 data plane.
[0139] It should be noted that the sequence of steps of the cloud service request processing method provided by the embodiments of this application can be appropriately adjusted, and the steps can also be increased or decreased accordingly according to the situation. The types and functions of the components included in the cloud service request processing can also be appropriately adjusted and increased or decreased. Any method of change that can be easily thought of by any person skilled in the art within the technical scope disclosed in this application should be covered by the protection scope of this application, and thus will not be elaborated herein.
[0140] Among them, the interaction component 101, the plugin framework 102, the plugin management component 103, the plugin 104, the access proxy component 105, and the plugin registration component 20 can all be implemented by software or can be implemented by hardware. Exemplarily, next, taking the interaction component 101 as an example, the implementation manner of the interaction component 101 will be introduced. Similarly, the implementation manners of the plugin framework 102, the plugin management component 103, the plugin 104, the access proxy component 105, and the plugin registration component 20 can refer to the implementation manner of the interaction component 101.
[0141] As an example of a software functional unit, the interaction component 101 can include code running on a computing instance. Among them, the computing instance can include at least one of a physical host (computing device), a virtual machine, and a container.
[0142] As an example of a hardware functional unit, the interaction component 101 can include a computing device, such as a server, etc. Alternatively, the interaction component 101 can also be a device implemented by an application-specific integrated circuit (ASIC) or a programmable logic device (PLD). Among them, the above PLD can be implemented by a complex programmable logic device (CPLD), a field-programmable gate array (FPGA), a generic array logic (GAL), or any combination thereof.
[0143] It should be noted that in other embodiments, any one of the interaction component 101, the plugin framework 102, the plugin management component 103, the plugin 104, the access proxy component 105, and the plugin registration component 20 can be used to execute any step in the cloud service request processing method. The steps to be implemented by the interaction component 101, the plugin framework 102, the plugin management component 103, the plugin 104, the access proxy component 105, and the plugin registration component 20 can be specified as needed. The entire function of the cloud service request processing device is realized by the interaction component 101, the plugin framework 102, the plugin management component 103, the plugin 104, the access proxy component 105, and the plugin registration component 20 respectively implementing different steps in the cloud service request processing method.
[0144] Those skilled in the art can clearly understand that for the convenience and simplicity of description, the specific working processes of the above-described respective components can refer to the corresponding content in the foregoing method embodiments, and will not be elaborated herein.
[0145] Next, an example of the basic hardware structure related to the embodiments of the present application will be described.
[0146] The present application also provides a computing device 1700. As Figure 17 shown, the computing device 1700 includes: a bus 1702, a processor 1704, a memory 1706, and a communication interface 1708. The processor 1704, the memory 1706, and the communication interface 1708 communicate with each other through the bus 1702. The computing device 1700 can be a server or a terminal device. It should be understood that the present application does not limit the number of processors and memories in the computing device 1700.
[0147] The bus 1702 can be a peripheral component interconnect (PCI) bus or an extended industry standard architecture (EISA) bus, etc. The bus can be divided into an address bus, a data bus, a control bus, etc. For the sake of convenience of representation, Figure 17 only one line is shown herein, but it does not mean that there is only one bus or one type of bus. The bus 1704 can include a path for transmitting information between various components (for example, the memory 1706, the processor 1704, the communication interface 1708) of the computing device 1700.
[0148] The processor 1704 may include any one or more of processors such as a central processing unit (CPU), a graphics processing unit (GPU), a microprocessor (MP), or a digital signal processor (DSP).
[0149] The memory 1706 may include a volatile memory, such as a random access memory (RAM). The processor 1704 may also include a non-volatile memory, such as a read-only memory (ROM), a flash memory, a hard disk drive (HDD), or a solid state drive (SSD).
[0150] The memory 1706 stores executable program codes, and the processor 1704 executes the executable program codes to respectively implement the functions of the foregoing interaction component 101, plug-in framework 102, plug-in management component 103, plug-in 104, and access proxy component 105, thereby implementing the cloud service request processing method. That is, the memory 1706 stores instructions for executing the cloud service request processing method.
[0151] The communication interface 1703 uses a transceiver module such as, but not limited to, a network interface card or a transceiver to implement communication between the computing device 1700 and other devices or a communication network.
[0152] The embodiment of the present application further provides a computing device cluster. The computing device cluster includes at least one computing device. The computing device may be a server, such as a central server, an edge server, or a local server in a local data center. In some embodiments, the computing device may also be a terminal device such as a desktop computer, a laptop computer, or a smart phone.
[0153] As Figure 18 shown, the computing device cluster includes at least one computing device 1700. The same instructions for executing the cloud service request processing method may be stored in the memory 1706 of one or more computing devices 1700 in the computing device cluster.
[0154] In some possible implementations, the memory 1706 of one or more computing devices 1700 in the computing device cluster may also store partial instructions for executing the cloud service request processing method respectively. In other words, the combination of one or more computing devices 1700 may jointly execute the instructions for executing the cloud service request processing method.
[0155] It should be noted that the memories 1706 in different computing devices 1700 in the computing device cluster may store different instructions, respectively for executing partial functions of the cloud service request processing apparatus. That is, the instructions stored in the memories 1706 of different computing devices 1700 may implement the functions of one or more modules among the interaction component 101, the plugin framework 102, the plugin management component 103, the plugin 104, and the access proxy component 105.
[0156] In some possible implementations, one or more computing devices in the computing device cluster may be connected via a network. Among them, the network may be a wide area network or a local area network, etc. Figure 19 A possible implementation is shown. As Figure 19 shown, two computing devices 1700A and 1700B are connected via a network. Specifically, they are connected to the network through the communication interfaces in each computing device. In this type of possible implementation, the memory 1706 in the computing device 1700A stores instructions for executing the functions of the interaction component 101, the plugin framework 102, the plugin management component 103, the plugin 104, and the access proxy component 105. At the same time, the memory 1706 in the computing device 1700B stores instructions for executing the function of the plugin registration component 20.
[0157] Figure 19 The connection manner between the computing device clusters shown may be considered because the cloud service request processing method provided in this application requires the plugin registration component 20 to store a large number of executable programs of plugins. Therefore, it is considered to hand over the function implemented by the plugin registration component 20 to the computing device 1700B for execution.
[0158] It should be understood that Figure 19 the function of the computing device 1700A shown may also be completed by multiple computing devices 1700. Similarly, the function of the computing device 1700B may also be completed by multiple computing devices 1700.
[0159] The embodiments of this application also provide another computing device cluster. The connection relationship between the computing devices in this computing device cluster may be similarly referred to Figure 18 and Figure 19The connection mode of the computing device cluster. Different from this, in the memory 1706 of one or more computing devices 1700 in the computing device cluster, the same instructions for executing the cloud service request processing method may be stored.
[0160] In some possible implementation manners, in the memory 1706 of one or more computing devices 1700 in the computing device cluster, partial instructions for executing the cloud service request processing method may also be stored respectively. In other words, the combination of one or more computing devices 1700 can jointly execute the instructions for executing the cloud service request processing method.
[0161] The embodiment of the present application also provides a computer program product including instructions. The computer program product may be a software or program product including instructions that can run on a computing device or be stored in any available medium. When the computer program product runs on at least one computing device, at least one computing device is enabled to execute the cloud service request processing method.
[0162] The embodiment of the present application also provides a computer-readable storage medium. The computer-readable storage medium may be any available medium that a computing device can store or a data storage device such as a data center including one or more available media. The available medium may be a magnetic medium (for example, a floppy disk, a hard disk, a magnetic tape), an optical medium (for example, a DVD), or a semiconductor medium (for example, a solid-state drive), etc. The computer-readable storage medium includes instructions that instruct the computing device to execute the cloud service request processing method, or instruct the computing device to execute the cloud service request processing method.
[0163] Those of ordinary skill in the art can understand that all or part of the steps of implementing the above embodiments can be completed by hardware, or can be completed by a program instructing relevant hardware. The program can be stored in a computer-readable storage medium. The above-mentioned storage medium can be a read-only memory, a magnetic disk, an optical disc, etc.
[0164] It should be noted that the information (including but not limited to tenant device information, tenant personal information, etc.), data (including but not limited to data for analysis, stored data, displayed data, etc.) and signals involved in the present application are all authorized by the tenant or fully authorized by all parties, and the collection, use and processing of relevant data need to comply with relevant laws, regulations and standards of relevant countries and regions. For example, the original data and executable code involved in the present application are all obtained under full authorization.
[0165] In the embodiments of the present application, the terms "first", "second" and "third" are only used for descriptive purposes and cannot be understood as indicating or implying relative importance. The term "at least one" means one or more, and the term "multiple" means two or more, unless otherwise clearly defined.
[0166] In this application, the term "and / or" is merely a description of the relationship between associated objects, indicating that there can be three relationships. For example, A and / or B can represent: A exists alone, A and B exist simultaneously, and B exists alone. Additionally, in this text, the character " / " generally indicates that the associated objects before and after are in an "or" relationship.
[0167] Finally, it should be noted that the above embodiments are only used to illustrate the technical solutions of the present invention, rather than to limit them; although the present invention has been described in detail with reference to the foregoing embodiments, those of ordinary skill in the art should understand that they can still modify the technical solutions recorded in the foregoing embodiments, or perform equivalent replacements for some of the technical features; and these modifications or replacements do not cause the essence of the corresponding technical solutions to deviate from the protection scope of the technical solutions of the embodiments of the present invention.
Claims
1. A cloud service request processing system, characterized in that, The system is deployed in a server managed by a cloud management platform, which is used to manage the infrastructure that provides cloud services. The infrastructure includes multiple such servers. The system includes: an interaction component, a plugin framework, a plugin management component, and at least one plugin associated with the plugin framework; The interaction component is used to obtain a cloud service request sent by a tenant and provide the cloud service request to the plugin framework. The cloud service request is used to request the server to provide cloud services to the tenant; The plugin framework is used to run based on the cloud service request and send a plugin access request to the plugin management component. The plugin access request indicates an access to a first plugin for processing the cloud server request. The first plugin is one of the at least one plugin; The plugin management component is used to access the first plugin based on the plugin access request, obtain an access result, and feedback the access result to the plugin framework; The plugin framework is further used to obtain a processing result for the cloud service request based on the access result.
2. The system according to claim 1, wherein The system further includes: an access proxy component; The plugin framework is specifically used to send the plugin access request to the access proxy component, so that the access proxy component sends the plugin access request to the plugin management component.
3. The system according to claim 1 or 2, wherein, The interaction component is further used to obtain a plugin loading request of the tenant and forward the plugin loading request to the plugin management component. The plugin loading request indicates to load the first plugin; The plugin management component is further used to load the first plugin based on the plugin loading request.
4. The system according to claim 3, wherein The system further includes: another plugin management component. The plugin management component is specifically used for: Based on the plugin loading request, send a plugin acquisition request to the plugin registration component. The plugin acquisition request indicates to acquire the first plugin. The plugin registration component is used to store all the plugins required for processing the cloud service request; Receive a plugin acquisition response sent by the plugin registration component. The plugin acquisition response carries indication information of the other plugin management component, or the plugin acquisition response carries indication information of the storage address of the first plugin in the plugin registration component; Based on the indication of the plugin acquisition response, acquire the first plugin and load the first plugin.
5. The system according to claim 4, wherein The plugin management component is further used for: Obtain an update request indicating an update to the first plugin; Based on the update request, obtain an updated version of the first plugin from the other plugin management component, or obtain the updated version from the plugin registration component; Update the first plugin based on the updated version.
6. The system according to claim 5, characterized in that, The update request is sent by the plugin registration component; Or, the interaction component is further used to obtain a plugin update indication of the tenant, and based on the plugin update indication, send the update request to the plugin management component. The plugin update indication is used to indicate an update to the first plugin.
7. The system according to claim 5 or 6, wherein, The plugin management component is further configured to send an update notification to the first plugin before the plugin management component updates the first plugin based on the updated version, where the update notification indicates that the first plugin needs to be updated; The first plugin is further configured to provide the running information of the first plugin to the plugin management component based on the update notification; The plugin management component is further configured to store the running information; The plugin management component is further configured to provide the running information to the first plugin after the plugin management component updates the first plugin based on the updated version; The first plugin is further configured to run based on the running information.
8. The system according to any one of claims 4 to 7, characterized in that, The plugin management component and the other plugin management component are configured to manage the plugins of the same tenant.
9. The system according to any one of claims 4 to 8, characterized in that, The transmission delay between the other plugin management component and the plugin management component is less than the transmission delay between the plugin registration component and the plugin management component.
10. The system according to any one of claims 4 to 9, characterized in that, The plugin registration component includes a system registration sub-component and a tenant registration sub-component. The system registration sub-component is configured to store the executable code of the system plugin, and the tenant registration sub-component is configured to store the executable code of the plugin provided by the tenant, and the tenant does not have access to the system registration sub-component.
11. The system according to any one of claims 1 to 10, characterized in that, The system is configured to process cloud service requests of multiple tenants. The system includes multiple plugin management components corresponding to the multiple tenants. The plugin management component is configured to manage the plugins belonging to the corresponding tenant, and all the plugins managed by any plugin management component belong to the same tenant.
12. The system according to any one of claims 1 to 11, characterized in that, The plugin framework is configured to process cloud service requests of multiple cloud services. Processing the cloud service request of the target cloud service is achieved by running the plugin framework and the plugin corresponding to the target cloud service, where the target cloud service is any one of the multiple cloud services.
13. The system according to any one of claims 1 to 12, characterized in that, The system includes multiple plugin frameworks and at least one plugin management component belonging to the same tenant. The multiple plugin frameworks are configured to implement the same function. In response to the system including one plugin management component of the same tenant, the multiple plugin frameworks share the one plugin management component. In response to the system including multiple plugin management components of the same tenant, at least some of the multiple plugin frameworks use one plugin management component separately.
14. A method for processing cloud service requests, characterized in that, The method is applied to a cloud service request processing system, which is deployed in a server managed by a cloud management platform. The cloud management platform is configured to manage the infrastructure for providing cloud services. The infrastructure includes multiple such servers. The system includes: an interaction component, a plugin framework, a plugin management component, and at least one plugin associated with the plugin framework. The method includes: The interaction component obtains a cloud service request sent by a tenant and provides the cloud service request to the plugin framework. The cloud service request is used to request the server to provide cloud services to the tenant; The plug-in framework runs based on the cloud service request and sends a plug-in access request to the plug-in management component. The plug-in access request indicates access to a first plug-in for processing the cloud server request, and the first plug-in is one of the at least one plug-in; The plug-in management component accesses the first plug-in based on the plug-in access request, obtains an access result, and feeds back the access result to the plug-in framework; The plug-in framework obtains a processing result for the cloud service request based on the access result.
15. The method according to claim 14, wherein The system further includes: an access proxy component. The plug-in framework sending a plug-in access request to the plug-in management component includes: The plug-in framework sends the plug-in access request to the access proxy component, so that the access proxy component sends the plug-in access request to the plug-in management component.
16. The method according to claim 14 or 15, characterized in that, Before the plug-in management component accesses the first plug-in based on the plug-in access request, the method further includes: The interaction component obtains a plug-in loading request of the tenant and forwards the plug-in loading request to the plug-in management component. The plug-in loading request indicates loading the first plug-in; The plug-in management component loads the first plug-in based on the plug-in loading request.
17. The method according to claim 16, wherein The system further includes: an other plug-in management component. The plug-in management component loading the first plug-in based on the plug-in loading request includes: The plug-in management component sends a plug-in acquisition request to the plug-in registration component based on the plug-in loading request. The plug-in acquisition request indicates acquiring the first plug-in, and the plug-in registration component is used to store all plug-ins required for processing the cloud service request; The plug-in management component receives a plug-in acquisition response sent by the plug-in registration component. The plug-in acquisition response carries indication information of the other plug-in management component, or the plug-in acquisition response carries indication information of the storage address of the first plug-in in the plug-in registration component; The plug-in management component acquires the first plug-in based on the indication of the plug-in acquisition response and loads the first plug-in.
18. The method according to claim 17, wherein After the plug-in management component loads the first plug-in, the method further includes: The plug-in management component obtains an update request indicating an update to the first plug-in; The plug-in management component obtains an updated version of the first plug-in from the other plug-in management component based on the update request, or obtains the updated version from the plug-in registration component; The plug-in management component updates the first plug-in based on the updated version.
19. The method according to claim 18, wherein The update request is sent by the plug-in registration component; Or, the method further includes: The interaction component obtains a plug-in update indication of the tenant and sends the update request to the plug-in management component based on the plug-in update indication. The plug-in update indication is used to indicate an update to the first plug-in.
20. The method according to claim 18 or 19, characterized in that, Before the plug-in management component updates the first plug-in based on the updated version, the method further includes: The plugin management component sends an update notification to the first plugin, and the update notification indicates that the first plugin needs to be updated; Based on the update notification, the first plugin provides the running information of the first plugin to the plugin management component; The plugin management component stores the running information; After the plugin management component updates the first plugin based on the update version, the method further includes: The plugin management component provides the running information to the first plugin; The first plugin runs based on the running information.
21. A cluster of computing devices, characterized in that, Comprising a plurality of computing devices, the plurality of computing devices include a plurality of processors and a plurality of memories, program instructions are stored in the plurality of memories, and the plurality of processors run the program instructions so that the computing device cluster implements the system according to any one of claims 1 to 13.
22. A computer-readable storage medium, characterized in that, Comprising program instructions, when the program instructions run on a computing device, the computing device implements the system according to any one of claims 1 to 13.
23. A computer program product comprising instructions, characterized in that, When the instructions are run by a computing device cluster, the computing device cluster implements the system according to any one of claims 1 to 13.