US20050251811A1 - Distributed messaging system supporting stateful - Google Patents

Distributed messaging system supporting stateful Download PDF

Info

Publication number
US20050251811A1
US20050251811A1 US10/841,916 US84191604A US2005251811A1 US 20050251811 A1 US20050251811 A1 US 20050251811A1 US 84191604 A US84191604 A US 84191604A US 2005251811 A1 US2005251811 A1 US 2005251811A1
Authority
US
United States
Prior art keywords
transform
messages
input
input messages
objects
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US10/841,916
Inventor
Roman Ginis
Robert Strom
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to US10/841,916 priority Critical patent/US20050251811A1/en
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION reassignment INTERNATIONAL BUSINESS MACHINES CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: GINIS, ROMAN, STROM, ROBERT EVAN
Publication of US20050251811A1 publication Critical patent/US20050251811A1/en
Priority to US12/114,464 priority patent/US8533742B2/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/288Distributed intermediate devices, i.e. intermediate devices for interaction with other intermediate devices on the same level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content

Definitions

  • the present invention relates to data processing systems and, in particular, to messaging systems in a distributed processing environment. Still more particularly, the present invention provides a distributed messaging system supporting stateful subscriptions.
  • a publish-subscribe messaging middleware is a system in which there are two types of clients.
  • Publishers generate messages, also referred to as events, containing a topic and some data content.
  • Subscribers request a criterion, also called a subscription, specifying what kind of information, based on published messages, the system is to deliver in the future.
  • Publishers and subscribers are anonymous, meaning that publishers do not necessarily know how many subscribers there are or where they are and, similarly, subscribers do not necessarily know where publishers are.
  • mediators may be introduced into the flow of traditional messaging middleware. This is a useful concept; however, in their current manifestations, mediators are complex to program, require external database services in order to store and access state, and groups of mediators cannot be automatically combined.
  • a stateful publish-subscribe system extends the functionality of the content-based approach to include more general state-valued expressions.
  • Stateful subscriptions may refer to one or more message histories and may include more complex expressions. Therefore, subscribers may receive different information than that provided in the published messages.
  • a plurality of broker machines is provided to deliver messages sent by publishing clients toward subscribing clients based upon the contents of the messages and stateful transformations requested by the subscribing clients. These broker machines form an overlay network.
  • Subscription specifications are analyzed by a compiler and converted into a collection of transform objects and view objects.
  • the messaging system builds a structure containing all transform objects and view objects needed for all intermediate and subscribed views of all subscriptions. This messaging system uses this structure to allocate transform objects and view objects to broker machines in the overlay network.
  • FIG. 1 depicts a pictorial representation of a network of data processing systems in which the present invention may be implemented
  • FIG. 2 is a block diagram of a data processing system that may be implemented as a server in accordance with a preferred embodiment of the present invention
  • FIG. 3 is a block diagram of a data processing that may serve as a client of a service in accordance with a preferred embodiment of the present invention
  • FIG. 4 illustrates a broker network for a publish-subscribe system in accordance with a preferred embodiment of the present invention
  • FIG. 5 illustrates how a stateful publish-subscribe service of the present invention appears to clients
  • FIG. 6 illustrates an example of a operator that transforms input view objects to an output view object in accordance with a preferred embodiment of the present invention
  • FIG. 7 illustrates an example dataflow hypergraph distributed over multiple brokers in accordance with a preferred embodiment of the present invention
  • FIG. 8 depicts a process for deploying transform objects and view objects when a dataflow specification is a declarative specification in accordance with a preferred embodiment of the present invention
  • FIG. 9 is a flowchart illustrating the configuration and deployment of a stateful publish-subscribe system in accordance with a preferred embodiment of the present invention.
  • FIG. 10 is a flowchart illustrating the operation of a stateful publish-subscribe system at runtime in accordance with a preferred embodiment of the present invention.
  • the present invention provides a method, apparatus and computer program product for supporting stateful subscriptions in a distributed messaging system.
  • the data processing device may be a stand-alone computing device or may be a distributed data processing system in which multiple computing devices are utilized to perform various aspects of the present invention. Therefore, the following FIGS. 1-3 are provided as exemplary diagrams of data processing environments in which the present invention may be implemented. It should be appreciated that FIGS. 1-3 are only exemplary and are not intended to assert or imply any limitation with regard to the environments in which the present invention may be implemented. Many modifications to the depicted environments may be made without departing from the spirit and scope of the present invention.
  • FIG. 1 depicts a pictorial representation of a network of data processing systems in which the present invention may be implemented.
  • Network data processing system 100 is a network of computers in which the present invention may be implemented.
  • Network data processing system 100 contains a network 102 , which is the medium used to provide communications links between various devices and computers connected together within network data processing system 100 .
  • Network 102 may include connections, such as wire, wireless communication links, or fiber optic cables.
  • servers 112 , 114 , 116 are connected to network 102 along with storage unit 106 .
  • clients 122 , 124 , and 126 are connected to network 102 .
  • These clients 122 , 124 , and 126 may be, for example, personal computers or network computers.
  • servers 112 , 114 , 116 provide data, such as boot files, operating system images, and applications to clients 122 , 124 , 126 .
  • Clients 122 , 124 , and 126 are clients to servers 112 , 114 , 116 .
  • Network data processing system 100 may include additional servers, clients, and other devices not shown.
  • network data processing system 100 provides a distributed messaging system that supports stateful subscriptions.
  • a subset of clients 122 , 124 , 126 may be publishing clients, while others of clients 122 , 124 , 126 may be subscribing clients, for example.
  • Published events may also be generated by one or more of servers 112 , 114 , 116 .
  • a stateful publish-subscribe system is a distributed messaging system in which at least one subscription is stateful.
  • Other subscriptions may be content-based or, in other words, stateless.
  • a stateful publish-subscribe system must compute information that requires multiple messages of one or more streams. For example, a stateful subscription may request, “Give me the highest quote within each one-minute period.”
  • a stateful subscription may entail delivering information other than simply a copy of the published messages. For example, a stateful subscription may request, “Tell me how many stocks fell during each one-minute period.”
  • the stateful publish-subscribe system is implemented within an overlay network, which is a collection of service machines, referred to as brokers, that accept messages from publisher clients, deliver subscribed information to subscriber clients, and route information between publishers and subscribers.
  • An overlay network which is a collection of service machines, referred to as brokers, that accept messages from publisher clients, deliver subscribed information to subscriber clients, and route information between publishers and subscribers.
  • servers 112 , 114 , 116 may be broker machines.
  • Both content-based and stateful publish-subscribe systems support a message delivery model based on two roles: (1) publishers produce information in the form of streams of structured messages; and, (2) subscribers specify in advance what kinds of information in which they are interested. As messages are later published, relevant information is delivered in a timely fashion to subscribers.
  • Content-based subscriptions are restricted to Boolean filter predicates that can only refer to fields in individual messages. For example, a content-based subscription may request, “Deliver message if traded volume>1000 shares.”
  • stateful subscriptions are more general state-valued expressions and may refer to one or more messages, either by referring to multiple messages of a single message stream or by referring to multiple message streams or both.
  • a content-based publish-subscribe system because subscriptions can only specify filtering, all published messages are either passed through to subscribers or filtered out. Therefore, messages received by subscribers are identically structured copies of messages published by publishers.
  • subscriptions may include more complex expressions and, therefore, subscribers may receive information that is not identical to the published messages with different formatting.
  • a published message may have only integer prices, while subscriptions to average prices may have non-integer averages.
  • Published message streams are associated with topics. Each topic is associated with a base relation.
  • a base relation is a table of tuples, each tuple corresponding to an event in the particular message stream.
  • Subscriptions are expressed as view expressions in a relational algebraic language, although other representations may be used, such as eXtensible Markup Language (XML), for example.
  • the language defines a cascade of views of base relations and derived views computed from either base relations or other views.
  • the set of subscriptions is compiled into a collection of objects that are deployed and integrated into messaging brokers.
  • publishers and subscribers connect to these brokers.
  • Published events are delivered to objects associated with base relations. The events are then pushed downstream to other objects that compute how each derived view changes based on the change to the base relation.
  • Those derived views associated with subscriptions then deliver events to the subscriber informing the subscriber of each change in state.
  • network data processing system 100 is the Internet with network 102 representing a worldwide collection of networks and gateways that use the Transmission Control Protocol/Internet Protocol (TCP/IP) suite of protocols to communicate with one another.
  • TCP/IP Transmission Control Protocol/Internet Protocol
  • At the heart of the Internet is a backbone of high-speed data communication lines between major nodes or host computers, consisting of thousands of commercial, government, educational and other computer systems that route data and messages.
  • network data processing system 100 also may be implemented as a number of different types of networks, such as for example, an intranet, a local area network (LAN), or a wide area network (WAN).
  • FIG. 1 is intended as an example, and not as an architectural limitation for the present invention.
  • Data processing system 200 may be a symmetric multiprocessor (SMP) system including a plurality of processors 202 and 204 connected to system bus 206 . Alternatively, a single processor system may be employed. Also connected to system bus 206 is memory controller/cache 208 , which provides an interface to local memory 209 . I/O bus bridge 210 is connected to system bus 206 and provides an interface to I/O bus 212 . Memory controller/cache 208 and I/O bus bridge 210 may be integrated as depicted.
  • SMP symmetric multiprocessor
  • Peripheral component interconnect (PCI) bus bridge 214 connected to I/O bus 212 provides an interface to PCI local bus 216 .
  • PCI Peripheral component interconnect
  • a number of modems may be connected to PCI local bus 216 .
  • Typical PCI bus implementations will support four PCI expansion slots or add-in connectors.
  • Communications links to clients 108 - 112 in FIG. 1 may be provided through modem 218 and network adapter 220 connected to PCI local bus 216 through add-in connectors.
  • Additional PCI bus bridges 222 and 224 provide interfaces for additional PCI local buses 226 and 228 , from which additional modems or network adapters may be supported. In this manner, data processing system 200 allows connections to multiple network computers.
  • a memory-mapped graphics adapter 230 and hard disk 232 may also be connected to I/O bus 212 as depicted, either directly or indirectly.
  • FIG. 2 may vary.
  • other peripheral devices such as optical disk drives and the like, also may be used in addition to or in place of the hardware depicted.
  • the depicted example is not meant to imply architectural limitations with respect to the present invention.
  • the data processing system depicted in FIG. 2 may be, for example, an IBM eServerTM pSeries® system, a product of International Business Machines Corporation in Armonk, N.Y., running the Advanced Interactive Executive (AIX) operating system or LINUX operating system.
  • An object oriented programming system such as Java may run in conjunction with the operating system and provides calls to the operating system from Java programs or applications executing on data processing system 300 .
  • Java is a trademark of Sun Microsystems, Inc.
  • Data processing system 300 is an example of a computer, such as client 108 in FIG. 1 , in which code or instructions implementing the processes of the present invention may be located.
  • data processing system 300 employs a hub architecture including a north bridge and memory controller hub (MCH) 308 and a south bridge and input/output (I/O) controller hub (ICH) 310 .
  • MCH north bridge and memory controller hub
  • I/O input/output controller hub
  • Processor 302 , main memory 304 , and graphics processor 318 are connected to MCH 308 .
  • Graphics processor 318 may be connected to the MCH through an accelerated graphics port (AGP), for example.
  • AGP accelerated graphics port
  • local area network (LAN) adapter 312 audio adapter 316 , keyboard and mouse adapter 320 , modem 322 , read only memory (ROM) 324 , hard disk drive (HDD) 326 , CD-ROM driver 330 , universal serial bus (USB) ports and other communications ports 332 , and PCI/PCIe devices 334 may be connected to ICH 310 .
  • PCI/PCIe devices may include, for example, Ethernet adapters, add-in cards, PC cards for notebook computers, etc. PCI uses a cardbus controller, while PCIe does not.
  • ROM 324 may be, for example, a flash binary input/output system (BIOS).
  • BIOS binary input/output system
  • Hard disk drive 326 and CD-ROM drive 330 may use, for example, an integrated drive electronics (IDE) or serial advanced technology attachment (SATA) interface.
  • a super I/O (SIO) device 336 may be connected to ICH 310 .
  • IDE integrated drive electronics
  • SATA serial
  • An operating system runs on processor 302 and is used to coordinate and provide control of various components within data processing system 300 in FIG. 3 .
  • the operating system may be a commercially available operating system such as Windows XPTM, which is available from Microsoft Corporation.
  • An object oriented programming system such as Java may run in conjunction with the operating system and provides calls to the operating system from Java programs or applications executing on data processing system 300 .
  • “JAVA” is a trademark of Sun Microsystems, Inc.
  • Instructions for the operating system, the object-oriented programming system, and applications or programs are located on storage devices, such as hard disk drive 326 , and may be loaded into main memory 304 for execution by processor 302 .
  • the processes of the present invention are performed by processor 302 using computer implemented instructions, which may be located in a memory such as, for example, main memory 304 , memory 324 , or in one or more peripheral devices 326 and 330 .
  • FIG. 3 may vary depending on the implementation.
  • Other internal hardware or peripheral devices such as flash memory, equivalent non-volatile memory, or optical disk drives and the like, may be used in addition to or in place of the hardware depicted in FIG. 3 .
  • the processes of the present invention may be applied to a multiprocessor data processing system.
  • data processing system 300 may be a personal digital assistant (PDA), which is configured with flash memory to provide non-volatile memory for storing operating system files and/or user-generated data.
  • PDA personal digital assistant
  • FIG. 3 and above-described examples are not meant to imply architectural limitations.
  • data processing system 300 also may be a tablet computer, laptop computer, or telephone device in addition to taking the form of a PDA.
  • a plurality of broker machines are responsible for delivery of message sent by publishing clients towards subscribing clients based upon the content of the messages and the stateful transformations requested by the subscribing clients. These broker machines form an overlay network.
  • Some broker machines may be specialized for hosting publishing clients, referred to as publisher hosting brokers (PHB), and others for hosting subscribing clients, referred to as subscriber hosting brokers (SHB).
  • PHB publisher hosting brokers
  • SHB subscriber hosting brokers
  • IBs intermediate brokers
  • FIG. 4 illustrates a broker network for a publish-subscribe system in accordance with a preferred embodiment of the present invention.
  • a publishing client such as one of publishers 402 a - 402 d, establishes a connection to a PHB, such as PHB 404 a or PHB 404 b, over a corresponding one of client connections 406 a - 406 d.
  • the client connection may be, for example, any reliable first-in/first-out (FIFO) connection, such as a Transmission Control Protocol/Internet Protocol (TCP/IP) socket connection.
  • FIFO Transmission Control Protocol/Internet Protocol
  • a subscribing client such as one of subscribers 412 a - 412 d, establishes a connection to a SHB, such as SHB 410 a or SHB 410 b, over a corresponding one of client connections 414 a - 414 d, which may be similar to client connections 406 a - 406 d.
  • the PHBs and SHBs are connected, via intermediate brokers 408 a - 408 b, through broker-to-broker links.
  • the publish-subscribe system of the present invention may include a fault-tolerant protocol that tolerates link failures and message re-orderings, in which case it is not necessary for the broker-to-broker connections to use reliable FIFO protocols, such as TCP/IP, but may advantageously use faster, less reliable protocols.
  • Each broker machine may be a stand-alone computer, a process within a computer, or, to minimize delay due to failures, a cluster of redundant processes within multiple computers.
  • the links may be simple socket connections, or connection bundles that use multiple alternative paths for high availability and load balancing.
  • one or more execution engine may run on the brokers in the broker network and be interconnected.
  • the one or more execution engines may be interconnected to form a distributed execution engine.
  • the execution engines running on the plurality of broker machines receive input messages, process the input messages using the transform objects, and route output messages toward subscribers.
  • FIG. 5 illustrates how a stateful publish-subscribe service of the present invention appears to clients.
  • Clients are unaware of the physical broker network or its topology.
  • a client application may connect to any broker in the role of publisher and/or subscriber.
  • Publishing clients are aware only of particular named published message streams, such as message streams 502 , 504 . Multiple clients may publish to the same message stream.
  • derived views based on functions of either published message streams or of other derived views.
  • message streams may be represented as relations.
  • Derived views are represented as relations derived from published message streams or from other derived views by means of relational algebraic expressions in a language, such as Date and Darwen's tutorial-D, Structured Query Language (SQL), or XQUERY.
  • derived view 510 is defined as a function of stream relations 502 and 504 by means of a JOIN expression with relations 502 and 504 as inputs and relation 510 as an output.
  • relation 512 indicated as a subscriber view, is derived from relation 510 by client-specified relational expressions.
  • subscriber view 512 may be a request to group the stock trades of relation 510 by issue and hour and compute the running total volume and max and min price for each issue-hour pair.
  • Each subscribing client subscribes to a particular derived view. As published events enter the system from publishing clients, they are saved in their respective streams. The system is then responsible for updating each derived view according to the previously specified relational expressions and then delivering client messages to each subscriber representing the changes to the state of the respective subscribed view.
  • subscription specifications are analyzed by a compiler and converted into a collection of transform objects and view objects.
  • Each operator that derives a view from one or more inputs corresponds to a transform object.
  • Each view corresponds to a view object.
  • View objects hold the state of a view.
  • Transform objects express the logic for incrementally updating an output view constituting the result of an operator in response to individual changes to input views constituting the arguments to that operator.
  • FIG. 6 illustrates an example of a operator that transforms input view objects to an output view object in accordance with a preferred embodiment of the present invention.
  • views 610 and 620 are view objects that are inputs to some operator, such as, for example, a JOIN operator.
  • Transform 650 is a transform object for that operator, which produces a derived view shown as view object 670 .
  • Transform 650 receives the messages representing changes to its inputs 610 , 620 , computes how the result of the operator changes given the announced changes it has received, and then delivers the computed results to its output view object 670 in the form of change messages. Output view object 670 then propagates in its turn such change messages, either to further transforms, if view object 670 is an intermediate view, or to subscribers, if view object 670 is a subscriber view.
  • FIG. 6 illustrates the objects and message pathways for a single transform implementing a single computational operation.
  • the mechanism of the present invention builds a structure containing all of the transform objects and view objects needed for all intermediate and subscribed views of all subscriptions.
  • This structure is called a dataflow hypergraph.
  • the dataflow hypergraph has nodes corresponding to each view object and hyperedges, which may possibly have more than one input feeding an output, representing each transform object associated with an operation in the subscription specification.
  • the view objects and transform objects are then allocated to actual brokers in the overlay network, either manually by an administrator or automatically via a service, such as the one described in U.S. patent application No. ______ (Attorney Docket No. YOR920040153US1), entitled “CONTINUOUS FEEDBACK-CONTROLLED DEPLOYMENT OF MESSAGE TRANSFORMS IN A DISTRIBUTED MESSAGING SYSTEM,” and filed on an even date herewith.
  • the published streams and the subscribed views may be constrained to be located on brokers where the publishers and subscribers actually connect.
  • the placement of the intermediate transform objects and view objects is not constrained. That is intermediate transform objects and view objects may be placed wherever suitable, taking into consideration the capacities of the broker machines and the links, as well as the desired performance. After such allocation of objects to brokers, the result is a distributed transform graph.
  • FIG. 7 illustrates an example dataflow hypergraph distributed over multiple brokers in accordance with a preferred embodiment of the present invention.
  • the physical network consists of brokers 710 , 720 , 730 , and 740 .
  • the publishing clients are publishing to three separate published message streams: “buys” 722 on broker 720 , “sells” 734 on broker 730 , and “matches” 712 on broker 710 .
  • the subscribing client 750 subscribes to derived view 748 on broker 740 .
  • Broker 710 also includes transforms 714 and 716 , which feed change messages to brokers 720 and 730 , respectively.
  • Broker 720 includes view objects 724 , 726 and transform objects 725 , 727 .
  • view object 726 represents an intermediate derived view or relation, which is based on transform 725 , published stream 722 , and view 724 .
  • Broker 730 includes views 732 and 736 , in addition to published stream 734 , and also includes transforms 735 , 737 .
  • Broker 740 includes views 742 , 744 , 748 , and transform 746 .
  • View 748 is a subscriber view for subscriber 750 .
  • multiple publisher clients may provide messages for a single message stream, and multiple subscriber clients may subscribe and receive updates from the same view.
  • the transform graph consists of multiple transform and view objects distributed over all brokers.
  • the paths between objects will sometimes lie within a broker, as is the case between transform object 725 and intermediate view object 726 .
  • the path must cross over an inter-broker link.
  • within-broker communications between objects may use cheaper communications means, such as parameter passing between objects, whereas inter-broker communications requires generating physical messages or packets that will cross the link.
  • the protocols of all view objects and transform objects will be able to recover from lost, out-of-order, or duplicate messages, and, therefore, will work correctly regardless of which paths between objects cross broker boundaries and which do not.
  • a history of states is stored in a data storage device. For example, messages from the “matches” published stream 712 are stored in storage 782 , messages from the “buys” published stream 722 are stored in storage 784 , and messages from the “sells” published stream 734 are stored in storage 786 .
  • Storage 782 , 784 , 786 may be a portion of system memory or may be a persistent storage, such as a hard drive, or a combination thereof. In a system guaranteeing reliable service, published messages will be logged to persistent storage before being propagated.
  • Other states such as views 742 , 744 , are preferentially stored in main memory and are not required to be stored persistently.
  • FIG. 8 depicts a process for deploying transform objects and view objects when a dataflow specification is a declarative specification in accordance with a preferred embodiment of the present invention.
  • a declarative specification is a program, such as middleware program source 802 .
  • Program source 802 may be written in a language similar to the SQL syntax, for example.
  • Program source 802 may be compiled using compiler 804 into a dataflow hypergraph.
  • Compiler 804 includes particular algorithms for compiling relational algebraic operators into tailored object code that implements transform objects specialized to incrementally evaluate operators, such as join, select, aggregate, etc., for relations of known data types and key signatures.
  • the object code may be, for example, JavaTM programming language code.
  • Compiler 804 represents values of derived states as monotonic knowledge, that is, values in a monotonic domain.
  • a monotonic domain means a set of values that can change value only in one direction.
  • the compiler uses each algebraic expression and the domain of its inputs to determine how to represent the monotonic domain of its result. Because the different values of any field belong to a monotonic domain, the system can always detect which of two values of a single data field is older. As another example, the system distinguishes internally between a “missing value,” which is missing because its value is not yet known (and may later change), and one that is missing because it is known to be absent (and will not change). As yet another example, the system distinguishes between a field having a value that is currently ten, but which may get larger later, from a field whose value is currently ten, but is final and will never change.
  • Compiler 804 generates an object for each relation and an object for each transform.
  • Each algebraic operation with n operands is associated with one transform object with n input interfaces and one output interface to a view object. For example, the join of SELLS and a second relation are compiled into the transform object 735 and the view object 736 .
  • the compiler may then generates a script that is executed at deployment time to instantiate all transform and view objects, connecting an instance of the output interface from each relation to an instance of the input to each transform that uses the relation as an input.
  • Base relations are fed from an “input transform” object, which delivers published messages to the relation.
  • the objects form the knowledge flow graph, or hypergraph, in which published messages enter at base relations and each view object passes the changes to its state to the transform objects that use that relation as an operand. These transform objects then compute the incremental change to the relations to which they are associated and pass that information down to other view objects. Information flows down the graph until it reaches relations associated with subscriptions and then the messages are delivered to “output transforms,” which convert the state change information into messages to subscribing clients.
  • Each relational operator such as join, project, group-by, select, etc.
  • a transform has one or more relations feeding inputs to it and a single relation receiving its output.
  • the incremental transform is an object that, given a message saying that one component of its input has changed, computes the appropriate changes to its output and invokes a method in the output relation indicating what has changed.
  • the hypergraph may be placed manually by an administrator, or, alternatively, the hypergraph may be optimized using transform placement service 806 and automatically deployed using deployment service 808 .
  • the hypergraph is optimized and deployed to broker network 824 by passing broker instructions 812 to broker network 824 and receiving performance information 814 from broker network 824 .
  • An optimization step consolidates multiple subscriptions to exploit common computations and performs other simplifications to reduce the total computational load on the system.
  • a placement step allocates the transform objects of the knowledge flow graph to particular brokers for the purpose of load balancing, reduction of bandwidth, and overall reduction of delays between publishers and subscribers.
  • Broker network 824 receives the knowledge flow graph at deployment time. At execution time, publishers 822 publish message streams to broker network 824 . The brokers receive events and propagate messages representing view changes towards the subscribers. Subscribers 828 may then receive messages from subscriber views in broker network 824 .
  • FIG. 9 is a flowchart illustrating the configuration and deployment of a stateful publish-subscribe system in accordance with a preferred embodiment of the present invention.
  • the process begins and receives middleware programming source (block 902 ).
  • the process compiles the middleware programming source into a knowledge flow graph (block 904 ).
  • the process receives performance information from the broker network (block 906 ) and optimizes the knowledge flow graph based upon the broker network performance information (block 908 ).
  • the process deploys the transform objects and the view objects in the knowledge flow graph to brokers (block 910 ) and the process ends.
  • FIG. 10 is a flowchart illustrating the operation of a stateful publish-subscribe system at runtime in accordance with a preferred embodiment of the present invention.
  • the process begins and publishing clients publish messages to publisher hosting brokers (block 1002 ).
  • Transform objects calculate changes in views based on changes in base relations and/or changes in intermediate views (block 1004 ).
  • the transform objects generate view change messages that propagate toward the subscriber clients.
  • subscriber clients receive view change messages from subscriber hosting brokers representing the subscribed views (block 1006 ).
  • the process shown in FIG. 10 repeats as long as messages continue to be published and the publish-subscribe system is operational.
  • the stateful publish-subscribe system of the present invention is able to be deployed on a wide-area, distributed overlay network of broker machines, communicating by message passing, and being subjected to the possibility of duplicate and out-of-order messages between links.
  • the distributed messaging system of the present invention allows subscriptions expressed as relational algebraic expressions on published message histories. Relational algebra may include, in particular, operators such as select, project, join, extend, group-by, sum, count, and average, for example.
  • the relational algebraic expressions may be mapped to form various query languages, such as SQL and XQUERY.
  • the messaging system of the present invention may allow service specifications that are deterministic and “eventually consistent,” meaning that multiple identical subscriptions eventually receive the same result, but weaker, and hence cheaper to implement, than fully consistent database systems.

Abstract

A distributed messaging system supporting stateful subscriptions is provided. A stateful publish-subscribe system extends the functionality of the content-based approach to include more general state-valued expressions. Stateful subscriptions may refer to one or more message histories and may include more complex expressions. Therefore, subscribers may receive different information than that provided in the published messages. A plurality of broker machines is provided to deliver messages sent by publishing clients toward subscribing clients based upon the contents of the messages and stateful transformations requested by the subscribing clients. Subscription specifications are analyzed by a compiler and converted into a collection of transform objects and view objects. The messaging system builds a structure containing all transform objects and view objects needed for all intermediate and subscribed views of all subscriptions. This messaging system uses this structure to allocate transform objects and view objects to broker machines in the overlay network.

Description

    CROSS REFERENCE TO RELATED APPLICATIONS
  • The present application is related to U.S. patent application Ser. No. ______, attorney docket no. YOR920040153US1, entitled “CONTINUOUS FEEDBACK-CONTROLLED DEPLOYMENT OF MESSAGE TRANSFORMS IN A DISTRIBUTED MESSAGING SYSTEM,” filed on an even date herewith, assigned to the same assignee, and incorporated herein by reference.
  • BACKGROUND OF THE INVENTION
  • 1. Technical Field
  • The present invention relates to data processing systems and, in particular, to messaging systems in a distributed processing environment. Still more particularly, the present invention provides a distributed messaging system supporting stateful subscriptions.
  • 2. Description of Related Art
  • A publish-subscribe messaging middleware is a system in which there are two types of clients. Publishers generate messages, also referred to as events, containing a topic and some data content. Subscribers request a criterion, also called a subscription, specifying what kind of information, based on published messages, the system is to deliver in the future. Publishers and subscribers are anonymous, meaning that publishers do not necessarily know how many subscribers there are or where they are and, similarly, subscribers do not necessarily know where publishers are.
  • A topic-based, or content-based, publish-subscribe system is one in which the delivered messages are a possibly filtered subset of the published messages and the subscription criterion is a property that can be tested on each message independent of any other message. For example, a filter may determine whether “topic=stock-ticker” or “volume>1000.” Content-based or topic-based publish-subscribe systems are referred to herein as “stateless.”
  • There are pre-existing and emerging alternative technologies to solve the deficiencies of content-based publish-subscribe systems. Message mediators may be introduced into the flow of traditional messaging middleware. This is a useful concept; however, in their current manifestations, mediators are complex to program, require external database services in order to store and access state, and groups of mediators cannot be automatically combined.
  • Traditional database systems may also be used. Each published message can give rise to a cascade of transactions updating the message history. Subscriptions can be expressed as views of these histories. Technologies are being developed to allow views to be updated incrementally. Such an approach is easier to program; however, it can be costly and slow if each new message results in a transaction involving a large number of subscribers.
  • An emerging technology still being researched is continuous queries on data streams. These approaches preserve the simpler programming model of the database system approach above and attempt to reduce the cost of traditional databases by a combination of approaches, including batching message updates and restricting the available operations to ones allowing the use of bounded-sized, in-memory sliding windows. However, this approach is restricting and limited.
  • SUMMARY OF THE INVENTION
  • The present invention solves the disadvantages of the prior art and provides a distributed messaging system supporting stateful subscriptions. A stateful publish-subscribe system extends the functionality of the content-based approach to include more general state-valued expressions. Stateful subscriptions may refer to one or more message histories and may include more complex expressions. Therefore, subscribers may receive different information than that provided in the published messages. A plurality of broker machines is provided to deliver messages sent by publishing clients toward subscribing clients based upon the contents of the messages and stateful transformations requested by the subscribing clients. These broker machines form an overlay network. Subscription specifications are analyzed by a compiler and converted into a collection of transform objects and view objects. The messaging system builds a structure containing all transform objects and view objects needed for all intermediate and subscribed views of all subscriptions. This messaging system uses this structure to allocate transform objects and view objects to broker machines in the overlay network.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The novel features believed characteristic of the invention are set forth in the appended claims. The invention itself, however, as well as a preferred mode of use, further objectives and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein:
  • FIG. 1 depicts a pictorial representation of a network of data processing systems in which the present invention may be implemented;
  • FIG. 2 is a block diagram of a data processing system that may be implemented as a server in accordance with a preferred embodiment of the present invention;
  • FIG. 3 is a block diagram of a data processing that may serve as a client of a service in accordance with a preferred embodiment of the present invention;
  • FIG. 4 illustrates a broker network for a publish-subscribe system in accordance with a preferred embodiment of the present invention;
  • FIG. 5 illustrates how a stateful publish-subscribe service of the present invention appears to clients;
  • FIG. 6 illustrates an example of a operator that transforms input view objects to an output view object in accordance with a preferred embodiment of the present invention;
  • FIG. 7 illustrates an example dataflow hypergraph distributed over multiple brokers in accordance with a preferred embodiment of the present invention;
  • FIG. 8 depicts a process for deploying transform objects and view objects when a dataflow specification is a declarative specification in accordance with a preferred embodiment of the present invention;
  • FIG. 9 is a flowchart illustrating the configuration and deployment of a stateful publish-subscribe system in accordance with a preferred embodiment of the present invention; and
  • FIG. 10 is a flowchart illustrating the operation of a stateful publish-subscribe system at runtime in accordance with a preferred embodiment of the present invention.
  • DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
  • The present invention provides a method, apparatus and computer program product for supporting stateful subscriptions in a distributed messaging system. The data processing device may be a stand-alone computing device or may be a distributed data processing system in which multiple computing devices are utilized to perform various aspects of the present invention. Therefore, the following FIGS. 1-3 are provided as exemplary diagrams of data processing environments in which the present invention may be implemented. It should be appreciated that FIGS. 1-3 are only exemplary and are not intended to assert or imply any limitation with regard to the environments in which the present invention may be implemented. Many modifications to the depicted environments may be made without departing from the spirit and scope of the present invention.
  • With reference now to the figures, FIG. 1 depicts a pictorial representation of a network of data processing systems in which the present invention may be implemented. Network data processing system 100 is a network of computers in which the present invention may be implemented. Network data processing system 100 contains a network 102, which is the medium used to provide communications links between various devices and computers connected together within network data processing system 100. Network 102 may include connections, such as wire, wireless communication links, or fiber optic cables.
  • In the depicted example, servers 112, 114, 116 are connected to network 102 along with storage unit 106. In addition, clients 122, 124, and 126 are connected to network 102. These clients 122, 124, and 126 may be, for example, personal computers or network computers. In the depicted example, servers 112, 114, 116 provide data, such as boot files, operating system images, and applications to clients 122, 124, 126. Clients 122, 124, and 126 are clients to servers 112, 114, 116. Network data processing system 100 may include additional servers, clients, and other devices not shown.
  • In accordance with a preferred embodiment of the present invention, network data processing system 100 provides a distributed messaging system that supports stateful subscriptions. A subset of clients 122, 124, 126 may be publishing clients, while others of clients 122, 124, 126 may be subscribing clients, for example. Published events may also be generated by one or more of servers 112, 114, 116.
  • A stateful publish-subscribe system is a distributed messaging system in which at least one subscription is stateful. Other subscriptions may be content-based or, in other words, stateless. In other words, a stateful publish-subscribe system must compute information that requires multiple messages of one or more streams. For example, a stateful subscription may request, “Give me the highest quote within each one-minute period.” A stateful subscription may entail delivering information other than simply a copy of the published messages. For example, a stateful subscription may request, “Tell me how many stocks fell during each one-minute period.”
  • The stateful publish-subscribe system is implemented within an overlay network, which is a collection of service machines, referred to as brokers, that accept messages from publisher clients, deliver subscribed information to subscriber clients, and route information between publishers and subscribers. One or more of servers 112, 114, 116, for example, may be broker machines.
  • Both content-based and stateful publish-subscribe systems support a message delivery model based on two roles: (1) publishers produce information in the form of streams of structured messages; and, (2) subscribers specify in advance what kinds of information in which they are interested. As messages are later published, relevant information is delivered in a timely fashion to subscribers.
  • Content-based subscriptions are restricted to Boolean filter predicates that can only refer to fields in individual messages. For example, a content-based subscription may request, “Deliver message if traded volume>1000 shares.” On the other hand, stateful subscriptions are more general state-valued expressions and may refer to one or more messages, either by referring to multiple messages of a single message stream or by referring to multiple message streams or both. In a content-based publish-subscribe system, because subscriptions can only specify filtering, all published messages are either passed through to subscribers or filtered out. Therefore, messages received by subscribers are identically structured copies of messages published by publishers. In contrast, in a stateful publish-subscribe system, subscriptions may include more complex expressions and, therefore, subscribers may receive information that is not identical to the published messages with different formatting. For example, a published message may have only integer prices, while subscriptions to average prices may have non-integer averages.
  • Published message streams are associated with topics. Each topic is associated with a base relation. A base relation is a table of tuples, each tuple corresponding to an event in the particular message stream. Subscriptions are expressed as view expressions in a relational algebraic language, although other representations may be used, such as eXtensible Markup Language (XML), for example. The language defines a cascade of views of base relations and derived views computed from either base relations or other views. At compile-time, the set of subscriptions is compiled into a collection of objects that are deployed and integrated into messaging brokers. At run-time, publishers and subscribers connect to these brokers. Published events are delivered to objects associated with base relations. The events are then pushed downstream to other objects that compute how each derived view changes based on the change to the base relation. Those derived views associated with subscriptions then deliver events to the subscriber informing the subscriber of each change in state.
  • In the depicted example, network data processing system 100 is the Internet with network 102 representing a worldwide collection of networks and gateways that use the Transmission Control Protocol/Internet Protocol (TCP/IP) suite of protocols to communicate with one another. At the heart of the Internet is a backbone of high-speed data communication lines between major nodes or host computers, consisting of thousands of commercial, government, educational and other computer systems that route data and messages. Of course, network data processing system 100 also may be implemented as a number of different types of networks, such as for example, an intranet, a local area network (LAN), or a wide area network (WAN). FIG. 1 is intended as an example, and not as an architectural limitation for the present invention.
  • Referring to FIG. 2, a block diagram of a data processing system that may be implemented as a server, such as server 104 in FIG. 1, is depicted in accordance with a preferred embodiment of the present invention. Data processing system 200 may be a symmetric multiprocessor (SMP) system including a plurality of processors 202 and 204 connected to system bus 206. Alternatively, a single processor system may be employed. Also connected to system bus 206 is memory controller/cache 208, which provides an interface to local memory 209. I/O bus bridge 210 is connected to system bus 206 and provides an interface to I/O bus 212. Memory controller/cache 208 and I/O bus bridge 210 may be integrated as depicted.
  • Peripheral component interconnect (PCI) bus bridge 214 connected to I/O bus 212 provides an interface to PCI local bus 216. A number of modems may be connected to PCI local bus 216. Typical PCI bus implementations will support four PCI expansion slots or add-in connectors. Communications links to clients 108-112 in FIG. 1 may be provided through modem 218 and network adapter 220 connected to PCI local bus 216 through add-in connectors.
  • Additional PCI bus bridges 222 and 224 provide interfaces for additional PCI local buses 226 and 228, from which additional modems or network adapters may be supported. In this manner, data processing system 200 allows connections to multiple network computers. A memory-mapped graphics adapter 230 and hard disk 232 may also be connected to I/O bus 212 as depicted, either directly or indirectly.
  • Those of ordinary skill in the art will appreciate that the hardware depicted in FIG. 2 may vary. For example, other peripheral devices, such as optical disk drives and the like, also may be used in addition to or in place of the hardware depicted. The depicted example is not meant to imply architectural limitations with respect to the present invention. The data processing system depicted in FIG. 2 may be, for example, an IBM eServer™ pSeries® system, a product of International Business Machines Corporation in Armonk, N.Y., running the Advanced Interactive Executive (AIX) operating system or LINUX operating system. An object oriented programming system such as Java may run in conjunction with the operating system and provides calls to the operating system from Java programs or applications executing on data processing system 300. “JAVA” is a trademark of Sun Microsystems, Inc.
  • With reference now to FIG. 3, a block diagram of a data processing that may serve as a client of a service in accordance with a preferred embodiment of the present invention. Data processing system 300 is an example of a computer, such as client 108 in FIG. 1, in which code or instructions implementing the processes of the present invention may be located. In the depicted example, data processing system 300 employs a hub architecture including a north bridge and memory controller hub (MCH) 308 and a south bridge and input/output (I/O) controller hub (ICH) 310. Processor 302, main memory 304, and graphics processor 318 are connected to MCH 308. Graphics processor 318 may be connected to the MCH through an accelerated graphics port (AGP), for example.
  • In the depicted example, local area network (LAN) adapter 312, audio adapter 316, keyboard and mouse adapter 320, modem 322, read only memory (ROM) 324, hard disk drive (HDD) 326, CD-ROM driver 330, universal serial bus (USB) ports and other communications ports 332, and PCI/PCIe devices 334 may be connected to ICH 310. PCI/PCIe devices may include, for example, Ethernet adapters, add-in cards, PC cards for notebook computers, etc. PCI uses a cardbus controller, while PCIe does not. ROM 324 may be, for example, a flash binary input/output system (BIOS). Hard disk drive 326 and CD-ROM drive 330 may use, for example, an integrated drive electronics (IDE) or serial advanced technology attachment (SATA) interface. A super I/O (SIO) device 336 may be connected to ICH 310.
  • An operating system runs on processor 302 and is used to coordinate and provide control of various components within data processing system 300 in FIG. 3. The operating system may be a commercially available operating system such as Windows XP™, which is available from Microsoft Corporation. An object oriented programming system such as Java may run in conjunction with the operating system and provides calls to the operating system from Java programs or applications executing on data processing system 300. “JAVA” is a trademark of Sun Microsystems, Inc. Instructions for the operating system, the object-oriented programming system, and applications or programs are located on storage devices, such as hard disk drive 326, and may be loaded into main memory 304 for execution by processor 302. The processes of the present invention are performed by processor 302 using computer implemented instructions, which may be located in a memory such as, for example, main memory 304, memory 324, or in one or more peripheral devices 326 and 330.
  • Those of ordinary skill in the art will appreciate that the hardware in FIG. 3 may vary depending on the implementation. Other internal hardware or peripheral devices, such as flash memory, equivalent non-volatile memory, or optical disk drives and the like, may be used in addition to or in place of the hardware depicted in FIG. 3. Also, the processes of the present invention may be applied to a multiprocessor data processing system.
  • For example, data processing system 300 may be a personal digital assistant (PDA), which is configured with flash memory to provide non-volatile memory for storing operating system files and/or user-generated data. The depicted example in FIG. 3 and above-described examples are not meant to imply architectural limitations. For example, data processing system 300 also may be a tablet computer, laptop computer, or telephone device in addition to taking the form of a PDA.
  • In accordance with a preferred embodiment of the present invention, a plurality of broker machines are responsible for delivery of message sent by publishing clients towards subscribing clients based upon the content of the messages and the stateful transformations requested by the subscribing clients. These broker machines form an overlay network. Some broker machines may be specialized for hosting publishing clients, referred to as publisher hosting brokers (PHB), and others for hosting subscribing clients, referred to as subscriber hosting brokers (SHB). Between the PHBs and the SHBs, there may be any number of intermediate nodes that include routing and filtering. The brokers at the intermediate nodes are referred to as intermediate brokers or IBs. For expository purposes, this separation is assumed; however, in actual deployment, some or all of the broker machines may combine the functions of PHB, SHB, and/or IB.
  • FIG. 4 illustrates a broker network for a publish-subscribe system in accordance with a preferred embodiment of the present invention. A publishing client, such as one of publishers 402 a-402 d, establishes a connection to a PHB, such as PHB 404 a or PHB 404 b, over a corresponding one of client connections 406 a-406 d. The client connection may be, for example, any reliable first-in/first-out (FIFO) connection, such as a Transmission Control Protocol/Internet Protocol (TCP/IP) socket connection. Independently, a subscribing client, such as one of subscribers 412 a-412 d, establishes a connection to a SHB, such as SHB 410 a or SHB 410 b, over a corresponding one of client connections 414 a-414 d, which may be similar to client connections 406 a-406 d. The PHBs and SHBs are connected, via intermediate brokers 408 a-408 b, through broker-to-broker links.
  • The publish-subscribe system of the present invention may include a fault-tolerant protocol that tolerates link failures and message re-orderings, in which case it is not necessary for the broker-to-broker connections to use reliable FIFO protocols, such as TCP/IP, but may advantageously use faster, less reliable protocols. Each broker machine may be a stand-alone computer, a process within a computer, or, to minimize delay due to failures, a cluster of redundant processes within multiple computers. Similarly, the links may be simple socket connections, or connection bundles that use multiple alternative paths for high availability and load balancing.
  • In the example depicted in FIG. 4, one or more execution engine may run on the brokers in the broker network and be interconnected. The one or more execution engines may be interconnected to form a distributed execution engine. The execution engines running on the plurality of broker machines receive input messages, process the input messages using the transform objects, and route output messages toward subscribers.
  • FIG. 5 illustrates how a stateful publish-subscribe service of the present invention appears to clients. Clients are unaware of the physical broker network or its topology. A client application may connect to any broker in the role of publisher and/or subscriber. Publishing clients are aware only of particular named published message streams, such as message streams 502, 504. Multiple clients may publish to the same message stream.
  • Administrators and clients may defined derived views based on functions of either published message streams or of other derived views. In the depicted example, message streams may be represented as relations. Derived views are represented as relations derived from published message streams or from other derived views by means of relational algebraic expressions in a language, such as Date and Darwen's Tutorial-D, Structured Query Language (SQL), or XQUERY. For example, derived view 510 is defined as a function of stream relations 502 and 504 by means of a JOIN expression with relations 502 and 504 as inputs and relation 510 as an output. Similarly, relation 512, indicated as a subscriber view, is derived from relation 510 by client-specified relational expressions. For example, subscriber view 512 may be a request to group the stock trades of relation 510 by issue and hour and compute the running total volume and max and min price for each issue-hour pair.
  • Each subscribing client subscribes to a particular derived view. As published events enter the system from publishing clients, they are saved in their respective streams. The system is then responsible for updating each derived view according to the previously specified relational expressions and then delivering client messages to each subscriber representing the changes to the state of the respective subscribed view.
  • In a preferred embodiment of the present invention, subscription specifications are analyzed by a compiler and converted into a collection of transform objects and view objects. Each operator that derives a view from one or more inputs corresponds to a transform object. Each view corresponds to a view object. View objects hold the state of a view. Transform objects express the logic for incrementally updating an output view constituting the result of an operator in response to individual changes to input views constituting the arguments to that operator.
  • FIG. 6 illustrates an example of a operator that transforms input view objects to an output view object in accordance with a preferred embodiment of the present invention. In the depicted example, views 610 and 620 are view objects that are inputs to some operator, such as, for example, a JOIN operator. Transform 650 is a transform object for that operator, which produces a derived view shown as view object 670. When one of the input objects changes, either because it itself is a published input stream or because it is a derived view that has changed as a result of changes to its inputs, messages reflecting the changes are sent to transform object 650. Transform 650 receives the messages representing changes to its inputs 610, 620, computes how the result of the operator changes given the announced changes it has received, and then delivers the computed results to its output view object 670 in the form of change messages. Output view object 670 then propagates in its turn such change messages, either to further transforms, if view object 670 is an intermediate view, or to subscribers, if view object 670 is a subscriber view.
  • FIG. 6 illustrates the objects and message pathways for a single transform implementing a single computational operation. When subscriptions are entered, the mechanism of the present invention builds a structure containing all of the transform objects and view objects needed for all intermediate and subscribed views of all subscriptions. This structure is called a dataflow hypergraph. The dataflow hypergraph has nodes corresponding to each view object and hyperedges, which may possibly have more than one input feeding an output, representing each transform object associated with an operation in the subscription specification.
  • The view objects and transform objects are then allocated to actual brokers in the overlay network, either manually by an administrator or automatically via a service, such as the one described in U.S. patent application No. ______ (Attorney Docket No. YOR920040153US1), entitled “CONTINUOUS FEEDBACK-CONTROLLED DEPLOYMENT OF MESSAGE TRANSFORMS IN A DISTRIBUTED MESSAGING SYSTEM,” and filed on an even date herewith. The published streams and the subscribed views may be constrained to be located on brokers where the publishers and subscribers actually connect. The placement of the intermediate transform objects and view objects is not constrained. That is intermediate transform objects and view objects may be placed wherever suitable, taking into consideration the capacities of the broker machines and the links, as well as the desired performance. After such allocation of objects to brokers, the result is a distributed transform graph.
  • FIG. 7 illustrates an example dataflow hypergraph distributed over multiple brokers in accordance with a preferred embodiment of the present invention. In the depicted example, the physical network consists of brokers 710, 720, 730, and 740. There are three publishing clients 702, 704, and 706, and one subscribing client 750. The publishing clients are publishing to three separate published message streams: “buys” 722 on broker 720, “sells” 734 on broker 730, and “matches” 712 on broker 710. The subscribing client 750 subscribes to derived view 748 on broker 740.
  • Broker 710 also includes transforms 714 and 716, which feed change messages to brokers 720 and 730, respectively. Broker 720 includes view objects 724, 726 and transform objects 725, 727. As an example, view object 726 represents an intermediate derived view or relation, which is based on transform 725, published stream 722, and view 724. Broker 730 includes views 732 and 736, in addition to published stream 734, and also includes transforms 735, 737. Broker 740 includes views 742, 744, 748, and transform 746. View 748 is a subscriber view for subscriber 750. As stated above, multiple publisher clients may provide messages for a single message stream, and multiple subscriber clients may subscribe and receive updates from the same view.
  • As shown in FIG. 7, the transform graph consists of multiple transform and view objects distributed over all brokers. The paths between objects will sometimes lie within a broker, as is the case between transform object 725 and intermediate view object 726. In other cases, such as the path between transform 727 and intermediate view object 742 (shown with a dotted line), the path must cross over an inter-broker link. It is clear to those versed in the art that the within-broker communications between objects may use cheaper communications means, such as parameter passing between objects, whereas inter-broker communications requires generating physical messages or packets that will cross the link. In a preferred embodiment, the protocols of all view objects and transform objects will be able to recover from lost, out-of-order, or duplicate messages, and, therefore, will work correctly regardless of which paths between objects cross broker boundaries and which do not.
  • In order to support stateful subscriptions, a history of states is stored in a data storage device. For example, messages from the “matches” published stream 712 are stored in storage 782, messages from the “buys” published stream 722 are stored in storage 784, and messages from the “sells” published stream 734 are stored in storage 786. Storage 782, 784, 786 may be a portion of system memory or may be a persistent storage, such as a hard drive, or a combination thereof. In a system guaranteeing reliable service, published messages will be logged to persistent storage before being propagated. Other states, such as views 742, 744, are preferentially stored in main memory and are not required to be stored persistently.
  • FIG. 8 depicts a process for deploying transform objects and view objects when a dataflow specification is a declarative specification in accordance with a preferred embodiment of the present invention. A declarative specification is a program, such as middleware program source 802. Program source 802 may be written in a language similar to the SQL syntax, for example. Program source 802 may be compiled using compiler 804 into a dataflow hypergraph. Compiler 804 includes particular algorithms for compiling relational algebraic operators into tailored object code that implements transform objects specialized to incrementally evaluate operators, such as join, select, aggregate, etc., for relations of known data types and key signatures. The object code may be, for example, Java™ programming language code. Compiler 804 represents values of derived states as monotonic knowledge, that is, values in a monotonic domain. A monotonic domain means a set of values that can change value only in one direction. The compiler uses each algebraic expression and the domain of its inputs to determine how to represent the monotonic domain of its result. Because the different values of any field belong to a monotonic domain, the system can always detect which of two values of a single data field is older. As another example, the system distinguishes internally between a “missing value,” which is missing because its value is not yet known (and may later change), and one that is missing because it is known to be absent (and will not change). As yet another example, the system distinguishes between a field having a value that is currently ten, but which may get larger later, from a field whose value is currently ten, but is final and will never change.
  • Compiler 804 generates an object for each relation and an object for each transform. Each algebraic operation with n operands is associated with one transform object with n input interfaces and one output interface to a view object. For example, the join of SELLS and a second relation are compiled into the transform object 735 and the view object 736. The compiler may then generates a script that is executed at deployment time to instantiate all transform and view objects, connecting an instance of the output interface from each relation to an instance of the input to each transform that uses the relation as an input. Base relations are fed from an “input transform” object, which delivers published messages to the relation. The objects form the knowledge flow graph, or hypergraph, in which published messages enter at base relations and each view object passes the changes to its state to the transform objects that use that relation as an operand. These transform objects then compute the incremental change to the relations to which they are associated and pass that information down to other view objects. Information flows down the graph until it reaches relations associated with subscriptions and then the messages are delivered to “output transforms,” which convert the state change information into messages to subscribing clients.
  • Each relational operator, such as join, project, group-by, select, etc., is associated with a template used by the compiler to produce an incremental transform. As discussed above, a transform has one or more relations feeding inputs to it and a single relation receiving its output. The incremental transform is an object that, given a message saying that one component of its input has changed, computes the appropriate changes to its output and invokes a method in the output relation indicating what has changed.
  • The hypergraph may be placed manually by an administrator, or, alternatively, the hypergraph may be optimized using transform placement service 806 and automatically deployed using deployment service 808. The hypergraph is optimized and deployed to broker network 824 by passing broker instructions 812 to broker network 824 and receiving performance information 814 from broker network 824. An optimization step consolidates multiple subscriptions to exploit common computations and performs other simplifications to reduce the total computational load on the system. A placement step allocates the transform objects of the knowledge flow graph to particular brokers for the purpose of load balancing, reduction of bandwidth, and overall reduction of delays between publishers and subscribers.
  • Broker network 824 receives the knowledge flow graph at deployment time. At execution time, publishers 822 publish message streams to broker network 824. The brokers receive events and propagate messages representing view changes towards the subscribers. Subscribers 828 may then receive messages from subscriber views in broker network 824.
  • FIG. 9 is a flowchart illustrating the configuration and deployment of a stateful publish-subscribe system in accordance with a preferred embodiment of the present invention. The process begins and receives middleware programming source (block 902). The process compiles the middleware programming source into a knowledge flow graph (block 904). Then, the process receives performance information from the broker network (block 906) and optimizes the knowledge flow graph based upon the broker network performance information (block 908). Thereafter, the process deploys the transform objects and the view objects in the knowledge flow graph to brokers (block 910) and the process ends.
  • FIG. 10 is a flowchart illustrating the operation of a stateful publish-subscribe system at runtime in accordance with a preferred embodiment of the present invention. The process begins and publishing clients publish messages to publisher hosting brokers (block 1002). Transform objects calculate changes in views based on changes in base relations and/or changes in intermediate views (block 1004). The transform objects generate view change messages that propagate toward the subscriber clients. Then, subscriber clients receive view change messages from subscriber hosting brokers representing the subscribed views (block 1006). The process shown in FIG. 10 repeats as long as messages continue to be published and the publish-subscribe system is operational.
  • The stateful publish-subscribe system of the present invention is able to be deployed on a wide-area, distributed overlay network of broker machines, communicating by message passing, and being subjected to the possibility of duplicate and out-of-order messages between links. The distributed messaging system of the present invention allows subscriptions expressed as relational algebraic expressions on published message histories. Relational algebra may include, in particular, operators such as select, project, join, extend, group-by, sum, count, and average, for example. The relational algebraic expressions may be mapped to form various query languages, such as SQL and XQUERY. Furthermore, the messaging system of the present invention may allow service specifications that are deterministic and “eventually consistent,” meaning that multiple identical subscriptions eventually receive the same result, but weaker, and hence cheaper to implement, than fully consistent database systems.
  • It is important to note that while the present invention has been described in the context of a fully functioning data processing system, those of ordinary skill in the art will appreciate that the processes of the present invention are capable of being distributed in the form of a computer readable medium of instructions and a variety of forms and that the present invention applies equally regardless of the particular type of signal bearing media actually used to carry out the distribution. Examples of computer readable media include recordable-type media, such as a floppy disk, a hard disk drive, a RAM, CD-ROMs, DVD-ROMs, and transmission-type media, such as digital and analog communications links, wired or wireless communications links using transmission forms, such as, for example, radio frequency and light wave transmissions. The computer readable media may take the form of coded formats that are decoded for actual use in a particular data processing system.
  • The description of the present invention has been presented for purposes of illustration and description, and is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art. The embodiment was chosen and described in order to best explain the principles of the invention, the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.

Claims (22)

1. A method for delivering content, the method comprising:
receiving at least one specification for a transform;
receiving a plurality of input messages associated with input streams from one or more publishers;
applying the transform to the plurality of input messages to form an output message, wherein the output message depends on at least two input messages from the plurality of input messages; and
delivering the output message to a subscriber.
2. The method of claim 1, wherein the output message updates a subscribed state requested by the subscriber.
3. The method of claim 2, wherein the subscribed state is defined using a declarative specification.
4. The method of claim 3, further comprising:
compiling the declarative specification into a hypergraph of incremental transform and view objects.
5. The method of claim 4, further comprising:
deploying the hypergraph on a network of broker machines.
6. The method of claim 3, wherein the declarative specification includes a relational algebraic specification.
7. The method of claim 1, further comprising:
storing the plurality of input messages in a stable storage.
8. The method of claim 1, wherein the transform includes an incremental evaluator for one of a set of common relational algebraic operations.
9. The method of claim 7, wherein the set of common relational algebraic operations includes at least one of sum, count, min, max, select, project, group-by, and join.
10. The method of claim 1, wherein receiving a plurality of input messages includes receiving a tuple from a database as an input message.
11. An apparatus for implementing a stateful subscription service, the apparatus comprising:
an overlay network including a plurality of broker machines;
a plurality of publishing clients that publish messages to published message streams;
a deployment service that deploys a hypergraph defining transform objects and view objects to the plurality of broker machines, wherein at least one transform object defined by the hypergraph has at least one message delivered to its output stream that depends on more than one input message from an input stream of the transform object; and
a plurality of execution engines running on the plurality of broker machines, wherein each execution engine within the plurality of execution engine receives input messages, processes the input messages using the transform objects, and routes output messages toward subscribers.
12. An apparatus for delivering content, the apparatus comprising:
means for receiving at least one specification for a transform;
means for receiving a plurality of input messages associated with one or more input streams from one or more publishers;
means for applying the transform to the plurality of input messages to form an output message, wherein the output message depends on at least two input messages from the plurality of input messages; and
means for delivering the output message to a subscriber.
13. The apparatus of claim 12, wherein the output message updates a subscribed state requested by the subscriber.
14. The apparatus of claim 13, wherein the subscribed state is defined using a declarative specification.
15. The apparatus of claim 14, further comprising:
means for compiling the declarative specification into a hypergraph of incremental transform and view objects.
16. The apparatus of claim 15, further comprising:
means for deploying the hypergraph on a network of broker machines.
17. The apparatus of claim 14, wherein the declarative specification includes a relational algebraic specification.
18. The apparatus of claim 12, further comprising:
means for storing the plurality of input messages in a stable storage.
19. The apparatus of claim 12, wherein the transform includes an incremental evaluator for one of a set of common relational algebraic operations.
20. The apparatus of claim 18, wherein the set of common relational algebraic operations includes at least one of sum, count, min, max, select, project, group-by, and join.
21. The apparatus of claim 12, wherein the means for receiving a plurality of input messages includes means for receiving a database tuple from a fixed database as an input message.
22. A computer program product, in a computer readable medium, for delivering content, the computer program product comprising:
instructions for receiving at least a specification for a transform;
instructions for receiving a plurality of input messages associated with an input stream from one or more publishers;
instructions for applying the transform to the plurality of input messages to form an output message, wherein the output message depends on at least two input messages from the plurality of input messages; and
instructions for delivering the output message to a subscriber.
US10/841,916 2004-05-07 2004-05-07 Distributed messaging system supporting stateful Abandoned US20050251811A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US10/841,916 US20050251811A1 (en) 2004-05-07 2004-05-07 Distributed messaging system supporting stateful
US12/114,464 US8533742B2 (en) 2004-05-07 2008-05-02 Distributed messaging system supporting stateful subscriptions

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/841,916 US20050251811A1 (en) 2004-05-07 2004-05-07 Distributed messaging system supporting stateful

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US12/114,464 Continuation US8533742B2 (en) 2004-05-07 2008-05-02 Distributed messaging system supporting stateful subscriptions

Publications (1)

Publication Number Publication Date
US20050251811A1 true US20050251811A1 (en) 2005-11-10

Family

ID=35240808

Family Applications (2)

Application Number Title Priority Date Filing Date
US10/841,916 Abandoned US20050251811A1 (en) 2004-05-07 2004-05-07 Distributed messaging system supporting stateful
US12/114,464 Active 2027-11-14 US8533742B2 (en) 2004-05-07 2008-05-02 Distributed messaging system supporting stateful subscriptions

Family Applications After (1)

Application Number Title Priority Date Filing Date
US12/114,464 Active 2027-11-14 US8533742B2 (en) 2004-05-07 2008-05-02 Distributed messaging system supporting stateful subscriptions

Country Status (1)

Country Link
US (2) US20050251811A1 (en)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006078751A2 (en) * 2005-01-18 2006-07-27 Everypoint, Inc. Systems and methods for processing changing data
US20060224668A1 (en) * 2005-03-10 2006-10-05 International Business Machines Corporation Methods and apparatus for efficiently placing stream transforms among broker machines comprising an overlay network in a publish-subscribe messaging system
US20070061815A1 (en) * 2005-01-20 2007-03-15 Graham Stephen G System and method for subscription management in a messaging system
US20070297327A1 (en) * 2006-06-27 2007-12-27 International Business Machines Corporation Method for applying stochastic control optimization for messaging systems
US7380005B1 (en) 2007-11-20 2008-05-27 International Business Machines Corporation Systems, methods and computer program products for improving placement performance of message transforms by exploiting aggressive replication
US20080209440A1 (en) * 2004-05-07 2008-08-28 Roman Ginis Distributed messaging system supporting stateful subscriptions
US20080306888A1 (en) * 2007-06-07 2008-12-11 Chitra Dorai Stochastic control optimization for sender-based flow control in a distributed stateful messaging system
US20080307436A1 (en) * 2007-06-06 2008-12-11 Microsoft Corporation Distributed publish-subscribe event system with routing of published events according to routing tables updated during a subscription process
US20120016979A1 (en) * 2010-07-15 2012-01-19 International Business Machines Corporation Propagating changes in topic subscription status of processes in an overlay network
US20150156158A1 (en) * 2012-08-31 2015-06-04 Facebook, Inc. Subscription groups in publish-subscribe system
US9477598B2 (en) 2013-02-26 2016-10-25 Facebook, Inc. System and method for implementing cache consistent regional clusters
US11422906B2 (en) 2012-06-13 2022-08-23 All Purpose Networks, Inc. Methods and systems of an all purpose broadband network with publish-subscribe broker network
US11490311B2 (en) * 2012-06-13 2022-11-01 All Purpose Networks, Inc. Methods and systems of an all purpose broadband network with publish subscribe broker network
US11683390B2 (en) 2018-01-08 2023-06-20 All Purpose Networks, Inc. Publish-subscribe broker network overlay system

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7596606B2 (en) * 1999-03-11 2009-09-29 Codignotto John D Message publishing system for publishing messages from identified, authorized senders
US7886180B2 (en) * 2004-05-14 2011-02-08 International Business Machines Corporation Recovery in a distributed stateful publish-subscribe system
US9817931B1 (en) 2013-12-05 2017-11-14 The Mathworks, Inc. Systems and methods for generating optimized hardware descriptions for models
US10078717B1 (en) 2013-12-05 2018-09-18 The Mathworks, Inc. Systems and methods for estimating performance characteristics of hardware implementations of executable models
US11436656B2 (en) * 2016-03-18 2022-09-06 Palo Alto Research Center Incorporated System and method for a real-time egocentric collaborative filter on large datasets
US10666712B1 (en) * 2016-06-10 2020-05-26 Amazon Technologies, Inc. Publish-subscribe messaging with distributed processing

Citations (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870605A (en) * 1996-01-18 1999-02-09 Sun Microsystems, Inc. Middleware for enterprise information distribution
US5974417A (en) * 1996-01-18 1999-10-26 Sun Microsystems, Inc. Database network connectivity product
US5987455A (en) * 1997-06-30 1999-11-16 International Business Machines Corporation Intelligent compilation of procedural functions for query processing systems
US20010049743A1 (en) * 2000-05-31 2001-12-06 International Business Machines Corporation Message transformation selection tool and method
US6502213B1 (en) * 1999-08-31 2002-12-31 Accenture Llp System, method, and article of manufacture for a polymorphic exception handler in environment services patterns
US6510429B1 (en) * 1998-04-29 2003-01-21 International Business Machines Corporation Message broker apparatus, method and computer program product
US6643682B1 (en) * 1999-09-22 2003-11-04 International Business Machines Corporation Publish/subscribe data processing with subscription points for customized message processing
US6681220B1 (en) * 1999-05-28 2004-01-20 International Business Machines Corporation Reduction and optimization of information processing systems
US6748583B2 (en) * 2000-12-27 2004-06-08 International Business Machines Corporation Monitoring execution of an hierarchical visual program such as for debugging a message flow
US6748555B1 (en) * 1999-09-09 2004-06-08 Microsoft Corporation Object-based software management
US20050268146A1 (en) * 2004-05-14 2005-12-01 International Business Machines Corporation Recovery in a distributed stateful publish-subscribe system
US6983463B1 (en) * 1998-10-02 2006-01-03 Microsoft Corporation Network independent profiling of applications for automatic partitioning and distribution in a distributed computing environment
US7010538B1 (en) * 2003-03-15 2006-03-07 Damian Black Method for distributed RDSMS
US7162524B2 (en) * 2002-06-21 2007-01-09 International Business Machines Corporation Gapless delivery and durable subscriptions in a content-based publish/subscribe system
US7177859B2 (en) * 2002-06-26 2007-02-13 Microsoft Corporation Programming model for subscription services
US7349980B1 (en) * 2003-01-24 2008-03-25 Blue Titan Software, Inc. Network publish/subscribe system incorporating Web services network routing architecture
US7360202B1 (en) * 2002-06-26 2008-04-15 Microsoft Corporation User interface system and methods for providing notification(s)
US7406537B2 (en) * 2002-11-26 2008-07-29 Progress Software Corporation Dynamic subscription and message routing on a topic between publishing nodes and subscribing nodes

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2215567B (en) * 1988-03-05 1992-11-18 Plessey Co Plc Improvements in or relating to equalisers
EP0753979A1 (en) * 1995-07-13 1997-01-15 International Business Machines Corporation Routing method and system for a high speed packet switching network
SE507118C2 (en) * 1996-08-26 1998-03-30 Ericsson Telefon Ab L M Procedure for optimizing a mainly optical ATM network
JP2000514271A (en) * 1996-10-08 2000-10-24 ティアナン・コミュニケーションズ・インコーポレーテッド Multi-service transport multiplexing apparatus and method
US6122627A (en) * 1997-05-09 2000-09-19 International Business Machines Corporation System, method, and program for object building in queries over object views
US6859438B2 (en) * 1998-02-03 2005-02-22 Extreme Networks, Inc. Policy based quality of service
US6298455B1 (en) * 1998-12-29 2001-10-02 International Business Machines Corporation Publish and subscribe data processing with failover using cascaded sequence numbers
US7392279B1 (en) * 1999-03-26 2008-06-24 Cisco Technology, Inc. Network traffic shaping using time-based queues
US6478555B1 (en) * 1999-06-16 2002-11-12 Lg Electronics, Inc. Apparatus for controlling noise and vibration for drain pump
DE10031716B4 (en) * 1999-07-06 2006-10-26 International Business Machines Corp. Subscription and notification for database technology
US20020069244A1 (en) * 1999-11-24 2002-06-06 John Blair Message delivery system billing method and apparatus
US7565403B2 (en) * 2000-03-16 2009-07-21 Microsoft Corporation Use of a bulk-email filter within a system for classifying messages for urgency or importance
US20030067874A1 (en) * 2001-10-10 2003-04-10 See Michael B. Central policy based traffic management
US6859138B2 (en) * 2001-10-31 2005-02-22 General Motors Corporation Key detection switch for vehicle entry and security systems
WO2004090659A2 (en) * 2003-04-10 2004-10-21 Mukesh Dalal Optimizing active decision making using simulated decision making
US7308711B2 (en) * 2003-06-06 2007-12-11 Microsoft Corporation Method and framework for integrating a plurality of network policies
WO2005034446A1 (en) * 2003-10-03 2005-04-14 Fujitsu Limited Network system based on policy rule
US20050251811A1 (en) * 2004-05-07 2005-11-10 International Business Machines Corporation Distributed messaging system supporting stateful
US20050251556A1 (en) * 2004-05-07 2005-11-10 International Business Machines Corporation Continuous feedback-controlled deployment of message transforms in a distributed messaging system
JP2006121667A (en) * 2004-09-27 2006-05-11 Matsushita Electric Ind Co Ltd Packet reception control device and method
US8037517B2 (en) * 2004-12-22 2011-10-11 Wake Forest University Method, systems, and computer program products for implementing function-parallel network firewall
US20070002750A1 (en) * 2005-07-01 2007-01-04 Nec Laboratories America, Inc. Generic Real Time Scheduler for Wireless Packet Data Systems
US20070116822A1 (en) * 2005-11-23 2007-05-24 The Coca-Cola Company High-potency sweetener composition with saponin and compositions sweetened therewith
WO2007109923A1 (en) * 2006-03-29 2007-10-04 Intel Corporation Optimization of network protocol options by reinforcement learning and propagation
US20070297327A1 (en) * 2006-06-27 2007-12-27 International Business Machines Corporation Method for applying stochastic control optimization for messaging systems
US20080301053A1 (en) * 2007-05-29 2008-12-04 Verizon Services Organization Inc. Service broker

Patent Citations (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870605A (en) * 1996-01-18 1999-02-09 Sun Microsystems, Inc. Middleware for enterprise information distribution
US5974417A (en) * 1996-01-18 1999-10-26 Sun Microsystems, Inc. Database network connectivity product
US6021443A (en) * 1996-01-18 2000-02-01 Sun Microsystems, Inc. Systems, software, and methods for routing events among publishers and subscribers on a computer network
US5987455A (en) * 1997-06-30 1999-11-16 International Business Machines Corporation Intelligent compilation of procedural functions for query processing systems
US6510429B1 (en) * 1998-04-29 2003-01-21 International Business Machines Corporation Message broker apparatus, method and computer program product
US6983463B1 (en) * 1998-10-02 2006-01-03 Microsoft Corporation Network independent profiling of applications for automatic partitioning and distribution in a distributed computing environment
US6681220B1 (en) * 1999-05-28 2004-01-20 International Business Machines Corporation Reduction and optimization of information processing systems
US20040107290A1 (en) * 1999-05-28 2004-06-03 International Business Machines Corporation Reduction and optimization of information processing systems
US6996625B2 (en) * 1999-05-28 2006-02-07 International Business Machines Corporation Reduction and optiminization of operational query expressions applied to information spaces between nodes in a publish/subscribe system
US6502213B1 (en) * 1999-08-31 2002-12-31 Accenture Llp System, method, and article of manufacture for a polymorphic exception handler in environment services patterns
US6748555B1 (en) * 1999-09-09 2004-06-08 Microsoft Corporation Object-based software management
US6643682B1 (en) * 1999-09-22 2003-11-04 International Business Machines Corporation Publish/subscribe data processing with subscription points for customized message processing
US20010049743A1 (en) * 2000-05-31 2001-12-06 International Business Machines Corporation Message transformation selection tool and method
US6748583B2 (en) * 2000-12-27 2004-06-08 International Business Machines Corporation Monitoring execution of an hierarchical visual program such as for debugging a message flow
US7162524B2 (en) * 2002-06-21 2007-01-09 International Business Machines Corporation Gapless delivery and durable subscriptions in a content-based publish/subscribe system
US7177859B2 (en) * 2002-06-26 2007-02-13 Microsoft Corporation Programming model for subscription services
US7360202B1 (en) * 2002-06-26 2008-04-15 Microsoft Corporation User interface system and methods for providing notification(s)
US7406537B2 (en) * 2002-11-26 2008-07-29 Progress Software Corporation Dynamic subscription and message routing on a topic between publishing nodes and subscribing nodes
US7349980B1 (en) * 2003-01-24 2008-03-25 Blue Titan Software, Inc. Network publish/subscribe system incorporating Web services network routing architecture
US7010538B1 (en) * 2003-03-15 2006-03-07 Damian Black Method for distributed RDSMS
US20050268146A1 (en) * 2004-05-14 2005-12-01 International Business Machines Corporation Recovery in a distributed stateful publish-subscribe system

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080209440A1 (en) * 2004-05-07 2008-08-28 Roman Ginis Distributed messaging system supporting stateful subscriptions
US8533742B2 (en) 2004-05-07 2013-09-10 International Business Machines Corporation Distributed messaging system supporting stateful subscriptions
US20060282474A1 (en) * 2005-01-18 2006-12-14 Mackinnon Allan S Jr Systems and methods for processing changing data
WO2006078751A3 (en) * 2005-01-18 2007-04-12 Everypoint Inc Systems and methods for processing changing data
WO2006078751A2 (en) * 2005-01-18 2006-07-27 Everypoint, Inc. Systems and methods for processing changing data
US20070061815A1 (en) * 2005-01-20 2007-03-15 Graham Stephen G System and method for subscription management in a messaging system
US8332465B2 (en) 2005-01-20 2012-12-11 International Business Machines Corporation System and method for subscription management in a messaging system
US7401119B2 (en) * 2005-01-20 2008-07-15 International Business Machines Corporation System and method for subscription management in a messaging system
US20080229334A1 (en) * 2005-01-20 2008-09-18 International Business Machines Corporation System and method for subscription management in a messaging system
US7756925B2 (en) 2005-03-10 2010-07-13 International Business Machines Corporation Methods and apparatus for efficiently placing stream transforms among broker machines comprising an overlay network in a publish-subscribe messaging system
US20060224668A1 (en) * 2005-03-10 2006-10-05 International Business Machines Corporation Methods and apparatus for efficiently placing stream transforms among broker machines comprising an overlay network in a publish-subscribe messaging system
US20080177880A1 (en) * 2005-03-10 2008-07-24 International Business Machines Corporation Methods and Apparatus for Efficiently Placing Stream Transforms Among Broker Machines Comprising an Overlay Network in a Publish-Subscribe Messaging System
US20070297327A1 (en) * 2006-06-27 2007-12-27 International Business Machines Corporation Method for applying stochastic control optimization for messaging systems
US20080307436A1 (en) * 2007-06-06 2008-12-11 Microsoft Corporation Distributed publish-subscribe event system with routing of published events according to routing tables updated during a subscription process
US20080306888A1 (en) * 2007-06-07 2008-12-11 Chitra Dorai Stochastic control optimization for sender-based flow control in a distributed stateful messaging system
US7761401B2 (en) * 2007-06-07 2010-07-20 International Business Machines Corporation Stochastic control optimization for sender-based flow control in a distributed stateful messaging system
US7380005B1 (en) 2007-11-20 2008-05-27 International Business Machines Corporation Systems, methods and computer program products for improving placement performance of message transforms by exploiting aggressive replication
US7487247B1 (en) 2007-11-20 2009-02-03 International Business Machines Corporation Systems, methods and computer program products for improving placement performance of message transforms by exploiting aggressive replication
US20120016979A1 (en) * 2010-07-15 2012-01-19 International Business Machines Corporation Propagating changes in topic subscription status of processes in an overlay network
US8661080B2 (en) * 2010-07-15 2014-02-25 International Business Machines Corporation Propagating changes in topic subscription status of processes in an overlay network
US11422906B2 (en) 2012-06-13 2022-08-23 All Purpose Networks, Inc. Methods and systems of an all purpose broadband network with publish-subscribe broker network
US11490311B2 (en) * 2012-06-13 2022-11-01 All Purpose Networks, Inc. Methods and systems of an all purpose broadband network with publish subscribe broker network
US11647440B2 (en) 2012-06-13 2023-05-09 All Purpose Networks, Inc. Methods and systems of an all purpose broadband network with publish subscribe broker network
US11711741B2 (en) 2012-06-13 2023-07-25 All Purpose Networks, Inc. Methods and systems of an all purpose broadband network with publish subscribe broker network
US20150156158A1 (en) * 2012-08-31 2015-06-04 Facebook, Inc. Subscription groups in publish-subscribe system
US9344395B2 (en) * 2012-08-31 2016-05-17 Facebook, Inc. Subscription groups in publish-subscribe system
US9674291B2 (en) 2012-08-31 2017-06-06 Facebook, Inc. Subscription groups in publish-subscribe system
US9477598B2 (en) 2013-02-26 2016-10-25 Facebook, Inc. System and method for implementing cache consistent regional clusters
US11683390B2 (en) 2018-01-08 2023-06-20 All Purpose Networks, Inc. Publish-subscribe broker network overlay system

Also Published As

Publication number Publication date
US8533742B2 (en) 2013-09-10
US20080209440A1 (en) 2008-08-28

Similar Documents

Publication Publication Date Title
US8533742B2 (en) Distributed messaging system supporting stateful subscriptions
US7962646B2 (en) Continuous feedback-controlled deployment of message transforms in a distributed messaging system
US7886180B2 (en) Recovery in a distributed stateful publish-subscribe system
US9049196B1 (en) Method for distributed RDSMS
Campailla et al. Efficient filtering in publish-subscribe systems using binary decision diagrams
US7240059B2 (en) System and method for configuring a parallel-processing database system
US8543534B2 (en) Concurrency in event processing networks for event server
US8671212B2 (en) Method and system for processing raw financial data streams to produce and distribute structured and validated product offering objects
AU2002322282C1 (en) Integrating enterprise support systems
US7673065B2 (en) Support for sharing computation between aggregations in a data stream management system
JP7043780B2 (en) Microservices-based data processing equipment, methods and programs
US20020133504A1 (en) Integrating heterogeneous data and tools
Grover et al. Data Ingestion in AsterixDB.
US7565662B2 (en) Program agent initiated processing of enqueued event actions
US20080301125A1 (en) Event processing query language including an output clause
US20040098359A1 (en) Method and system for parallel processing of database queries
US20020016839A1 (en) Method and system for processing raw financial data streams to produce and distribute structured and validated product offering data to subscribing clients
US20040098372A1 (en) Global-results processing matrix for processing queries
US20030131010A1 (en) Method, apparatus, and program to efficiently serialize objects
EP2442265A2 (en) Method and server cluster for MapReducing FLOW services and large documents
WO2002013091A1 (en) System for processing raw financial data to produce validated product offering information to subscribers
Campbell Service oriented database architecture: App server-lite?
US20190179932A1 (en) Tracking and reusing function results
Pandey et al. Comparative Study on Realtime Data Processing System
US11853448B1 (en) Applying transactional locks in distributed transactions

Legal Events

Date Code Title Description
AS Assignment

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:GINIS, ROMAN;STROM, ROBERT EVAN;REEL/FRAME:014698/0072

Effective date: 20040506

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO PAY ISSUE FEE