US11068487B2 - Event-stream searching using compiled rule patterns - Google Patents
Event-stream searching using compiled rule patterns Download PDFInfo
- Publication number
- US11068487B2 US11068487B2 US14/847,962 US201514847962A US11068487B2 US 11068487 B2 US11068487 B2 US 11068487B2 US 201514847962 A US201514847962 A US 201514847962A US 11068487 B2 US11068487 B2 US 11068487B2
- Authority
- US
- United States
- Prior art keywords
- rule
- events
- event
- field names
- patterns
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active, expires
Links
- 238000000034 method Methods 0.000 claims abstract description 27
- 230000007704 transition Effects 0.000 claims abstract description 20
- 230000009471 action Effects 0.000 claims description 106
- 238000011156 evaluation Methods 0.000 claims description 80
- 230000004048 modification Effects 0.000 claims description 8
- 238000012986 modification Methods 0.000 claims description 8
- 239000000470 constituent Substances 0.000 claims description 5
- 238000012544 monitoring process Methods 0.000 description 27
- 238000004891 communication Methods 0.000 description 5
- 238000013507 mapping Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000002730 additional effect Effects 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 229920000638 styrene acrylonitrile Polymers 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24564—Applying rules; Deductive queries
Definitions
- FIG. 1 illustrates an example system environment for rule evaluation in a provider network, according to some embodiments.
- FIG. 2 illustrates further aspects of the example system environment for rule evaluation in a provider network, according to some embodiments.
- FIG. 3 illustrates further aspects of the example system environment for rule evaluation in a provider network, including a mapping of rule patterns to actions, according to some embodiments.
- FIG. 4 illustrates an example system environment for event-stream searching using compiled rule patterns, according to some embodiments.
- FIG. 5 illustrates further aspects of the example system environment for event-stream searching using compiled rule patterns, including examples of events that match particular rule patterns, according to some embodiments.
- FIG. 6 illustrates an example of a finite-state machine usable for event-stream searching using compiled rule patterns, according to some embodiments.
- FIG. 7 is a flowchart illustrating a method for event-stream searching using compiled rule patterns, according to some embodiments.
- FIG. 8 illustrates an example of a computing device that may be used in some embodiments.
- rules may be defined to include rule patterns and actions.
- a rule pattern may define conditions for which one or more action should be performed.
- a rule pattern may include one or more field names (potentially including components nested in a hierarchical structure) and one or more field values.
- rule patterns are flattened to remove a hierarchical structure, the field names within the rule patterns are sorted, and the rule patterns are compiled into a rule base that represents a finite-state machine. In the finite-state machine, transitions between states may represent matches of field names and/or matches of field values.
- a stream of events may represent resource changes in a provider network.
- the events are flattened to remove a hierarchical structure, and the field names within events are sorted.
- the rule patterns may be evaluated against the events using the compiled rule base. In evaluating the rule patterns against an event, field names in the event that do not match field names in the rule patterns may be considered implicit wildcards and disregarded. Actions defined for matched rule patterns may be performed in the provider network. In this manner, an event stream may be searched for events that match rule patterns in an efficient manner.
- FIG. 1 illustrates an example system environment for rule evaluation in a provider network, according to some embodiments.
- a rule evaluation system 100 may include a plurality of components for evaluating rules and/or performing actions based on rules.
- the rule evaluation system 100 may include a pattern definition functionality 110 A, an action definition functionality 110 B, and a rule definition functionality 110 C.
- a data store 115 may store information associated with rule patterns 111 A, actions 111 B, and rules 111 C defined using the pattern definition functionality 110 A, action definition functionality 110 B, and/or rule definition functionality 110 C.
- the data store 115 may be implemented using any suitable storage technologies, such as database management technologies.
- the rule evaluation system 100 may also include a user interface 105 .
- the user interface 105 may enable a user to define and/or select rule patterns 111 A, actions 111 B, and/or rules 111 C using the pattern definition functionality 110 A, action definition functionality 110 B, and/or rule definition functionality 110 C.
- the user interface 105 may permit a user to select one or more predefined rule patterns and/or define one or more custom rule patterns.
- the user interface 105 may permit a user to select one or more predefined actions and/or define one or more custom actions.
- the user interface 105 may permit a user to define one or more rules.
- a rule may be defined to include one or more rule patterns and one or more actions.
- a rule may be defined to include a rule pattern and a message exchange. Definitions of rule patterns 111 A, actions 111 B, and rules 111 C are discussed in greater detail below with respect to FIG. 3 .
- the rule evaluation system 100 may be implemented using one or more computing devices, any of which may be implemented by the example computing device 3000 illustrated in FIG. 8 . In various embodiments, portions of the functionality of the rule evaluation system 100 may be provided by the same computing device or by any suitable number of different computing devices. If any of the components of the rule evaluation system 100 are implemented using different computing devices, then the components and their respective computing devices may be communicatively coupled, e.g., via a network. Each of the illustrated components may represent any combination of software and hardware usable to perform their respective functions. It is contemplated that the rule evaluation system 100 may include additional components not shown, fewer components than shown, or different combinations, configurations, or quantities of the components shown.
- the rule evaluation system 100 may be coupled to a provider network 170 using one or more networks 190 or other interconnects.
- the provider network 170 may include a plurality of computing resources such as computing resources 171 A and 171 B through 171 N.
- the resources 171 A- 171 N may include any suitable number and configuration of compute instances and/or other processing resources, storage resources, database resources, network resources, power resources, and/or other suitable types of computing resources. Although three computing resources 171 A, 171 B, and 171 N are shown for purposes of illustration, it is contemplated that any suitable number and configuration of computing resources may be used.
- the provider network 170 may include the sources of events 50 that can match rule patterns, the targets of actions, and/or one or more action handlers that perform actions.
- the provider network 170 may be operated by an entity such as a company or a public sector organization to provide resources (such as resources 171 A- 171 N) and/or services (such as various types of cloud-based computing or storage) to a distributed set of clients via the Internet and/or other networks.
- the provider network 170 may include numerous data centers hosting various resource pools, such as collections of physical and/or virtualized computer servers, storage devices, and networking equipment that are used to implement and distribute the infrastructure and services offered by the provider.
- the resources may, in some embodiments, be offered to clients in units called “instances,” such as virtual or physical compute instances or storage instances.
- a virtual compute instance may, for example, comprise one or more servers with a specified computational capacity (which may be specified by indicating the type and number of CPUs, the main memory size, and so on) and a specified software stack (e.g., a particular version of an operating system, which may in turn run on top of a hypervisor).
- a specified computational capacity which may be specified by indicating the type and number of CPUs, the main memory size, and so on
- a specified software stack e.g., a particular version of an operating system, which may in turn run on top of a hypervisor.
- a number of different types of computing devices may be used singly or in combination to implement the resources of the provider network 170 in different embodiments, including computer servers, storage devices, network devices, and the like.
- the provider network 170 may implement a flexible set of resource reservation, control, and access interfaces for clients.
- the provider network 170 may implement a programmatic resource reservation interface (e.g., via a web site or a set of web pages) that allows clients to learn about, select, purchase access to, and/or reserve resources.
- resources may be reserved on behalf of clients using a client-accessible service.
- the provider network 170 may execute tasks on behalf of clients using one or more resources of a selected resource pool of the provider network.
- the resource pool may be automatically selected based on the anticipated computational needs of the various tasks.
- the resource pool may be selected based on a specific resource request or reservation submitted by the client.
- the provider network 170 may also include a monitoring functionality 180 .
- the monitoring functionality 180 may monitor any of the resources, e.g., during operation and/or use of the resources.
- the monitoring functionality 180 may use agent software or any other suitable techniques to monitor individual resources.
- monitoring the resources in the provider network may include monitoring one or more service logs, monitoring one or more service metrics, and/or monitoring any suitable data streams.
- the monitoring may compare performance metrics, usage metrics, and/or other suitable data relating to the operation of the resources 171 A- 171 N to predetermined thresholds and/or alarms. Any suitable predetermined thresholds and/or alarms may represent one or more conditions for satisfying a particular rule pattern.
- the monitoring functionality 180 may generate events 50 that describe resources changes in the provider network 170 , and the monitoring functionality may send the events to the rule evaluation system 100 to determine which of the events (if any) match the rule patterns 111 A.
- the monitoring functionality 180 may generate one or more of the events 50 .
- the monitoring functionality 180 may generate at least some of the events 50 based on thresholds and/or alarms. For example, the monitoring functionality 180 may detect an alarm state change and may generate an event as a result.
- external agents may implement the monitoring functionality 180 and generate the events 50 .
- services within the provider network 170 may implement the monitoring functionality 180 and generate the events 50 .
- the rule evaluation system 100 may include a rule evaluator 120 .
- the rule evaluator 120 may receive events 50 and determine which of the events match which of the rule patterns 111 A. When a rule pattern is matched, the rule evaluator 120 may determine which rules 111 C include the rule pattern. To determine which rules include the rule pattern, the rule evaluator 120 may refer to the stored rules 111 C, rule patterns 111 A, and/or other appropriate data in the data store 115 . After retrieving any rules that include the matched rule pattern, the rule evaluator 120 may determine any actions defined in the retrieved rules. The rule evaluator 120 may then initiate any actions defined in the retrieved rules or otherwise cause the actions to be performed.
- the rule evaluator 120 may supply various types of input, metadata, or parameters for the actions, e.g., as found in events that match rule patterns. In this manner, the rule evaluation system 100 may use defined rules to perform particular actions when particular rule patterns are matched activated.
- FIG. 2 illustrates further aspects of the example system environment for rule evaluation in a provider network, according to some embodiments.
- the rule evaluation system 100 may include a message generator 130 .
- the message generator 130 may generate messages 145 that describe actions to be performed, e.g., when rule patterns associated with the actions are matched.
- the message generator 130 may send the messages 145 to a messaging service 140 .
- the messages may be generated based on run-time input parameters supplied with any matched rule patterns and/or default parameters associated with actions.
- a job dispatcher 150 may interact with the messaging service 140 to dispatch jobs based on the messages 145 .
- an action execution environment 160 may perform the actions described in the messages 145 and dispatched by the job dispatcher 150 .
- the action execution environment 160 may include one or more environments for executing instructions, including scripts, workflows, and/or compiled program code.
- the action execution environment 160 may include one or more action handlers, such as action handlers 161 A and 161 B through 161 N. Although three action handlers 161 A, 161 B, and 161 N are shown for purposes of illustration, it is contemplated that any suitable number of action handlers may be used.
- the actions performed by the action handlers 161 A- 161 N may include any suitable modification and/or configuration of any of the resources 171 A- 171 N and/or their constituent elements.
- the actions may automatically terminate, suspend, or restart a compute instance in the provider network 170 when a particular rule pattern is matched.
- an action may be performed to automatically resize an image file to a predefined width and predefined height when the image file is added to a particular storage location, directory, or bucket.
- An action may be performed by an action handler based on a rule pattern being matched, based on a schedule, or based on a request from a user or other computing component.
- the rule evaluation system 100 may include a recommendation engine.
- the recommendation engine may use machine learning techniques to recommend automations to the customers based on customer resource usage patterns and/or resource metadata.
- the recommendation engine may also adapt to customer reaction and improve the recommendations over time. The recommendations may be improved using a feedback loop with input from customers and popular trends in the rule evaluation system 100 .
- the messaging service 140 may be implemented using a queue service that manages one or more queues. Messages 145 describing actions to be performed may be sent to the messaging service or placed in the one or more queues.
- one queue represent be a primary queue that initially stores all the messages generated by the message generator 130 , and other queues may be used as backup queues if the primary queue is insufficient to handle all the messages.
- the job dispatcher 150 may be implemented using a task poller. The task poller may poll the one or more queues at a suitable interval to determine whether the queues include messages, e.g., messages describing actions to be performed. The task poller may initiate the use of the backup queues upon receiving an appropriate error message from the primary queue. The task poller may poll each of the various queues at particular intervals. In one embodiment, the task poller may poll the primary queue more frequently than the backup queues.
- FIG. 3 illustrates further aspects of the example system environment rule evaluation in a provider network, including a mapping of rule patterns to actions, according to some embodiments.
- the data store 115 may store rule patterns 111 A, actions 111 B, and rules 111 C.
- the rule patterns 111 A may include rule patterns 300 A and 300 B through 300 N. However, it is contemplated that any suitable number of rule patterns may be stored in the data store 115 .
- the actions 111 B may include an action configuration 310 A and one or more additional action configurations (not shown).
- Each action configuration (such as action configuration 310 A) may include an action (such as action 311 ), any inputs for the action (such as input 312 ), and any roles (such as role(s) 313 ) needed for the action.
- An action may include one or more commands, instructions, or other invocations of functionality to perform one or more tasks.
- An action may be associated with inputs such as event-specific data to be supplied to the action.
- An action may be associated with inputs such as default parameters that apply to all invocations of the action.
- run-time input parameters may also be specified for a particular instance of an action when the action is invoked.
- the run-time input parameters may augment but not override the default parameters. For example, if an action involves resizing an image file when the image file is added, then the default parameters may include a target width and height, and the run-time input parameters may include the storage location of the image file.
- a role may include permissions or other security credentials that permit the action to have access to a set of resources at run-time.
- a role may be independent of any particular user or group of users and may represent a delegation of authority to the associated action.
- the rules 111 C may include a rule 320 A and one or more additional rules (not shown).
- the rule 320 A may specify one of the rule patterns, such as rule pattern 300 A, and one of the action configurations, such as action configuration 310 A.
- the rule evaluator 120 may use the data store 115 to determine that the rule pattern 300 A is part of rule 320 A.
- the rule evaluator 120 may also use the data store 115 to determine that the action configuration 310 A is also part of the rule 320 A, e.g., is linked to the rule pattern 300 A.
- the rule evaluator 120 may then cause the specified action 311 to be performed with the input 312 (and optionally run-time input parameters) and using the role(s) 313 .
- the message generator 130 may generate a message specifying the action 311 , the input 312 (including, for example, any default parameters and/or run-time input parameters), and the role(s) 313 .
- the rules 111 C may include a mapping of rule patterns to actions.
- a first rule may represent a binding of a rule pattern to a first action configuration
- a second rule may represent a binding of the same rule pattern to a second action configuration.
- the rule evaluator 120 may use the data store 115 to determine that the rule pattern is part of both the first and second rules.
- the rule evaluator 120 may also use the data store 115 to determine that the first action configuration is part of the first rule and that the second action configuration is part of the second rule.
- the rule evaluator 120 may then cause the actions specified in both action configurations and to be performed.
- the message generator 130 may generate one or more messages specifying the actions, the input associated with the actions, and any necessary role(s).
- the rules 111 C may include a mapping of rule patterns to actions and/or a mapping of rule patterns to queue exchanges.
- a first rule may represent a binding of a rule pattern to an action configuration.
- a second rule may represent a binding of the same rule pattern to a queue exchange.
- the queue exchange may specify one or more queue messages to be generated.
- the rule evaluator 120 may use the data store 115 to determine that the rule pattern is part of the first and second rules.
- the rule evaluator 120 may also use the data store 115 to determine that the action configuration is part of the first rule and that the queue exchange is part of the second rule.
- the rule evaluator 120 may then cause the action specified in the action configuration to be performed.
- the message generator 130 may generate one or more messages specifying the actions, the input associated with the actions, and any necessary role(s). Additionally, the rule evaluator 120 may generate a queue message as specified by the queue exchange and place that message in a queue or otherwise send the message to a messaging service. For example, the queue message may represent a notification (e.g., to an administrator or log) that the rule pattern was matched at a particular time or that the action in the action configuration was performed with particular parameters and at a particular time.
- FIG. 4 illustrates an example system environment for event-stream searching using compiled rule patterns, according to some embodiments.
- the monitoring functionality 180 may generate a plurality of events 50 , and the rule evaluation system 100 may evaluate a compiled form of the rule patterns 111 A against the events to determine which events (if any) match any of the rule patterns.
- the events may represent or indicate changes to resources (such as resources 171 A- 171 N) in the provider network 170 .
- the monitoring functionality 180 may monitor any of the resources, e.g., during operation and/or use of the resources, and it may detect resource changes using any suitable monitoring techniques.
- the monitoring functionality 180 may use agent software or any other suitable techniques to monitor individual resources.
- monitoring the resources in the provider network may include monitoring one or more service logs, monitoring one or more service metrics, and/or monitoring any suitable data streams.
- the monitoring functionality 180 may generate events 50 , and each event may describe one or more changes to one or more resources. Examples of formats for events are discussed below with reference to FIG. 5 .
- the monitoring functionality 180 may use any suitable techniques to convey the events 50 to the rule evaluation system 100 .
- the monitoring functionality 180 may place the events 50 in an event bus.
- the event bus may be used to deliver a stream of events, such that different events are placed on the bus and/or ready for delivery at different times.
- the rule evaluation system 100 may comprise an event reader 420 that receives events, such as by reading the events from the event bus or other stream.
- clients of the provider network 170 may also supply events to the event reader 420 , e.g., by placing the events in an event bus or other stream.
- a single event bus or stream or multiple event buses or streams may be used to deliver events 50 to the rule evaluation system 100 for evaluation of potential matches with rule patterns.
- the event bus may be divided into a plurality of shards, and each shard may be associated with one or more event readers.
- a rule may be defined to include one or more rule patterns and one or more actions and/or message exchanges.
- a rule pattern may represent one or more conditions that, when satisfied, may cause the rule evaluation system 100 to invoke any actions associated with any corresponding rules.
- the events 50 may describe conditions in the provider network 170 , and the rule evaluation system 100 may evaluate a compiled form of the rule patterns 111 A against the events to determine which events (if any) describe conditions corresponding to any of the rule patterns 111 A. Accordingly, the rule evaluation system 100 may evaluate a compiled form of the rule patterns 111 A against the events to determine which events (if any) match the rule patterns 111 A.
- the rule evaluation system 100 may include a rule compiler 400 .
- the rule evaluation system 100 may compile or otherwise generate a rule base 410 based (at least in part) on the rule patterns 111 A.
- the term compilation generally includes the transformation of rules or portions thereof (such as rule patterns that describe conditions) into another format.
- the compiled rule base 410 may include any suitable program instructions and/or data to capture or otherwise describe a set of one or more rule patterns in a manner that permits efficient evaluation of the rule patterns against events.
- the rule base 410 may capture the set of rule patterns defined by or for a particular client of the provider network 170 rather than all the rule patterns in the data store 115 .
- the rule base 410 may also be referred to as a machine object.
- the rule base 410 may represent a finite-state machine.
- the finite-state machine may represent a directed graph in which nodes represent finite states and edges represent transitions between those states.
- the finite-state machine may be in only one of the finite states at any particular time, and the finite-state machine may transition between these states when conditions in events match conditions in rule patterns.
- An example of such a finite-state machine is discussed below with respect to FIG. 6 .
- the rule evaluation system 100 may include the rule evaluator 120 .
- the rule evaluation system 100 may evaluate the rule base 410 against the events 50 to determine which events (if any) match any of the rule patterns captured in the rule base.
- the matching of an event to a rule pattern generally indicates that conditions described in an event satisfy the conditions associated with one or more rule patterns. Accordingly, it may be said that the rule base 410 represents or captures the rule patterns associated with one or more rules, and the rule evaluator 120 may evaluate the rule base against the events to determine which events (if any) match any of the rule patterns in the rule base.
- the events 50 used as input to the rule evaluator 120 may represent events for resources owned by a particular client of the provider network 170 , e.g., the same client whose rule patterns are compiled into the rule base 410 . Accordingly, aspects of the rule evaluation system 100 , such as the rule evaluator 120 and/or event reader 420 , may be implemented on a per-client basis.
- the rule evaluation system 100 may invoke or cause to be performed any actions specified in any rules that include the rule pattern.
- the rule evaluation system 100 may send suitable information (including all or part of an event matching a rule pattern as well as other parameters for any related actions) to one or more action handlers, such as action handlers 161 A- 161 N, in an action execution environment 160 .
- the actions performed by the action handlers 161 A- 161 N may include any suitable modification and/or configuration of any of the resources 171 A- 171 N and/or their constituent elements.
- the rule evaluator may modify an event that matches a rule pattern and then store and/or forward the modified event.
- the rule evaluation system 100 may be implemented using one or more computing devices, any of which may be implemented by the example computing device 3000 illustrated in FIG. 8 . In various embodiments, portions of the functionality of the rule evaluation system 100 may be provided by the same computing device or by any suitable number of different computing devices. If any of the components of the rule evaluation system 100 are implemented using different computing devices, then the components and their respective computing devices may be communicatively coupled, e.g., via a network. Each of the illustrated components may represent any combination of software and hardware usable to perform their respective functions. It is contemplated that the rule evaluation system 100 may include additional components not shown, fewer components than shown, or different combinations, configurations, or quantities of the components shown.
- FIG. 5 illustrates further aspects of the example system environment for event-stream searching using compiled rule patterns, including examples of events that match particular rule patterns, according to some embodiments.
- Rule patterns 300 C and 300 D represent examples of rule patterns that may be compiled into the rule base 410 .
- Each rule pattern may include one or more field names.
- the rule pattern may include one or more field values.
- rule pattern 300 C may include a first field name 510 A and an associated field value 520 A.
- Rule pattern 300 C may also include a second field name 510 B and two associated field values 520 B and 520 C.
- Field names and their associated values may generally describe characteristics or attributes of resources in the provider network 170 .
- a field name may include a nested or otherwise hierarchical structure that may be flattened during compilation of the rule patterns.
- the rule evaluation system 100 may evaluate potential matches based on arbitrary or user-defined Boolean combinations of field names and/or field values. For example, in one embodiment, for the rule pattern 300 C to be matched by an event, all of the field names 510 A and 510 B should be present in the event; however, any one of the field values for a field name (e.g., either value 520 B or value 520 C for name 510 B) may satisfy the conditions represented by the rule pattern.
- rule pattern 300 D may include a field name 510 C and an associated field value 520 D. In one embodiment, for the rule pattern 300 D to be matched by an event, the field name 510 C and associated field value 520 D should be present in the event.
- Events 50 A and 50 B represent examples of events that may be used as input into the rule evaluation 430 .
- Each event may include one or more field names.
- the event may include one or more field values.
- event 50 A may include a field name 510 C and associated field value 520 D as well as a field name 510 D and associated field value 520 E.
- Field names and their associated values in events 50 may generally describe characteristics or attributes of resources in the provider network 170 .
- a field name in an event may include a nested or otherwise hierarchical structure that may be flattened prior to rule evaluation against the event.
- the event 50 A may also include other field names (not shown), as indicated by the ellipsis.
- event 50 B may include a field name 510 A and associated field value 520 A, a field name 510 E and associated field value 520 F, and a field name 510 B and associated field value 520 C.
- the event 50 B may also include other field names (not shown), as indicated by the ellipsis.
- the events 50 A and 50 B may be represented initially using a structured, hierarchical format such as JSON or XML.
- the events 50 A and 50 B may include nested structures such that some field names may be represented by different name components across different levels of the hierarchy.
- the rule evaluation system 100 may flatten the events and sort the field names within the events. For example, flattening the event 50 A or 50 B may include extracting the field names (with their associated values) from a hierarchy or other structured format in the event and placing them in a flattened event. The field names within a flattened event may then be sorted and reordered using any suitable basis (e.g., alphabetically) to generate a flattened and sorted event.
- Rule patterns 111 A may also be represented initially using a structured, hierarchical format such as JSON or XML. Accordingly, the rule patterns 300 C and 300 D may also be flattened and have their field names sorted on the same basis as the events. For example, rule pattern 300 C may initially be defined as follows:
- rule pattern 300 C may be flattened to produce the following rule, where “detail-type” represents field name 510 A, “ec2/spot-bid-matched” represents field value 520 A, “detail.state” represents field name 510 B, and “in-service” and “stopped” represent field values 520 B and 520 C:
- rule pattern may initially be defined as follows:
- rule pattern 300 D may be flattened to produce the following rule, where “detail.state” represents field name 510 C and “pending” represents field value 520 D:
- the rule evaluation 430 may examine each event only for field names matching one or more rule patterns and may disregard other field names present in the event. For example, when the event 50 A is received, the rule evaluation 430 may evaluate the rule patterns 300 C and 300 D against the event using the rule base 410 . The event 50 A may match the rule pattern 300 D because the event includes the field name 510 C and associated field value 520 D described in the rule pattern. In one embodiment, once the name 510 C and value 520 D are found in the event 50 A, the rule evaluation 430 may determine that the rule pattern 300 D has been matched by the event. The rule evaluation 430 may determine that the rule pattern 300 C is not matched by the event 50 A once the names 510 A and 510 B are not found in the event. If the rule base captures only the rules 300 C and 300 D, then the rule evaluation 430 may examine the event 50 A only for field names 510 A, 510 B, and 510 C and disregard other field names in the event (such as name 510 D).
- the rule evaluation 430 may evaluate the rules 300 C and 300 D against the event using the rule base 410 .
- the event 50 B may match the rule pattern 300 C because the event includes the field name 510 A and associated field value 520 A described in the rule pattern as well as the field name 510 B and one of the associated field values 520 C described in the rule pattern.
- the rule evaluation 430 may determine that the rule pattern 300 C has been matched by the event.
- the rule evaluation 430 may determine that the rule pattern 300 D is not matched by the event 50 B once the name 510 C is not found in the event. If the rule base captures only the rule patterns 300 C and 300 D, then the rule evaluation 430 may examine the event 50 B only for field names 510 A, 510 B, and 510 C and disregard other field names in the event (such as name 510 E).
- Field names and field values may be defined arbitrarily by users and/or resources; the rule evaluation system 100 may operate without reference to any schemas for rule patterns and events.
- the internal sorting of the rule patterns and events by field name may permit an efficient evaluation of the rule base 410 against the events.
- the evaluation may be implemented such that performance of the evaluation may not vary substantially based on differences in the number of rule patterns (e.g., the evaluation may be an O(1) operation in terms of the number of rule patterns).
- the evaluation may be able to process hundreds of thousands of events per second.
- FIG. 6 illustrates an example of a finite-state machine usable for event-stream searching using compiled rule patterns, according to some embodiments.
- the rule base 410 may represent a finite-state machine 415 .
- the finite-state machine 415 may represent a directed graph in which nodes represent finite states and edges represent transitions between those states.
- the finite-state machine 415 may be in only one of the finite states at any particular time, and the finite-state machine may transition between these states when conditions in events match conditions in rule patterns.
- the example of the finite-state machine 415 may include states such as initial state 600 (also referred to as a start state) and subsequent or additional states 601 , 602 , 603 , and 604 .
- Each of the states 600 - 604 may be implemented using a hash table for efficient matching of tokens.
- the finite-state machine 415 may be compiled based on the rules 300 C and 300 D.
- the finite-state machine 415 may begin in the initial state 600 . While the finite-state machine 415 is in the initial state 600 , the evaluation may proceed through the sorted field names in the event until the name 510 A or name 510 C is encountered or until the end of file (EOF) is encountered in the event. If EOF is encountered in state 600 , then the evaluation may determine that the event does not match any of the rule patterns 300 C or 300 D, and the finite-state machine 415 may be exited. Any field name other than names 510 A and 510 C may represent an implicit wildcard, and the finite-state machine 415 may stay in the initial state 600 if such a field name is encountered in the event.
- EDF end of file
- the match may cause a transition from state 600 to state 601 .
- the evaluation may determine that the event does not match the rule pattern 300 C. If the field value 520 A is matched in the event while in state 601 , then the match may cause a transition from state 601 to state 602 .
- the evaluation may proceed through the sorted field names in the event until the name 510 B is encountered or until the end of file (EOF) is encountered in the event. If EOF is encountered in state 602 , then the evaluation may determine that the event does not match the rule pattern 300 C. Any field name other than name 510 B may represent an implicit wildcard, and the finite-state machine 415 may stay in the state 602 if such a field name is encountered in the event. If the field name 510 B is matched in the event, then the match may cause a transition from state 602 to state 603 .
- the evaluation may determine that the event does not match the rule pattern 300 C. If the field value 520 B or 520 C is matched in the event while in state 603 , then the evaluation may determine that the event matches the rule pattern 300 C.
- the match may cause a transition from state 600 to state 604 .
- state 604 if any field value other than value 520 D is encountered, then the evaluation may determine that the event does not match the rule pattern 300 D. If the field value 520 D is matched in the event while in state 604 , then the evaluation may determine that the event matches the rule pattern 300 D.
- FIG. 7 is a flowchart illustrating a method for event-stream searching using compiled rule patterns, according to some embodiments.
- a set of one or more rule patterns may be compiled into a rule base.
- Each pattern includes one or more field names and one or more field values for each of the field name(s).
- the field names within a rule pattern may be sorted (e.g., alphabetically) during the compilation process.
- field names may be flattened to eliminate a hierarchical structure in addition to being sorted.
- the rule base may represent a finite-state machine that includes a plurality of states. Transitions between the states may correspond to matches of field names and/or matches of field values.
- a stream of events may begin to be received.
- the events may describe resource changes in a provider network.
- the events may include field names and field values for the field names that describe characteristics or attributes of changed resources.
- the field names within an event may be sorted (e.g., alphabetically) upon receipt.
- field names in events may be flattened to eliminate a hierarchical structure in addition to being sorted.
- each event in the stream may be analyzed as shown in 720 and 725 .
- the rule patterns may be evaluated against the events using the rule base.
- the evaluation may determine that a particular event does not match a particular rule pattern if the field names in the particular rule pattern are not found in the particular event.
- the evaluation may be based on arbitrary or user-defined Boolean combinations of field names and/or field values. For example, in one embodiment, a match of a particular event to a particular rule pattern may be determined if all the field names in the particular rule pattern are found in the particular event and if any field values for the field names in the particular rule pattern are found in the particular event.
- Field names in events that do not match field names in rules may be considered implicit wildcards and may be disregarded.
- field names that represent wildcards may cause the finite-state machine to remain in a current state.
- the evaluation may determine if a rule pattern is matched by an event.
- the finite-state machine may transition between at least two of the states. For example, the finite-state machine may transition between a first state and a second state when a field name from a rule pattern is found in an event, and the finite-state machine may transition between the second state and a third state when a satisfactory field value for the field name is found in the event. If a rule is not matched, then the sorting and evaluation may proceed for additional events, as shown in 715 .
- one or more actions for the matched rule pattern may be invoked or performed.
- the actions may be performed in the provider network, e.g., to modify or configure one or more resources.
- Actions may also be performed (e.g., by the rule evaluation system) to modify events themselves when those events are determined to match particular rule patterns.
- a computer system that implements a portion or all of one or more of the technologies described herein may include a computer system that includes or is configured to access one or more computer-readable media.
- FIG. 8 illustrates such a computing device 3000 .
- computing device 3000 includes one or more processors 3010 coupled to a system memory 3020 via an input/output (I/O) interface 3030 .
- Computing device 3000 further includes a network interface 3040 coupled to I/O interface 3030 .
- computing device 3000 may be a uniprocessor system including one processor 3010 or a multiprocessor system including several processors 3010 (e.g., two, four, eight, or another suitable number).
- Processors 3010 may include any suitable processors capable of executing instructions.
- processors 3010 may be processors implementing any of a variety of instruction set architectures (ISAs), such as the x86, PowerPC, SPARC, or MIPS ISAs, or any other suitable ISA.
- ISAs instruction set architectures
- each of processors 3010 may commonly, but not necessarily, implement the same ISA.
- System memory 3020 may be configured to store program instructions and data accessible by processor(s) 3010 .
- system memory 3020 may be implemented using any suitable memory technology, such as static random access memory (SRAM), synchronous dynamic RAM (SDRAM), nonvolatile/Flash-type memory, or any other type of memory.
- SRAM static random access memory
- SDRAM synchronous dynamic RAM
- program instructions and data implementing one or more desired functions are shown stored within system memory 3020 as code (i.e., program instructions) 3025 and data 3026 .
- I/O interface 3030 may be configured to coordinate I/O traffic between processor 3010 , system memory 3020 , and any peripheral devices in the device, including network interface 3040 or other peripheral interfaces.
- I/O interface 3030 may perform any necessary protocol, timing or other data transformations to convert data signals from one component (e.g., system memory 3020 ) into a format suitable for use by another component (e.g., processor 3010 ).
- I/O interface 3030 may include support for devices attached through various types of peripheral buses, such as a variant of the Peripheral Component Interconnect (PCI) bus standard or the Universal Serial Bus (USB) standard, for example.
- PCI Peripheral Component Interconnect
- USB Universal Serial Bus
- I/O interface 3030 may be split into two or more separate components, such as a north bridge and a south bridge, for example. Also, in some embodiments some or all of the functionality of I/O interface 3030 , such as an interface to system memory 3020 , may be incorporated directly into processor 3010 .
- Network interface 3040 may be configured to allow data to be exchanged between computing device 3000 and other devices 3060 attached to a network or networks 3050 .
- network interface 3040 may support communication via any suitable wired or wireless general data networks, such as types of Ethernet network, for example. Additionally, network interface 3040 may support communication via telecommunications/telephony networks such as analog voice networks or digital fiber communications networks, via storage area networks such as Fibre Channel SANs, or via any other suitable type of network and/or protocol.
- system memory 3020 may be one embodiment of a computer-readable (i.e., computer-accessible) medium configured to store program instructions and data as described above for implementing embodiments of the corresponding methods and apparatus.
- program instructions and/or data may be received, sent or stored upon different types of computer-readable media.
- a computer-readable medium may include non-transitory storage media or memory media such as magnetic or optical media, e.g., disk or DVD/CD coupled to computing device 3000 via I/O interface 3030 .
- a non-transitory computer-readable storage medium may also include any volatile or non-volatile media such as RAM (e.g.
- a computer-readable medium may include transmission media or signals such as electrical, electromagnetic, or digital signals, conveyed via a communication medium such as a network and/or a wireless link, such as may be implemented via network interface 3040 .
- a communication medium such as a network and/or a wireless link, such as may be implemented via network interface 3040 .
- Portions or all of multiple computing devices such as that illustrated in FIG. 8 may be used to implement the described functionality in various embodiments; for example, software components running on a variety of different devices and servers may collaborate to provide the functionality.
- portions of the described functionality may be implemented using storage devices, network devices, or a variety of different computer systems.
- the term “computing device,” as used herein, refers to at least all these types of devices, and is not limited to these types of devices.
- a computer-readable medium may include storage media or memory media such as magnetic or optical media, e.g., disk or DVD/CD-ROM, volatile or non-volatile media such as RAM (e.g. SDRAM, DDR, RDRAM, SRAM, etc.), ROM, etc.
- a computer-readable medium may also include transmission media or signals such as electrical, electromagnetic, or digital signals, conveyed via a communication medium such as network and/or a wireless link.
- the various methods as illustrated in the Figures and described herein represent examples of embodiments of methods.
- the methods may be implemented in software, hardware, or a combination thereof.
- the order of the steps may be changed, and various elements may be added, reordered, combined, omitted, modified, etc.
- Various ones of the steps may be performed automatically (e.g., without being directly prompted by user input) and/or programmatically (e.g., according to program instructions).
- the term “if” may be construed to mean “when” or “upon” or “in response to determining” or “in response to detecting,” depending on the context.
- the phrase “if it is determined” or “if [a stated condition or event] is detected” may be construed to mean “upon determining” or “in response to determining” or “upon detecting [the stated condition or event]” or “in response to detecting [the stated condition or event],” depending on the context.
- first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another.
- a first contact could be termed a second contact, and, similarly, a second contact could be termed a first contact, without departing from the scope of the present invention.
- the first contact and the second contact are both contacts, but they are not the same contact.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
Description
{ | ||
“detail-type”: [ “ec2/spot-bid-matched” ], | ||
“detail” : { | ||
“state”: [ “in-service”, “stopped” ] | ||
} | ||
} | ||
“detail-type”, “ec2/spot-bid-matched”, | ||
“detail.state” , “in-service”, | ||
“detail.state”, “stopped” | ||
{ | ||
“detail” : { | ||
“state”: [ “pending” ] | ||
} | ||
} | ||
Claims (19)
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/847,962 US11068487B2 (en) | 2015-09-08 | 2015-09-08 | Event-stream searching using compiled rule patterns |
CA3080793A CA3080793A1 (en) | 2015-09-08 | 2016-09-08 | Event-stream searching using compiled rule patterns |
PCT/US2016/050792 WO2017044636A1 (en) | 2015-09-08 | 2016-09-08 | Event-stream searching using compiled rule patterns |
CA2996884A CA2996884C (en) | 2015-09-08 | 2016-09-08 | Event-stream searching using compiled rule patterns |
EP16779207.6A EP3347818B1 (en) | 2015-09-08 | 2016-09-08 | Event-stream searching using compiled rule patterns |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/847,962 US11068487B2 (en) | 2015-09-08 | 2015-09-08 | Event-stream searching using compiled rule patterns |
Publications (2)
Publication Number | Publication Date |
---|---|
US20170068706A1 US20170068706A1 (en) | 2017-03-09 |
US11068487B2 true US11068487B2 (en) | 2021-07-20 |
Family
ID=58190063
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/847,962 Active 2037-10-13 US11068487B2 (en) | 2015-09-08 | 2015-09-08 | Event-stream searching using compiled rule patterns |
Country Status (1)
Country | Link |
---|---|
US (1) | US11068487B2 (en) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10021204B2 (en) * | 2016-07-12 | 2018-07-10 | Ca, Inc. | Test proxy between client applications and web services |
US10242187B1 (en) * | 2016-09-14 | 2019-03-26 | Symantec Corporation | Systems and methods for providing integrated security management |
CN111061742B (en) * | 2019-12-25 | 2021-01-12 | 北京数起科技有限公司 | Method and device for marking data and service system thereof |
US11669551B2 (en) * | 2020-10-16 | 2023-06-06 | Splunk Inc. | Rule-based data stream processing |
Citations (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4766604A (en) | 1986-11-07 | 1988-08-23 | Messagephone, Inc. | Method for receiving and delivering voice messages |
US6088717A (en) | 1996-02-29 | 2000-07-11 | Onename Corporation | Computer-based communication system and method using metadata defining a control-structure |
US6418202B1 (en) | 1998-10-27 | 2002-07-09 | At&T Corp. | Spontaneous messaging service for prepaid calling card users |
EP1355232A2 (en) | 2002-04-15 | 2003-10-22 | Microsoft Corporation | Filtering of event notifications based on event subscriptions |
US20050114487A1 (en) | 2003-11-12 | 2005-05-26 | Jin Peng | Notification framework and method of distributing notification |
US20060190591A1 (en) | 2002-05-15 | 2006-08-24 | Microsoft Corporation | Method and system for supporting the communication of presence information regarding one or more telephony devices |
US20070180043A1 (en) | 2006-01-31 | 2007-08-02 | Microsoft Corporation | Message object model |
US20070208870A1 (en) | 2006-03-01 | 2007-09-06 | Bea Systems, Inc. | Reporting queue delays in SOAP messages |
US20080109884A1 (en) | 2006-11-07 | 2008-05-08 | Fmr Corp. | Triggering of Authentication Rules for Service Provisioning |
US20080256124A1 (en) | 2006-01-31 | 2008-10-16 | Hernandez-Sherrington Mauricio | Schema mapping specification framework |
US20090177669A1 (en) * | 2008-01-09 | 2009-07-09 | Karempudi Ramarao | Processing structured electronic document streams using look-ahead automata |
US20090177727A1 (en) * | 2008-01-07 | 2009-07-09 | Cassatt Corporation | Evaluation of Current Capacity Levels of Resources in a Distributed Computing System |
US20100037088A1 (en) | 2008-08-08 | 2010-02-11 | Innopath Software, Inc. | Intelligent Mobile Device Management Client |
US20100100518A1 (en) * | 2008-10-16 | 2010-04-22 | International Business Machines Corporation | Rules-Based Cross-FSM Transition Triggering |
US7747558B2 (en) | 2007-06-07 | 2010-06-29 | Motorola, Inc. | Method and apparatus to bind media with metadata using standard metadata headers |
US7886001B2 (en) | 2005-12-23 | 2011-02-08 | Cisco Technology, Inc. | Method and apparatus for controlling actions based on triggers in a conference |
US7962633B1 (en) | 2005-10-13 | 2011-06-14 | Juniper Networks, Inc. | Network service management using customizable business-level rules |
US20110145301A1 (en) | 2005-07-01 | 2011-06-16 | Business Objects Software Ltd. | Apparatus And Method For Producing A Virtual Database From Data Sources Exhibiting Heterogeneous Schemas |
US7991778B2 (en) | 2005-08-23 | 2011-08-02 | Ricoh Co., Ltd. | Triggering actions with captured input in a mixed media environment |
US20110258638A1 (en) | 2010-04-20 | 2011-10-20 | Davies Paul J | Distributed processing of binary objects via message queues including a failover safeguard |
US8060546B2 (en) | 2006-09-01 | 2011-11-15 | Hewlett-Packard Company | Positionally dependent pattern checking in character strings using deterministic finite automata |
US20110296185A1 (en) | 2010-05-28 | 2011-12-01 | Cisco Technology, Inc. | Protection of Control Plane Traffic Against Replayed and Delayed Packet Attack |
US8239426B2 (en) | 2003-05-09 | 2012-08-07 | Jda Software Group, Inc. | Data management system providing a data thesaurus for mapping between multiple data schemas or between multiple domains within a data schema |
US8281408B2 (en) | 2006-08-18 | 2012-10-02 | Medtronic, Inc. | Secure telemetric link |
US8291453B2 (en) | 2003-09-23 | 2012-10-16 | Time Warner Cable Inc. | Scheduling trigger apparatus and method |
US20130041958A1 (en) * | 2011-08-10 | 2013-02-14 | Eyal POST | System and method for project management system operation using electronic messaging |
US8484185B2 (en) | 2008-12-30 | 2013-07-09 | Telecom Italia S.P.A. | Context-based communication service |
US20130239126A1 (en) | 2012-03-09 | 2013-09-12 | Sap Ag | Automated Execution of Processes |
US20130275164A1 (en) * | 2010-01-18 | 2013-10-17 | Apple Inc. | Intelligent Automated Assistant |
US8665911B2 (en) | 2006-10-27 | 2014-03-04 | Hewlett-Packard Development Company, L.P. | Signature checking using deterministic finite state machines |
US20140074826A1 (en) * | 2004-04-07 | 2014-03-13 | Oracle Otc Subsidiary Llc | Ontology for use with a system, method, and computer readable medium for retrieving information and response to a query |
US8719605B2 (en) | 2011-06-30 | 2014-05-06 | International Business Machines Corporation | Method for detecting a trigger to a program not actively being reviewed by the user and performing a power saving action without placing the device as a whole into a sleep state |
US8775457B2 (en) | 2010-05-31 | 2014-07-08 | Red Hat, Inc. | Efficient string matching state machine |
US8782184B2 (en) | 2011-04-04 | 2014-07-15 | Message Systems, Inc. | Method and system for adaptive delivery of digital messages |
US20140278590A1 (en) * | 2013-03-13 | 2014-09-18 | Airline Tariff Publishing Company | System, method and computer program product for providing a fare analytic engine |
US20140289391A1 (en) | 2013-03-19 | 2014-09-25 | Cognizant Technology Solutions India Pvt. Ltd. | Framework for facilitating implementation of multi-tenant saas architecture |
US9059899B2 (en) | 2011-09-07 | 2015-06-16 | Fujitsu Limited | Method and system for interrupt throttling and prevention of frequent toggling of protection groups in a communication network |
US20160019464A1 (en) * | 2014-07-18 | 2016-01-21 | Oracle International Corporation | Adapting digital content based upon usage patterns |
US20170193017A1 (en) | 2013-02-08 | 2017-07-06 | Douglas T. Migliori | Common Data Service Providing Semantic Interoperability for IOT-Centric Commerce |
-
2015
- 2015-09-08 US US14/847,962 patent/US11068487B2/en active Active
Patent Citations (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4766604A (en) | 1986-11-07 | 1988-08-23 | Messagephone, Inc. | Method for receiving and delivering voice messages |
US6088717A (en) | 1996-02-29 | 2000-07-11 | Onename Corporation | Computer-based communication system and method using metadata defining a control-structure |
US6418202B1 (en) | 1998-10-27 | 2002-07-09 | At&T Corp. | Spontaneous messaging service for prepaid calling card users |
EP1355232A2 (en) | 2002-04-15 | 2003-10-22 | Microsoft Corporation | Filtering of event notifications based on event subscriptions |
US20060190591A1 (en) | 2002-05-15 | 2006-08-24 | Microsoft Corporation | Method and system for supporting the communication of presence information regarding one or more telephony devices |
US8239426B2 (en) | 2003-05-09 | 2012-08-07 | Jda Software Group, Inc. | Data management system providing a data thesaurus for mapping between multiple data schemas or between multiple domains within a data schema |
US8291453B2 (en) | 2003-09-23 | 2012-10-16 | Time Warner Cable Inc. | Scheduling trigger apparatus and method |
US20050114487A1 (en) | 2003-11-12 | 2005-05-26 | Jin Peng | Notification framework and method of distributing notification |
US20140074826A1 (en) * | 2004-04-07 | 2014-03-13 | Oracle Otc Subsidiary Llc | Ontology for use with a system, method, and computer readable medium for retrieving information and response to a query |
US20110145301A1 (en) | 2005-07-01 | 2011-06-16 | Business Objects Software Ltd. | Apparatus And Method For Producing A Virtual Database From Data Sources Exhibiting Heterogeneous Schemas |
US8577927B2 (en) | 2005-07-01 | 2013-11-05 | Business Objects Software Limited | Producing a virtual database from data sources exhibiting heterogeneous schemas |
US7991778B2 (en) | 2005-08-23 | 2011-08-02 | Ricoh Co., Ltd. | Triggering actions with captured input in a mixed media environment |
US7962633B1 (en) | 2005-10-13 | 2011-06-14 | Juniper Networks, Inc. | Network service management using customizable business-level rules |
US7886001B2 (en) | 2005-12-23 | 2011-02-08 | Cisco Technology, Inc. | Method and apparatus for controlling actions based on triggers in a conference |
US8086560B2 (en) | 2006-01-31 | 2011-12-27 | International Business Machines Corporation | Schema mapping specification framework |
US20080256124A1 (en) | 2006-01-31 | 2008-10-16 | Hernandez-Sherrington Mauricio | Schema mapping specification framework |
US20070180043A1 (en) | 2006-01-31 | 2007-08-02 | Microsoft Corporation | Message object model |
US7664867B2 (en) | 2006-03-01 | 2010-02-16 | Bea Systems, Inc. | Reporting queue delays in SOAP messages |
US20070208870A1 (en) | 2006-03-01 | 2007-09-06 | Bea Systems, Inc. | Reporting queue delays in SOAP messages |
US8281408B2 (en) | 2006-08-18 | 2012-10-02 | Medtronic, Inc. | Secure telemetric link |
US8060546B2 (en) | 2006-09-01 | 2011-11-15 | Hewlett-Packard Company | Positionally dependent pattern checking in character strings using deterministic finite automata |
US8665911B2 (en) | 2006-10-27 | 2014-03-04 | Hewlett-Packard Development Company, L.P. | Signature checking using deterministic finite state machines |
US20080109884A1 (en) | 2006-11-07 | 2008-05-08 | Fmr Corp. | Triggering of Authentication Rules for Service Provisioning |
US7747558B2 (en) | 2007-06-07 | 2010-06-29 | Motorola, Inc. | Method and apparatus to bind media with metadata using standard metadata headers |
US20090177727A1 (en) * | 2008-01-07 | 2009-07-09 | Cassatt Corporation | Evaluation of Current Capacity Levels of Resources in a Distributed Computing System |
US20090177669A1 (en) * | 2008-01-09 | 2009-07-09 | Karempudi Ramarao | Processing structured electronic document streams using look-ahead automata |
US20100037088A1 (en) | 2008-08-08 | 2010-02-11 | Innopath Software, Inc. | Intelligent Mobile Device Management Client |
US20100100518A1 (en) * | 2008-10-16 | 2010-04-22 | International Business Machines Corporation | Rules-Based Cross-FSM Transition Triggering |
US8484185B2 (en) | 2008-12-30 | 2013-07-09 | Telecom Italia S.P.A. | Context-based communication service |
US20130275164A1 (en) * | 2010-01-18 | 2013-10-17 | Apple Inc. | Intelligent Automated Assistant |
US20110258638A1 (en) | 2010-04-20 | 2011-10-20 | Davies Paul J | Distributed processing of binary objects via message queues including a failover safeguard |
US20110296185A1 (en) | 2010-05-28 | 2011-12-01 | Cisco Technology, Inc. | Protection of Control Plane Traffic Against Replayed and Delayed Packet Attack |
US8775457B2 (en) | 2010-05-31 | 2014-07-08 | Red Hat, Inc. | Efficient string matching state machine |
US8782184B2 (en) | 2011-04-04 | 2014-07-15 | Message Systems, Inc. | Method and system for adaptive delivery of digital messages |
US8719605B2 (en) | 2011-06-30 | 2014-05-06 | International Business Machines Corporation | Method for detecting a trigger to a program not actively being reviewed by the user and performing a power saving action without placing the device as a whole into a sleep state |
US20130041958A1 (en) * | 2011-08-10 | 2013-02-14 | Eyal POST | System and method for project management system operation using electronic messaging |
US9059899B2 (en) | 2011-09-07 | 2015-06-16 | Fujitsu Limited | Method and system for interrupt throttling and prevention of frequent toggling of protection groups in a communication network |
US20130239126A1 (en) | 2012-03-09 | 2013-09-12 | Sap Ag | Automated Execution of Processes |
US20170193017A1 (en) | 2013-02-08 | 2017-07-06 | Douglas T. Migliori | Common Data Service Providing Semantic Interoperability for IOT-Centric Commerce |
US20140278590A1 (en) * | 2013-03-13 | 2014-09-18 | Airline Tariff Publishing Company | System, method and computer program product for providing a fare analytic engine |
US20140289391A1 (en) | 2013-03-19 | 2014-09-25 | Cognizant Technology Solutions India Pvt. Ltd. | Framework for facilitating implementation of multi-tenant saas architecture |
US20160019464A1 (en) * | 2014-07-18 | 2016-01-21 | Oracle International Corporation | Adapting digital content based upon usage patterns |
Non-Patent Citations (7)
Title |
---|
Brad Chacos, "How to Use IFTTT to Automate your Online Life", Jul. 18, 2013, pp. 1-11. |
International Search Report and Written Opinion from PCT/US2016/050792, dated Dec. 8, 2016, Amazon Technologies, Inc., pp. 1-10. |
Office Action from European Application No. 16 779 207.6-1221, dated Dec. 16, 2019, Amazon Technologies, Inc., pp. 1-6. |
Office Action from European Application No. 16779207.6-1203, dated Feb. 2, 2021, pp. 1-8. |
U.S. Appl. No. 14/529,096, filed Oct. 30, 2014, Mihir Rajendrabhai Patel et al. |
U.S. Appl. No. 14/529,097, filed Oct. 30, 2014, Mihir Rajendrabhai Patel, et al. |
Wikipedia, "Sorting algorithm", Retrieved from https://en.wikipedia.org/w.index.php?title=Sorting_algorithm&oldid-628674620#frb-inline, dated Oct. 7, 2014, pp. 1-11. |
Also Published As
Publication number | Publication date |
---|---|
US20170068706A1 (en) | 2017-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12238160B2 (en) | Rule-based action triggering in a provider network | |
US10185601B2 (en) | Software defined SaaS platform | |
US9973306B2 (en) | Freshness-sensitive message delivery | |
US10505881B2 (en) | Generating message envelopes for heterogeneous events | |
US9588822B1 (en) | Scheduler for data pipeline | |
US9535754B1 (en) | Dynamic provisioning of computing resources | |
US11704616B2 (en) | Systems and methods for distributed business processmanagement | |
AU2022203400B2 (en) | Rule-based action triggering in a provider network | |
US10372572B1 (en) | Prediction model testing framework | |
US11068487B2 (en) | Event-stream searching using compiled rule patterns | |
CN116457759A (en) | Service orchestration within a distributed container group based system | |
US20170033979A1 (en) | Restoration of consistent regions within a streaming environment | |
US10990887B1 (en) | Anything-but matching using finite-state machines | |
US20160127253A1 (en) | Routing handler for rule-based action triggering | |
Wang et al. | Transformer: A new paradigm for building data-parallel programming models | |
WO2020047390A1 (en) | Systems and methods for hybrid burst optimized regulated workload orchestration for infrastructure as a service | |
CN115373886A (en) | Service group container shutdown method, device, computer equipment and storage medium | |
CA2996884C (en) | Event-stream searching using compiled rule patterns | |
US11050846B2 (en) | Program code allocation based on processor features | |
Demidov et al. | CONFIGURING THE STRUCTURE OF THE SERVERLESS SYSTEM FOR EFFICIENT DATA COLLECTION | |
CN117971412A (en) | Task dependency scheduling method supporting dependency arrangement |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: AMAZON TECHNOLOGIES, INC., WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BRAY, TIMOTHY WILLIAM;REEL/FRAME:038763/0993 Effective date: 20160502 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STCV | Information on status: appeal procedure |
Free format text: NOTICE OF APPEAL FILED |
|
STCV | Information on status: appeal procedure |
Free format text: APPEAL BRIEF (OR SUPPLEMENTAL BRIEF) ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: AWAITING TC RESP., ISSUE FEE NOT PAID |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT RECEIVED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |