Introduction
The Light Weight Event System (LWES) is an open source toolkit allowing the exchange of information between machines in a platform agnostic, language neutral, decoupled way. The exchange of information is done in a connectionless fashion using multicast or unicast UDP, using self-describing data so that any platform or language can translate it into its local dialect.
This leads to a system with the following features:
- Fire and forget messaging
- Decoupling of senders (emitter) from receivers (listeners)
- Centerless, no single point of failure
- Support for many to many communications where nodes can enter and leave the system at any time
- Computer language and hardware platform independent
The system consists of two major components:
- Emitter: a source of events, this is usually a server or process that wants to announce something
- Listener: a sink of events which deserializes and processes events on the fly as they are received.
Optionally, one can run a "journaller", which is a listener that writes raw events to a compressed log instead of deserializing the data, effectively deferring deserialization to a later time.
LWES uses key-value pair data types and supports strings as keys and a set of primitive types as values. Note that LWES does not support complex types or nested objects. This was a deliberate design decision in order to constrain the scope of the system and limit data exchanges to just key-value pairs. If you need to exchange complex types or do RPC, tools such as Thrift or Protocol Buffers are probably more appropriate for you.
The Light Weight Event System was originally developed at GoTo.com, which became Overture, which was acquired by Yahoo!, where it was open sourced in 2007. Currently, it is maintained by developers at OpenX as well as some of the original contributors.