This is an automated email from the ASF dual-hosted git repository.

sijie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-pulsar.wiki.git


The following commit(s) were added to refs/heads/master by this push:
     new d6403e4  Created PIP 21: Pulsar Edge Component (markdown)
d6403e4 is described below

commit d6403e4def91bec123952e5dde677ad60a042199
Author: Sijie Guo <[email protected]>
AuthorDate: Fri Aug 10 12:04:06 2018 -0700

    Created PIP 21: Pulsar Edge Component (markdown)
---
 PIP-21:-Pulsar-Edge-Component.md | 52 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)

diff --git a/PIP-21:-Pulsar-Edge-Component.md b/PIP-21:-Pulsar-Edge-Component.md
new file mode 100644
index 0000000..b13c804
--- /dev/null
+++ b/PIP-21:-Pulsar-Edge-Component.md
@@ -0,0 +1,52 @@
+- **Status**: Proposed
+- **Author**: [David Kjerrumgaard](https://github.com/codelipenghui)
+- **Pull Request**: -
+- **Mailing List discussion**: 
+
+I am proposing the creation of a lightweight, small-resource footprint 
software component that can be deployed on “edge” devices such as IoT Gateway 
boxes or similar. Target environment resource specifications are; 1 CPUs, 1 GB 
RAM, 4GB Flash storage, and a 1 Gbps NIC.
+
+## Motivation
+
+The current Pulsar function runtime environment is located on a Pulsar Broker 
instance, which is typically deployed in a corporate datacenter or public cloud 
provider, behind a firewall. This introduces a significant amount of latency 
from the time an event was generated until the time a Pulsar function is able 
to act upon it.
+
+
+
+ 
+Figure 1: Current State
+
+
+Therefore, it would be desirable to create a software component that provides 
an environment for running Pulsar functions in a resource constrained 
environment. 
+
+In the desired state, we would be able to host simple Pulsar functions on the 
IoT Gateway device itself, much closer to the event source. This allows us to 
perform functions such as filtering, alerting, message prioritization, or even 
probabilistic algorithms with small memory requirements such as Bloom 
Filtering, Top-K, event frequency, distinct element counts, or anomaly 
detection based on t-digest.
+
+Events can still be forwarded to the downstream Pulsar cluster for longer-term 
storage, and additional Pulsar function execution.
+
+
+Figure 2: Desired State 
+
+
+## Requirements
+
+The Pulsar Edge Component should have the following capabilities:
+- The ability to run in a resource constrained environment.
+- A REST interface that allows users to submit function packages (jar files, 
python files, etc)
+- A REST interface that allows users to start/stop/create/configure Pulsar 
functions 
+- Should provide the same interface as the CLI 
+  - Support for secure SSL/TLS communication for the REST endpoint
+- A runtime environment for Pulsar functions.
+- The ability to forward messages to multiple topics on a Pulsar cluster over 
TCP.
+- The ability to batch messages before forwarding to Pulsar (to improve 
throughput)
+- A communication back-channel that allows Pulsar clients to send instructions 
/ messages back to the Edge component, e.g. if an alert condition is detected 
upstream, we want to be able to send a “turn off the machine” message back to 
the device and would like to use the edge component as the intermediary for 
this. (This is a “nice to have”)
+
+## Design
+
+The Pulsar Edge Component will wrap a standard pulsar client object, that it 
will use to forward the events to the Pulsar Cluster. It will also have the 
same pub/sub API as the Pulsar Client.  The Pulsar edge component should also 
provide a mechanism for enabling message batching prior to transmitting them 
over TCP to the Pulsar cluster. This will provide useful in high-volume 
environments when we want to improve throughput.
+
+IoT applications would be used to capture the sensor data that is transmitted 
to the ioT gateway device over short-range protocols such as ZigBee, BlueTooth, 
convert it into the desired format, and publish it to the Pulsar Gateway object 
using the pub/sub API. 
+
+
+Figure 3: Pulsar Edge Component Design
+
+
+
+

Reply via email to