DESIGN AND IMPLEMENTATION OF EVENT BASED SUBSCRIPTION/NOTIFICATION PARADIGM FOR DISTRIBUTED ENVIRONMENTS
A majority of today's applications are distributed in nature and hence there is a need for monitoring and reacting to changes in a distributed application environment. In applications, such as stock tracking, weather alert and forecasting, and network management, timely notification of changes are critical. In the call-driven or demand-based approach, applications that are interested in the monitoring of changes (or specific states) need to take initiative to execute a query to pull to infer changes and perform appropriate actions. However, the conventional pull model is inadequate for large-scaled (distributed) environments since it may the window of opportunity if polling is too slow or incur excessive unnecessary system resources if polling is done too frequently. In contrast, the distributed event-based system, based on the event-driven approach (or push), supports timely notification of changes and hence is appropriate for building applications that must monitor and react to changes (in both
centralized and distributed environments). A system extended with active capability automatically detects occurrences of the events of interest, and provides timely notification from the producer (notifier) to consumers (subscribers).
This thesis extends the earlier work on Local Event Detector (LED) to provide active capability in a distributed environment. The aim of this thesis is to support event detection across address spaces, provide interface for event registration and notification, and support composite event detection. This thesis discusses the design and implementation of the distributed event-based system, which is called Global Event Detector (GED). The design is based on the notify/subscribe paradigm, and uses the Event-Condition-Action (ECA) rules to support active capability: when an event is detected, a condition is evaluated and an action is executed if the condition is satisfied. This thesis also summarizes the differences between an earlier C++ version and the current Java version in terms of functionality and advantages.