Dynamic Microservice Intercommunication Configuration

A reinforcement learning model is used to dynamically adapt communication methods between microservices, addressing inefficiencies in existing systems by optimizing communication based on changing conditions, thereby enhancing performance.

JP7734208B2Active Publication Date: 2025-09-04NEC CORP
View PDF 9 Cites 0 Cited by

Patent Information

Application Number
JP2023562849
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2022-04-14
Filing Date
2022-04-15
Publication Date
2025-09-04
Estimated Expiration
2042-04-15

AI Technical Summary

Technical Problem

Existing distributed computing systems struggle to dynamically adapt communication methods between microservices based on changing conditions, leading to inefficiencies and suboptimal performance.

Method used

Implementing a reinforcement learning model to identify the optimal communication method between microservices by collecting performance and communication statistics, using SARSA reinforcement learning to dynamically adapt communication methods at runtime.

Benefits of technology

Enhances the efficiency of microservice communication by dynamically selecting the best communication method based on current system conditions, improving overall application performance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007734208000002
    Figure 0007734208000002
  • Figure 0007734208000003
    Figure 0007734208000003
  • Figure 0007734208000004
    Figure 0007734208000004
Patent Text Reader

Abstract

A method and system for managing communications includes identifying 406 a system state in a distributed computing system including a first microservice communicating with a second microservice. A communication method responsive to the identified system state is identified 408 using a reinforcement learning model relating communication methods to the system state. The identified communication method is implemented 410 for communication between the first microservice and the second microservice, and the first microservice and the second microservice transmit data using the identified communication method.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] Related Application Information This application claims priority to U.S. Patent Application No. 63 / 175,066, filed April 15, 2021, and U.S. Patent Application No. 17 / 720,776, filed April 14, 2022, both of which are incorporated by reference in their entireties. [Background technology]

[0002] Technical Field The present invention relates to distributed computing, and more particularly to communication between microservices.

[0003] 2. Description of Related Art Microservices are independently deployable services with automated deployment mechanisms, allowing each service in a larger system to be updated, replaced, and extended independently. Microservices can interconnect using any of a variety of communication modes, with certain communication modes being more suitable for specific conditions than others. Summary of the Invention

[0004] A method for managing communications includes identifying a system state in a distributed computing system including a first microservice communicating with a second microservice. A communication method responsive to the identified system state is identified using a reinforcement learning model that associates communication methods with the system state. The identified communication method is implemented by the first microservice and the second microservice to transmit data using the identified communication method in communication between the first microservice and the second microservice.

[0005] A method for face detection includes identifying a system state in a distributed computing system including a first microservice in communication with a second microservice in a video processing workload. A communication method responsive to the identified system state is identified using a reinforcement learning model that associates communication methods with the system state. The identified communication method is implemented so that the first microservice and the second microservice transmit data using the identified communication method in communication between the first microservice and the second microservice. A face is detected in a video stream processed by the video processing workload. A security action is performed in response to the detection of the face.

[0006] A system for managing communications includes a hardware processor and a memory containing a computer program that, when executed by the hardware processor, causes the hardware processor to: identify a system state in a distributed computing system including a first microservice communicating with a second microservice; identify a communication method responsive to the identified system state using a reinforcement learning model that associates communication methods with the system state; and implement the identified communication method by the first microservice and the second microservice to transmit data using the identified communication method in communication between the first microservice and the second microservice.

[0007] These and other features and advantages will become apparent from the following detailed description of illustrative embodiments thereof, which is to be read in connection with the accompanying drawings. [Brief explanation of the drawings]

[0008] The present disclosure provides details in the following description of preferred embodiments with reference to the following figures.

[0009] [Figure 1] 1 is a block diagram illustrating an exemplary distributed computing system, in accordance with an embodiment of the present invention.

[0010] [Figure 2] 1 is a block diagram of a processing node in a distributed computing system according to one embodiment of the present invention.

[0011] [Figure 3] FIG. 1 is a block / flow diagram of a set of microservices in a video processing and face matching workload, according to an embodiment of the invention.

[0012] [Figure 4] FIG. 1 is a block / flow diagram of a method for selecting an optimal communication method between microservices in a distributed computing system, according to one embodiment of the present invention.

[0013] [Figure 5] FIG. 2 is a block / flow diagram of a method for selecting a communication method based on a reinforcement learning model, according to one embodiment of the present invention.

[0014] [Figure 6] 1 is a block diagram of a computing system capable of managing a distributed computing system, and in particular selecting a communication method to use between microservices, according to one embodiment of the present invention. DETAILED DESCRIPTION OF THE INVENTION

[0015] An application may be formed by interconnecting multiple microservices, such that the output of one microservice becomes the input of a second microservice. These interconnected microservices can form a chain that generates the application's functionality. This interconnection utilizes data communication between the microservices, and examples of communication types include point-to-point communication, m-server to n-client communication, broker-based communication, and shared memory-based communication.

[0016] Each communication method is best suited to a different set of conditions. It allows you to understand the current state of the distributed computing system and dynamically configure inter-service communication for running applications. Some distributed computing platforms allow you to specify communication methods in a static way, but these systems may not provide the ability to change the specified communication method as conditions change.

[0017] Thus, the communication controller can collect performance and communication-related statistics from individual microservices. These statistics may be processed using reinforcement learning to identify the optimal communication method to be used between pairs of microservices. The optimal communication method can be dynamically adapted at runtime to improve the efficiency of the entire application. State-Action-Reward-State-Action (SARSA) reinforcement learning may be used specifically to adapt to changing conditions.

[0018] 1, there is shown a diagram of a distributed computing system 100. A user 102 can execute a workload on the distributed computing system 100. To do so, the user 102 communicates with a manager system 104. The user 102 provides information about the workload, including the number and type of processing nodes 106 required to execute the workload.

[0019] The information provided to the manager system 104 includes, for example, the number of processing nodes 106, processor type, operating system, execution environment, storage capacity, random access memory capacity, network bandwidth, and other aspects that may be required for the workload. The user 102 can also provide an image or container to the manager system 104 for storage in a registry.

[0020] The distributed computing system 100 may include thousands of processing nodes 106, and each node 106 may be idle or busy depending on the workload being executed by the distributed computing system 100 at any given time. Although a single manager system 104 is shown, there may be multiple such manager systems 104 with multiple registries distributed across the distributed computing system 100.

[0021] Before and during workload execution, the manager system 104 determines which processing nodes 106 will implement the microservices that make up the corresponding application. The manager system 104 can configure the processing nodes 106 based on, for example, node and resource availability at provisioning time. Microservices may be hosted on entirely separate processing nodes 106, or any number of microservices may be co-located on the same processing node 106. The manager system 104 and distributed computing system 100 can handle multiple different workloads from multiple different users 102, and the availability of specific resources depends on what is happening in the distributed computing system 100 in general.

[0022] As used herein, "provisioning" refers to the process by which resources in the distributed computing system 100 are allocated to users 102 and ready to run. Thus, provisioning includes the manager system 104 determining which processing elements 106 to use for a workload, as well as the transmission of images and any configuration steps necessary to prepare the processing nodes 106 for the execution of a workload. Configuration may include, for example, identifying the communication methods to be used by the microservices.

[0023] 2, details of processing node 108 are shown. Processing node 106 includes a hardware processor 202, a memory 204, and a network interface 206. Network interface 206 may be configured to communicate with manager system 104, users 102, and other processing nodes 106, as appropriate, using any suitable communication medium and protocol. Processing node 106 also includes one or more functional modules, which in some embodiments may be implemented as software stored in memory 204 and executable by hardware processor 202. In other embodiments, one or more functional modules may be implemented as one or more discrete hardware components, for example, in the form of an application-specific integrated chip or a field-programmable gate array.

[0024] A processing node 106 may include one or more containers 208. Each container 208 is specifically intended to represent a different operating environment. Each container 208 includes a set of software applications, configuration files, workload datasets, and other information or software required to run a particular workload. These containers 208 may implement one or more microservices for a distributed application.

[0025] Containers 208 are stored in memory 204 and are instantiated and decommissioned as needed by container orchestration engine 210. It should be understood that, generally speaking, the operating systems of processing nodes 106 reside external to the containers 208. In this manner, each container 208 interfaces with the same operating system kernel, reducing the overhead required to run multiple containers simultaneously. Meanwhile, containers 208 can only communicate with each other through designated communication methods, reducing security concerns.

[0026] Referring now to Figure 3, an example application is shown that includes a set of interconnected microservices. In this example, a video analytics application can perform real-time monitoring of video streams, which includes monitoring a given area to determine if a particular individual has entered that area. The video analytics application can generate an alert or automated response upon detection of such an individual.

[0027] The application can include exemplary microservices such as video capture 304, face detection 306, face matching 308, alert manager 310, and biometrics manager 312. Camera 302 generates visual data, such as a stream of images that make up a video stream. Video capture 304 processes this visual data and performs appropriate filtering or formatting to generate frames that can be considered by downstream microservices.

[0028] Face detection 306 identifies faces within frames of the video stream. This identification may involve labeling the frames to indicate the presence of a face in the image and may further include the coordinates of the bounding box of the face within the image. Face matching 308 may then associate the facial image with information about the person appearing in the image. This matching may utilize information from biometrics manager 312, which may store profiles of people of interest. The profile may include biometric information, such as facial features used to match the facial image, as well as identifying information, such as the person's name and role.

[0029] In the case of a security system, a person's role may include information about access permissions. For example, a person may be authorized to enter a restricted area or may be specifically prohibited from entering a restricted area. The alert manager 310 may generate an alert in response to detecting a person via face matching 308. For example, the alert may indicate that an authorized person is in the area, a prohibited person is in the area, or an unknown person is in the area.

[0030] The security system 312 may automatically respond to the alert, which may include security responses such as automatically locking or unlocking doors or other access points, sounding visual and / or audible alarms, summoning security personnel, requiring further authentication from detected individuals, etc.

[0031] A distributed computing system can process multiple video streams at once. For example, multiple cameras 302 may generate their own video streams, and there may be separate microservice instances for video capture 304, face detection 306, and face matching 308. Communication of detected faces between the microservices may be handled using one of a variety of different communication methods, such as m-server to n-client processing, a broker-based process, or shared memory. For example, a point-to-point communication scheme works best when the number of faces across all cameras 302 is similar and balanced, while a broker-based communication scheme works best when many faces are observed from a particular camera angle (e.g., the entrance to a stadium).

[0032] Various microservices may be implemented as containers 208 within a processing node 206. In some cases, multiple microservices may be implemented on a single processing node 206, for example, using different respective containers 208 or by implementing multiple microservices within a single container 208. In some cases, microservices may be implemented using multiple different processing nodes 106, with communication between the containers 208 of the different processing nodes 106 being handled over an appropriate network.

[0033] A communications controller that collects performance and communication-related statistics from various microservices. This communications controller may be implemented as a separate software module or microservice, or may be implemented in the manager system 102. Using the collected statistics, the communications controller can use SARSA reinforcement learning to learn the characteristics of the communications between the microservices and the optimal communications methods for different conditions. The communications controller can dynamically change the communications method used between two microservices.

[0034] 4, a method for dynamically adapting microservice communications during workload execution is shown. Block 402 deploys and configures microservices on a distributed computing system. This configuration may include an initial selection of communication methods for each connection between microservices.

[0035] Block 404 executes the workload using a distributed computing system. While the workload is running, block 406 monitors communication statistics and other performance and operational parameters of the microservice. Block 408 uses the collected statistics to determine the optimal communication method for the current operating conditions. Block 410 then implements the optimal communication method, for example, by maintaining the current communication method if it is still optimal, or by reconfiguring the microservice to use the new communication method if a new communication method is determined to be optimal. Processing then returns to block 406, where new statistics are collected. A delay can be introduced into this update process according to a configurable parameter. For example, a five-minute delay can allow enough new statistics to be collected to improve the determination of whether a new communication method is more optimal.

[0036] Types of communication statistics include data packet-related statistics such as minimum size, maximum size, average size, standard deviation, and frequency / rate of messages between pairs of microservices within a sliding window. Communication statistics may further include a list of communicating pairs of microservices (which may change over time) and information about the zones and machines on which the microservices are running. These communication statistics may determine the state of a reinforcement learning model. Performance statistics such as processing rates may also be collected to determine the rewards of reinforcement learning models.

[0037] The decision at block 408 utilizes reinforcement learning. In SARSA reinforcement learning, the agent observes the current situation (e.g., considering collected statistics). The agent then uses a policy to choose an action. The policy takes the current situation as input and generates an action calculated to maximize some reward. The action is performed and the outcome is observed, e.g., a reward or penalty is given. Based on this feedback, the agent updates the policy to provide better results. As this process is repeated, the agent learns the environment and what actions yield the greatest reward. The agent can use the learned policy with new inputs to guide the system's behavior.

[0038] In the context of optimizing communication between microservices, the environment may be defined as a vector containing the following quantities:

[0039] The minimum size of a data packet exchanged between a pair of microservices within a sliding window.

[0040] The maximum size of a data packet exchanged between a pair of microservices within a sliding window.

[0041] The standard deviation of the size of data packets exchanged between a pair of microservices within a sliding window.

[0042] The frequency of data packets between microservices within a sliding window.

[0043] The zone and processing node where the microservice is running.

[0044] The actions that an agent can take include any of the available communication methods. For example, the actions that an agent can take include:

[0045] Use point-to-point communication.

[0046] Uses m server to n client communication.

[0047] Use user broker-based communication.

[0048] Uses shared memory based communication.

[0049] Do nothing (keep your current contact method).

[0050] The reward may be determined as the change in the processing speed of the microservice, which can be calculated as the ratio of the previous processing speed to the difference between the new processing speed and the previous processing speed.

number

[0051] In addition to the immediate reward for an action, the agent also considers future rewards that may result from the current action. Therefore, a Q-value can be defined for each state-action pair. For example, Q(s,a) is an estimate of the benefit of taking action a when in state s. The Q(s,a) estimate takes into account the future rewards that may accrue from taking action a. Q(s,a)←Q(s,a)+α[r+γ·Q(s',a')-Q(s,a)] where α is the learning rate that controls how much weight is given to new information compared to previously learned Q-values, and γ is a discount factor that determines the importance of future rewards. α = 0 stops learning, and α = 1 uses only the most recent information. This value can be set as a high parameter (e.g., α = 0.9) during initial deployment or when migrating to a different hardware platform, allowing the model to quickly assimilate the results of actions taken in a new environment. After the initial learning phase, when the Q-matrix has been substantially explored, the value can be lowered (e.g., α = 0.1) to encourage the use of newly assimilated information.

[0052] When γ is zero, the agent ignores future rewards and seeks to optimize short-term rewards. Setting γ to 1 causes the agent to highly value long-term rewards. If the operator expects high variability in subsequent frames of the input content, the operator may encode this information by assigning a low value to γ ​​(e.g., γ = 0.1), while a higher value can be used for situations with low variability.

[0053] Referring now to Figure 5, an example of determining an action using a reinforcement learning model is shown. Block 501 sets an initial state s and an action a. An exemplary process for selecting an action is described in more detail below. Block 502 executes the selected action a, changing the state from s to a new state s'. Block 504 determines a reward value r based on the new state s'.

[0054] Block 506 observes a new state s', and block 508 selects a new action a'. In the new state s', the agent assumes that action a' results in a Q value of Q(s', a'). The cumulative reward Q(s, a) can be estimated as described above. Block 510 updates the cumulative reward according to the previous state and action (s, a) and the new state and action (s', a').

[0055] The learning process continues throughout the operation of the system. As the agent visits and revisits states, it can update the values ​​of the Q-matrix to reflect current performance measurements. Early in operation, learning parameters are set to encourage random exploration of the state space. Later, when the Q-matrix is ​​mostly filled, learning parameters can be set to encourage optimal state selection, while still allowing some learning to update the matrix values.

[0056] This process does not define a strategy for selecting the action a. Instead, it is assumed that there is a policy that ensures that all state-action pairs are visited by the agent. One way to achieve this is to define a learning parameter ε. With probability ε, the policy proposes the optimal action for a state, and with probability 1-ε, the agent chooses a random action. During learning, the value ε can be assigned a small value (e.g., ε = 0.1) to explore the state space. If the majority of Q values ​​are accurately estimated, e.g., a percentage of values ​​greater than a predetermined threshold, a higher ε value can be used to encourage the agent to take advantage of the learned model. Note that by randomly selecting actions during learning, states known to perform poorly are occasionally revisited. This allows the agent to update the reward value if performance improves.

[0057] These Q values ​​are estimated by the agent as part of determining the reward for taking a particular action when in a given state. This determination may occur while the agent is updating the reward for each element of the matrix. Thus, once the system occupies a state, performance statistics such as processing speed can be collected to determine the reward for transitioning to that state. These values ​​may be updated to reflect changes in the situation, for example, if the agent returns to a previously visited state and finds that the performance statistics are significantly different from those previously collected.

[0058] The Q-model can be implemented as a two-dimensional matrix, with one dimension representing the discretized states and the other representing the actions, where each element ij of the matrix stores the expected reward for taking action i while the system is in state j.

[0059] When selecting an action, such as in block 501 or 508, a random number between 0 and 1 may be generated and compared to ε. If the random number is greater than or equal to ε, a random action may be selected to further explore the environment. If the expected reward for the selected action is negative, the agent may undo the selected action. Otherwise, the agent selects a next action to maximize reward in the current state. However, if the expected reward from performing the selected action is less than the reward obtained by the previous action, the policy re-recommends the previous action.

[0060] In the context of communication method selection, an "action" determines which communication method to use between a pair of microservices. If the agent determines that the previous communication method yields the best results, it will continue to use that communication method. However, if the state changes such that a new communication method yields a better expected reward, the agent can implement the new communication method.

[0061] Various conditions may make one communication method preferable over another. If the output of a microservice is used as input by many other microservices, a message bus may be desirable to avoid forming separate connections between each source microservice instance and each destination microservice instance. If the required messaging rates start to become uneven, for example, if destination A processes 5 messages per second and destination microservice B processes 30 messages per second, it may be more efficient to use point-to-point messaging.

[0062] 6, an exemplary computing device 500 is shown, in accordance with an embodiment of the present invention. The computing device 500 is configured to perform classifier enhancement.

[0063] Computing device 500 may be embodied as any type of computational or computing device capable of performing the functions described herein, such as, but not limited to, a computer, a server, a rack-based server, a blade server, a workstation, a desktop computer, a laptop computer, a notebook computer, a tablet computer, a mobile computing device, a wearable computing device, a network appliance, a web appliance, a distributed computing system, a processor-based system, and / or a user electronic device. Additionally or alternatively, computing device 500 may be embodied as one or more compute sleds, memory sleds, or other racks, sleds, computing chassis, or other components of a physically separated computing device.

[0064] 6, computing device 600 illustratively includes a processor 610, an input / output subsystem 620, a memory 630, a data storage device 640, and a communications subsystem 650, and / or other components and devices typically found in a server or similar computing device. Of course, computing device 600 may, in other embodiments, include other or additional components (e.g., various input / output devices) such as those typically found in a server computer. Furthermore, in some embodiments, one or more of the illustrative components may be incorporated into or otherwise form part of another component. For example, memory 630, or portions thereof, may, in some embodiments, be incorporated into processor 610.

[0065] The processor 610 may be embodied as any type of processor capable of performing the functions described herein, and may be embodied as a single processor, multiple processors, a central processing unit (CPU), a graphics processing unit (GPU), a single or multi-core processor, a digital signal processor, a microcontroller, or other processor or processing / control circuitry.

[0066] Memory 630 may be embodied as any type of volatile or non-volatile memory or data storage capable of performing the functions described herein. During operation, memory 630 may store various data and software used during operation of computing device 600, such as an operating system, applications, programs, libraries, and drivers. Memory 630 is communicatively coupled to processor 610 via I / O subsystem 620 and may be embodied as circuits and / or components for facilitating input / output operations with processor 610, memory 630, and other components of computing device 600. For example, I / O subsystem 620 may be embodied as or otherwise include a memory controller hub, an input / output control hub, a platform controller hub, integrated control circuitry, firmware devices, communication links (e.g., point-to-point links, bus links, wires, cables, light guides, printed circuit board traces, etc.), and / or other components and subsystems for facilitating input / output operations. In some embodiments, the I / O subsystem 620 may form part of a system-on-chip (SOC) and be integrated with the processor 610, memory 630, and other components of the computing device 600 on a single integrated circuit chip.

[0067] Data storage 640 may be embodied as any type of device or apparatus configured for short-term or long-term storage of data, such as, for example, memory devices and circuits, memory cards, hard disk drives, solid-state drives, or other data storage devices. Data storage 640 may store program code 640A for container orchestration and program code 640B for managing communication methods within a distributed computing system. Communications subsystem 650 of computing device 600 may be embodied as any network interface controller or other communications circuitry, apparatus, or collection thereof that can enable communications between computing device 600 and other remote devices over a network. Communications subsystem 650 may be configured to achieve such communications using any one or more communications technologies (e.g., wired or wireless communications) and associated protocols (e.g., Ethernet, InfiniBand, Bluetooth, Wi-Fi, WiMAX, etc.).

[0068] As shown, computing device 600 may also include one or more peripheral devices 660. Peripheral devices 660 may include any number of additional input / output devices, interface devices, and / or other peripheral devices. For example, in some embodiments, peripheral devices 660 may include a display, a touch screen, graphics circuitry, a keyboard, a mouse, a speaker system, a microphone, a network interface, and / or other input / output devices, interface devices, and / or peripheral devices.

[0069] Of course, computing device 600 may include other elements (not shown) or omit certain elements, as would readily occur to one skilled in the art. For example, various other sensors, input devices, and / or output devices may be included in computing device 600, depending on the particular implementation of the same, as would be readily understood by one skilled in the art. For example, various types of wireless and / or wired input and / or output devices may be used. Furthermore, additional processors, controllers, memory, etc. may be utilized in a variety of configurations. These and other variations of processing system 600 will be readily contemplated by one skilled in the art in view of the teachings of the present invention provided herein.

[0070] The embodiments described herein may be entirely hardware, entirely software, or contain both hardware and software elements. In a preferred embodiment, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc.

[0071] Embodiments may include a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. A computer-usable or computer-readable medium may include any apparatus that stores, communicates, propagates, or transports a program for use by or in connection with an instruction execution system, apparatus, or device. The medium may be a magnetic, optical, electronic, electromagnetic, infrared, or semiconductor system (or apparatus or device) or propagation medium. The medium may include computer-readable storage media such as semiconductor or solid-state memory, magnetic tape, removable computer diskettes, random access memory (RAM), read-only memory (ROM), rigid magnetic disks, and optical disks.

[0072] Each computer program can be tangibly stored on a machine-readable storage medium or device (e.g., program memory or magnetic disk) readable by a general-purpose or special-purpose programmable computer to configure and control the operation of the computer when the storage medium or device is read by the computer to perform the procedures described herein. The system of the present invention can also be considered to be embodied in a computer-readable storage medium configured with a computer program, where the configured storage medium causes the computer to operate in a particular, predetermined manner to perform the functions described herein.

[0073] A data processing system suitable for storing and / or executing program code may include at least one processor coupled directly or indirectly to memory elements via a system bus. The memory elements may include local memory employed during the actual execution of the program code, bulk storage, and cache memory that provides temporary storage of at least some program code to reduce the number of times the code is retrieved from bulk storage during execution. Input / output or I / O devices (including but not limited to keyboards, displays, pointing devices, etc.) may be coupled to the system either directly or through intervening I / O controllers.

[0074] Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modems, and Ethernet cards are just a few of the types of network adapters currently available.

[0075] As employed herein, the terms “hardware processor subsystem” or “hardware processor” can refer to a processor, memory, software, or combination thereof that cooperate to perform one or more specific tasks. In useful embodiments, the hardware processor subsystem can include one or more data processing elements (e.g., logic circuits, processing circuits, instruction execution devices, etc.). The one or more data processing elements can be included in a central processing unit, an image processing unit, and / or a separate processor or computing element-based controller (e.g., logic gates, etc.). The hardware processor subsystem can include one or more on-board memories (e.g., cache, dedicated memory array, read-only memory, etc.). In some embodiments, the hardware processor subsystem can include one or more memories that can be on-board or off-board or dedicated for use by the hardware processor subsystem (e.g., ROM, RAM, basic input / output system (BIOS), etc.).

[0076] In some embodiments, the hardware processor subsystem may include and execute one or more software elements, which may include an operating system and / or one or more applications and / or specific code to achieve a particular result.

[0077] In other embodiments, the hardware processor subsystem may include dedicated, dedicated circuitry to perform one or more electronic processing functions to achieve a specified result. Such circuitry may include one or more application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), and / or programmable logic arrays (PLAs).

[0078] These and other variations of the hardware processor subsystem are also contemplated in accordance with embodiments of the present invention.

[0079] References in the specification to "one embodiment" or "one embodiment" of the present invention, as well as other variations thereof, mean that a particular feature, structure, characteristic, etc. described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, the appearances of the phrase "in one embodiment" or "in one embodiment," as well as any other variations thereof, in various places throughout this specification do not necessarily all refer to the same embodiment. However, it will be understood that features of more than one embodiment may be combined in light of the teachings of the present invention provided herein.

[0080] For example, in the case of "A / B," the use of any of the following " / ," "and / or," "at least one," such as "A and / or B" or "at least one of A and B" will be understood to be intended to encompass the selection of only the first listed alternative (A), or the selection of only the second listed alternative (B), or the selection of both alternatives (A and B). As a further example, in the case of "A, B, and / or C" and "at least one of A, B, and C," such language is intended to encompass the selection of only the first listed alternative (A), or the selection of only the second listed alternative (B), or the selection of only the third listed alternative (C), or the selection of only the first and second listed alternatives (A and B), the selection of only the first and third listed alternatives (A and C), the selection of only the second and third listed alternatives (B and C), or the selection of all three alternatives (A, B, and C). This can be expanded as many times as there are listed items.

[0081] The foregoing is understood in all respects to be illustrative and exemplary, but not restrictive, and the scope of the invention disclosed herein is to be determined not from the detailed description, but from the claims which are interpreted in accordance with the full breadth permitted by the patent laws. It will be understood that the embodiments shown and described herein are merely exemplary of the invention, and that those skilled in the art could make various modifications without departing from the scope and spirit of the invention. Various other feature combinations could be implemented by those skilled in the art without departing from the scope and spirit of the invention. Having thus described aspects of the invention with the detail and particularity required by the patent laws, what is desired to be claimed and protected by Letters Patent is set forth in the appended claims.

Claims

1. 1. A computer-implemented method for managing communications, comprising: Identifying 406 a system state in a distributed computing system including a first microservice communicating with a second microservice, the system state including information about packet size, frequency of data packets, and the zone and processing node on which the first microservice is running; associating communication methods with system states and identifying (408) communication methods responsive to the identified system states using a reinforcement learning model including a reward function based on a previous processing rate and a ratio of the difference between the previous processing rate and a new processing rate; and implementing (410) the identified communication method for the first microservice and the second microservice to transmit data using the identified communication method in communication between the first microservice and the second microservice.

2. 10. The method of claim 1, further comprising, after implementing the identified communication method, collecting updated system statistics and using the updated system statistics to repeat the steps of identifying a system state, identifying a communication method, and implementing the identified communication method.

3. The method of claim 1 , wherein identifying the communication method comprises selecting between an optimal method dictated by the reinforcement learning model and a random method.

4. The method of claim 1 , wherein the identified communication method is selected from the group consisting of m-server to n-client processes, a broker-based process, a bus, and shared memory.

5. The method of claim 1 , wherein the first microservice and the second microservice perform respective tasks in a video processing workload.

6. The method of claim 5 , further comprising: detecting a face in a video stream processed by the video processing workload; and performing a security action in response to detecting the face.

7. 10. The method of claim 1, further comprising: updating a reward value of the reinforcement learning model corresponding to the identified communication method using performance statistics collected after implementing the identified communication method.

8. 10. The method of claim 1, wherein determining the system state includes measuring communication statistics including at least one of data packet-related statistics and information about which zones and machines the first microservice and the second microservice are running on.

9. 1. A computer-implemented method for face detection, comprising: In a video processing workload, identifying 406 a system state in a distributed computing system including a first microservice communicating with a second microservice, the system state including information about packet size, frequency of data packets, and the zone and processing node on which the first microservice is running; associating communication methods with system states and identifying (408) communication methods responsive to the identified system states using a reinforcement learning model including a reward function based on a previous processing rate and a ratio of the difference between the previous processing rate and a new processing rate; Implementing (410) the identified communication method for the first microservice and the second microservice to transmit data using the identified communication method in communication between the first microservice and the second microservice; Detecting (308) a face in a video stream processed by the video processing workload; and performing a security action in response to detecting the face (312).

10. A system for managing communications a hardware processor (610); a memory (640) containing a computer program; The computer program, when executed by the hardware processor, causes the hardware processor to: Identifying 406 a system state in a distributed computing system including a first microservice communicating with a second microservice, the system state including information about packet size, frequency of data packets, and the zone and processing node on which the first microservice is running; associating communication methods with system states and identifying (408) communication methods responsive to the identified system states using a reinforcement learning model including a reward function based on a previous processing rate and a ratio of the difference between the previous processing rate and a new processing rate; and implementing (410) the identified communication method in order for the first microservice and the second microservice to transmit data using the identified communication method in communication between the first microservice and the second microservice.

11. 11. The system of claim 10, wherein the computer program further causes the hardware processor to perform the steps of collecting updated system statistics after implementing the identified communication method, and using the updated system statistics to repeat the steps of identifying a system state, identifying a communication method, and implementing the identified communication method.

12. The system of claim 10 , wherein the computer program further causes the hardware processor to perform a procedure for selecting between an optimal method dictated by the reinforcement learning model and a random method.

13. 11. The system of claim 10, wherein the identified communication method is selected from the group consisting of m-server to n-client processes, a broker-based process, a bus, and shared memory.

14. The system of claim 10 , wherein the first microservice and the second microservice perform respective tasks in a video processing workload.

15. 11. The system of claim 10, wherein the computer program further causes the hardware processor to execute a procedure of updating a reward value of the reinforcement learning model corresponding to the identified communication method using performance statistics collected after implementing the identified communication method.

16. 11. The system of claim 10, wherein the computer program further causes the hardware processor to perform a procedure for measuring communication statistics including at least one of data packet-related statistics and information about which zones and machines the first microservice and the second microservice are running on.

Citation Information

Patent Citations

  • Cloud-scale heterogeneous datacenter management infrastructure

    JP2015043202A

  • Micro service based data processing device, method, and program

    JP2018073400A

  • Information processing device, information processing system and information processing program

    JP2019169109A

  • Generic communication architecture for cloud microservice infrastructure

    US20190179663A1

  • Supporting communications in a stream processing platform

    US20200076912A1