The point of no return for your events. EventHorizon is an open source CloudEvents implementation to allow handling massive number of events.
EventHorizon provides a uniform way for handling events (CloudEvents) in a Kubernetes native way, by implementing a Custom Resource Definition. Example: samples/kubernetes/EventHorizon.yml.
Under active development, any contributions are welcome.
Download latest release at GitHub releases page, extract content and open a terminal inside the folder.
Create the custom resources:
kubectl apply -f install/kubernetes/crds/
Install the demo app:
kubectl apply -f install/kubernetes/demo.yml
Apply the sample resource:
kubectl apply -f samples/kubernetes/EventHorizon.yml
Set those environment variables:
export EVENTHORIZON_MODE=standalone
export EVENTHORIZON_NAME=eventhorizon
export EVENTHORIZON_STANDALONE_CONFIG=samples/standalone/stdout.yml
export EVENTHORIZON_LOGGING_LEVEL=info
export EVENTHORIZON_LOGGING_PRETTY=true
Start EventHorizon:
./bin/eventhorizon
Variable | Default | Options |
---|---|---|
EVENTHORIZON_MODE | kubernetes | kubernetes, standalone |
EVENTHORIZON_NAME | kube-system/eventhorizon | |
EVENTHORIZON_KUBERNETES_INCLUSTER | true | |
EVENTHORIZON_KUBERNETES_KUBECONFIG | ||
EVENTHORIZON_KUBERNETES_MASTERURL | ||
EVENTHORIZON_STANDALONE_CONFIG | /opt/acesso/samples/standalone/stdout.yml | |
EVENTHORIZON_LOGGING_ENABLED | true | |
EVENTHORIZON_LOGGING_LEVEL | info | debug, info, warn, error, fatal, panic |
EVENTHORIZON_LOGGING_PRETTY | false |
Basic comparison running on a MacBook Pro (Retina, 13-inch, Early 2015), 2,7 GHz Intel Core i5, 8 GB 1867 MHz DDR3, with Docker for Mac configured with 4 CPUs, 4 GiB of memory and 512 MiB of swap.
Commands:
$ docker-compose -f compose.bench.yml up
$ fortio load \
-c 4 -qps 50000 -t 30s -a -labels "eventhorizon stdout" \
-content-type application/json \
-H "Ce-Custom-A: Foo" \
-H "Ce-Custom-B: Bar" \
-H "Ce-Id: BenchmarkHTTPClient" \
-H "Ce-Source: myapp" \
-H "Ce-Specversion: 0.3" \
-H "Ce-Subject: MyMethod.MyAction" \
-H "Ce-Time: 2019-08-20T22:18:27.166904Z" \
-H "Ce-Type: io.request.rpc" \
http://localhost:1257
$ fortio load \
-c 4 -qps 50000 -t 30s -a -labels "eventhorizon fluentd tcp" \
-content-type application/json \
-H "Ce-Custom-A: Foo" \
-H "Ce-Custom-B: Bar" \
-H "Ce-Id: BenchmarkHTTPClient" \
-H "Ce-Source: myapp" \
-H "Ce-Specversion: 0.3" \
-H "Ce-Subject: MyMethod.MyAction" \
-H "Ce-Time: 2019-08-20T22:18:27.166904Z" \
-H "Ce-Type: io.request.rpc" \
http://localhost:1247
$ fortio load \
-c 4 -qps 50000 -t 30s -a -labels "eventhorizon fluentd sock" \
-content-type application/json \
-H "Ce-Custom-A: Foo" \
-H "Ce-Custom-B: Bar" \
-H "Ce-Id: BenchmarkHTTPClient" \
-H "Ce-Source: myapp" \
-H "Ce-Specversion: 0.3" \
-H "Ce-Subject: MyMethod.MyAction" \
-H "Ce-Time: 2019-08-20T22:18:27.166904Z" \
-H "Ce-Type: io.request.rpc" \
http://localhost:1237