An eventcloud is a distributed datastore that allows to store quadruples (RDF triples with context) and to manage events represented as quadruples. An eventcloud is based on a structured P2P overlay network combining high-performance elastic data processing infrastructure (grids, clouds), i.e. whose nodes acquisition and relinquishment can be dynamic and subject to a pay-per-use mode. Each node participating in the overlay networks will be responsible for managing the storage of subsets of the events, and will help in matching potential looked up events and disseminating them in a collaborative manner. As such, each node is also potentially an event broker responsible for managing subscriptions and routing notifications. Events may be filtered according to the social filter before to be delivered.
Functionality
- Event storage (temporary and/or permanently) through:
- Put/Get API to populate “synchronously” the store with, for example,
data from a given database - Publish/Subscribe API to allow higher scalability
- Put/Get API to populate “synchronously” the store with, for example,
- Quality of Service corresponding to Event Level Agreements
- Number of notifications delivered to subscribers per time unit
- Event delivery ordering (or at least out-of-order detection) in order to
guarantee fairness regarding a notification point of view, events should
better be delivered in a preserved order - Event delivery guarantee even in case of non-robust or malicious nodes
- Flexibility, elasticity, portability, easiness for someone to deploy and to use.
Technical Requirements
The Event Cloud requires Java 6 or higher to run. On some node deployments, specific network ports needs to be open to enable communication with external entities. The source code is publicly available from http://eventcloud.inria.fr
Components Architecture
- Provided interfaces:
- SubscribeApi: Used to subscribe asynchronously to events from a
given stream - PublishApi: Used to push events asynchronously into a specified
stream - PutGetApi: Used to store and retrieve historical events from a given
stream - EventCloudManagementApi: Manages the event clouds (e.g. to create
a stream, to configure the elasticity of a stream, etc.) - EventCloudMonitoringApi: Manages the specified stream in nonfunctional ways such as monitoring data (hardware like the memory
consumption but also virtual like the number of subscriptions)
- SubscribeApi: Used to subscribe asynchronously to events from a
- Required interfaces:
- NotifyApi: Used to notify the subscribers about some events which a
subscription (e.g. to push matching events from a stream to the DCEP
for the subscriptions registered by the DCEP or from an Event Cloud to
the DSB for the subscriptions registered by the DSB).
- NotifyApi: Used to notify the subscribers about some events which a
Movie
This movie shows the creation and the deployment of an eventcloud with one associated publish and subscribe proxy. These proxies are used to communicate with the eventcloud. SoapUi is used to simulate the clients that interact with the proxies. First a subscription is sent from the subscribe proxy. Then, two events are published from the publish proxy. Each event from a different source. The first one is supposed to be refused by the social filter whereas the second is accepted. At the end the eventcloud logs are analyzed to popup a small swing application that displays the events which have been handled. This graphical applications also shows all the necessary details to understand why the event has been accepted or refused.