Semi-automatic deployment of intra-service communication infrastructure
By using a semi-automated component topology generation method and machine learning algorithms to optimize component connections and data flow, the problem of inefficient deployment of new services in enterprise software infrastructure is solved, achieving efficient and dynamic resource management and performance optimization.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- ORACLE INT CORP
- Filing Date
- 2022-08-17
- Publication Date
- 2026-04-28
AI Technical Summary
In large enterprise-wide software infrastructures, data sharing and exchange are difficult, time-consuming, and resource-intensive when deploying new services, and existing methods are inefficient.
A semi-automated approach is adopted, utilizing machine learning algorithms and models to generate component topologies, optimize connections and data flow between components, and dynamically update component topologies based on user input and feedback. This includes a component analyzer, rule generator, topology generator, and system builder to optimize component placement and connections.
It improves the efficiency and accuracy of deploying new services, reduces manual intervention, dynamically adjusts component topology to adapt to environmental changes, and optimizes resource utilization and performance.
Smart Images

Figure CN121934849A_ABST
Abstract
Description
[0001] This application is a divisional application of invention patent application 202280094324.9 entitled "Semi-automatic Deployment of In-Service Communication Infrastructure" filed on August 17, 2022.
[0002] Incorporate references; discard declarations
[0003] The following applications are incorporated herein by reference: Application No. 17 / 742,626, filed May 12, 2022; and Application No. 63 / 325,106, filed March 29, 2022. The applicant hereby withdraws any declaration of abandonment of the scope of the claims in one or more parent applications or in their examination history, and informs the USPTO that the claims in this application may be broader than any claims in the parent applications. Technical Field
[0004] This disclosure relates to intra-service communication infrastructure deployed in a cloud environment. Background Technology
[0005] Deploying new services within a large, enterprise-wide software infrastructure is tricky, error-prone, and time-consuming. The difficulty increases further when data sharing and exchange are required, as creating these connections is both resource-intensive and time-intensive.
[0006] The methods described in this section are permissible but not necessarily methods that have been previously conceived or adopted. Therefore, unless otherwise indicated, no method described in this section should be assumed to be prior art simply because it is included in this section. Attached Figure Description
[0007] In the accompanying drawings, embodiments are illustrated by way of example rather than limitation. It should be noted that references to "a" or "an" embodiment in this disclosure do not necessarily refer to the same embodiment; they mean at least one. In the drawings:
[0008] Figure 1 The illustration shows a block diagram of an example system according to one or more embodiments;
[0009] Figure 2 The illustration shows an example system for generating a topology according to one or more embodiments;
[0010] Figure 3 The illustration shows an example system generation topology according to one or more embodiments;
[0011] Figure 4 The illustration depicts a set of example operations for generating topology and data flow according to one or more embodiments; and
[0012] Figure 5 A block diagram illustrating a computer system according to one or more embodiments is shown. Detailed Implementation
[0013] In the following description, numerous specific details are set forth for purposes of explanation in order to provide a thorough understanding. One or more embodiments may be practiced without these specific details. Features described in one embodiment may be combined with features described in different embodiments. In some examples, well-known structures and devices are explained with reference to block diagrams in order to avoid unnecessarily obscuring the invention.
[0014] 1. General Overview
[0015] 2. System Architecture
[0016] 3. Machine Learning Models
[0017] 4. Example Implementation
[0018] 5. Computer Networks and Cloud Networks
[0019] 6. Hardware Overview
[0020] 7. Miscellaneous; Extension
[0021] 1. General Overview
[0022] One or more embodiments generate a component topology that includes user-selected components and system-selected components. The system selects components necessary for the user-selected components. The system can select components to include in the component topology based on any characteristics of the user-selected components. Characteristics associated with user-selected components may include, but are not limited to, rules, prerequisites, data input types, and data output types. In the example, a user-selected component may require a specific type of data input that is not output by any other user-selected component. The system can select components that output that specific type of data and system-selected components into the set of components to be used to create the topology. In response to determining that a user-selected component is insufficient to perform a function to be performed by the component topology and that an additional component allows for the performance of that function, the system can select the additional component that was not included in the user-selected components.
[0023] The system can select implementation environments for user-selected components and system-selected components within the component topology. As an example, the system can select one of the following for each component: on-premise environment, off-premise environment, and cloud environment. Implementation environments can be selected based on criteria such as efficiency, performance, security, and accessibility.
[0024] One or more embodiments update the current component topology during runtime without pausing or terminating the components in the current topology. As an example, the system can add components to the current component topology and establish connections with components in the current component topology. Current components can be configured to periodically or continuously acquire data corresponding to any component. This data can be used to implement communication channels with attached components.
[0025] One or more embodiments describe updating component topologies based on machine learning algorithms and models configured to optimize determined component topologies based on implementations that utilize production data. The machine learning algorithms and models can receive feedback on the performance of the implemented topology and update the component set and / or data flows between them to improve the performance of the updated topology.
[0026] In one embodiment, in response to the optimized component topology, which excludes the removed component, being capable of providing outputs, desired functionality, purpose, or objectives from the topology, the system removes the component from the user-provided set of components. In another embodiment, the outputs, desired functionality, purpose, or objectives from the topology may be specified by the user. In an alternative embodiment, the outputs, desired functionality, purpose, or objectives from the topology may be derived, at least from the user-provided set of components.
[0027] One or more embodiments described in this specification and / or listed in the claims may not be included in this general overview section.
[0028] 2. System Architecture
[0029] One or more embodiments described below include infrastructure services that semi-automatically deploy in-service communication infrastructure in a cloud environment based on user input describing a set of partial components to be implemented. This user input can be used to determine which resources and / or components are needed in the topology and how these resources and / or components are connected within the topology.
[0030] For ease of discussion, reference is made to examples of components manufactured by one or more specific vendors. For instance, some examples include one or more components supplied by Oracle International. The various embodiments are not limited to the specific components manufactured by specific vendors used in these examples.
[0031] Figure 1 A block diagram of an example system 100 according to one or more embodiments is illustrated. Figure 1As illustrated, system 100 includes infrastructure service 114, which includes component analyzer 106, rule generator 108, topology generator 110, and system builder 112. In one or more embodiments, infrastructure service 114 may be implemented in hardware, software, or a combination thereof. In embodiments, infrastructure service 114 and / or one or more of its components may be provided as Software as a Service (SaaS). Infrastructure service 114 can generate and / or develop one or more architectures and / or services for multiple users and / or tenants. Some example architectures and / or services include, but are not limited to, communication services, networking, data processing, data pipeline expansion, data storage, content and media platform management, knowledge management, system and workflow automation, user application configuration, Internet of Things (IoT) management, user device management, information security, and resilience.
[0032] In one or more embodiments, infrastructure service 114 is configured to receive user input 102 via one or more interface components 104. Any type of interface component 104 can be used to receive user input 102, such as a website, virtual private network (VPN), the Internet, a remote application, etc.
[0033] In one or more embodiments, user input 102 may include a collection of resources and / or components intended to be included in a topology and / or architecture. For the remainder of the specification, user input 102 will be described as including a collection of components, but may include any combination of components, elements, modules, functions, resources, and / or processes, as will be understood by those skilled in the art. The topology or architecture is designed for at least one specific purpose and / or designed to perform some functionality. In one embodiment, user input 102 may include one or more specific purposes and / or desired functionality. In one or more embodiments, user input 102 may include one or more system dependencies and / or connections between at least two components specified in user input 102.
[0034] These system dependencies and / or connections can be used by the infrastructure service 114 to connect various components in the determined topology, as well as to determine which possible topology can connect the specified components as described in the user input 102, and whether the topology will be able to provide a specific purpose and / or desired functionality.
[0035] In one or more embodiments, component analyzer 106 is configured to analyze user input 102 to at least determine a critical or initial set of components specified in user input 102 for inclusion in a system-determined topology. Additional components may be required to perform one or more specific purposes and / or desired functionalities, and / or to interconnect the component sets according to one or more rules (as specified by rule generator 108). In one embodiment, some components specified in user input 102 may be identified by component analyzer 106 as duplicate, unnecessary, harmful, and / or unusable. In one embodiment, component analyzer 106 is configured not to include any of these identified components in the critical component set. However, where possible, component analyzer 106 will ensure that any topology generated by topology generator 110 includes every component specified in user input 102.
[0036] The component analyzer 106 can be implemented in hardware, software, or a combination thereof. After generating a set of key components, the component analyzer 106 passes this information to the rule generator 108 and the topology generator 110.
[0037] In one or more embodiments, rule generator 108 is configured to receive a set of key components determined by component analyzer 106 and generate one or more rules (where applicable) to ensure that any generated topology is functional, minimizes duplication, optimizes data flow, adheres to common practices and protocols, isolates tenant information, complies with security and privacy restrictions, connects components based on any interconnections determined in user input 102 (where available), and will perform one or more specific purposes and / or desired functions (where specified). Rule generator 108 may be implemented in hardware, software, or a combination thereof. After generating one or more rules, or in parallel with the operation of topology generator 110, rule generator 108 provides a set of rules to topology generator 110 for generating one or more component topologies 116.
[0038] In one or more embodiments, the topology generator 110 is configured to generate at least one component topology 116 including all key components, connecting components according to any specified interconnections (when available), and performing one or more specific purposes and / or desired functions (when specified). Multiple possible topologies may be generated for a given set of conditions. In one or more embodiments, an iterative process may be used to narrow down the range of possible topologies to obtain a preferred topology that optimizes connections, component and resource usage, minimizes latency and delay, and operates with maximum efficiency. Furthermore, in one or more embodiments, the topology generator 110 may utilize at least one machine learning model to generate the component topology 116 in a "best fitting" manner to conform to a set of rules provided by the rule generator 108.
[0039] The topology generator 110 can be implemented in hardware, software, or a combination thereof. After the topology generator 110 creates the component topology 116, it passes that information to the system builder 112.
[0040] In one or more embodiments, the system builder 112 is configured to construct a working architecture based on a component topology 116 that includes and optimizes data flows 118 between components. The system builder 112 considers and analyzes the location and hierarchy of various components within the component topology 116, as well as all necessary interconnections and dependencies among the various components within the component topology 116, to construct the working architecture to achieve one or more specific purposes and / or desired functionality. In one or more embodiments, the system builder 112 may utilize at least one machine learning model to generate the working architecture and / or the data flows 118 between components. Furthermore, an iterative process may be used to refine the generated component topology 116 constituting the working architecture and the data flows 118 between components over time, thereby further optimizing the product and improving the user experience while maintaining minimal user input throughout the process.
[0041] In one or more embodiments, the topology generator 110 and / or system builder 112 may utilize at least one machine learning model to generate component topology 116 and / or data flow 118 between components in various ways. In embodiments, one or more machine learning models may be provided by tenants, users, etc., via interface component 104 or some other input technology. In one or more embodiments, the topology generator 110 and / or system builder 112 may develop their own machine learning models based on one or more feedback loops, user input, historical performance, ratings, training, or combinations thereof.
[0042] Figure 2An example system 200 for generating topology structures is illustrated according to one or more embodiments. Figure 2 The various functions shown are described as being performed by the "system," but any combination of hardware and software can be used to perform the functions shown in the diagram. (Comparison) Figure 1 A more general description, in Figure 2 More detailed information about the various functions of system 200 is shown in the figure.
[0043] Refer again Figure 2 User 202 (such as an administrator, IT expert, IT manager, etc.) inputs at least a set 206 of components to be included in the topology to be determined by the system. In one or more embodiments, the set of components may be partial or incomplete. User 202 uses interface 204 (such as a GUI, website, VPN, microphone, pointing device, etc.) to input the set of components 206. User 202 may attempt to include every component that would be needed to complete a specific task, goal, calculation, function, or purpose. However, in some approaches, the set of components 206 may be incomplete and / or lack necessary components and / or may include unnecessary, duplicate, and / or harmful components. The inclusion and exclusion of components in the set of components 206 can be weighed against the desired functionality of the set of components to determine whether every necessary component is in the set of components 206 and whether there are any additional components.
[0044] In one or more embodiments, the component set 206 may also include metadata associated with each selected component, or this metadata may be entered separately by the user 202. Each user-selected component may be associated with corresponding metadata describing one or more characteristics of the individual component, such as name, functionality, elements necessary for use with the component, etc. In one example, the metadata may describe one or more inputs / outputs. In another example, the metadata may indicate any of the following for at least one input / output and / or the overall component: format, protocol, bandwidth, speed, throughput, etc.
[0045] In the example, metadata may include one or more rules that specify the conditions necessary or required for implementing a given component. For example, to use component w, system 200 must implement security component x, encryption component y, data compression component z, etc. Therefore, rules are not always generated by system 200 or its elements (e.g., rule generators), and may be supplemented or fully provided by one or more other sources, such as metadata associated with a component. In the method, one or more rules (or any other characteristics used to determine the topology) may be received, and system 200 will determine, based on the received one or more rules, which additional components are needed based on these characteristics (and possibly the desired functionality of the component set, when known).
[0046] In one or more embodiments, infrastructure service 208 receives component set 206 and generates topology 210 based on component set 206. Each component 212 in the determined topology 210 (e.g., component 212a, component 212b, ..., component 212n) is located relative to each other within the determined topology 210 and is appropriately interconnected to achieve a desired purpose or function. In one or more embodiments, the desired purpose or function may be provided by user 202 or derived from component set 206. In one or more embodiments, infrastructure service 208 may derive, compute, or otherwise determine the desired purpose or function based on historical preferences, possible configuration analysis, machine learning model analysis, etc.
[0047] Builder 214 analyzes topology 210 according to one or more rules 216 (e.g., rule 216a, rule 216b, ..., rule 216n) to generate at least one topology to place component set 206, one or more additional components, remove redundant or unnecessary components from component set 206, create appropriate interconnections therebetween, determine whether one or more functions 238 are needed to process results and / or intermediate values, and determine whether one or more applications 236 are needed to provide the desired purpose or functionality. Infrastructure service 208 generates rules 216 to ensure the creation of working architectures for tenants to implement on-premises 234 and / or remotely (e.g., in the cloud 240). Rules 216 can be generated based on any of the following: component set 206, desired purpose or functionality, and any interconnections and / or dependencies specified between the individual components 212.
[0048] Infrastructure service 208 determines which components will be placed locally 234 and which components will be placed remotely (e.g., in the cloud 240). Of course, the placement, interconnections, and inclusion relationships of some or all of the components 224, components 226, one or more object repositories 228, one or more streams 230, and one or more invokers 232 on the local 234, as well as the functions 238 and one or more applications 236 executed in the cloud 240, can be adjusted and / or modified based on the desired purpose or functionality for the topology, the requirements of changes made by user 202, and the data flow 218 entering the data pipeline 222. Figure 2 The topologies shown are merely examples and are not intended to limit the arrangement of any possible elements for the determined topologies.
[0049] In an example topology, a set of components 224 (e.g., components 224a, 224b, ..., 224n) is connected to data pipeline 222 for data ingestion. Data pipeline 222 receives data (e.g., data 218a, data 218b, ..., data 218n) from one or more sources, which may be collected and / or aggregated (e.g., set 220) before being delivered to data pipeline 222. In some embodiments, data 218 may be filtered according to one or more rules 216 before or after entering data pipeline 222.
[0050] In the example topology shown, component 224a provides data to stream 230, which is accessed by caller 232. Stream 230 and caller 232 are example types of components that can be included in a topology, among many others. In this example, each of component 224a, stream 230, and caller 232 is able to receive and send data to each other (bidirectional communication). However, in other examples, communication between one or more of these elements can be unidirectional. Furthermore, caller 232 communicates bidirectionally with function 238a in cloud 240, but this communication can also be unidirectional in some cases.
[0051] In this example topology, locally at 234, at least one database and / or object repository 228 receives data from data pipeline 222, and / or may receive data from one or more other components 224 and 226. Furthermore, a series of components 224 (e.g., component 224a, component 224b, ..., component 224n) process the data from data pipeline 222 and provide the processed data to components 226 (e.g., components 226a, ..., component 226n) and / or stream 230 and caller 232. Component 226 also processes the data locally at 234 before providing it to various functions 238 (e.g., function 238a, function 238b, ..., function 238n) in the cloud 240.
[0052] For example, component 224b provides data to component 226a and receives feedback or instructions directly from function 238b in cloud 240. However, this feedback may be provided to component 226a in one example, or passed from component 226a to component 224b in another example. Function 238b then processes the data according to its specific logic or programming and provides one or more results to application 236. Infrastructure service 208 has determined that the various functions 238 and one or more applications 236 provide an optimized topology to provide the desired purpose or functionality, and has therefore specified their placement and inclusion relationships, as shown in the example topology.
[0053] Locally 234, each of the individual components 224, 226, one or more object repositories 228, one or more streams 230, and one or more callers 232 can be arranged, positioned, connected, and / or isolated to achieve the desired purpose or function of the topology.
[0054] In the cloud 240, various functions 238 (e.g., function 238a, function 238b, ..., function 238n) can have any purpose, function, design, algorithm, computation, input, output, and / or parameters to perform one or more specified tasks. These functions 238 can provide one or more results to any component 224, component 226, or object repository 228 locally 234 and / or to one or more applications 236 or one or more object repositories in the cloud 240. In some examples, a series of functions 238 can be used to generate complex results based on one or more data inputs. Furthermore, additional functions 236 can be used to provide multi-level processing and complex determination for the example topology.
[0055] When the component set 206, the specified interconnections, dependencies, and / or the desired purpose or function of the topology change over time, at least one topology generated by the infrastructure service 208 can also be modified to reflect the differences in the input conditions of the builder 214 and rule 216. In some approaches, these changes can occur on-the-fly in the cloud 240 and on-premises 234 to respond to changing environments.
[0056] In one example, the data stream can be used as an asynchronous message bus, operating independently and decoupling components of a large system at its own speed. Data stream 230 is a component that can be used as an alternative to traditional file-scraping methods to help make critical operational data more readily available for indexing, analysis, and visualization. In another example, data stream 230 can capture activity (such as page views, searches, or other user actions) from a website or mobile application. This information can be used for real-time monitoring and analysis, as well as for offline processing and reporting in a data warehouse system. In yet another example, data stream 230 can serve as a unified entry point for cloud components to report their lifecycle events for auditing, accounting, and related activities.
[0057] A specific description of data stream 230 and its corresponding elements is a series of data transactions generated from clickstream data and aggregated in set 220. Examples of elements in the data stream may include web page requests, updates to shopping carts associated with user accounts, changes to user profiles, purchases, returns, and so on. Other examples of elements in data stream 230 include changes to streaming sensor data, such as data transmissions associated with changes in the steps taken, changes in altitude, location tracking coordinates, temperature, humidity, manufacturing process conditions, etc. Furthermore, data stream 230 may include similar events tracked in continuous time units (e.g., every 10 milliseconds (ms), 100 ms, 1 second, 1 minute, etc.).
[0058] Another example of elements in data flow 230 (of a processing pipeline or workflow) includes operations, analyses, or processes to be performed on a set of data items. Embodiments of a processing pipeline include a sequentially arranged set of algorithms that operate on corresponding elements in the set of data items. Yet another example of data flow 230 may include events, each an event being a vector representation of a data item. For example, an event (which serves as an algorithm in a first data flow) may operate on a corresponding data item event in a second data flow, thereby producing a third data flow of vector events, where each vector event is a representation of a corresponding non-vector data item event in the first data flow.
[0059] Furthermore, some data streams can be accessed and manipulated by other data streams and / or computational applications to transform events within a first data stream from one object type or data type to another. That is, a data stream can be continuously operated on, analyzed, and / or transformed multiple times to produce a desired result data stream. In some examples, this continuous processing is referred to as a "processing pipeline." In some examples, the result data stream may include vector representations of data items or transformed versions of data items (e.g., transformed into alternative data types or data representation structures). In other examples, the result data stream may include transformed data produced by operations on another data stream by one or more applications and / or algorithms (e.g., machine learning, document-to-vector, etc.).
[0060] Data streams can be generated based on correlations, examples of which include generating events (e.g., data transactions / updates) from common sources, common computing applications, common web pages, common transaction / data types, and / or common entities (e.g., enterprises or organizations). Correlated transactions can be aggregated together to form a data stream 230. In another example, the data stream of related events can then be processed by one or more machine learning applications to generate (e.g., via queries or real-time data trend monitoring) analytical interpretations, outcome data streams, and / or predictions.
[0061] Invoker 232 is a component that can implement client-side communication protocol activities that serve as a communication channel between applications, such as enterprise applications, distributed applications, cloud applications, etc. In one example, invoker 232 can be used for client-side Hypertext Transfer Protocol (HTTP) protocol activities to perform simple HTTP requests and invoke web services representing State Transfer (REST) and / or Simple Object Access Protocol (SOAP).
[0062] In another example, invoker 232 can be used to hide the details of calling within the application endpoint implementation. In this example, the container hands over the implementation of invoker 232 to the JAX-WS runtime, and the JAX-WS runtime invokes `invoke(java.lang.reflect.Method, java.lang.Object…)` to call the web service. Ultimately, invoker 232 makes the actual call to the web service on the endpoint instance. The container also injects the provided `WebServiceContext` and handles the call to the `javax.annotation.PostConstruct` method (if it exists) on the endpoint implementation.
[0063] In one or more embodiments, infrastructure service 208 may utilize at least one machine learning model to generate data flows between topology 210 and / or components in various ways. In embodiments, one or more machine learning models may be provided by tenants, users, etc., via interface 204 or some other input technology. In one or more embodiments, builder 214 and / or infrastructure service 208 may develop their own machine learning models based on one or more feedback loops, user input, historical performance, ratings, training, or a combination thereof.
[0064] Additional embodiments and / or examples related to computer networks are described in the section titled "Computer Networks and Cloud Networks" below.
[0065] In one or more embodiments, one or more components of system 100 and / or system 200 may be implemented on one or more digital devices. The term "digital device" generally refers to any hardware device that includes a processor. A digital device may refer to a physical device or virtual machine that executes an application. Examples of digital devices include computers, tablets, laptops, netbooks, servers, web servers, network policy servers, proxy servers, general-purpose servers, function-specific hardware devices, hardware routers, hardware switches, hardware firewalls, hardware network address translation (NAT), hardware load balancers, mainframes, televisions, content receivers, set-top boxes, printers, mobile handheld terminals, smartphones, personal digital assistants (PDAs), wireless receivers and / or transmitters, base stations, communication management equipment, routers, switches, controllers, access points, and / or client devices.
[0066] In one or more embodiments, system 100 and / or system 200 may include a data storage library ( Figure 1 and Figure 2 (Not shown). A data repository is any type of storage unit and / or device used to store data (e.g., file system, database, collection of tables, and / or any other storage mechanism). A data repository may include multiple different storage units and / or devices. These multiple different storage units and / or devices may be of the same type or located at the same physical site, or they may not be of the same type or located at different physical sites. A data repository can (e.g.) Figure 1 and Figure 2 One or more components (as illustrated) are implemented or executed on the same and / or separate computing systems. A data repository may be coupled to one or more other components via direct connection or network communication. Information can be implemented across any component (not just the data repository) on a platform.
[0067] In one or more embodiments, system 100 and / or system 200 may include a user interface (e.g., interface component 104, interface 204). A user interface refers to hardware and / or software configured to facilitate communication between a user and one or more components of system 100 and / or system 200. The interface renders user interface elements and receives input via these elements. Examples of interfaces include graphical user interfaces (GUIs), command-line interfaces (CLIs), haptic interfaces, and voice command interfaces. Examples of user interface elements include checkboxes, radio buttons, dropdown lists, list boxes, buttons, switches, text fields, date and time pickers, command lines, sliders, pages, and forms. Different components of the interface may be specified in different languages. For example, the behavior of user interface elements may be specified in a dynamic programming language such as JavaScript. The content of user interface elements may be specified in a markup language such as Hypertext Markup Language (HTML) or XML User Interface Language (XUL). The layout of user interface elements may be specified in a stylesheet language such as Cascading Style Sheets (CSS). Alternatively, the interface may be specified in one or more other languages such as Java, Python, C, or C++.
[0068] 3. Machine Learning Models
[0069] In one or more embodiments, a machine learning algorithm may be included in system 100 and / or system 200 for determining at least one topology, interconnections, rules, dependencies, and any other relevant features, aspects, and / or characteristics of an architecture generated by infrastructure services. The machine learning algorithm is capable of being iteratively learned using a training dataset to optimally map a set of input variables to one or more output variables of a target model. The training data includes datasets and associated labels. The datasets are associated with the input variables of the target model. The associated labels are associated with one or more output variables of the target model. For example, a label associated with a dataset in the training data may indicate whether the dataset belongs to a category in a set of possible dataset categories. The training data may be updated based on, for example, feedback on the accuracy of the current model. The updated training data may be fed back into the machine learning algorithm, which may then update the target model.
[0070] Machine learning algorithms can generate target models that best fit the training dataset to its labels. Specifically, a machine learning algorithm can generate a target model such that, when applied to the training dataset, the number of matches between the target model's results and the training data labels is maximized. Different target models can be generated based on different machine learning algorithms and / or different training datasets.
[0071] Machine learning algorithms can include both supervised and unsupervised components. Various types of algorithms can be used, such as linear regression, logistic regression, linear discriminant analysis, classification-mixture regression trees, Naive Bayes, K-nearest neighbors, learned vector quantization, support vector machines, bagging and random forests, boosting algorithms, backpropagation, and / or clustering.
[0072] In one embodiment, system 100 may include a training pipeline configured to train a machine learning model. Figure 1 (Not shown in the image). Training can occur after the infrastructure service 114 generates the component topology 116 and / or the data flow 118 between components. In another embodiment, system 200 may include a training pipeline configured to train a machine learning model. Figure 2 (Not shown in the image). Training can occur after the data flow between topology 210 and / or components is generated by infrastructure service 208. In another approach, training can occur before using the machine learning model on production data. Alternatively or additionally, training can occur continuously in a feedback loop that refines the machine learning model based on the results obtained using production data.
[0073] In a training pipeline, the scheduler can be configured to trigger the orchestrator to obtain information about the machine learning model. The orchestrator is configured to activate or "spin up" the pipeline's enterprise integrator model. The enterprise integrator model is configured to activate or "spin up" a job (e.g., a Kubernetes job) to perform training. This job executes to run training on the machine learning model and continues operating until one or more completion criteria are met (e.g., all training data has been processed). The orchestrator can be configured to poll the status of one or more training jobs.
[0074] In this embodiment, a scoring pipeline can be used in conjunction with a machine learning model. The scoring pipeline is configured to perform scoring using a trained machine learning model. The scoring pipeline generates one or more insights by applying the trained machine learning model to production data. Scoring is just one example of how machine learning can be used; other examples include, but are not limited to, generating one or more predictions, tuning parameters and / or results based on performance against production data, and / or using the output of the machine learning model to continue training the machine learning model.
[0075] To perform scoring, an orchestrator can initiate a scoring pipeline (e.g., within a corresponding Kubernetes pod). The scoring pipeline can be configured to pull data from its source (e.g., one or more data platforms, possibly outside a secure, modular machine learning platform) and store the data in a tenant-specific repository (e.g., an object repository associated with the tenant). The scoring pipeline (e.g., code executing within the Kubernetes pod) is configured to retrieve data from the repository and apply a machine learning model to that data. The scoring pipeline can also be configured to store the output of the machine learning model (e.g., data for new scores) in the object repository and / or transmit the output to an external data source.
[0076] In this embodiment, the secure modular machine learning platform includes one or more components as described herein that help isolate tenants and / or users from each other. The secure modular machine learning platform can be configured to execute an orchestrator on an existing cluster (e.g., a Kubernetes cluster) separated from tenant-specific clusters. Tenant-specific clusters can be configured to execute only tenant-provided images and / or machine learning models. The orchestrator can be configured to pass instructions to the pipeline to perform their respective functions.
[0077] In some examples (e.g., data science applications), the orchestrator can be configured to leverage an autonomous database for transaction processing (ATP). The orchestrator can be configured to use one or more platform-provided (“out-of-the-box”) machine learning models. Alternatively or additionally, the orchestrator can be configured to use a microservices framework, such as Minerva, manufactured by Oracle International. Alternatively or additionally, the orchestrator can be configured to trigger tenant-specific machine learning models within a tenant-specific cluster. Tenant-provided code executing in the tenant-specific cluster is configured to leverage one or more corresponding tenant-specific machine learning models. In an embodiment, all communication with the tenant-specific cluster (e.g., calls to initiate a scoring process) originates from the orchestrator’s “master” cluster.
[0078] In this embodiment, each tenant's code executes within its own Virtual Cloud Network (VCN). Each tenant's corresponding VCN can be isolated from other tenants' VCNs via firewall rules. Each VCN can be configured to accept only incoming data ("ingress") from tenant-specific clusters. Alternatively or additionally, each cluster can expose only a limited set of ports. For example, a cluster could expose only port 22 for Secure Shell (SSH), port 80 for Hypertext Transfer Protocol (HTTP), and port 443 for Secure HTTP (HTTPS). The platform may not include any mechanism that allows tenants' corresponding VCNs to communicate with each other.
[0079] 4. Example Implementation
[0080] For clarity, detailed examples will be described below. The components and / or operations described below should be understood as specific examples that may not be applied to certain embodiments. Therefore, the components and / or operations described below should not be construed as limiting the scope of any claims.
[0081] Figure 3 The illustration shows an example topology generated by system 300 according to one or more embodiments. Figure 3 One or more operations shown in the diagram can be modified, rearranged, or omitted entirely. Therefore, Figure 3 The specific order of operations illustrated in the diagram should not be construed as limiting the scope of one or more embodiments. Although the operations are... Figure 3 The description is as being executed by system 300, but any hardware, software, or combination thereof can be used to execute it in one or more embodiments. Figure 3 The various operations described in the document.
[0082] User 302 inputs component set 306 to be included in the topology to be determined by the system. Component set 306 may be incomplete in one method, and / or may include irrelevant components in the method. User 302 enters component set 306 using website 304.
[0083] In one or more embodiments, the component set 306 may also include metadata associated with each selected component, or the metadata may be entered separately by the user 302. Each user-selected component may be associated with corresponding metadata describing one or more characteristics of the individual component, such as name, functionality, elements necessary for use with the component, etc. In one example, the metadata may describe one or more inputs / outputs. In another example, the metadata may indicate any of the following: format, protocol, bandwidth, speed, throughput, etc., of at least one input / output and / or the overall component.
[0084] In the example, metadata may include one or more rules that specify the conditions necessary or required for implementing the corresponding component. For example, to use component w, system 300 must implement security component x, encryption component y, data compression component z, etc. Therefore, rules are not always generated by system 300 or its elements (e.g., rule generators), and may be supplemented or fully provided by one or more other sources, such as metadata associated with the component. In the method, one or more rules (or any other characteristics used to determine the topology) may be received, and system 300 will determine, based on the received one or more rules, which additional components are needed based on these characteristics (and possibly the desired functionality of the component set, when known).
[0085] In one or more embodiments, infrastructure service 308 receives component set 306 and generates one or more topologies 310 based on component set 306, each topology including each component from component set 306 arranged to perform a specific function or purpose. In this example, component set 306 includes Oracle International Maxymiser 312, Oracle International Unity 314, and a webhook 316. Furthermore, there are interconnections from Unity 314 to Maxymiser 312, as indicated by user 302. For simplicity, this example includes only three components; however, when developing a complete architecture, user 302 can indicate many more components, complexities, interconnections, and dependencies.
[0086] The builder 318 component of infrastructure service 308 determines at least one topology 310, which includes the requested components: Maxymiser 312, Unity 314, and network hooks 316, as well as the interconnections from Unity 314 to Maxymiser 312. The determination of various network topologies 310 is based on one or more rules 320, determined by infrastructure service 308, to ensure that data flow between various components is feasible, inputs and outputs match, necessary data transformations and modifications between components are performed, and so on. After creating various topologies, infrastructure service 308 selects the best topology for performing a specific function or purpose to generate the architecture.
[0087] A topology 310 is determined and selected, and then the system is implemented in local 340 and / or cloud 350 according to the selected topology 310. Subsequently, production data 322 from one or more sources is received and placed into a set 324, from which a data pipeline 326 is generated in the method. As shown in this example, three streams 328, 332, and 336 exist in local 340, where streams 328 and 332 receive data from data pipeline 326, while stream 336 receives processed data from caller 334. Each stream 328, 332, and 336 feeds to corresponding callers 330, 334, and 338, which deliver data to various functions established in cloud 350 according to the selected topology 310. As shown, caller 330 provides data to network hook function 344, caller 334 sends and receives data with Unity function 346, and caller 338 sends and receives data with Maxymiser function 348. Because topology 310 requires interconnections from Unity 314 to Maxymiser 312, Unity function 346 provides data back to caller 334, which then passes the data to stream 336 for caller 338, which in turn passes it to Maxymiser function 348, thus providing the necessary interconnections for topology 310.
[0088] Each function in cloud 350 provides one or more results to application 342, which is selected and / or configured by infrastructure service 308 to use one or more results of various functions to perform specific functions or purposes assigned to topology 310.
[0089] As the specific purpose or function of the component set 306, the specified interconnections, dependencies, and / or topology changes over time, at least one topology 310 generated by the infrastructure service 308 can also be modified to reflect the differences in the input conditions of the builder 318 and rule 320. In some approaches, these changes can occur immediately in the cloud 350 and on-premises 340 to respond to changing environments. Furthermore, the infrastructure service 308 can iteratively modify the topology 310 to refine and improve its operation, efficiency, resource usage, and other measurable quality, and / or generate additional possible topologies in an attempt to improve the selected topology 310.
[0090] Figure 4 The illustration shows a set of example operations 400 for generating topology and data flow according to one or more embodiments. Figure 4 One or more operations shown in the diagram can be modified, rearranged, or omitted entirely. Therefore, Figure 4The specific order of operations illustrated in the diagram should not be construed as a limitation on the scope of one or more embodiments. Although the operations are... Figure 4 The description is as being performed by the system, but any hardware, software, or combination thereof can be used to perform the set of operations 400 in one or more embodiments.
[0091] In operation 402, the system receives user input, which includes at least a first set of components to be used to define the component topology. The user input may also include interconnections between one or more components, dependencies between one or more components, the order or sequence of components, outputs from the first set of components, desired functionality, purpose, or goal, etc. In embodiments, any and / or all of this information may be inferred, identified, and / or determined solely based on the first set of components or also based on other available information such as historical preferences, machine learning models, ratings, past results, the identity of the requester, the activity to be performed, etc. In operations 404-412, the system generates the component topology based on the component set.
[0092] In one embodiment, the first set of components may be a selection of commercially available products from one or more software / architecture / networking vendors. These components are selected to achieve the objectives of the enterprise or organization.
[0093] In operation 404, the system identifies one or more characteristics describing each specific component of the first set of components. Characteristics may include any relevant information about the component, such as name, function, source, number of inputs, number of outputs, names and / or parameters of values associated with the specific component, one or more data input types for the specific component, one or more data output types for the specific component, rules associated with the specific component, necessary conditions associated with the specific component, constraints for the specific component, other types of components associated with the specific component, etc. Components may be of any type known in the art, such as streams, object repositories, databases, callers, consumers, functional blocks, collectors, parsers, filters, etc.
[0094] In operation 406, the system determines whether additional components (not included in the first component set) are needed to connect the first component set, such as to achieve a desired function, purpose, goal, or output. In one embodiment, this determination is based on one or more characteristics associated with each component in the first component set. In another embodiment, the determination may also consider resources available locally and / or in the cloud (potentially unknown to the user), components that are more efficient or perform better than those specified in the first component set, components that perform multiple tasks specified by the components in the first component set, interconnection constraints and / or rules that affect how the components in the first component set can be interconnected, etc.
[0095] Additional components can belong to the types specified in the first set of components or to components of different types. Furthermore, additional components can be selected to ensure that, once implemented in an on-premises and / or cloud architecture, all components in the first set can work together, communicate properly, share data, protect data and privacy, and achieve the desired functionality, purpose, goal, or output.
[0096] In operation 408, in response to the system determining that additional components are needed, the system selects additional components to include in the second component topology. The selection of the second component can be based on any relevant information available to the system, and in one embodiment includes: a) one or more characteristics associated with each component of the first component set, and b) one or more characteristics of the additional component. When attempting to design a topology capable of achieving desired functionality, purpose, objective, or output, the characteristics of the additional component can be compared with the needs, deficiencies, problems, and / or inefficiencies in the first component set.
[0097] According to one or more embodiments, the system selects an implementation environment for additional components and / or a first set of components. The implementation environment can be selected based on any relevant information, such as the physical location of the components, the cost of acquiring and / or implementing the components in different environments, the necessary or permissible order or sequence of the components, the desired functionality, purpose, objective, or output, etc. Any available environment can be specified, such as a local environment, a non-local environment, a split-installation environment, a remote computing environment, and / or a cloud environment. In one embodiment, the component topology can be distributed across different environments.
[0098] In one or more embodiments, in response to determining that an additional component is associated with a first data input type that matches a first data output type corresponding to a first component in a first set of components, the system selects the additional component. In other words, the output of a component can be used to select a second component to be added to the topology based on the matching of the input of the second component with the output of the first component. In this method, the additional component will be placed at a location in the topology that receives data from the first component.
[0099] Various data input and output types can be used with various components and can be based on any possible differences, such as data protocol, data format, data size, data transfer rate, physical connection type, hardware- or software-based implementation of the component, etc.
[0100] In another embodiment, the system may select an additional component in response to determining that no component in the first component set is associated with any data input type that matches the first data output type corresponding to the first component in the first component set. In other words, the system may determine that the data input types within the first component set are insufficient to accept data from a specific data output type of the first component. Therefore, the system will select a component configured to accept the data output type of the first component as input. The system will then connect the output of the first component to the input of the additional component.
[0101] In one or more embodiments, in response to determining that an additional component is associated with a first data output type that matches a first data input type corresponding to a first component in a first set of components, the system selects the additional component. In other words, the input of a component can be used to select a second component to be added to the topology based on the fact that the output of the second component matches the input of the first component. In this method, the additional component is placed in the topology at a location that provides data to the first component.
[0102] In another embodiment, the system may select an additional component in response to determining that no component in the first component set is associated with any data output type that matches the first data input type corresponding to the first component in the first component set. In other words, the system may determine that the data output types within the first component set are insufficient to provide data to a specific data input type of the first component. Therefore, the system will select a component configured to provide data corresponding to the data input type of the first component as its output. The system will then connect the input of the first component to the output of the additional component.
[0103] According to one or more embodiments, the system selects additional components based on the data input type of the data to be transmitted to the component topology. In other words, when selecting additional components to add to the component topology, data in the data pipeline is taken into consideration, and may include applications, functions, or some other type of component.
[0104] In one embodiment, the system can generate a second component topology by modifying the previous component topology, thereby creating a second component topology that improves upon the previous topology in some respects (e.g., being able to actually perform the desired functions, purposes, goals, or outputs, operating faster, operating more efficiently, operating at a lower cost, operating with fewer components, operating with more reliable components, etc.).
[0105] In another embodiment, the second component topology may be generated by the system at runtime while executing components in the previous component topology, and the operation of the previous component topology is not interrupted during the generation of the second component topology until the system transitions to the second component topology in execution.
[0106] In operation 410, the system determines, based on the selection of the second component,: a) a second component topology, including the first component set and additional components, and b) data flow between components in the second component topology. The data flow between components may be based on the order, sequence, interconnections, and / or dependencies between at least some of these components to achieve outputs, desired functions, purposes, or objectives from the second component topology.
[0107] In response to the system determining that no additional components are required (e.g., to achieve a desired function, purpose, goal, or output), the system determines in operation 412: a) a first component topology, including a first set of components, and b) data flows between components in the first component topology. The data flows between components may be based on the order, sequence, interconnections, and / or dependencies between at least some of these components to achieve an output, desired function, purpose, or goal from the first component topology.
[0108] In one embodiment, before selecting additional components, the system may determine that the first set of components is insufficient to complete any topology that allows components to operate together, perform the necessary tasks or functions, and / or achieve the desired functionality, purpose, goal, or output. This determination may be based on several criteria not being met, such as maximum total execution time, maximum or minimum number of cycles, each component in the first set not being able to communicate with another component in any topology, execution cost exceeding a threshold, etc. After making this determination, the system may determine whether removing one or more components, adding one or more components, and / or replacing one or more components increases the likelihood of achieving the desired functionality, purpose, goal, or output from the new topology and the likelihood that the execution of the component topology meets all the criteria. The system may make these determinations iteratively until a topology capable of performing as required is selected.
[0109] Furthermore, after implementing the topology, the system can monitor its performance to determine if a better topology is available for performing the desired function, purpose, objective, or output. For example, the system can determine that a topology can actually perform the desired function, purpose, objective, or output faster, more efficiently, at a lower cost, using fewer components, using more reliable components, etc. If the better topology is determined, the system can promptly modify the implementation to align with the improved topology to enhance the performance of the implemented solution. Machine learning algorithms and / or models can be used to assist in making these determinations and / or proposing additional topologies and data flows between components within those additional topologies, as described in one or more embodiments herein.
[0110] In another embodiment, the system may receive updated, modified, and / or additional sets of components from which a topology is created. For an updated set of components, the system may modify the existing topology to accommodate the changes made to the previously received set of components, and may work iteratively to converge to an optimally fitted topology to achieve the desired functionality, purpose, objective, or output. For a new set of components, the system may again perform operation 400 to provide a new topology that conforms to all necessary conditions for the user and the available installation environment.
[0111] In one or more embodiments, the system receives second user input that specifies and / or includes functionality for a first set of components and / or a component topology. This functionality describes the overall purpose of the topology, e.g., its function as a whole. In these embodiments, in response to determining that one or more additional components are necessary to implement the functionality of the component topology, the system may select any necessary additional components.
[0112] In one embodiment, the system can optimize the topology by determining which component can accept output from a specified component in a first component set. For example, if the component set includes network hooks, then a component configured to accept all output from network hooks can be selected as an additional component, even if it causes redundancy and / or unavailability of different components in the component set. In this case, simply removing the redundant / unused components from the topology will result in a more optimized component topology for implementation. In another example, assuming Oracle Unity is selected as a component, and a specific component is also specified in the first component set that can accept one of the outputs from Unity, then the selected additional component could be a copy of that specific component to accept other outputs from Unity.
[0113] In one or more embodiments, the system may receive a second user input including an updated set of components. In response to this second user input, the system determines which components from the first set of components have been removed or added to form the updated set of components. Based on this information, the system selects one or more first components to add to a second topology and / or one or more second components to remove from the second component topology. The selection of added or removed components is based on: a) one or more characteristics associated with each first component, b) one or more characteristics associated with each second component, and c) one or more characteristics of the components removed or added from the first set of components. In this way, the system can respond to all changes made to the first set of components when designing a new topology for arranging the updated set of components, and optimizing the topology based on the characteristics of the added / removed / remaining components in the updated set of components. In the method, the system uses this information to determine: a) a third topology of components (based on the first set of components, additional components, the one or more first components, and the one or more second components), and b) the data flow between components in the third component topology.
[0114] 5. Computer Networks and Cloud Networks
[0115] In one or more embodiments, a computer network provides connectivity between a set of nodes. Nodes may be local and / or remote relative to each other. Nodes are connected by a set of links. Examples of links include coaxial cable, unshielded twisted-pair cable, copper cable, fiber optic cable, and virtual links.
[0116] A subset of nodes implements a computer network. Examples of such nodes include switches, routers, firewalls, and Network Address Translation (NAT). Another subset of nodes uses a computer network. Such nodes (also called "hosts") can execute client processes and / or server processes. Client processes issue requests for computer services (such as executing a specific application and / or storing a specific amount of data). Server processes respond by performing the requested service and / or returning the corresponding data.
[0117] A computer network can be a physical network, including physical nodes connected by physical links. A physical node is any digital device. A physical node can be a function-specific hardware device, such as a hardware switch, hardware router, hardware firewall, and hardware NAT. Additionally or optionally, a physical node can be a general-purpose machine configured to run various virtual machines and / or applications that perform corresponding functions. A physical link is the physical medium connecting two or more physical nodes. Examples of links include coaxial cable, unshielded twisted-pair cable, copper cable, and fiber optic cable.
[0118] Computer networks can be overlay networks. An overlay network is a logical network implemented on top of another network (e.g., a physical network). Each node in an overlay network corresponds to a corresponding node in the underlying network. Therefore, each node in an overlay network is associated with both an overlay address (addressing to the overlay node) and an underlying address (addressing to the underlying node implementing the overlay node). Overlay nodes can be digital devices and / or software processes (such as virtual machines, application instances, or threads). The links connecting overlay nodes are implemented as tunnels through the underlying network. Overlay nodes at either end of the tunnel treat the underlying multi-hop paths between them as a single logical link. Tunneling is performed through encapsulation and decapsulation.
[0119] In this embodiment, the client may be local and / or remote to the computer network. The client may access the computer network through other computer networks, such as a private network or the Internet. The client may use a communication protocol, such as Hypertext Transfer Protocol (HTTP), to send requests to the computer network. Requests are sent through interfaces, such as client interfaces (such as web browsers), program interfaces, or application programming interfaces (APIs).
[0120] In this embodiment, a computer network provides connectivity between clients and network resources. Network resources include hardware and / or network resources configured to execute server processes. Examples of network resources include processors, data storage, virtual machines, containers, and / or software applications. Network resources are shared among multiple clients. Clients independently request computing resources from the computer network. Network resources are allocated on demand to requesting and / or clients. The network resources allocated to each requesting and / or client can be scaled up or down, for example, based on (a) computing resources requested by a specific client, (b) aggregated computing services requested by a specific tenant, and / or (c) aggregated computing services requested by the entire computer network. Such a computer network may be referred to as a "cloud network."
[0121] In this embodiment, a service provider offers a cloud network to one or more end users. Various service models can be implemented by the cloud network, including but not limited to Software as a Service (SaaS), Platform as a Service (PaaS), and Infrastructure as a Service (IaaS). In SaaS, the service provider provides end users with the ability to use the service provider's applications, which execute on network resources. In PaaS, the service provider provides end users with the ability to deploy custom applications on network resources. Custom applications can be created using programming languages, libraries, services, and tools supported by the service provider. In IaaS, the service provider provides end users with the ability to provision processing, storage, networking, and other basic computing resources provided by network resources. Any application, including operating systems, can be deployed on network resources.
[0122] In embodiments, various deployment models can be implemented by computer networks, including but not limited to private clouds, public clouds, and hybrid clouds. In a private cloud, network resources are provisioned for the exclusive use of a specific group of one or more entities (the term "entity" as used herein refers to a company, organization, person, or other entity). The location of the network resources for the specific group of entities can be local and / or remote. In a public cloud, cloud resources are provisioned to multiple independent entities (also referred to as "tenants" or "customers"). The computer network and network resources therein are accessed by clients corresponding to different tenants. Such a computer network can be referred to as a "multi-tenant computer network." Several tenants can use the same specific network resource at different times and / or simultaneously. The location of the network resource for a tenant can be local and / or remote. In a hybrid cloud, the computer network comprises both private and public clouds. The interface between the private and public clouds allows for the portability of data and applications. Data stored in the private cloud and data stored in the public cloud can be exchanged through the interface. Applications implemented in the private cloud and applications implemented in the public cloud can be interdependent. Retrievals from applications in the private cloud to the public cloud (and vice versa) can be performed through the interface.
[0123] In this embodiment, the tenants of a multi-tenant computer network are independent of each other. For example, one tenant's business or operations may be separated from those of another tenant. Different tenants may have different network requirements for the computer network. Examples of network requirements include processing speed, data storage capacity, security requirements, performance requirements, throughput requirements, latency requirements, resilience requirements, quality of service (QoS) requirements, tenant isolation, and / or consistency. The same computer network may need to implement different network requirements demanded by different tenants.
[0124] In one or more embodiments, in a multi-tenant computer network, tenant isolation is implemented to ensure that applications and / or data from different tenants are not shared with each other. Various tenant isolation methods can be used.
[0125] In this embodiment, each tenant is associated with a tenant ID. Each network resource in a multi-tenant computer network is tagged with a tenant ID. A tenant is only allowed access to a specific network resource if the tenant and the specific network resource are associated with the same tenant ID.
[0126] In this embodiment, each tenant is associated with a tenant ID. Each application implemented by the computer network is identified by the tenant ID. Additionally or optionally, each data structure and / or dataset stored by the computer network is identified by the tenant ID. A tenant is only allowed to access a specific application, data structure, and / or resource if the tenant and the specific application, data structure, and / or dataset are associated with the same tenant ID.
[0127] As an example, each database implemented in a multi-tenant computer network can be labeled with a tenant ID. Only the tenant associated with the corresponding tenant ID can access the data in a particular database. As another example, each entry in a database implemented in a multi-tenant computer network can be labeled with a tenant ID. Only the tenant associated with the corresponding tenant ID can access the data in a particular entry. However, the database can be shared by multiple tenants.
[0128] In this embodiment, the subscription list indicates which tenants are authorized to access which applications. For each application, a list of tenant IDs of tenants authorized to access that application is stored. A tenant is only allowed to access a specific application if its tenant ID is included in the subscription list corresponding to that specific application.
[0129] In this embodiment, network resources corresponding to different tenants (such as digital devices, virtual machines, application instances, and threads) are isolated to tenant-specific overlay networks maintained by a multi-tenant computer network. As an example, data packets from any source device within a tenant overlay network can be transmitted only to other devices within the same tenant overlay network. Encapsulation tunneling is used to prevent any transmission from a source device on one tenant overlay network to devices in other tenant overlay networks. Specifically, data packets received from the source device are encapsulated within an outer data packet. The outer data packet is transmitted from a first encapsulation tunnel endpoint (communicating with the source device in the tenant overlay network) to a second encapsulation tunnel endpoint (communicating with the destination device in the tenant overlay network). The second encapsulation tunnel endpoint decapsulates the outer data packet to obtain the original data packet from the source device. The original data packet is transmitted from the second encapsulation tunnel endpoint to the destination device within the same specific overlay network.
[0130] 6. Hardware Overview
[0131] According to one embodiment, the techniques described herein are implemented by one or more dedicated computing devices. The dedicated computing device may be hardwired to execute the techniques, or may include digital electronic devices such as one or more application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), or network processing units (NPUs) persistently programmed to execute the techniques, or may include one or more general-purpose hardware processors programmed to execute the techniques according to program instructions in firmware, memory, other storage devices, or combinations thereof. Such a dedicated computing device may also implement the techniques by combining custom hardwired logic, ASICs, FPGAs, or NPUs with custom programming. The dedicated computing device may be a desktop computer system, a portable computer system, a handheld device, a network device, or any other device that includes hardwired and / or program logic to implement the techniques.
[0132] For example, Figure 5 This is a block diagram illustrating a computer system 500 on which embodiments of the invention can be implemented. The computer system 500 includes a bus 502 or other communication mechanism for transmitting information, and a processor 504 coupled to the bus 502 for processing information. The hardware processor 504 may be, for example, a general-purpose microprocessor.
[0133] Computer system 500 may also include main memory 506 (such as random access memory (RAM) or other dynamic storage devices) coupled to bus 502 for storing information and instructions to be executed by processor 504. Main memory 506 may also be used to store temporary variables or other intermediate information during the execution of instructions to be executed by processor 504. When stored in non-transitory storage media accessible to processor 504, such instructions make computer system 500 a special-purpose machine customized to perform the operations specified in the instructions.
[0134] Computer system 500 also includes read-only memory (ROM) 508 or other static storage device coupled to bus 502 for storing static information and instructions for processor 504. Storage device 510 (such as a disk or optical disk) is provided and coupled to bus 502 for storing information and instructions.
[0135] Computer system 500 can be coupled to display 512 (such as a cathode ray tube (CRT)) via bus 502 for displaying information to the computer user. Input device 514, including alphanumeric and other keys, is coupled to bus 502 for transmitting information and command selections to processor 504. Another type of user input device is cursor control 516 (such as a mouse, trackball, or arrow keys) for transmitting information and command selections to processor 504 and for controlling cursor movement on display 512. This input device typically has two degrees of freedom on two axes (a first axis (e.g., x-axis) and a second axis (e.g., y-axis)), allowing the device to specify a position in a plane.
[0136] Computer system 500 may implement the techniques described herein using custom hardwired logic, one or more ASICs or FPGAs, firmware, and / or program logic, which, when combined with the computer system, enable or program the computer system 500 into a special-purpose machine. According to one embodiment, the techniques herein are executed by computer system 500 in response to processor 504 executing one or more sequences of one or more instructions contained in main memory 506. Such instructions may be read into main memory (506) from another storage medium, such as storage device 510. Executing the sequence of instructions contained in main memory 506 causes processor 504 to perform the processing steps described herein. In alternative embodiments, hardwired circuitry may be used in place of or in combination with software instructions.
[0137] As used herein, the term "storage medium" refers to any non-transitory medium that stores data and / or instructions that enable a machine to operate in a specific manner. Such storage media can include non-volatile media and / or volatile media. Non-volatile media include, for example, optical discs or magnetic disks (such as storage device 510). Volatile media include dynamic memory (such as main memory 506). Common forms of storage media include, for example, floppy disks, flexible disks, hard disks, solid-state drives, magnetic tapes, or any other magnetic data storage media, CD-ROMs, any other optical data storage media, any physical media with a hole pattern, RAM, PROMs, and EPROMs, FLASH-EPROMs, NVRAMs, any other memory chips or tapes, content-addressable memory (CAM), and tri-state content-addressable memory (TCAM).
[0138] Storage media are distinct from transmission media but can be used in combination with them. Transmission media participate in the transfer of information between storage media. For example, transmission media include coaxial cables, copper wires, and optical fibers, including cables containing bus 502. Transmission media can also take the form of sound waves or light waves, such as those generated during radio wave and infrared data communication.
[0139] Various forms of media can be used to carry one or more sequences of instructions to processor 504 for execution. For example, instructions may initially be carried on a disk or solid-state drive of a remote computer. The remote computer can load the instructions into its dynamic memory and transmit them over a telephone line using a modem. A modem local to computer system 500 can receive data over the telephone line and use an infrared transmitter to convert the data into an infrared signal. An infrared detector can receive the data carried in the infrared signal, and appropriate circuitry can place the data on bus 502. Bus 502 carries the data to main memory 506, from which processor 504 retrieves and executes the instructions. Instructions received by main memory 506 may be optionally stored on storage device 510 before or after execution by processor 504.
[0140] Computer system 500 may also include a communication interface 518 coupled to bus 502. Communication interface 518 provides bidirectional data communication coupled to network link 520, which connects to local network 522. For example, communication interface 518 may be an Integrated Services Digital Network (ISDN) card, a wired modem, a satellite modem, or a modem intended to provide data communication connectivity to a corresponding type of telephone line. As another example, communication interface 518 may be a local area network card intended to provide data communication connectivity to a compatible local area network (LAN). A wireless link may also be implemented. In any such implementation, communication interface 518 transmits and receives electrical, electromagnetic, or optical signals carrying streams of digital data representing various types of information.
[0141] Network link 520 typically provides data communication to other data devices via one or more networks. For example, network link 520 can provide a connection via local network 522 to host 524 or to a data device operated by a network service provider (ISP) 526. ISP 526 then provides data communication services via a global packet data network (now generally referred to as the "Internet" 528). Both local network 522 and Internet 528 use electrical, electromagnetic, or optical signals carrying digital data streams. Signals through various networks and signals on network link 520 and passing through communication interface 518 (carrying digital data to and from computing system 500) are examples of transmission media.
[0142] Computer system 500 can send messages and receive data, including program code, through one or more networks, network links 520, and communication interfaces 518. In the Internet example, server 530 can transmit requested code for an application via the Internet 528, ISP 526, local network 522, and communication interface 518.
[0143] The received code can be executed by processor 504 when it is received, and / or stored in storage device 510 or other non-volatile memory for later execution.
[0144] 7. Miscellaneous; Extension
[0145] The embodiments relate to a system having one or more devices including a hardware processor and configured to perform any of the operations described herein and / or any of the following claims.
[0146] In an embodiment, the non-transitory computer-readable storage medium includes instructions that, when executed by one or more hardware processors, cause to perform any of the operations described herein and / or as described in any of the claims.
[0147] Any combination of the features and functions described herein may be used according to one or more embodiments. In the foregoing specification, embodiments have been described with reference to numerous specific details that vary by implementation. Therefore, the specification and drawings are to be regarded in an illustrative rather than restrictive sense. The only and unique features of the scope of the invention, and the scope of the invention as desired by the applicant, are the literal and equivalent scope of the set of claims set forth in this application, in the specific form set forth in the claims, including any subsequent modifications.
Claims
1. A non-transitory computer-readable medium comprising instructions that, when executed by at least one hardware processor, cause to perform the following operations: Receive user input, wherein the user input identifier is a set of user-selected components to be used to define the component topology; The component topology is generated at least in the following ways: For the user to select a specific component from the component set, identify one or more characteristics, said one or more characteristics including: The data output type corresponding to the specific component; Determine that the data output type corresponding to the specific component matches the data input type corresponding to the additional component; In response to determining that the data output type corresponding to the specific component matches the data input type corresponding to the additional component: The system selects the additional components to be included in the component topology; and The system determines that: a) the component topology includes the user-selected component set and the additional components.
2. The non-transitory computer-readable medium of claim 1, wherein the operation further comprises: Before selecting the additional component, it is determined that none of the other user selection components in the set of user selection components have the data input type of the additional component.
3. The non-transitory computer-readable medium of claim 1, wherein determining the component topology further comprises: The system determines that: a) the component topology includes the user-selected component set and the additional components, and b) the data flow corresponding to the component topology.
4. The non-transitory computer-readable medium of claim 1, wherein the operation further comprises, prior to selecting the additional component: The system determines that the set of user-selected components is insufficient to complete any component topology.
5. The non-transitory computer-readable medium of claim 1, wherein the operation further comprises: Select an implementation environment for the add-on component, the implementation environment including one of the following: local environment, non-local environment and / or cloud environment.
6. The non-transitory computer-readable medium of claim 1, wherein the operation further comprises: Receive second user input, which includes the functionality of the component topology. The system selects the additional component in response to determining whether the additional component is necessary for the functionality of the component topology.
7. The non-transitory computer-readable medium of claim 1, wherein the system further selects the additional component based on the data input type of the data to be transmitted to the component topology.
8. The non-transitory computer-readable medium of claim 1, wherein generating the component topology includes modifying a previous component topology to generate the component topology.
9. The non-transitory computer-readable medium of claim 8, wherein the system generates the component topology at runtime while components in the previous component topology are executed without interruption during the generation of the component topology.
10. A non-transitory computer-readable medium comprising instructions that, when executed by at least one hardware processor, cause to perform the following operations: Receive user input, wherein the user input identifier is a set of user-selected components to be used to define the component topology; The component topology is generated at least in the following ways: Identify one or more features for a specific component in the user-selected component set, the one or more features including: The data input type corresponding to the specific component; Determine that the data input type corresponding to the specific component matches the data output type corresponding to the additional component; In response to determining that the data input type corresponding to the specific component matches the data output type corresponding to the additional component: The system selects the additional components to be included in the component topology; and The system determines that: a) the component topology includes the user-selected component set and the additional components.
11. The non-transitory computer-readable medium of claim 10, wherein the operation further comprises: Before selecting the additional component, it is determined that none of the other user-selected components in the user-selected component set have the data output type of the additional component.
12. The non-transitory computer-readable medium of claim 10, wherein determining the component topology further comprises: The system determines that: a) the component topology includes the user-selected component set and the additional components, and b) the data flow corresponding to the component topology.
13. The non-transitory computer-readable medium of claim 10, wherein the operation further comprises, prior to selecting the additional component: The system determines that the set of user-selected components is insufficient to complete any component topology.
14. The non-transitory computer-readable medium of claim 10, wherein the operation further comprises selecting an implementation environment for the additional component, the implementation environment including one of: a local environment, a non-local environment, and / or a cloud environment.
15. The non-transitory computer-readable medium of claim 10, wherein the operation further comprises: Receive second user input, which includes the functionality of the component topology. The system selects the additional component in response to determining whether the additional component is necessary for the functionality of the component topology.
16. The non-transitory computer-readable medium of claim 10, wherein the system further selects the additional component based on the data input type of the data to be transmitted to the component topology.
17. The non-transitory computer-readable medium of claim 10, wherein generating the component topology includes modifying a previous component topology to generate the component topology.
18. The non-transitory computer-readable medium of claim 17, wherein the system generates the component topology at runtime while components in the previous component topology are executed without interruption during the generation of the component topology.
19. A method comprising: Receive user input, wherein the user input identifier is a set of user-selected components to be used to define the component topology; The component topology is generated at least in the following ways: Select a specific component from the component set for the user, and identify one or more features, including: the data output type corresponding to the specific component; Determine that the data output type corresponding to the specific component matches the data input type corresponding to the additional component; In response to determining that the data output type corresponding to the specific component matches the data input type corresponding to the additional component: The system selects the additional components to be included in the component topology; and The system determines that: a) the component topology includes the user-selected component set and the additional components.
20. The method of claim 19, wherein the method further comprises: Before selecting the additional component, the system determines that none of the other user-selected components in the user-selected component set have the data input type of the additional component.
21. A method comprising: Receive user input, wherein the user input identifier is a set of user-selected components to be used to define the component topology; The component topology is generated at least in the following ways: Identify one or more features for a specific component in the user-selected component set, the one or more features including: the data input type corresponding to the specific component; Determine that the data input type corresponding to the specific component matches the data output type corresponding to the additional component; In response to determining that the data input type corresponding to the specific component matches the data output type corresponding to the additional component: The system selects the additional components to be included in the component topology; and The system determines that: a) the component topology includes the user-selected component set and the additional components.
22. The method of claim 21, further comprising: Before selecting the additional component, it is determined that none of the other user-selected components in the user-selected component set have the data output type of the additional component.