{'fraction_non_alphanumeric': 0.028458976687859523, 'fraction_numerical': 0.003027550711474417, 'mean_word_length': 5.453125, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Challenges for Distributed Event Services: Scalability vs. Expressiveness

The event-based style is a very promising approach for the development and integration of distributed objects. An event notification service (or event service) is the glue that ties together distributed components in an event-based architecture. An event service implements what is commonly known as the publish/subscribe protocol: components publish events to inform other components of a change in their internal state or to request services from other components; the event service registers the interest of components expressed by means of subscriptions and consequently dispatches event notifications. In practice, the event service mediates and facilitates the interaction among applications by filtering, aggregating, and delivering events on their behalf. Because of this decoupling, an event service is particularly suitable for supporting heterogeneous distributed objects. The functionality of an event service is characterized by two conflicting requirements: scalability and expressiveness. Scalability means that the service must be available over a wide-area network populated by numerous components each one producing and consuming many events. Expressiveness demands a rich subscription language that gives applications a flexible and fine-grained selection mechanism to describe precisely those events or combinations of events in which they are interested. This tension between scalability and expressiveness is evident in all the recently proposed technologies. The ones that provide an event service facility (e.g., the CORBA Event Service [4], the Java Distributed Event Specification [8], iBus [7], JEDI [2], Keryx [10], Elvin [6], and TIBCO’s TIB/Rendezvous [9]), as well as other, more mature technologies not explicitly targeted at this problem domain (e.g., the USENET news infrastructure and IP multicast), represent potential or partial solutions. One problem with some of these technologies (CORBA, Java Events, iBus, USENET News, and IP multicast) is that they offer only a limited selection capability, typically based on a predefined set of “channels” or equivalent multicast addresses, that greatly reduces their potential use as a generic event service. On the other hand, the systems that offer a better data model and better event filtering adopt either a classical centralized architecture (Elvin) or a simple extension of the centralized architecture in which the distributed components are connected in a hierarchical structure (JEDI, Keryx and TIB/Rendezvous). While this latter approach is relatively simple and effective in many cases, we argue that it has some fundamental shortcomings when scaling up to widearea networks. In particular, it introduces unnecessary message traffic, it overloads higher nodes in the hierarchy, and it has a single point of failure in every node. We believe that the successful integration of distributed objects by means of events depends on both the scalability and the expressiveness of the event service. Here we propose a research approach to this problem that we pursued with our SIENA project [1, 5]. In particular, we focus on how to realize scalable true content-based routing of events over a distributed event service with a generic topology.