US20060168331A1 - Intelligent messaging application programming interface - Google Patents
Intelligent messaging application programming interface Download PDFInfo
- Publication number
- US20060168331A1 US20060168331A1 US11/317,280 US31728005A US2006168331A1 US 20060168331 A1 US20060168331 A1 US 20060168331A1 US 31728005 A US31728005 A US 31728005A US 2006168331 A1 US2006168331 A1 US 2006168331A1
- Authority
- US
- United States
- Prior art keywords
- programming interface
- application programming
- message
- messages
- applications
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/1895—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for short real-time information, e.g. alarms, notifications, alerts, updates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0806—Configuration setting for initial configuration or provisioning, e.g. plug-and-play
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0852—Delays
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
- H04L43/0894—Packet rate
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/04—Real-time or near real-time messaging, e.g. instant messaging [IM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/214—Monitoring or handling of messages using selective forwarding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/54—Presence management, e.g. monitoring or registration for receipt of user log-on information, or the connection status of the users
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
- H04L67/5682—Policies or rules for updating, deleting or replacing the stored data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/63—Routing a service request depending on the request content or context
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/18—Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/40—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/544—Remote
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0813—Configuration setting characterised by the conditions triggering a change of settings
- H04L41/082—Configuration setting characterised by the conditions triggering a change of settings the condition being updates or upgrades of network functionality
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0876—Aspects of the degree of configuration automation
- H04L41/0879—Manual configuration through operator
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0876—Aspects of the degree of configuration automation
- H04L41/0886—Fully automatic configuration
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
- H04L41/5003—Managing SLA; Interaction between SLA and QoS
- H04L41/5009—Determining service level performance parameters or violations of service level contracts, e.g. violations of agreed response time or mean time between failures [MTBF]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/06—Generation of reports
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0805—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
- H04L43/0817—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/61—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements
Definitions
- the present invention relates to data messaging middleware architecture and more particularly to application programming interface in messaging systems with a publish and subscribe (hereafter “publish/subscribe”) middleware architecture.
- data distribution involves various sources and destinations of data, as well as various types of interconnect architectures and modes of communications between the data sources and destinations.
- Examples of existing data messaging architectures include hub-and-spoke, peer-to-peer and store-and-forward.
- network configuration decisions are usually made at deployment time and are usually defined to optimize one set of network and messaging conditions under specific assumptions.
- static (fixed) configuration preclude real time dynamic network reconfiguration.
- existing architectures are configured for a specific transport protocol which is not always suitable for all network data transport load conditions and therefore existing architectures are often incapable of dealing, in real-time, with changes or increased load capacity requirements.
- the messaging system may experience bandwidth saturation because of data duplication. For instance, if more than one consumer subscribes to a given topic of interest, the messaging system has to deliver the data to each subscriber, and in fact it sends a different copy of this data to each subscriber. And, although this solves the problem of consumers filtering out non-subscribed data, unicast transmission is non-scalable and thus not adaptable to substantially large groups of consumers subscribing to a particular data or to a significant overlap in consumption patterns.
- the present invention is based, in part, on the foregoing observations and on the idea that such deficiencies can be addressed with better results using a different approach.
- These observations gave rise to the end-to-end message publish/subscribe middleware architecture for high-volume and low-latency messaging and particularly an intelligent messaging application programming interface (API). So therefore, for communications with applications a data distribution system with an end-to-end message publish/subscribe middleware architecture that includes an intelligent messaging API in accordance with the principles of the present invention can advantageously route significantly higher message volumes and with significantly lower latency.
- the present invention contemplates, for instance, improving communications between APIs and messaging appliances through reliable, highly-available, session-based fault tolerant design and by introducing various combinations of late schema binding, partial publishing, protocol optimization, real-time channel optimization, value-added calculations definition language, intelligent messaging network interface hardware, DMA (direct memory access) for applications, system performance monitoring, message flow control, message transport logic with temporary caching and value-added message processing.
- DMA direct memory access
- one exemplary API for communications between applications and a publish/subscribe middleware system includes a communication engine, one or more stubs, and an inter-process communications bus (which we refer to simply as bus).
- the communication engine might be implemented as a daemon process when, for instance, more than one application leverage a single communication engine to receive and send messages.
- the communication engine might be compiled into an application along with the stub in order to eliminate the extra daemon hop.
- a bus between the communication engine and the stub would be defined as an intra-process communication bus.
- the communication engine is configured to function as a gateway for communications between the applications and the publish/subscribe middleware system.
- the communication engine is operative, transparently to the applications, for using a dynamically selected message transport protocol to thereby provide protocol optimization and for monitoring and dynamically controlling, in real time, transport channel resources and flow.
- the one or more stubs are used for communications between the applications and the communication engine.
- the bus is for communications between the one or more stubs and the communication engine.
- a second example of the API also includes a communication engine, one or more stubs and a bus.
- the communication engine in this embodiment is built with logical layers including a message layer and a message transport layer, wherein the message layer includes an application delivery routing engine, an administrative message layer and a message routing engine and wherein the message transport layer includes a channel management portion for controlling transport paths of messages handled by the message layer.
- FIG. 1 illustrates an end-to-end middleware architecture in accordance with the principles of the present invention.
- FIG. 1 a is a diagram illustrating an overlay network.
- FIG. 2 is a diagram of illustrating an enterprise infrastructure implemented with an end-to-end middleware architecture according to the principles of the present invention.
- FIG. 2 a is a diagram illustrating an enterprise infrastructure physical deployment with the message appliances (MAs) creating a network backbone disintermediation.
- MAs message appliances
- FIG. 3 illustrates a channel-based messaging system architecture
- FIG. 4 illustrates one possible topic-based message format
- FIG. 5 shows a topic-based message routing and routing table.
- FIG. 6 illustrates an intelligent messaging application programming interface (API).
- API application programming interface
- FIG. 7 illustrates the impact of adaptive message flow control.
- FIGS. 8 a and 8 b illustrate intelligent network interface card (NIC) configurations.
- NIC network interface card
- FIG. 9 illustrates session-based fault tolerant design.
- FIG. 10 illustrates messaging appliance (MA) to API interface.
- middleware is used in the computer industry as a general term for any programming that mediates between two separate and often already existing programs.
- the purpose of adding the middleware is to offload from applications some of the complexities associated with information exchange by, among other things, defining communication interfaces between all participants in the network (publishers and subscribers).
- middleware programs provide messaging services so that different applications can communicate.
- middleware software layer information exchange between applications is performed seamlessly.
- the systematic tying together of disparate applications, often through the use of middleware, is known as enterprise application integration (EAI).
- middleware can be a broader term used in connection with messaging between source and destination and the facilities deployed to enable such messaging; and, thus, middleware architecture covers the networking and computer hardware and software components that facilitate effective data messaging, individually and in combination as will be described below.
- messages system or “middleware system,” can be used in the context of publish/subscribe systems in which messaging servers manage the routing of messages between publishers and subscribers.
- publish/subscribe in messaging middleware is a scalable and thus powerful model.
- a consumer may be used in the context of client-server applications and the like.
- a consumer is a system or an application that uses an application programming interface (API) to register to a middleware system, to subscribe to information, and to receive data delivered by or send data delivered to the middleware system.
- API application programming interface
- An API inside the publish/subscribe middleware architecture boundaries is a consumer; and an external consumer is any publish/subscribe system (or external data destination) that doesn't use the API and for communications with which messages go through protocol transformation (as will be later explained).
- an external data source may be used in the context of data distribution and message publish/subscribe systems.
- an external data source is regarded as a system or application, located within or outside the enterprise private network, which publishes messages in one of the common protocols or its own message protocol.
- An example of an external data source is a market data exchange that publishes stock market quotes which are distributed to traders via the middleware system.
- Another example of the external data source is transactional data. Note that in a typical implementation of the present invention, as will be later described in more detail, the middleware architecture adopts its unique native protocol to which data from external data sources is converted once it enters the middleware system domain, thereby avoiding multiple protocol transformations typical of conventional systems.
- external data destination is also used in the context of data distribution and message publish/subscribe systems.
- An external data destination is, for instance, a system or application, located within or outside the enterprise private network, which is subscribing to information routed via a local/global network.
- An external data destination could be the aforementioned market data exchange that handles transaction orders published by the traders.
- Another example of the external data destination is transactional data. Note that, in the foregoing middleware architecture messages directed to an external data destination are translated from the native protocol to the external protocol associated with the external data destination.
- bus is typically used to describe an interconnect, and it can be a hardware or software-based interconnect.
- the term bus can be used to describe an inter-process communication link such as that which uses a socket and shared memory, and it can be also used to describe an intra-process link such as a function call.
- API intelligent messaging application programming interface
- This exemplary architecture combines a number of beneficial features which include: messaging common concepts, APIs, fault tolerance, provisioning and management (P&M), quality of service (QoS—conflated, best-effort, guaranteed-while-connected, guaranteed-during-disconnected etc.), persistent caching for guaranteed delivery QoS, management of namespace and security service, a publish/subscribe ecosystem (core, ingress and egress components), transport-transparent messaging, neighbor-based messaging (a model that is a hybrid between hub-and-spoke, peer-to-peer, and store-and-forward, and which uses a subscription-based routing protocol that can propagate the subscriptions to all neighbors as necessary), late schema binding, partial publishing (publishing changed information only as opposed to the entire data) and dynamic allocation of network and system resources.
- P&M provisioning and management
- QoS quality of service
- QoS quality of service
- a publish/subscribe ecosystem core, ingress and egress components
- transport-transparent messaging
- the publish/subscribe middleware system advantageously incorporates a fault tolerant design of the middleware architecture.
- every publish/subscribe ecosystem there is at least one and more often two or more messaging appliances (MA) each of which being configured to function as an edge (egress/ingress) MA or a core MA.
- MA messaging appliances
- the core MAs portion of the publish/subscribe ecosystem uses the aforementioned native messaging protocol (native to the middleware system) while the ingress and egress portions, the edge MAs, translate to and from this native protocol, respectively.
- the diagram of FIG. 1 shows the logical connections and communications between them.
- the illustrated middleware architecture is that of a distributed system.
- a logical communication between two distinct physical components is established with a message stream and associated message protocol.
- the message stream contains one of two categories of messages: administrative and data messages.
- the administrative messages are used for management and control of the different physical components, management of subscriptions to data, and more.
- the data messages are used for transporting data between sources and destinations, and in a typical publish/subscribe messaging there are multiple senders and multiple receivers of data messages.
- the distributed messaging system with the publish/subscribe middleware architecture is designed to perform a number of logical functions.
- One logical function is message protocol translation which is advantageously performed at an edge messaging appliance (MA) component. This is because communications within the boundaries of the publish/subscribe middleware system are conducted using the native protocol for messages independently from the underlying transport logic. This is why we refer to this architecture as being a transport-transparent channel-based messaging architecture.
- MA edge messaging appliance
- a second logical function is routing the messages from publishers to subscribers. Note that the messages are routed throughout the publish/subscribe network. Thus, the routing function is performed by each MA where messages are propagated, say, from an edge MA 106 a - b (or API) to a core MA 108 a - c or from one core MA to another core MA and eventually to an edge MA (e.g., 106 b ) or API 110 a - b .
- the API 110 a - b communicates with applications 112 1-n for publishing of and subscribing to messages via an inter-process communication bus (sockets, shared memory etc.) or via an inter-process communication bus such as a function call.
- a third logical function is storing messages for different types of guaranteed-delivery quality of service, including for instance guaranteed-while-connected and guaranteed-while-disconnected. This is accomplished with the addition of store-and-forward functionality.
- a fourth function is delivering these messages to the subscribers (as shown, an API 106 a - b delivers messages to subscribing applications 112 1-n ).
- the system configuration function as well as other administrative and system performance monitoring functions, are managed by the P&M system.
- Configuration involves both physical and logical configuration of the publish/subscribe middleware system network and components.
- the monitoring and reporting involves monitoring the health of all network and system components and reporting the results automatically, per demand or to a log.
- the P&M system performs its configuration, monitoring and reporting functions via administrative messages.
- the P&M system allows the system administrator to define a message namespace associated with each of the messages routed throughout the publish/subscribe network. Accordingly, a publish/subscribe network can be physically and/or logically divided into namespace-based sub-networks.
- the P&M system manages a publish/subscribe middleware system with one or more MAs. These MAs are deployed as edge MAs or core MAs, depending on their role in the system.
- An edge MA is similar to a core MA in most respects, except that it includes a protocol translation engine that transforms messages from native protocols and from native to external protocols.
- the boundaries of the publish/subscribe middleware architecture in a messaging system i.e., the end-to-end publish/subscribe middleware system boundaries
- the system architecture is not confined to a particular limited geographic area and, in fact, is designed to transcend regional or national boundaries and even span across continents.
- the edge MAs in one network can communicate with the edge MAs in another geographically distant network via existing networking infrastructures.
- the core MAs 108 a - c route the published messages internally within publish/subscribe middleware system towards the edge MAs or APIs (e.g., APIs 110 a - b ).
- the routing map particularly in the core MAs, is designed for maximum volume, low latency, and efficient routing.
- the routing between the core MAs can change dynamically in real-time. For a given messaging path that traverses a number of nodes (core MAs), a real time change of routing is based on one or more metrics, including network utilization, overall end-to-end latency, communications volume, network and/or message delay, loss and jitter.
- the MA can perform multi-path routing based on message replication and thus send the same message across all paths. All the MAs located at convergence points of diverse paths will drop the duplicated messages and forward only the first arrived message.
- This routing approach has the advantage of optimizing the messaging infrastructure for low latency; although the drawback of this routing method is that the infrastructure requires more network bandwidth to carry the duplicated traffic.
- the edge MAs have the ability to convert any external message protocol of incoming messages to the middleware system's native message protocol; and from native to external protocol for outgoing messages. That is, an external protocol is converted to the native (e.g., TervelaTM) message protocol when messages are entering the publish/subscribe network domain (ingress); and the native protocol is converted into the external protocol when messages exit the publish/subscribe network domain (egress).
- the edge MAs operate also to deliver the published messages to the subscribing external data destinations.
- both the edge and the core MAs 106 a - b and 108 a - c are capable of storing the messages before forwarding them.
- a caching engine (CE) 118 a - b is capable of storing the messages before forwarding them.
- CE caching engine
- One or more CEs can be connected to the same MA.
- the API is said not to have this store-and-forward capability although in reality an API 110 a - b could store messages before delivering them to the application, and it can store messages received from (i.e., published by) applications before delivering them to a core MA, edge MA or another API.
- an MA edge or core MA
- it forwards all or a subset of the routed messages to the CE which writes them to a storage area for persistency. For a predetermined period of time, these messages are then available for retransmission upon request. Examples where this feature is implemented are data replay, partial publish and various quality of service levels. Partial publish is effective in reducing network and consumers load because it requires transmission only of updated information rather than of all information.
- FIG. 1 To illustrate how the routing maps might affect routing, a few examples of the publish/subscribe routing paths are shown in FIG. 1 .
- the middleware architecture of the publish/subscribe network provides five or more different communication paths between publishers and subscribers.
- the first communication path links an external data source to an external data destination.
- the published messages received from the external data source 114 1-n are translated into the native (e.g., TervelaTM) message protocol and then routed by the edge MA 106 a .
- One way the native protocol messages can be routed from the edge MA 106 a is to an external data destination 116 n . This path is called out as communication path 1 a .
- the native protocol messages are converted into the external protocol messages suitable for the external data destination.
- Another way the native protocol messages can be routed from the edge MA 106 b is internally through a core MA 108 b . This path is called out as communication path 1 b .
- the core MA 108 b routes the native messages to an edge MA 106 a .
- the edge MA 106 a routes the native protocol messages to the external data destination 116 1 , it converts them into an external message protocol suitable for this external data destination 116 1 .
- this communication path doesn't require the API to route the messages from the publishers to the subscribers. Therefore, if the publish/subscribe middleware system is used for external source-to-destination communications, the system need not include an API.
- Another communication path links an external data source 114 n to an application using the API 110 b .
- Published messages received from the external data source are translated at the edge MA 106 a into the native message protocol and are then routed by the edge MA to a core MA 108 a .
- the messages are routed through another core MA 108 c to the API 110 b .
- the messages are delivered to subscribing applications (e.g., 112 2 ). Because the communication paths are bidirectional, in another instance, messages could follow a reverse path from the subscribing applications 112 1-n to the external data destination 116 n .
- core MAs receive and route native protocol messages while edge MAs receive external or native protocol messages and, respectively, route native or external protocol messages (edge MAs translate to/from such external message protocol to/from the native message protocol).
- edge MAs translate to/from such external message protocol to/from the native message protocol.
- Each edge MA can route an ingress message simultaneously to both native protocol channels and external protocol channels regardless of whether this ingress message comes in as a native or external protocol message.
- each edge MA can route an ingress message simultaneously to both external and internal consumers, where internal consumers consume native protocol messages and external consumers consume external protocol messages. This capability enables the messaging infrastructure to seamlessly and smoothly integrate with legacy applications and systems.
- Yet another communication path links two applications, both using an API 110 a - b .
- At least one of the applications publishes messages or subscribes to messages.
- the delivery of published messages to (or from) subscribing (or publishing) applications is done via an API that sits on the edge of the publish/subscribe network.
- one of the core or edge MAs routes the messages towards the API which, in turn, notifies the subscribing applications when the data is ready to be delivered to them.
- Messages published from an application are sent via the API to the core MA 108 c to which the API is ‘registered’.
- the API by ‘registering’ (logging in) with an MA, the API becomes logically connected to it.
- An API initiates the connection to the MA by sending a registration (‘log-in’ request) message to the MA.
- the API can subscribe to particular topics of interest by sending its subscription messages to the MA. Topics are used for publish/subscribe messaging to define shared access domains and the targets for a message, and therefore a subscription to one or more topics permits reception and transmission of messages with such topic notations.
- the P&M sends to the MAs in the network periodic entitlement updates and each MA updates it own table accordingly.
- the MA determines whether the API is entitled to subscribe to a particular topic (the MA verifies the API's entitlements using the routing entitlements table) the MA activates the logical connection to the API. Then, if the API is properly registered with it, the core MA 108 c routes the data to the second API 110 as shown. In other instances this core MA 108 b may route the messages through additional one or more core MAs (not shown) which route the messages to the API 110 b that, in turn, delivers the messages to subscribing applications 112 1-n .
- communications path 3 doesn't require the presence of an edge MA, because it doesn't involve any external data message protocol.
- an enterprise system is configured with a news server that publishes to employees the latest news on various topics. To receive the news, employees subscribe to their topics of interest via a news browser application using the API.
- the middleware architecture allows subscription to one or more topics. Moreover, this architecture allows subscription to a group of related topics with a single subscription request, by allowing wildcards in the topic notation.
- Yet another path is one of the many paths associated with the P&M system 102 and 104 with each of them linking the P&M to one of the MAs in the publish/subscribe network middleware architecture.
- the messages going back and forth between the P&M system and each MA are administrative messages used to configure and monitor that MA.
- the P&M system communicates directly with the MAs.
- the P&M system communicates with MAs through other MAs.
- the P&M system can communicate with the MAs both directly or indirectly.
- the middleware architecture can be deployed over a network with switches, router and other networking appliances, and it employs channel-based messaging capable of communications over any type of physical medium.
- One exemplary implementation of this fabric-agnostic channel-based messaging is an IP-based network.
- UDP User Datagram Protocol
- FIG. 1 a An overlay network according to this principle is illustrated in FIG. 1 a.
- overlay communications 1 , 2 and 3 can occur between the three core MAs 208 a - c via switches 214 a - c , a router 216 and subnets 218 a - c .
- these communication paths can be established on top of the underlying middleware network which is composed of networking infrastructure such as subnets, switches and routers, and, as mentioned, this architecture can span over a large geographic area (different countries and even different continents).
- FIG. 2 One such implementation is illustrated on FIG. 2 .
- a market data distribution plant 12 is built on top of the publish/subscribe network for routing stock market quotes from the various market data exchanges 320 1-n to the traders (applications not shown).
- Such an overlay solution relies on the underlying network for providing interconnects, for instance, between the MAs as well as between such MAs and the P&M system.
- Market data delivery to the APIs 310 1-n is based on applications subscription.
- traders using the applications can place transaction orders that are routed from the APIs 310 ′-n through the publish/subscribe network (via core MAs 308 a - b and the edge MA 306 a ) back to the market data exchanges 320 i - n.
- FIG. 2 a An example of the underlying physical deployment is illustrated on FIG. 2 a .
- the MAs are directly connected to each other and plugged directly into the networks and subnets in which the consumers and publishers of messaging traffic are physically connected.
- interconnects would be direct connections, say, between the MAs as well as between them and the P&M system. This enables a network backbone disintermediation and a physical separation of the messaging traffic from other enterprise applications traffic. Effectively, the MAs can be used to remove the reliance on traditional routed network for the messaging traffic.
- the external data sources or destinations are directly connected to edge MAs, for instance edge MA 1 .
- the consuming or publishing applications of messaging traffic are connected to the subnets 1-12.
- These application have at least two ways to subscribe, publish or communicate with other applications; they could either use the enterprise backbone, composed of multiple layers of redundant routers and switches, which carries all enterprise application traffic, including—but not limited to—messaging traffic, or use the messaging backbone, composed of edge and core MAs directly interconnected to each other via an integrated switch.
- an application located in subnet 6 logically or physically connected to the core MA 3 subscribes to or publishes messaging traffic in the native protocol, using the Tervela API.
- an application located in subnet 7 logically or physically connected to the edge MA 1 subscribes to or publishes the messaging traffic in an external protocol, where the MA performs the protocol transformation using the integrated protocol transformation engine module.
- the physical components of the publish/subscribe network are built on a messaging transport layer akin to layers 1 to 4 of the Open Systems Interconnection (OSI) reference model. Layers 1 to 4 of the OSI model are respectively the Physical, Data Link, Network and Transport layers.
- OSI Open Systems Interconnection
- the publish/subscribe network can be directly deployed into the underlying network/fabric by, for instance, inserting one or more messaging line card in all or a subset of the network switches and routers.
- the publish/subscribe network can be deployed as a mesh overlay network (in which all the physical components are connected to each other). For instance, a fully-meshed network of 4 MAs is a network in which each of the MAs is connected to each of its 3 peer MAs.
- the publish/subscribe network is a mesh network of one or more external data sources and/or destinations, one or more provisioning and management (P&M) systems, one or more messaging appliances (MAs), one or more optional caching engines (CE) and one or more optional application programming interfaces (APIs).
- P&M provisioning and management
- MAs messaging appliances
- CE optional caching engines
- APIs application programming interfaces
- FIG. 3 illustrate in more details the channel-based messaging architecture 320 .
- each communication path between the messaging source and destination is defined as a messaging transport channel.
- Each channel 326 1-n is established over a physical medium with interfaces 328 1-n between the channel source and the channel destination.
- Each such channel is established for a specific message protocol, such as the native (e.g., TervelaTM) message protocol or others.
- Only edge MAs (those that manage the ingress and egress of the publish/subscribe network) use the channel message protocol (external message protocol).
- the channel management layer 324 determines whether incoming and outgoing messages require protocol translation.
- the channel management layer 324 will perform a protocol translation by sending the message for process through the protocol translation engine (PTE) 332 before passing them along to the native message layer 330 . Also, in each edge MA, if the native message protocol of outgoing messages is different from the channel message protocol (external message protocol), the channel management layer 324 will perform a protocol translation by sending the message for process through the protocol translation engine (PTE) 332 before routing them to the transport channel 326 1-n . Hence, the channel manages the interface 328 1-n with the physical medium as well as the specific network and transport logic associated with that physical medium and the message reassembly or fragmentation.
- PTE protocol translation engine
- a channel manages the OSI transport layers 322 . Optimization of channel resources is done on a per channel basis (e.g., message density optimization for the physical medium based on consumption patterns, including bandwidth, message size distribution, channel destination resources and channel health statistics). Then, because the communication channels are fabric agnostic, no particular type of fabric is required. Indeed, any fabric medium will do, e.g., ATM, Infiniband or Ethernet.
- message fragmentation or re-assembly may be needed when, for instance, a single message is split across multiple frames or multiple messages are packed in a single frame Message fragmentation or reassembly is done before delivering messages to the channel management layer
- FIG. 3 further illustrates a number of possible channels implementations in a network with the middleware architecture.
- the communication is done via a network-based channel using multicast over an Ethernet switched network which serves as the physical medium for such communications.
- the source send messages from its IP address, via its UDP port, to the group of destinations with respective UDP ports at their respective IP addresses (hence multicast).
- the communication between the source and destination is done over an Ethernet switched network using UDP unicast. From its IP address, the source sends messages, via a UDP port, to a select destination with a UDP port at its respective IP address.
- the channel is established over an Infiniband interconnect using a native Infiniband transport protocol, where the Infiniband fabric is the physical medium.
- the channel is node-based and communications between the source and destination are node-based using their respective node addresses.
- the channel is memory-based, such as RDMA (Remote Direct Memory Access), and referred to here as direct connect (DC).
- RDMA Remote Direct Memory Access
- DC direct connect
- the TervelaTM message protocol is similar to an IP-based protocol.
- Each message contains a message header and a message payload.
- the message header contains a number of fields one of which is for the topic information indicating topics used by consumers to subscribe to a shared domain of information.
- FIG. 4 illustrates one possible topic-based message format.
- messages include a header 370 and a body 372 and 374 which includes the payload.
- the two types of messages, data and administrative are shown with different message bodies and payload types.
- the header includes fields for the source and destination namespace identifications, source and destination session identifications, topic sequence number and hope timestamp, and, in addition, it includes the topic notation field (which is preferably of variable length).
- the topic might be defined as a token-based string, such as NYSE.RTF.IBM 376 which is the topic string for messages containing the real time quote of the IBM stock.
- the topic information in the message might be encoded or mapped to a key, which can be one or more integer values. Then, each topic would be mapped to a unique key, and the mapping database between topics and keys would be maintained by the P&M system and updated over the wire to all MAs. As a result, when an API subscribes or publishes to one topic, the MA is able to return the associated unique key that is used for the topic field of the message.
- the subscription format will follow the same format as the message topic.
- the subscription format also supports wildcard-matching with any topic substring as well as regular expression pattern-matching with the topic string. Mapping wildcards to actual topics may be dependant on the P&M subsystem or it can be handled by the MA, depending on the complexity of the wildcard or pattern-match request.
- pattern matching may follow rules such as:
- a string with a wildcard of T1.*.T3.T4 would match T1.T2a.T3.T4 and T1.T2b.T3.T4 but would not match T1.T2.T3.T4.T5
- T1.*.T3.T4.* would not match T1.T2a.T3.T4 and T1.T2b.T3.T4 but it would match T1.T2.T3.T4.T5
- a string with wildcards of T1.*.T3.T4[*] would match T1.T2a.T3.T4, T1.T2b.T3.T4 and T1.T2.T3.T4.T5 but not match T1.T2.T3.T4.T5.T6
- a string with a wildcard of T1.T2*.T3.T4 would match T1.T2a.T3.T4 and T1.T2b.T3.T4 but would not match T1.T5a.T3.T4
- a string with wildcards of T1.*.T3.T4.> (any number of trailing elements) would match T1.T2a.T3.T4, T1.T2b.T3.T4, T1.T2.T3.T4.T5 and T1.T2.T3.T4.T5.T6.
- FIG. 5 shows topic-based message routing with topics often defined as token-based strings, such as T1.T2.T3.T4, where T1, T2, T3 and T4 are strings of variable lengths.
- incoming messages with particular topic notations 400 are selectively routed to communications channels 404 , and the routing determination is made based on a routing table 402 .
- the mapping of the topic subscription to the channel defines the route and is used to propagate messages throughout the publish/subscribe network. The superset of all these routes, or mapping between subscriptions and channels, defines the routing table.
- the routing table is also referred to as the subscription table.
- the subscription table for routing via string-based topics can be structured in a number of ways, but is preferably configured for optimizing its size as well as the routing lookup speed.
- the subscription table may be defined as a dynamic hash map structure, and in another implementation, the subscription table may be arranged in a tree structure as shown in the diagram of FIG. 5 .
- a tree includes nodes (e.g., T 1 , . . . T 10 ) connected by edges, where each sub-string of a topic subscription corresponds to a node in the tree.
- the channels mapped to a given subscription are stored on the leaf node of that subscription indicating, for each leaf node, the list of channels from where the topic subscription came (i.e. through which subscription requests were received). This list indicates which channel should receive a copy of the message whose topic notation matches the subscription.
- the message routing lookup takes a message topic as input and parse the tree using each substring of that topic to locate the different channels associated with the incoming message topic.
- T 1 , T 2 , T 3 , T 4 and T 5 are directed to channels 1, 2 and 3; T 1 , T 2 , and T 3 , are directed to channel 4; T 1 , T 6 , T 7 , T* and T 9 are directed to channels 4 and 5; T 1 , T 6 , T 7 , T 8 and T 9 are directed to channel 1; and T 1 , T 6 , T 7 , T* and T 10 are directed to channel 5.
- routing table structure Although selection of the routing table structure is directed to optimizing the routing table lookup, performance of the lookup depends also on the search algorithm for finding the one or more topic subscriptions that match an incoming message topic. Therefore, the routing table structure should be able to accommodate such algorithm and vice versa.
- One way to reduce the size of the routing table is by allowing the routing algorithm to selectively propagate the subscriptions throughout the entire publish/subscribe network. For example, if a subscription appears to be a subset of another subscription (e.g., a portion of the entire string) that has already been propagated, there is no need to propagate the subset subscription since the MAs already have the information for the superset of this subscription.
- the preferred message routing protocol is a topic-based routing protocol, where entitlements are indicated in the mapping between subscribers and respective topics. Entitlements are designated per subscriber and indicate what messages the subscriber has a right to consume, or which messages may be produced (published) by such publisher. These entitlements are defined in the P&M machine, communicated to all MAs in the publish/subscribe network, and then used by the MA to create and update their routing tables.
- Each MA updates its routing table by keeping track of who is interested in (requesting subscription to) what topic. However, before adding a route to its routing table, the MA has to check the subscription against the entitlements of the publish/subscribe network. The MA verifies that a subscribing entity, which can be a neighboring MA, the P&M system, a CE or an API, is authorized to do so. If the subscription is valid, the route will be created and added to the routing table. Then, because some entitlements may be known in advance, the system can be deployed with predefined entitlements and these entitlements can be automatically loaded at boot time. For instance, some specific administrative messages such as configuration updates or the like might be always forwarded throughout the network and therefore automatically loaded at startup time.
- a subscribing entity which can be a neighboring MA, the P&M system, a CE or an API
- FIG. 6 is a block diagram illustrating an API.
- the API is a combination of an API communication engine 602 and API stubs 604 .
- a communication engine 602 is known generally as a program that runs under the operating system for the purpose of handling periodic service requests that a computer system expects to receive; but in some instances it is embedded in the applications themselves and is thus an intra-process communication bus.
- the communication engine program forwards the requests to other programs (or processes) as appropriate.
- the API communication engine acts as a gateway between applications and the publish/subscribe middleware system.
- the API communication engine manages application communications with MAs by, among other things, dynamically selecting the transport protocol and dynamically adjusting the number of messages to pack in a single frame. The number of messages packed in a single fame is dependent on factors such as the message rate and system resource utilization in both the MA and the API host.
- the API stubs 604 are used by the applications to communicate with the API communication engine.
- an application program that uses remote procedure calls (RPCs) is compiled with stubs that substitute for the program(s) with the requested remote procedure(s).
- a stub accepts a PRC and forwards it to the remote procedure which, upon completion, returns the results to the stub for passing the result to the program that made the PRC.
- communications between the API stubs and the API communication engine are done via an inter-process communication bus which is implemented using mechanisms such as sockets or shared memory.
- the API stubs are available in various programming languages, including C, C++, Java and .NET.
- the API itself might be available in its entirety in multiple languages and it can run on different Operating Systems, including MS WindowsTM, LinuxTM and SolarisTM.
- the API communication engine 602 and API stubs 604 are compiled and linked to all the applications 606 that are using the API. Communications between the API stubs and the API communication engine are done via an inter-process communication bus 608 , implemented using mechanisms such as sockets or shared memory.
- the API stubs 604 are available in various programming languages, including C, C++, Java and NET. In some instances, the API itself might be available in multiple languages.
- the API runs on various operating system platforms three examples of which are WindowsTM, LinuxTM and SolarisTM.
- the API communication engine is built on logical layers such as a messaging transport layer 610 . Unlike the MA which interacts directly with the physical medium interfaces, the API sits in most implementations on top of an operating system (as is the case with the P&M system) and its messaging transport layer communicates via the OS.
- the OS may require specific drivers for each physical medium that is otherwise not supported by the OS by default.
- the OS might also require the user to insert a specific physical medium card. For instance, physical mediums such as direct connect (DC) or Infiniband require a specific interface card and its associated OS driver to allow the messaging transport layer to send messages over the channel.
- DC direct connect
- Infiniband require a specific interface card and its associated OS driver to allow the messaging transport layer to send messages over the channel.
- the messaging layer 612 in an API is also somewhat similar to a messaging layer in an MA. The main difference, however, is that the incoming messages follow different paths in the API and MA, respectively.
- the data messages are sent to the application delivery routing engine 614 (less schema bindings) and the administrative messages are sent to the administrative messages layer 616 .
- the application delivery routing engine behaves similarly to the message routing engine 618 , except that instead of mapping channels to subscriptions it maps applications ( 606 ) to subscriptions. Thus, when an incoming message arrives, the application delivery routing engine looks up for all subscribing applications and then sends a copy of this message or a reference to this message to all of them.
- the application delivery routing engine is responsible for the late schema binding feature.
- the native (e.g., TervelaTM) messaging protocol provides the information in a raw and compressed format that doesn't contain the structure and definition of the underlying data.
- the messaging system beneficially reduces its bandwidth utilization and, in turn, allows increased message volume and throughput.
- the API binds the raw data to its schema, allowing the application to transparently access the information.
- the schema defines the content structure of the message by providing a mapping between field name, type of field, and its offset location in the message body. Therefore, the application can ask for a specific field name without knowing its location in the message, and the API uses the offset to locate and return that information to the application.
- the schema is provided by the MA when the applications request to subscribe or publish from/to the MA.
- the API may have a protocol optimization service (POS) 620 as does an MA.
- POS protocol optimization service
- the publish/subscribe middleware system is configured with the POS distributed between the MA and the API communication engine in a master-slave-based configuration.
- the POS in the API acts as a slave of the master POS in the MA to which it is linked. Both the master POS and slave POS monitor the consumption patterns over time of system and network resources.
- the slave POS communicates all, a subset, or a summary of these resource consumption patterns to the master POS and based on these patterns the master POS determines how to deliver the messages to the API communication engine, including by selecting a transport protocol. For instance, a transport protocol selected from among the unicast, multicast or broadcast message transport protocols is not always suitable for the circumstances. Thus, when the POS on the MA decides to change the channel configurations, it remotely controls the slave POS at the API.
- the API In performing its role in the messaging publish/subscribe middleware system, the API is preferably transparent to the applications in that it minimizes utilization of system resources for handling application requests.
- the API optimizes the number of memory copies by performing a zero-copy message receive (i.e.: omitting the copy to the application memory space of messages received from the network).
- the API communication engine introduces a buffer (memory space) to the network interface card for writing incoming messages directly into the API communication engine memory space. These messages become accessible to the applications via shared memory.
- the API performs a zero-copy message transmit from the application memory space directly to the network.
- the API reduces the required amount of CPU processing for performing the message receive and transmit tasks. For instance, instead of receiving or transmitting one message at the time, the API communication engine performs bulk message receive and transmit tasks, thereby reducing the number of CPU processing cycles. Such bulk message transfers often involve message queuing. Therefore, in order to minimize end-to-end latency bulk message transfers require restricting the time of keeping messages queued to less than an acceptable latency threshold.
- the API processes messages published or subscribed to by applications.
- the message information is communicated in raw and compressed format.
- the API binds the raw data to its schema, allowing applications to transparently access the information.
- the schema defines the content structure of the message by providing a mapping between field name, type of field, and field index in the message body.
- the application can ask for a specific field name without knowing its location in the message, and the API uses the field index and its associated offset to locate and return that information to the application.
- an application can subscribe to a topic where it requests to receive only the updated information from the message stream. As a result of such subscription, the MA compares new messages to previously delivered messages and publishes to the application only updates.
- Another implementation provides the ability to present the received or published data in a pre-agreed format between the subscribing applications and the API.
- This conversion of the content is performed by a presentation engine and is based on the data presentation format provided by the application.
- the data presentation format might be defined as a mapping between the underlying data schema and the application data format. For instance, the application might publish and consume data in an XML format, and the API will convert to and from this XML format to the underlying message format.
- the API is further designed for real-time channel optimization. Specifically, communications between the MA and the API communication engine are performed over one or more channels each transporting the messages that correspond to one or more subscriptions or publications. Both the MA and the API communication engine constantly monitor each of the communication paths and dynamically optimize the available resources. This is done to minimize the processing overhead related to data publications/subscriptions and to reserve the necessary and expected system resources for publishing and subscribing applications.
- the API communication engine enables a real-time channel message flow control feature for protecting the one or more applications from running out of available system resources.
- This message flow control feature is governed by the subscribed QoSs (quality of service). For instance, for last-known-value or best-effort QoS, it is often more important to process less data of good quality than more data of poor quality. If the quality of data is measured by its age, for instance, it may be better to process only the most up-to-date information. Moreover, instead of waiting for the queue to overflow and leave the applications with the burden of processing old data and dropping the most recent data, the API communication engine notifies the MA about the current state of the channel queues.
- QoSs quality of service
- FIG. 7 illustrates the effects of a real-time message flow control (MFC) algorithm.
- MFC real-time message flow control
- the size of a channel queue can operate as a threshold parameter. For instance, messages delivered through a particular channel accumulate in its channel queue at the receiving appliance side, and as this channel queue grows its size may reach a high threshold that it cannot safely exceed without the channel possibly failing to keep up with the flow of incoming messages.
- the receiving messaging appliance can activate the MFC before the channel queue is overrun.
- the MFC is turned off when the queue shrinks and its size becomes smaller than a low threshold.
- the difference between the high and low thresholds is set to be sufficient for producing this so called hysteresis behavior, where the MFC is turned on at a higher queue size value than that at which it is turned off.
- This threshold difference avoids frequent on-off oscillations of the message flow control that would otherwise occur as the queue size hovers around the high threshold.
- the rate of incoming messages can be kept in check with a real-time, dynamic MFC which keeps the rate below the maximum channel capacity.
- the real-time, dynamic MFC can operates to blend the data or apply some conflation algorithm on the subscription queues.
- this operation may require an additional message transformation, the MA may fall back to a slow forwarding path as opposed to remaining on the fast forwarding path. This would prevent the message transformation from having a negative impact on the messaging throughput.
- the additional message transformation is performed by a processor similar to the protocol translation engine. Examples of such processor include an NPU (network processing unit), a semantic processor, a separate micro-engine on the MA and the like.
- the real-time conflation or subscription-level message processing can be distributed between the sender and the receiver. For instance, in the case where subscription-level message processing is requested by only one subscriber, it would make sense to push it downstream on the receiver side as opposed to performing it on the sender side. However, if more than one consumer of the data is requesting the same subscription-level message processing, it would make more sense to perform it upstream on the sender side.
- the purpose of distributing the workload between the sender and receiver-side of a channel is to optimally use the available combined processing resources.
- the channel packs multiple messages in a single frame it can keep message latency below the maximum acceptable latency and ease the stress on the receive side by freeing some processing resources. It is sometimes more efficient to receive fewer large frames than processing many small frames. This is especially true for the API that might run on a typical OS using generic computer hardware components including CPU, memory and NICs. Typical NICs are designed to generate an OS interrupt for each received frame, which in-turn reduces the application-level processing time available for the API to deliver messages to the subscribing applications.
- the MA throttles the message rate on this particular channel to reduce the load on the API communication engine and allow the applications to return to a steady state. During this throttling process, depending on the subscribed quality of service, the most recent messages will be prioritized over the old ones. If the queues go back to a normal load level, the API might notify the MA to disable the channel message flow control.
- the message flow control feature is implemented on the API side of the message routing path (to/from applications). Whenever a message needs to be delivered to a subscribing application, the API communication engine can make the decision to drop the message in favor of a following more recent message if allowed by the subscribed quality of service.
- the message flow control can apply a different throttling policy, where instead of dropping old messages in favor of new ones, the API communication engine, or the MA connected to this API communication engine, might perform a subscription-based data conflation, also known as data blending. In other words, the dropped data is not completely lost but it is blended with the most recent data.
- message flow control throttling policy might be defined globally for all channels between a given API and their MAs, and configured from the P&M system as a conflated quality of service. This QoS will apply to all applications subscribing to the conflated QoS.
- this throttling policy might be user-defined via an API function call from the application, providing some flexibility.
- the API communication engine communicates the throttling policy when establishing the channel with the MA.
- the channel configuration parameters are negotiated between the API communication engine and the MA during that phase.
- this user-defined throttling policy is implemented at the subscription-level rather than at the message-level, an application can define the policy when subscribing to a given topic. The subscription-based throttling policy is then added to the channel configuration for this particular subscription.
- the API communication engine can be configured to provide value-added message processing; and so can the MA to which the API is connected.
- value added message processing an application might subscribe to an inline value-added message processing service for a given subscription or a set of subscriptions. This service will then be performed or applied to the subscribed message streams.
- ACL content-based access control list
- a subscription-based ACL could be the combination of an ACL condition, expressed using the fields in the message, and an ACL action, expressed in the form of REJECT, ACCEPT, LOG, or another suitable way.
- An example of such ACL is: (FIELD(n) ⁇ VALUE, ACCEPT, REJECT
- the API communication engine can be configured to off-load some of the message processing to an intelligent messaging network interface card (NIC).
- NIC intelligent messaging network interface card
- This intelligent messaging NIC is provided for bypassing the networking I/O by performing the full network stack in hardware, for performing DMA from the I/O card directly into the application memory space and for managing the messaging reliability, including retransmissions and temporary caching.
- the intelligent messaging NIC can further perform channel management, including message flow control, value-added message processing and content-based ACL, as described above.
- FIGS. 8 a and 8 b Two implementations of such intelligent messaging NIC are illustrated in FIGS. 8 a and 8 b , respectively.
- FIG. 8 a illustrates a memory interconnect card 808
- FIG. 8 b illustrates a messaging off-load card 810 . Both implementations include a host CPU 802 , a host memory 804 and a PCI host bridge 806 .
- the publish/subscribe middleware system can be designed for fault tolerance with several of its components being deployed as fault tolerant systems.
- MAs can be deployed as fault-tolerant MA pairs, where the first MA is called the primary MA, and the second MA is called the secondary MA or fault-tolerant MA (FT MA).
- FT MA fault-tolerant MA
- the CE cache engine
- the CE cache engine
- the CE can be connected to a primary or secondary core/edge MA.
- a primary or secondary MA has an active connection to a CE, it forwards all or a subset of the routed messages to that CE which writes them to a storage area for persistency. For a predetermined period of time, these messages are then available for retransmission upon request.
- a session is defined as a communication between two MAs or between one MA and an API.
- a session encompasses the communications between two MAs or between one MA and an API (e.g., 910 ) and it can be active or passive. If a failure occurs, the MA or the API may decide to switch the session from the primary MA 906 to the secondary MA 908 .
- a failure occurs when a session experiences failures of connectivity and/or system resources such as CPU, memory, interfaces and the like. Connectivity problems are defined in terms of the underlying channel.
- an IP-based channel would experience connectivity problems when loss, delay and/or jitter increase abnormally over time.
- connectivity problems may be defined in terms of memory address collisions or the like.
- the MA or the API decide to switch a session from the primary MA to the secondary MA whenever this session experiences some connectivity and/or system resource problems.
- the primary and secondary MA may be seen as a single MA using some channel-based logic to map logical to physical channel addresses. For instance, for an IP-based channel, the API or the MA could redirect the problematic session towards the secondary MA by updating the ARP cache entry of the MA logical address to point at the physical MAC address of the secondary MA.
- the session-based fault tolerant design has the advantage of not affecting all the sessions when only one or a subset of all the sessions is experiencing problems. That is, when a session experiences some performance issues this session is moved from the primary MA (e.g., 906 ) to the secondary fault tolerant (FT) MA 908 without affecting the other sessions associated with that primary MA 906 . So, for instance, API 1-4 are shown still having their respective active sessions with the primary MA 902 (as the active MA), while API 5 has an active session with the FT MA 908 .
- the primary MA e.g. 906
- FT fault tolerant
- FIG. 10 illustrates the interface for communications between the API and the MA.
- the present invention provides a new approach to messaging and more specifically a new publish/subscribe middleware system with an intelligent messaging application programming interface.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Business, Economics & Management (AREA)
- Environmental & Geological Engineering (AREA)
- General Engineering & Computer Science (AREA)
- Economics (AREA)
- Tourism & Hospitality (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Quality & Reliability (AREA)
- Operations Research (AREA)
- Multimedia (AREA)
- Marketing (AREA)
- Human Resources & Organizations (AREA)
- Entrepreneurship & Innovation (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
Message publish/subscribe systems are required to process high message volumes with reduced latency and performance bottlenecks. The intelligent messaging application programming interface (API) introduced by the present invention is designed for high-volume, low-latency messaging. The API is part of a publish/subscribe middleware system. With the API, this system operates to, among other things, monitor system performance, including latency, in real time, employ topic-based and channel-based message communications, and dynamically optimize system interconnect configurations and message transmission protocols.
Description
- This application claims the benefit of and incorporates by reference U.S. Provisional Application Ser. No. 60/641,988, filed Jan. 6, 2005, entitled “Event Router System and Method” and U.S. Provisional Application Ser. No. 60/688,983, filed Jun. 8, 2005, entitled “Hybrid Feed Handlers And Latency Measurement.”
- This application is related to and incorporates by reference U.S. patent application Ser. No. ______ (Attorney Docket No. 50003-0004), Filed Dec. 23, 2005, entitled “End-To-End Publish/Subscribe Middleware Architecture.”
- The present invention relates to data messaging middleware architecture and more particularly to application programming interface in messaging systems with a publish and subscribe (hereafter “publish/subscribe”) middleware architecture.
- The increasing level of performance required by data messaging infrastructures provides a compelling rationale for advances in networking infrastructure and protocols. Fundamentally, data distribution involves various sources and destinations of data, as well as various types of interconnect architectures and modes of communications between the data sources and destinations. Examples of existing data messaging architectures include hub-and-spoke, peer-to-peer and store-and-forward.
- With the hub-and-spoke system configuration, all communications are transported through the hub, often creating performance bottlenecks when processing high volumes. Therefore, this messaging system architecture produces latency. One way to work around this bottleneck is to deploy more servers and distribute the network load across these different servers. However, such architecture presents scalability and operational problems. By comparison to a system with the hub-and-spoke configuration, a system with a peer-to-peer configuration creates unnecessary stress on the applications to process and filter data and is only as fast as its slowest consumer or node. Then, with a store-and-forward system configuration, in order to provide persistence, the system stores the data before forwarding it to the next node in the path. The storage operation is usually done by indexing and writing the messages to disk, which potentially creates performance bottlenecks. Furthermore, when message volumes increase, the indexing and writing tasks can be even slower and thus, can introduce additional latency.
- Existing data messaging architectures share a number of deficiencies. One common deficiency is that data messaging in existing relies on software that resides at the application level. This implies that the messaging infrastructure experiences OS (operating system) queuing and network I/O (input/output), which potentially create performance bottlenecks. Another common deficiency is that existing architectures use data transport protocols statically rather than dynamically even if other protocols might be more suitable under the circumstances. A few examples of common protocols include routable multicast, broadcast or unicast. Indeed, the application programming interface (API) in existing architectures is not designed to switch between transport protocols in real time.
- Also, network configuration decisions are usually made at deployment time and are usually defined to optimize one set of network and messaging conditions under specific assumptions. The limitations associated with static (fixed) configuration preclude real time dynamic network reconfiguration. In other words, existing architectures are configured for a specific transport protocol which is not always suitable for all network data transport load conditions and therefore existing architectures are often incapable of dealing, in real-time, with changes or increased load capacity requirements.
- Furthermore, when data messaging is targeted for particular recipients or groups of recipients, existing messaging architectures use routable multicast for transporting data across networks. However, in a system set up for multicast there is a limitation on the number of multicast groups that can be used to distribute the data and, as a result, the messaging system ends up sending data to destinations which are not subscribed to it (i.e., consumers which are not subscribers of this particular data). This increases consumers' data processing load and discard rate due to data filtering. Then, consumers that become overloaded for any reason and cannot keep up with the flow of data eventually drop incoming data and later asks for retransmissions. Retransmissions affect the entire system in that all consumers receive the repeat transmissions and all of them re-process the incoming data. Therefore, retransmissions can cause multicast storms and eventually bring the entire networked system down.
- When the system is set up for unicast messaging as a way to reduce the discard rate, the messaging system may experience bandwidth saturation because of data duplication. For instance, if more than one consumer subscribes to a given topic of interest, the messaging system has to deliver the data to each subscriber, and in fact it sends a different copy of this data to each subscriber. And, although this solves the problem of consumers filtering out non-subscribed data, unicast transmission is non-scalable and thus not adaptable to substantially large groups of consumers subscribing to a particular data or to a significant overlap in consumption patterns.
- Additionally, in the path between publishers and subscribers messages are propagated in hops between applications with each hop introducing application and operating system (OS) latency. Therefore, the overall end-to-end latency increases as the number of hops grows. Also, when routing messages from publishers to subscribers the message throughput along the path is limited by the slowest node in the path, and there is no way in existing systems to implement end-to-end messaging flow control to overcome this limitation.
- One more common deficiency of existing architectures is their slow and often high number of protocol transformations. The reason for this is the IT (information technology) band-aid strategy in the Enterprise Application Integration (EAI) domain, where more and more new technologies are integrated with legacy systems.
- Hence, there is a need to improve data messaging systems performance in a number of areas. Examples where performance might need improvement are speed, resource allocation, latency, and the like.
- The present invention is based, in part, on the foregoing observations and on the idea that such deficiencies can be addressed with better results using a different approach. These observations gave rise to the end-to-end message publish/subscribe middleware architecture for high-volume and low-latency messaging and particularly an intelligent messaging application programming interface (API). So therefore, for communications with applications a data distribution system with an end-to-end message publish/subscribe middleware architecture that includes an intelligent messaging API in accordance with the principles of the present invention can advantageously route significantly higher message volumes and with significantly lower latency. To accomplish this, the present invention contemplates, for instance, improving communications between APIs and messaging appliances through reliable, highly-available, session-based fault tolerant design and by introducing various combinations of late schema binding, partial publishing, protocol optimization, real-time channel optimization, value-added calculations definition language, intelligent messaging network interface hardware, DMA (direct memory access) for applications, system performance monitoring, message flow control, message transport logic with temporary caching and value-added message processing.
- Thus, in accordance with the purpose of the invention as shown and broadly described herein one exemplary API for communications between applications and a publish/subscribe middleware system includes a communication engine, one or more stubs, and an inter-process communications bus (which we refer to simply as bus). In one embodiment, the communication engine might be implemented as a daemon process when, for instance, more than one application leverage a single communication engine to receive and send messages. In another embodiment, the communication engine might be compiled into an application along with the stub in order to eliminate the extra daemon hop. In such instance, a bus between the communication engine and the stub would be defined as an intra-process communication bus.
- In this embodiment, the communication engine is configured to function as a gateway for communications between the applications and the publish/subscribe middleware system. The communication engine is operative, transparently to the applications, for using a dynamically selected message transport protocol to thereby provide protocol optimization and for monitoring and dynamically controlling, in real time, transport channel resources and flow. The one or more stubs are used for communications between the applications and the communication engine. In turn, the bus is for communications between the one or more stubs and the communication engine.
- In further accordance with the purpose of the present invention, a second example of the API also includes a communication engine, one or more stubs and a bus. The communication engine in this embodiment is built with logical layers including a message layer and a message transport layer, wherein the message layer includes an application delivery routing engine, an administrative message layer and a message routing engine and wherein the message transport layer includes a channel management portion for controlling transport paths of messages handled by the message layer.
- The foregoing embodiments are two of the examples for implementing the API and other examples will become apparent from the drawings and the description that follows. In sum, these and other features, aspects and advantages of the present invention will become better understood from the description herein, appended claims, and accompanying drawings as hereafter described.
- The accompanying drawings which are incorporated in and constitute a part of this specification illustrate various aspects of the invention and together with the description, serve to explain its principles. Wherever convenient, the same reference numbers will be used throughout the drawings to refer to the same or like elements.
-
FIG. 1 illustrates an end-to-end middleware architecture in accordance with the principles of the present invention. -
FIG. 1 a is a diagram illustrating an overlay network. -
FIG. 2 is a diagram of illustrating an enterprise infrastructure implemented with an end-to-end middleware architecture according to the principles of the present invention. -
FIG. 2 a is a diagram illustrating an enterprise infrastructure physical deployment with the message appliances (MAs) creating a network backbone disintermediation. -
FIG. 3 illustrates a channel-based messaging system architecture. -
FIG. 4 illustrates one possible topic-based message format -
FIG. 5 shows a topic-based message routing and routing table. -
FIG. 6 illustrates an intelligent messaging application programming interface (API). -
FIG. 7 illustrates the impact of adaptive message flow control. -
FIGS. 8 a and 8 b illustrate intelligent network interface card (NIC) configurations. -
FIG. 9 illustrates session-based fault tolerant design. -
FIG. 10 illustrates messaging appliance (MA) to API interface. - The description herein provides details of the end-to-end middleware architecture of a message publish-subscribe system and in particular the details of an intelligent messaging application programming interface (API) in accordance with various embodiments of the present invention. Before outlining the details of these various embodiments, however, the following is a brief explanation of terms used in this description. It is noted that this explanation is intended to merely clarify and give the reader an understanding of how such terms might be used, but without limiting these terms to the context in which they are used and without limiting the scope of the claims thereby.
- The term “middleware” is used in the computer industry as a general term for any programming that mediates between two separate and often already existing programs. The purpose of adding the middleware is to offload from applications some of the complexities associated with information exchange by, among other things, defining communication interfaces between all participants in the network (publishers and subscribers). Typically, middleware programs provide messaging services so that different applications can communicate. With a middleware software layer, information exchange between applications is performed seamlessly. The systematic tying together of disparate applications, often through the use of middleware, is known as enterprise application integration (EAI). In this context, however, “middleware” can be a broader term used in connection with messaging between source and destination and the facilities deployed to enable such messaging; and, thus, middleware architecture covers the networking and computer hardware and software components that facilitate effective data messaging, individually and in combination as will be described below. Moreover, the terms “messaging system” or “middleware system,” can be used in the context of publish/subscribe systems in which messaging servers manage the routing of messages between publishers and subscribers. Indeed, the paradigm of publish/subscribe in messaging middleware is a scalable and thus powerful model.
- The term “consumer” may be used in the context of client-server applications and the like. In one instance a consumer is a system or an application that uses an application programming interface (API) to register to a middleware system, to subscribe to information, and to receive data delivered by or send data delivered to the middleware system. An API inside the publish/subscribe middleware architecture boundaries is a consumer; and an external consumer is any publish/subscribe system (or external data destination) that doesn't use the API and for communications with which messages go through protocol transformation (as will be later explained).
- The term “external data source” may be used in the context of data distribution and message publish/subscribe systems. In one instance, an external data source is regarded as a system or application, located within or outside the enterprise private network, which publishes messages in one of the common protocols or its own message protocol. An example of an external data source is a market data exchange that publishes stock market quotes which are distributed to traders via the middleware system. Another example of the external data source is transactional data. Note that in a typical implementation of the present invention, as will be later described in more detail, the middleware architecture adopts its unique native protocol to which data from external data sources is converted once it enters the middleware system domain, thereby avoiding multiple protocol transformations typical of conventional systems.
- The term “external data destination” is also used in the context of data distribution and message publish/subscribe systems. An external data destination is, for instance, a system or application, located within or outside the enterprise private network, which is subscribing to information routed via a local/global network. One example of an external data destination could be the aforementioned market data exchange that handles transaction orders published by the traders. Another example of the external data destination is transactional data. Note that, in the foregoing middleware architecture messages directed to an external data destination are translated from the native protocol to the external protocol associated with the external data destination.
- The term “bus” is typically used to describe an interconnect, and it can be a hardware or software-based interconnect. For example, the term bus can be used to describe an inter-process communication link such as that which uses a socket and shared memory, and it can be also used to describe an intra-process link such as a function call. As can be ascertained from the description herein, the present invention can be practiced in various ways with the intelligent messaging application programming interface (hereafter “API”) being implemented in various configurations within the middleware architecture. The description therefore starts with an example of an end-to-end middleware architecture as shown in
FIG. 1 . - This exemplary architecture combines a number of beneficial features which include: messaging common concepts, APIs, fault tolerance, provisioning and management (P&M), quality of service (QoS—conflated, best-effort, guaranteed-while-connected, guaranteed-during-disconnected etc.), persistent caching for guaranteed delivery QoS, management of namespace and security service, a publish/subscribe ecosystem (core, ingress and egress components), transport-transparent messaging, neighbor-based messaging (a model that is a hybrid between hub-and-spoke, peer-to-peer, and store-and-forward, and which uses a subscription-based routing protocol that can propagate the subscriptions to all neighbors as necessary), late schema binding, partial publishing (publishing changed information only as opposed to the entire data) and dynamic allocation of network and system resources. As will be later explained, the publish/subscribe middleware system advantageously incorporates a fault tolerant design of the middleware architecture. In every publish/subscribe ecosystem there is at least one and more often two or more messaging appliances (MA) each of which being configured to function as an edge (egress/ingress) MA or a core MA. Note that the core MAs portion of the publish/subscribe ecosystem uses the aforementioned native messaging protocol (native to the middleware system) while the ingress and egress portions, the edge MAs, translate to and from this native protocol, respectively.
- In addition to the publish/subscribe middleware system components, the diagram of
FIG. 1 shows the logical connections and communications between them. As can be seen, the illustrated middleware architecture is that of a distributed system. In a system with this architecture, a logical communication between two distinct physical components is established with a message stream and associated message protocol. The message stream contains one of two categories of messages: administrative and data messages. The administrative messages are used for management and control of the different physical components, management of subscriptions to data, and more. The data messages are used for transporting data between sources and destinations, and in a typical publish/subscribe messaging there are multiple senders and multiple receivers of data messages. - With the structural configuration and logical communications as illustrated the distributed messaging system with the publish/subscribe middleware architecture is designed to perform a number of logical functions. One logical function is message protocol translation which is advantageously performed at an edge messaging appliance (MA) component. This is because communications within the boundaries of the publish/subscribe middleware system are conducted using the native protocol for messages independently from the underlying transport logic. This is why we refer to this architecture as being a transport-transparent channel-based messaging architecture.
- A second logical function is routing the messages from publishers to subscribers. Note that the messages are routed throughout the publish/subscribe network. Thus, the routing function is performed by each MA where messages are propagated, say, from an edge MA 106 a-b (or API) to a core MA 108 a-c or from one core MA to another core MA and eventually to an edge MA (e.g., 106 b) or API 110 a-b. The API 110 a-b communicates with applications 112 1-n for publishing of and subscribing to messages via an inter-process communication bus (sockets, shared memory etc.) or via an inter-process communication bus such as a function call.
- A third logical function is storing messages for different types of guaranteed-delivery quality of service, including for instance guaranteed-while-connected and guaranteed-while-disconnected. This is accomplished with the addition of store-and-forward functionality.
- A fourth function is delivering these messages to the subscribers (as shown, an API 106 a-b delivers messages to subscribing applications 112 1-n).
- In this publish/subscribe middleware architecture, the system configuration function as well as other administrative and system performance monitoring functions, are managed by the P&M system. Configuration involves both physical and logical configuration of the publish/subscribe middleware system network and components. The monitoring and reporting involves monitoring the health of all network and system components and reporting the results automatically, per demand or to a log. The P&M system performs its configuration, monitoring and reporting functions via administrative messages. In addition, the P&M system allows the system administrator to define a message namespace associated with each of the messages routed throughout the publish/subscribe network. Accordingly, a publish/subscribe network can be physically and/or logically divided into namespace-based sub-networks.
- The P&M system manages a publish/subscribe middleware system with one or more MAs. These MAs are deployed as edge MAs or core MAs, depending on their role in the system. An edge MA is similar to a core MA in most respects, except that it includes a protocol translation engine that transforms messages from native protocols and from native to external protocols. Thus, in general, the boundaries of the publish/subscribe middleware architecture in a messaging system (i.e., the end-to-end publish/subscribe middleware system boundaries) are characterized by its edges at which there are edge MAs 106 a-b and APIs 110 a-b; and within these boundaries there are core MAs 108 a-c.
- Note that the system architecture is not confined to a particular limited geographic area and, in fact, is designed to transcend regional or national boundaries and even span across continents. In such cases, the edge MAs in one network can communicate with the edge MAs in another geographically distant network via existing networking infrastructures.
- In a typical system, the core MAs 108 a-c route the published messages internally within publish/subscribe middleware system towards the edge MAs or APIs (e.g., APIs 110 a-b). The routing map, particularly in the core MAs, is designed for maximum volume, low latency, and efficient routing. Moreover, the routing between the core MAs can change dynamically in real-time. For a given messaging path that traverses a number of nodes (core MAs), a real time change of routing is based on one or more metrics, including network utilization, overall end-to-end latency, communications volume, network and/or message delay, loss and jitter.
- Alternatively, instead of dynamically selecting the best performing path out of two or more diverse paths, the MA can perform multi-path routing based on message replication and thus send the same message across all paths. All the MAs located at convergence points of diverse paths will drop the duplicated messages and forward only the first arrived message. This routing approach has the advantage of optimizing the messaging infrastructure for low latency; although the drawback of this routing method is that the infrastructure requires more network bandwidth to carry the duplicated traffic.
- The edge MAs have the ability to convert any external message protocol of incoming messages to the middleware system's native message protocol; and from native to external protocol for outgoing messages. That is, an external protocol is converted to the native (e.g., Tervela™) message protocol when messages are entering the publish/subscribe network domain (ingress); and the native protocol is converted into the external protocol when messages exit the publish/subscribe network domain (egress). The edge MAs operate also to deliver the published messages to the subscribing external data destinations.
- Additionally, both the edge and the core MAs 106 a-b and 108 a-c are capable of storing the messages before forwarding them. One way this can be done is with a caching engine (CE) 118 a-b. One or more CEs can be connected to the same MA. Theoretically, the API is said not to have this store-and-forward capability although in reality an API 110 a-b could store messages before delivering them to the application, and it can store messages received from (i.e., published by) applications before delivering them to a core MA, edge MA or another API.
- When an MA (edge or core MA) has an active connection to a CE, it forwards all or a subset of the routed messages to the CE which writes them to a storage area for persistency. For a predetermined period of time, these messages are then available for retransmission upon request. Examples where this feature is implemented are data replay, partial publish and various quality of service levels. Partial publish is effective in reducing network and consumers load because it requires transmission only of updated information rather than of all information.
- To illustrate how the routing maps might affect routing, a few examples of the publish/subscribe routing paths are shown in
FIG. 1 . In this illustration, the middleware architecture of the publish/subscribe network provides five or more different communication paths between publishers and subscribers. - The first communication path links an external data source to an external data destination. The published messages received from the
external data source 114 1-n are translated into the native (e.g., Tervela™) message protocol and then routed by theedge MA 106 a. One way the native protocol messages can be routed from theedge MA 106 a is to an external data destination 116 n. This path is called out ascommunication path 1 a. In this case, the native protocol messages are converted into the external protocol messages suitable for the external data destination. Another way the native protocol messages can be routed from theedge MA 106 b is internally through acore MA 108 b. This path is called out ascommunication path 1 b. Along this path, thecore MA 108 b routes the native messages to anedge MA 106 a. However, before theedge MA 106 a routes the native protocol messages to the external data destination 116 1, it converts them into an external message protocol suitable for this external data destination 116 1. As can be seen, this communication path doesn't require the API to route the messages from the publishers to the subscribers. Therefore, if the publish/subscribe middleware system is used for external source-to-destination communications, the system need not include an API. - Another communication path, called out as
communications path 2, links an external data source 114 n to an application using theAPI 110 b. Published messages received from the external data source are translated at theedge MA 106 a into the native message protocol and are then routed by the edge MA to acore MA 108 a. From thefirst core MA 108 a, the messages are routed through anothercore MA 108 c to theAPI 110 b. From the API the messages are delivered to subscribing applications (e.g., 112 2). Because the communication paths are bidirectional, in another instance, messages could follow a reverse path from the subscribing applications 112 1-n to the external data destination 116 n. In each instance, core MAs receive and route native protocol messages while edge MAs receive external or native protocol messages and, respectively, route native or external protocol messages (edge MAs translate to/from such external message protocol to/from the native message protocol). Each edge MA can route an ingress message simultaneously to both native protocol channels and external protocol channels regardless of whether this ingress message comes in as a native or external protocol message. As a result, each edge MA can route an ingress message simultaneously to both external and internal consumers, where internal consumers consume native protocol messages and external consumers consume external protocol messages. This capability enables the messaging infrastructure to seamlessly and smoothly integrate with legacy applications and systems. - Yet another communication path, called out as
communications path 3, links two applications, both using an API 110 a-b. At least one of the applications publishes messages or subscribes to messages. The delivery of published messages to (or from) subscribing (or publishing) applications is done via an API that sits on the edge of the publish/subscribe network. When applications subscribe to messages, one of the core or edge MAs routes the messages towards the API which, in turn, notifies the subscribing applications when the data is ready to be delivered to them. Messages published from an application are sent via the API to thecore MA 108 c to which the API is ‘registered’. - Note that by ‘registering’ (logging in) with an MA, the API becomes logically connected to it. An API initiates the connection to the MA by sending a registration (‘log-in’ request) message to the MA. After registration, the API can subscribe to particular topics of interest by sending its subscription messages to the MA. Topics are used for publish/subscribe messaging to define shared access domains and the targets for a message, and therefore a subscription to one or more topics permits reception and transmission of messages with such topic notations. The P&M sends to the MAs in the network periodic entitlement updates and each MA updates it own table accordingly. Hence, if the MA find the API to be entitled to subscribe to a particular topic (the MA verifies the API's entitlements using the routing entitlements table) the MA activates the logical connection to the API. Then, if the API is properly registered with it, the
core MA 108 c routes the data to the second API 110 as shown. In other instances thiscore MA 108 b may route the messages through additional one or more core MAs (not shown) which route the messages to theAPI 110 b that, in turn, delivers the messages to subscribing applications 112 1-n. - As can be seen,
communications path 3 doesn't require the presence of an edge MA, because it doesn't involve any external data message protocol. In one embodiment exemplifying this kind of communications path, an enterprise system is configured with a news server that publishes to employees the latest news on various topics. To receive the news, employees subscribe to their topics of interest via a news browser application using the API. - Note that the middleware architecture allows subscription to one or more topics. Moreover, this architecture allows subscription to a group of related topics with a single subscription request, by allowing wildcards in the topic notation.
- Yet another path, called out as
communications path 4, is one of the many paths associated with theP&M system - In a typical implementation, the middleware architecture can be deployed over a network with switches, router and other networking appliances, and it employs channel-based messaging capable of communications over any type of physical medium. One exemplary implementation of this fabric-agnostic channel-based messaging is an IP-based network. In this environment, all communications between all the publish/subscribe physical components are performed over UDP (User Datagram Protocol), and the transport reliability is provided by the messaging layer. An overlay network according to this principle is illustrated in
FIG. 1 a. - As shown,
overlay communications - Notably, the foregoing and other end-to-end middleware architectures according to the principles of the present invention can be implemented in various enterprise infrastructures in various business environments. One such implementation is illustrated on
FIG. 2 . - In this enterprise infrastructure, a market
data distribution plant 12 is built on top of the publish/subscribe network for routing stock market quotes from the variousmarket data exchanges 320 1-n to the traders (applications not shown). Such an overlay solution relies on the underlying network for providing interconnects, for instance, between the MAs as well as between such MAs and the P&M system. Market data delivery to the APIs 310 1-n is based on applications subscription. With this infrastructure, traders using the applications (not shown) can place transaction orders that are routed from the APIs 310′-n through the publish/subscribe network (viacore MAs 308 a-b and theedge MA 306 a) back to the market data exchanges 320 i-n. - An example of the underlying physical deployment is illustrated on
FIG. 2 a. As shown, the MAs are directly connected to each other and plugged directly into the networks and subnets in which the consumers and publishers of messaging traffic are physically connected. In this case, interconnects would be direct connections, say, between the MAs as well as between them and the P&M system. This enables a network backbone disintermediation and a physical separation of the messaging traffic from other enterprise applications traffic. Effectively, the MAs can be used to remove the reliance on traditional routed network for the messaging traffic. - In this example of physical deployment, the external data sources or destinations, such as market data exchanges, are directly connected to edge MAs, for
instance edge MA 1. The consuming or publishing applications of messaging traffic, such as trading applications, are connected to the subnets 1-12. These application have at least two ways to subscribe, publish or communicate with other applications; they could either use the enterprise backbone, composed of multiple layers of redundant routers and switches, which carries all enterprise application traffic, including—but not limited to—messaging traffic, or use the messaging backbone, composed of edge and core MAs directly interconnected to each other via an integrated switch. - Using an alternative backbone has the benefit of isolating the messaging traffic from other enterprise application traffic, and thus, better controlling the performance of the messaging traffic. In one implementation, an application located in
subnet 6 logically or physically connected to thecore MA 3, subscribes to or publishes messaging traffic in the native protocol, using the Tervela API. In another implementation, an application located insubnet 7 logically or physically connected to theedge MA 1, subscribes to or publishes the messaging traffic in an external protocol, where the MA performs the protocol transformation using the integrated protocol transformation engine module. Logically, the physical components of the publish/subscribe network are built on a messaging transport layer akin tolayers 1 to 4 of the Open Systems Interconnection (OSI) reference model.Layers 1 to 4 of the OSI model are respectively the Physical, Data Link, Network and Transport layers. - Thus, in one embodiment of the invention, the publish/subscribe network can be directly deployed into the underlying network/fabric by, for instance, inserting one or more messaging line card in all or a subset of the network switches and routers. In another embodiment of the invention, the publish/subscribe network can be deployed as a mesh overlay network (in which all the physical components are connected to each other). For instance, a fully-meshed network of 4 MAs is a network in which each of the MAs is connected to each of its 3 peer MAs. In a typical implementation, the publish/subscribe network is a mesh network of one or more external data sources and/or destinations, one or more provisioning and management (P&M) systems, one or more messaging appliances (MAs), one or more optional caching engines (CE) and one or more optional application programming interfaces (APIs).
- As mentioned before, communications within the boundaries of each publish/subscribe middleware system are conducted using the native protocol for messages independently from the underlying transport logic. This is why we refer to this architecture as a transport-transparent channel-based messaging architecture.
-
FIG. 3 illustrate in more details the channel-basedmessaging architecture 320. Generally, each communication path between the messaging source and destination is defined as a messaging transport channel. Each channel 326 1-n, is established over a physical medium with interfaces 328 1-n between the channel source and the channel destination. Each such channel is established for a specific message protocol, such as the native (e.g., Tervela™) message protocol or others. Only edge MAs (those that manage the ingress and egress of the publish/subscribe network) use the channel message protocol (external message protocol). Based on the channel message protocol, thechannel management layer 324 determines whether incoming and outgoing messages require protocol translation. In each edge MA, if the channel message protocol of incoming messages is different from the native protocol, thechannel management layer 324 will perform a protocol translation by sending the message for process through the protocol translation engine (PTE) 332 before passing them along to thenative message layer 330. Also, in each edge MA, if the native message protocol of outgoing messages is different from the channel message protocol (external message protocol), thechannel management layer 324 will perform a protocol translation by sending the message for process through the protocol translation engine (PTE) 332 before routing them to the transport channel 326 1-n. Hence, the channel manages the interface 328 1-n with the physical medium as well as the specific network and transport logic associated with that physical medium and the message reassembly or fragmentation. - In other words, a channel manages the OSI transport layers 322. Optimization of channel resources is done on a per channel basis (e.g., message density optimization for the physical medium based on consumption patterns, including bandwidth, message size distribution, channel destination resources and channel health statistics). Then, because the communication channels are fabric agnostic, no particular type of fabric is required. Indeed, any fabric medium will do, e.g., ATM, Infiniband or Ethernet.
- Incidentally, message fragmentation or re-assembly may be needed when, for instance, a single message is split across multiple frames or multiple messages are packed in a single frame Message fragmentation or reassembly is done before delivering messages to the channel management layer
-
FIG. 3 further illustrates a number of possible channels implementations in a network with the middleware architecture. In oneimplementation 340, the communication is done via a network-based channel using multicast over an Ethernet switched network which serves as the physical medium for such communications. In this implementation the source send messages from its IP address, via its UDP port, to the group of destinations with respective UDP ports at their respective IP addresses (hence multicast). In a variation of thisimplementation 342, the communication between the source and destination is done over an Ethernet switched network using UDP unicast. From its IP address, the source sends messages, via a UDP port, to a select destination with a UDP port at its respective IP address. - In another
implementation 344, the channel is established over an Infiniband interconnect using a native Infiniband transport protocol, where the Infiniband fabric is the physical medium. In this implementation the channel is node-based and communications between the source and destination are node-based using their respective node addresses. In yet anotherimplementation 346, the channel is memory-based, such as RDMA (Remote Direct Memory Access), and referred to here as direct connect (DC). With this type of channel, messages are sent from a source machine directly into the destination machine's memory, thus, bypassing the CPU processing to handle the message from the NIC to the application memory space, and potentially bypassing the network overhead of encapsulating messages into network packets. - As to the native protocol, one approach uses the aforementioned native Tervela™ message protocol. Conceptually, the Tervela™ message protocol is similar to an IP-based protocol. Each message contains a message header and a message payload. The message header contains a number of fields one of which is for the topic information indicating topics used by consumers to subscribe to a shared domain of information.
-
FIG. 4 illustrates one possible topic-based message format. As shown, messages include aheader 370 and abody NYSE.RTF.IBM 376 which is the topic string for messages containing the real time quote of the IBM stock. - In one embodiment, the topic information in the message might be encoded or mapped to a key, which can be one or more integer values. Then, each topic would be mapped to a unique key, and the mapping database between topics and keys would be maintained by the P&M system and updated over the wire to all MAs. As a result, when an API subscribes or publishes to one topic, the MA is able to return the associated unique key that is used for the topic field of the message.
- Preferably, the subscription format will follow the same format as the message topic. However, the subscription format also supports wildcard-matching with any topic substring as well as regular expression pattern-matching with the topic string. Mapping wildcards to actual topics may be dependant on the P&M subsystem or it can be handled by the MA, depending on the complexity of the wildcard or pattern-match request.
- For instance, such pattern matching may follow rules such as:
- A string with a wildcard of T1.*.T3.T4 would match T1.T2a.T3.T4 and T1.T2b.T3.T4 but would not match T1.T2.T3.T4.T5
- A string with wildcards of T1.*.T3.T4.* would not match T1.T2a.T3.T4 and T1.T2b.T3.T4 but it would match T1.T2.T3.T4.T5
- A string with wildcards of T1.*.T3.T4[*] (optional 5th element) would match T1.T2a.T3.T4, T1.T2b.T3.T4 and T1.T2.T3.T4.T5 but not match T1.T2.T3.T4.T5.T6
- A string with a wildcard of T1.T2*.T3.T4 would match T1.T2a.T3.T4 and T1.T2b.T3.T4 but would not match T1.T5a.T3.T4
- A string with wildcards of T1.*.T3.T4.> (any number of trailing elements) would match T1.T2a.T3.T4, T1.T2b.T3.T4, T1.T2.T3.T4.T5 and T1.T2.T3.T4.T5.T6.
-
FIG. 5 shows topic-based message routing with topics often defined as token-based strings, such as T1.T2.T3.T4, where T1, T2, T3 and T4 are strings of variable lengths. As can be seen, incoming messages withparticular topic notations 400 are selectively routed tocommunications channels 404, and the routing determination is made based on a routing table 402. The mapping of the topic subscription to the channel defines the route and is used to propagate messages throughout the publish/subscribe network. The superset of all these routes, or mapping between subscriptions and channels, defines the routing table. The routing table is also referred to as the subscription table. The subscription table for routing via string-based topics can be structured in a number of ways, but is preferably configured for optimizing its size as well as the routing lookup speed. In one implementation, the subscription table may be defined as a dynamic hash map structure, and in another implementation, the subscription table may be arranged in a tree structure as shown in the diagram ofFIG. 5 . - A tree includes nodes (e.g., T1, . . . T10) connected by edges, where each sub-string of a topic subscription corresponds to a node in the tree. The channels mapped to a given subscription are stored on the leaf node of that subscription indicating, for each leaf node, the list of channels from where the topic subscription came (i.e. through which subscription requests were received). This list indicates which channel should receive a copy of the message whose topic notation matches the subscription. As shown, the message routing lookup takes a message topic as input and parse the tree using each substring of that topic to locate the different channels associated with the incoming message topic. For instance, T1, T2, T3, T4 and T5 are directed to
channels channel 4; T1, T6, T7, T* and T9 are directed tochannels channel 1; and T1, T6, T7, T* and T10 are directed tochannel 5. - Although selection of the routing table structure is directed to optimizing the routing table lookup, performance of the lookup depends also on the search algorithm for finding the one or more topic subscriptions that match an incoming message topic. Therefore, the routing table structure should be able to accommodate such algorithm and vice versa. One way to reduce the size of the routing table is by allowing the routing algorithm to selectively propagate the subscriptions throughout the entire publish/subscribe network. For example, if a subscription appears to be a subset of another subscription (e.g., a portion of the entire string) that has already been propagated, there is no need to propagate the subset subscription since the MAs already have the information for the superset of this subscription.
- Based on the foregoing, the preferred message routing protocol is a topic-based routing protocol, where entitlements are indicated in the mapping between subscribers and respective topics. Entitlements are designated per subscriber and indicate what messages the subscriber has a right to consume, or which messages may be produced (published) by such publisher. These entitlements are defined in the P&M machine, communicated to all MAs in the publish/subscribe network, and then used by the MA to create and update their routing tables.
- Each MA updates its routing table by keeping track of who is interested in (requesting subscription to) what topic. However, before adding a route to its routing table, the MA has to check the subscription against the entitlements of the publish/subscribe network. The MA verifies that a subscribing entity, which can be a neighboring MA, the P&M system, a CE or an API, is authorized to do so. If the subscription is valid, the route will be created and added to the routing table. Then, because some entitlements may be known in advance, the system can be deployed with predefined entitlements and these entitlements can be automatically loaded at boot time. For instance, some specific administrative messages such as configuration updates or the like might be always forwarded throughout the network and therefore automatically loaded at startup time.
- Given the description above of messaging systems with the publish/subscribe middleware architecture, it can be understood that, in handling messaging for applications, intelligent messaging application programming interfaces, herein referred to simply as APIs, have a considerable role in such systems. Applications rely on the API for all messaging including for registering, publishing and subscribing. The registration includes sending an administrative registration request to one or more MAs which confirm entitlement of the API and application to so register. Once their registration is validated, application can subscribe to and publish information on any topic to which they are entitled. Accordingly, we turn now to describe the details of APIs configured in accordance with the principles of the present invention.
FIG. 6 is a block diagram illustrating an API. - In this illustration, the API is a combination of an
API communication engine 602 andAPI stubs 604. Acommunication engine 602 is known generally as a program that runs under the operating system for the purpose of handling periodic service requests that a computer system expects to receive; but in some instances it is embedded in the applications themselves and is thus an intra-process communication bus. The communication engine program forwards the requests to other programs (or processes) as appropriate. In this instance, the API communication engine acts as a gateway between applications and the publish/subscribe middleware system. As such, the API communication engine manages application communications with MAs by, among other things, dynamically selecting the transport protocol and dynamically adjusting the number of messages to pack in a single frame. The number of messages packed in a single fame is dependent on factors such as the message rate and system resource utilization in both the MA and the API host. - The API stubs 604 are used by the applications to communicate with the API communication engine. Generally, an application program that uses remote procedure calls (RPCs) is compiled with stubs that substitute for the program(s) with the requested remote procedure(s). A stub accepts a PRC and forwards it to the remote procedure which, upon completion, returns the results to the stub for passing the result to the program that made the PRC. In some instances, communications between the API stubs and the API communication engine are done via an inter-process communication bus which is implemented using mechanisms such as sockets or shared memory. The API stubs are available in various programming languages, including C, C++, Java and .NET. The API itself might be available in its entirety in multiple languages and it can run on different Operating Systems, including MS Windows™, Linux™ and Solaris™.
- The
API communication engine 602 andAPI stubs 604 are compiled and linked to all theapplications 606 that are using the API. Communications between the API stubs and the API communication engine are done via an inter-process communication bus 608, implemented using mechanisms such as sockets or shared memory. The API stubs 604 are available in various programming languages, including C, C++, Java and NET. In some instances, the API itself might be available in multiple languages. The API runs on various operating system platforms three examples of which are Windows™, Linux™ and Solaris™. - The API communication engine is built on logical layers such as a
messaging transport layer 610. Unlike the MA which interacts directly with the physical medium interfaces, the API sits in most implementations on top of an operating system (as is the case with the P&M system) and its messaging transport layer communicates via the OS. In order to support different types of channels, the OS may require specific drivers for each physical medium that is otherwise not supported by the OS by default. The OS might also require the user to insert a specific physical medium card. For instance, physical mediums such as direct connect (DC) or Infiniband require a specific interface card and its associated OS driver to allow the messaging transport layer to send messages over the channel. - The
messaging layer 612 in an API is also somewhat similar to a messaging layer in an MA. The main difference, however, is that the incoming messages follow different paths in the API and MA, respectively. In the API, the data messages are sent to the application delivery routing engine 614 (less schema bindings) and the administrative messages are sent to theadministrative messages layer 616. The application delivery routing engine behaves similarly to themessage routing engine 618, except that instead of mapping channels to subscriptions it maps applications (606) to subscriptions. Thus, when an incoming message arrives, the application delivery routing engine looks up for all subscribing applications and then sends a copy of this message or a reference to this message to all of them. - In some implementations, the application delivery routing engine is responsible for the late schema binding feature. As mentioned earlier, the native (e.g., Tervela™) messaging protocol provides the information in a raw and compressed format that doesn't contain the structure and definition of the underlying data. As a result, the messaging system beneficially reduces its bandwidth utilization and, in turn, allows increased message volume and throughput. When a data message is received by the API, the API binds the raw data to its schema, allowing the application to transparently access the information. The schema defines the content structure of the message by providing a mapping between field name, type of field, and its offset location in the message body. Therefore, the application can ask for a specific field name without knowing its location in the message, and the API uses the offset to locate and return that information to the application. In one implementation, the schema is provided by the MA when the applications request to subscribe or publish from/to the MA.
- To a large extent, outgoing messages follow the same outbound logic as in an MA. Indeed, the API may have a protocol optimization service (POS) 620 as does an MA. However, the publish/subscribe middleware system is configured with the POS distributed between the MA and the API communication engine in a master-slave-based configuration. However, unlike the POS in the MA which makes its own decisions on when to change the channel configurations, the POS in the API acts as a slave of the master POS in the MA to which it is linked. Both the master POS and slave POS monitor the consumption patterns over time of system and network resources. The slave POS communicates all, a subset, or a summary of these resource consumption patterns to the master POS and based on these patterns the master POS determines how to deliver the messages to the API communication engine, including by selecting a transport protocol. For instance, a transport protocol selected from among the unicast, multicast or broadcast message transport protocols is not always suitable for the circumstances. Thus, when the POS on the MA decides to change the channel configurations, it remotely controls the slave POS at the API.
- In performing its role in the messaging publish/subscribe middleware system, the API is preferably transparent to the applications in that it minimizes utilization of system resources for handling application requests. In one configuration, the API optimizes the number of memory copies by performing a zero-copy message receive (i.e.: omitting the copy to the application memory space of messages received from the network). For instance, the API communication engine introduces a buffer (memory space) to the network interface card for writing incoming messages directly into the API communication engine memory space. These messages become accessible to the applications via shared memory. Similarly, the API performs a zero-copy message transmit from the application memory space directly to the network.
- In another configuration, the API reduces the required amount of CPU processing for performing the message receive and transmit tasks. For instance, instead of receiving or transmitting one message at the time, the API communication engine performs bulk message receive and transmit tasks, thereby reducing the number of CPU processing cycles. Such bulk message transfers often involve message queuing. Therefore, in order to minimize end-to-end latency bulk message transfers require restricting the time of keeping messages queued to less than an acceptable latency threshold.
- For maintaining the aforementioned transparency the API processes messages published or subscribed to by applications. To reduce system bandwidth utilization and, thereby, increase system throughput, the message information is communicated in raw and compressed format. Hence, when the API receives a data message, the API binds the raw data to its schema, allowing applications to transparently access the information. The schema defines the content structure of the message by providing a mapping between field name, type of field, and field index in the message body. As a result, the application can ask for a specific field name without knowing its location in the message, and the API uses the field index and its associated offset to locate and return that information to the application. Incidentally, to make more efficient use of the bandwidth, an application can subscribe to a topic where it requests to receive only the updated information from the message stream. As a result of such subscription, the MA compares new messages to previously delivered messages and publishes to the application only updates.
- Another implementation provides the ability to present the received or published data in a pre-agreed format between the subscribing applications and the API. This conversion of the content is performed by a presentation engine and is based on the data presentation format provided by the application. The data presentation format might be defined as a mapping between the underlying data schema and the application data format. For instance, the application might publish and consume data in an XML format, and the API will convert to and from this XML format to the underlying message format.
- The API is further designed for real-time channel optimization. Specifically, communications between the MA and the API communication engine are performed over one or more channels each transporting the messages that correspond to one or more subscriptions or publications. Both the MA and the API communication engine constantly monitor each of the communication paths and dynamically optimize the available resources. This is done to minimize the processing overhead related to data publications/subscriptions and to reserve the necessary and expected system resources for publishing and subscribing applications.
- In one implementation, the API communication engine enables a real-time channel message flow control feature for protecting the one or more applications from running out of available system resources. This message flow control feature is governed by the subscribed QoSs (quality of service). For instance, for last-known-value or best-effort QoS, it is often more important to process less data of good quality than more data of poor quality. If the quality of data is measured by its age, for instance, it may be better to process only the most up-to-date information. Moreover, instead of waiting for the queue to overflow and leave the applications with the burden of processing old data and dropping the most recent data, the API communication engine notifies the MA about the current state of the channel queues.
-
FIG. 7 illustrates the effects of a real-time message flow control (MFC) algorithm. According to this algorithm, the size of a channel queue can operate as a threshold parameter. For instance, messages delivered through a particular channel accumulate in its channel queue at the receiving appliance side, and as this channel queue grows its size may reach a high threshold that it cannot safely exceed without the channel possibly failing to keep up with the flow of incoming messages. When getting close to this situation, where the channel is at risk of reaching its maximum capacity, the receiving messaging appliance can activate the MFC before the channel queue is overrun. The MFC is turned off when the queue shrinks and its size becomes smaller than a low threshold. The difference between the high and low thresholds is set to be sufficient for producing this so called hysteresis behavior, where the MFC is turned on at a higher queue size value than that at which it is turned off. This threshold difference avoids frequent on-off oscillations of the message flow control that would otherwise occur as the queue size hovers around the high threshold. Thus, to avoid queue overruns on the messaging receiver side, the rate of incoming messages can be kept in check with a real-time, dynamic MFC which keeps the rate below the maximum channel capacity. - As an alternative to the hysteresis-based MFC algorithm where messages are dropped when the channel queue nears its capacity, the real-time, dynamic MFC can operates to blend the data or apply some conflation algorithm on the subscription queues. However, because this operation may require an additional message transformation, the MA may fall back to a slow forwarding path as opposed to remaining on the fast forwarding path. This would prevent the message transformation from having a negative impact on the messaging throughput. The additional message transformation is performed by a processor similar to the protocol translation engine. Examples of such processor include an NPU (network processing unit), a semantic processor, a separate micro-engine on the MA and the like.
- For greater efficiency, the real-time conflation or subscription-level message processing can be distributed between the sender and the receiver. For instance, in the case where subscription-level message processing is requested by only one subscriber, it would make sense to push it downstream on the receiver side as opposed to performing it on the sender side. However, if more than one consumer of the data is requesting the same subscription-level message processing, it would make more sense to perform it upstream on the sender side. The purpose of distributing the workload between the sender and receiver-side of a channel is to optimally use the available combined processing resources.
- When the channel packs multiple messages in a single frame it can keep message latency below the maximum acceptable latency and ease the stress on the receive side by freeing some processing resources. It is sometimes more efficient to receive fewer large frames than processing many small frames. This is especially true for the API that might run on a typical OS using generic computer hardware components including CPU, memory and NICs. Typical NICs are designed to generate an OS interrupt for each received frame, which in-turn reduces the application-level processing time available for the API to deliver messages to the subscribing applications.
- As further shown in
FIG. 7 , if the current level of the channel queue crosses a maximum threshold, the MA throttles the message rate on this particular channel to reduce the load on the API communication engine and allow the applications to return to a steady state. During this throttling process, depending on the subscribed quality of service, the most recent messages will be prioritized over the old ones. If the queues go back to a normal load level, the API might notify the MA to disable the channel message flow control. - In one variation of the foregoing implementation, the message flow control feature is implemented on the API side of the message routing path (to/from applications). Whenever a message needs to be delivered to a subscribing application, the API communication engine can make the decision to drop the message in favor of a following more recent message if allowed by the subscribed quality of service.
- Either way, in the API or in the MA, the message flow control can apply a different throttling policy, where instead of dropping old messages in favor of new ones, the API communication engine, or the MA connected to this API communication engine, might perform a subscription-based data conflation, also known as data blending. In other words, the dropped data is not completely lost but it is blended with the most recent data. In one embodiment, such message flow control throttling policy might be defined globally for all channels between a given API and their MAs, and configured from the P&M system as a conflated quality of service. This QoS will apply to all applications subscribing to the conflated QoS. In another embodiment, this throttling policy might be user-defined via an API function call from the application, providing some flexibility. In that particular case, the API communication engine communicates the throttling policy when establishing the channel with the MA. The channel configuration parameters are negotiated between the API communication engine and the MA during that phase.
- Note that when this user-defined throttling policy is implemented at the subscription-level rather than at the message-level, an application can define the policy when subscribing to a given topic. The subscription-based throttling policy is then added to the channel configuration for this particular subscription.
- The API communication engine can be configured to provide value-added message processing; and so can the MA to which the API is connected. For value added message processing, an application might subscribe to an inline value-added message processing service for a given subscription or a set of subscriptions. This service will then be performed or applied to the subscribed message streams. Moreover, an application can register some pseudo code using a high-level message processing language for referencing fields in the message (e.g., NEWFIELD=(FIELD(N)+FIELD(M))/2, which defines the creation of a new field at the end of the message with a value equal to the arithmetic average of fields N and M). These value-added message processing services might require service-specific states to be maintained and updated as new message are processed. These states would be defined the same way that field are defined and they would be reused in the pseudo code (e.g., STATE(0)+=FIELD(N), which means that
state number 0 is the cumulative sum of FIELD(N)). Such services can be defined by default in the system and the applications just need to enable them when subscribing to a specific topic, or they can be user-defined. Either way, such inline value-added message processing services can be performed by the API communication engine or the MA connected to that API. - Similar to the inline added-value message processing services, content-based access control list (ACL) can be deployed on the API communication engine or the MA, or both depending on the implementation. Assuming for instance that a stock trader may be interested in messages with the price quotes of IBM but only when IBM price is above $50, and otherwise it prefers to drop all messages that have a price quote below that value. For this the API (or MA) is further able to define a content-based ACL and the application will define a subscription-based ACL. A subscription-based ACL could be the combination of an ACL condition, expressed using the fields in the message, and an ACL action, expressed in the form of REJECT, ACCEPT, LOG, or another suitable way. An example of such ACL is: (FIELD(n)<VALUE, ACCEPT, REJECT|LOG).
- For further improving efficiency, the API communication engine can be configured to off-load some of the message processing to an intelligent messaging network interface card (NIC). This intelligent messaging NIC is provided for bypassing the networking I/O by performing the full network stack in hardware, for performing DMA from the I/O card directly into the application memory space and for managing the messaging reliability, including retransmissions and temporary caching. The intelligent messaging NIC can further perform channel management, including message flow control, value-added message processing and content-based ACL, as described above. Two implementations of such intelligent messaging NIC are illustrated in
FIGS. 8 a and 8 b, respectively.FIG. 8 a illustrates amemory interconnect card 808 andFIG. 8 b illustrates a messaging off-load card 810. Both implementations include ahost CPU 802, ahost memory 804 and aPCI host bridge 806. - As is well known, reliability, availability and consistency are often necessary in enterprise operations. For this purpose, the publish/subscribe middleware system can be designed for fault tolerance with several of its components being deployed as fault tolerant systems. For instance, MAs can be deployed as fault-tolerant MA pairs, where the first MA is called the primary MA, and the second MA is called the secondary MA or fault-tolerant MA (FT MA). Again, for store and forward operations, the CE (cache engine) can be connected to a primary or secondary core/edge MA. When a primary or secondary MA has an active connection to a CE, it forwards all or a subset of the routed messages to that CE which writes them to a storage area for persistency. For a predetermined period of time, these messages are then available for retransmission upon request.
- An example of fault tolerant design is shown in
FIG. 10 . In this example, the system is session-based fault tolerant. Another possible configuration is full failover but in this instance we have chosen session-based fault tolerance. A session is defined as a communication between two MAs or between one MA and an API. A session encompasses the communications between two MAs or between one MA and an API (e.g., 910) and it can be active or passive. If a failure occurs, the MA or the API may decide to switch the session from theprimary MA 906 to thesecondary MA 908. A failure occurs when a session experiences failures of connectivity and/or system resources such as CPU, memory, interfaces and the like. Connectivity problems are defined in terms of the underlying channel. For instance, an IP-based channel would experience connectivity problems when loss, delay and/or jitter increase abnormally over time. For a memory-based channel, connectivity problems may be defined in terms of memory address collisions or the like. The MA or the API decide to switch a session from the primary MA to the secondary MA whenever this session experiences some connectivity and/or system resource problems. - In one implementation, the primary and secondary MA may be seen as a single MA using some channel-based logic to map logical to physical channel addresses. For instance, for an IP-based channel, the API or the MA could redirect the problematic session towards the secondary MA by updating the ARP cache entry of the MA logical address to point at the physical MAC address of the secondary MA.
- Overall, the session-based fault tolerant design has the advantage of not affecting all the sessions when only one or a subset of all the sessions is experiencing problems. That is, when a session experiences some performance issues this session is moved from the primary MA (e.g., 906) to the secondary fault tolerant (FT)
MA 908 without affecting the other sessions associated with thatprimary MA 906. So, for instance, API1-4 are shown still having their respective active sessions with the primary MA 902 (as the active MA), while API5 has an active session with theFT MA 908. - In communicating with respective MAs the APIs use a physical medium interfaced via one or more commodity or intelligent messaging off-load NIC.
FIG. 10 illustrates the interface for communications between the API and the MA. - In sum, the present invention provides a new approach to messaging and more specifically a new publish/subscribe middleware system with an intelligent messaging application programming interface. Although the present invention has been described in considerable detail with reference to certain preferred versions thereof, other versions are possible. Therefore, the spirit and scope of the appended claims should not be limited to the description of the preferred versions contained herein.
Claims (36)
1. An application programming interface for communications between applications and a publish/subscribe middleware system, comprising:
a communication engine configured to function as a gateway for communications between applications and a publish/subscribe middleware system with the communication engine being operative, transparently to the applications, for using a dynamically selected message transport protocol and for monitoring and dynamically controlling, in real time, transport channel resources and flow;
one or more stubs for communications between the applications and the communication engine; and
a bus for communications between the one or more stubs and the communication engine.
2. An application programming interface as in claim 1 , wherein the bus is an inter-process or intra-process communications bus.
3. An application programming interface as in claim 1 , with the communication engine being further operative for dynamically adjusting the number of messages packed in a frame.
4. An application programming interface as in claim 1 , with the communication engine being further operative for session-based fault tolerance.
5. An application programming interface as in claim 1 , with the communication engine being further operative for temporary caching of messages.
6. An application programming interface as in claim 1 , with the communication engine being further operative for value-added message processing.
7. An application programming interface as in claim 6 , wherein the value-added message processing includes deployment of a content-based access control list with each entry in the list being associated with a an access condition and action.
8. An application programming interface as in claim 1 , with the communication engine being further operative for registering with and becoming logically connected to a messaging appliance in the publish/subscribe middleware system.
9. An application programming interface as in claim 8 , wherein the registration is a logging request and a subscription is topic-based, where a topic defines a shared-access domain as to which the application programming interface has a publish/subscribe entitlement.
10. An application programming interface as in claim 1 , with the communication engine being further operative for late schema binding.
11. An application programming interface as in claim 1 , with the communication engine being further operative for partial message publishing.
12. An application programming interface as in claim 1 , with the communication engine being further operative for direct memory access to stored messages by the applications.
13. An application programming interface as in claim 1 , with the communication engine being further operative for handling bulk messaging.
14. An application programming interface as in claim 12 , wherein handling the bulk messaging involves message queuing with a restriction to avoid queue overflow and communication latency.
15. An application programming interface as in claim 1 , wherein the real time message transport resources and flow control employs a policy of either identifying and disregarding old messages or blending messages.
16. An application programming interface as in claim 15 , wherein the policy is applied globally to all message transport paths associated with the application programming interface.
17. An application programming interface as in claim 15 , wherein the policy is user defined.
18. An application programming interface as in claim 15 , wherein the policy is defined and implemented at application subscription time.
19. An application programming interface as in claim 1 , with the communication engine being further operative for handling messages in raw compressed data format and binding the raw data to its schema.
20. An application programming interface as in claim 6 , wherein the value-added message processing is defined during application registration.
21. An application programming interface as in claim 1 , with the communication engine being further operative to offload message processing to an interface card.
22. An application programming interface as in claim 1 , wherein the publish/subscribe middleware system includes a messaging appliance, and wherein the protocol optimization is distributed between the messaging appliance and the application programming interface in a master-slave-based configuration with the application programming interface being the slave.
23. An application programming interface as in claim 2 , wherein the inter-process communications bus, if used, is implemented using sockets or shared memory and the intra-process communications bus, if used, is implemented using a function call.
24. An application programming interface for communications between applications and a publish/subscribe middleware system, comprising:
a communication engine configured to function as a gateway for communications between applications and a publish/subscribe middleware system, the communication engine having logical layers including a message layer and a message transport layer, wherein the message layer includes an application delivery routing engine, an administrative message layer and a message routing engine and wherein the message transport layer includes a channel management portion for controlling transport paths of messages handled by the message layer in real time based on system resources usage;
one or more stubs for communications between the applications and the communication engine; and
a bus for communications between the one or more stubs and the communication engine.
25. An application programming interface as in claim 24 , wherein the communication engine is deployed on top of an operating system.
26. An application programming interface as in claim 24 , wherein the operating system includes a driver for an interface card through which the channel management portion interfaces with a physical medium for transporting messages to and from the applications.
27. An application programming interface as in claim 26 , wherein the interface card is a network interface card operative for memory interconnect or for message processing offloading.
28. An application programming interface as in claim 26 , wherein the interface card includes a hardware-based networking I/O (input/output) stack and is operative for direct memory access and caching for transmission.
29. An application programming interface as in claim 24 , wherein the message routing engine includes a transport protocol optimization service portion.
30. An application programming interface as in claim 24 , wherein the application delivery routing engine is operative for mapping applications to topic subscriptions.
31. An application programming interface as in claim 24 , wherein the channel management portion controls a plurality of channels and the application delivery routing engine delivers messages to applications based on the mapping.
32. An application programming interface as in claim 30 , wherein the administrative message layer handles administrative messages and the routing and application delivery routing engines handle data messages.
33. An application programming interface as in claim 23 , wherein the communication engine and the one or more stubs are compiled and linked to the applications which use the application programming interface for communicating with the publish/subscribe middleware system.
34. An application programming interface as in claim 23 , with the communication engine being further operative for late binding schema.
35. An application programming interface as in claim 34 , wherein the application delivery routing engine is operative to bind schema to raw message data, thereby allowing the applications to transparently access message information.
36. An application programming interface as in claim 1 , further comprising a presentation engine operative to translate between application data format and messaging data schema for ingress and egress messages to and from the applications.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/317,280 US20060168331A1 (en) | 2005-01-06 | 2005-12-23 | Intelligent messaging application programming interface |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US64198805P | 2005-01-06 | 2005-01-06 | |
US68898305P | 2005-06-08 | 2005-06-08 | |
US11/317,280 US20060168331A1 (en) | 2005-01-06 | 2005-12-23 | Intelligent messaging application programming interface |
Publications (1)
Publication Number | Publication Date |
---|---|
US20060168331A1 true US20060168331A1 (en) | 2006-07-27 |
Family
ID=36648038
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/318,151 Abandoned US20060146999A1 (en) | 2005-01-06 | 2005-12-23 | Caching engine in a messaging system |
US11/317,295 Abandoned US20060168070A1 (en) | 2005-01-06 | 2005-12-23 | Hardware-based messaging appliance |
US11/317,280 Abandoned US20060168331A1 (en) | 2005-01-06 | 2005-12-23 | Intelligent messaging application programming interface |
US11/327,526 Abandoned US20060146991A1 (en) | 2005-01-06 | 2006-01-05 | Provisioning and management in a message publish/subscribe system |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/318,151 Abandoned US20060146999A1 (en) | 2005-01-06 | 2005-12-23 | Caching engine in a messaging system |
US11/317,295 Abandoned US20060168070A1 (en) | 2005-01-06 | 2005-12-23 | Hardware-based messaging appliance |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/327,526 Abandoned US20060146991A1 (en) | 2005-01-06 | 2006-01-05 | Provisioning and management in a message publish/subscribe system |
Country Status (6)
Country | Link |
---|---|
US (4) | US20060146999A1 (en) |
EP (2) | EP1849092A4 (en) |
JP (2) | JP2008527848A (en) |
AU (2) | AU2005322969A1 (en) |
CA (2) | CA2594267C (en) |
WO (2) | WO2006073980A2 (en) |
Cited By (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060146999A1 (en) * | 2005-01-06 | 2006-07-06 | Tervela, Inc. | Caching engine in a messaging system |
US20060149840A1 (en) * | 2005-01-06 | 2006-07-06 | Tervela, Inc. | End-to-end publish/subscribe middleware architecture |
US20070002732A1 (en) * | 2005-06-30 | 2007-01-04 | Batni Ramachendra P | Application load level determination |
US20070174232A1 (en) * | 2006-01-06 | 2007-07-26 | Roland Barcia | Dynamically discovering subscriptions for publications |
WO2008066876A1 (en) * | 2006-12-02 | 2008-06-05 | Andrew Macgaffey | Smart jms network stack |
US20080186971A1 (en) * | 2007-02-02 | 2008-08-07 | Tarari, Inc. | Systems and methods for processing access control lists (acls) in network switches using regular expression matching logic |
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 |
US20090024817A1 (en) * | 2007-07-16 | 2009-01-22 | Tzah Oved | Device, system, and method of publishing information to multiple subscribers |
US20100083006A1 (en) * | 2007-05-24 | 2010-04-01 | Panasonic Corporation | Memory controller, nonvolatile memory device, nonvolatile memory system, and access device |
US20100306264A1 (en) * | 2009-06-02 | 2010-12-02 | International Business Machines Corporation | Optimizing publish/subscribe matching for non-wildcarded topics |
US20110145374A1 (en) * | 2009-12-10 | 2011-06-16 | Samsung Electronics Co., Ltd. | Communication system for supporting communication between distributed modules in distributed communication network and communication method using the same |
US20120016979A1 (en) * | 2010-07-15 | 2012-01-19 | International Business Machines Corporation | Propagating changes in topic subscription status of processes in an overlay network |
US8489694B2 (en) | 2011-02-24 | 2013-07-16 | International Business Machines Corporation | Peer-to-peer collaboration of publishers in a publish-subscription environment |
US8489722B2 (en) | 2009-11-24 | 2013-07-16 | International Business Machines Corporation | System and method for providing quality of service in wide area messaging fabric |
WO2013184225A1 (en) * | 2012-06-06 | 2013-12-12 | The Trustees Of Columbia University In The City Of New York | Unified networking system and device for heterogeneous mobile environments |
US8725814B2 (en) | 2011-02-24 | 2014-05-13 | International Business Machines Corporation | Broker facilitated peer-to-peer publisher collaboration in a publish-subscription environment |
US20140177441A1 (en) * | 2007-07-20 | 2014-06-26 | Broadcom Corporation | Method and system for establishing a queuing system inside a mesh network |
US8874666B2 (en) | 2011-02-23 | 2014-10-28 | International Business Machines Corporation | Publisher-assisted, broker-based caching in a publish-subscription environment |
US20150040225A1 (en) * | 2013-07-31 | 2015-02-05 | Splunk Inc. | Blacklisting and whitelisting of security-related events |
US8954504B2 (en) | 2011-05-18 | 2015-02-10 | International Business Machines Corporation | Managing a message subscription in a publish/subscribe messaging system |
US8959162B2 (en) | 2011-02-23 | 2015-02-17 | International Business Machines Corporation | Publisher-based message data cashing in a publish-subscription environment |
US20150156122A1 (en) * | 2012-06-06 | 2015-06-04 | The Trustees Of Columbia University In The City Of New York | Unified networking system and device for heterogeneous mobile environments |
US9185181B2 (en) | 2011-03-25 | 2015-11-10 | International Business Machines Corporation | Shared cache for potentially repetitive message data in a publish-subscription environment |
US20170195458A1 (en) * | 2016-01-06 | 2017-07-06 | Northrop Grumman Systems Corporation | Middleware abstraction layer (mal) |
US10069604B2 (en) | 2013-10-23 | 2018-09-04 | Huawei Technologies Co., Ltd. | Data transmission method and apparatus |
US10496710B2 (en) | 2015-04-29 | 2019-12-03 | Northrop Grumman Systems Corporation | Online data management system |
US10628280B1 (en) | 2018-02-06 | 2020-04-21 | Northrop Grumman Systems Corporation | Event logger |
US10666712B1 (en) * | 2016-06-10 | 2020-05-26 | Amazon Technologies, Inc. | Publish-subscribe messaging with distributed processing |
US10785296B1 (en) | 2017-03-09 | 2020-09-22 | X Development Llc | Dynamic exchange of data between processing units of a system |
US11157003B1 (en) | 2018-04-05 | 2021-10-26 | Northrop Grumman Systems Corporation | Software framework for autonomous system |
US11257184B1 (en) | 2018-02-21 | 2022-02-22 | Northrop Grumman Systems Corporation | Image scaler |
US20220201024A1 (en) * | 2020-12-23 | 2022-06-23 | Varmour Networks, Inc. | Modeling Topic-Based Message-Oriented Middleware within a Security System |
US11392284B1 (en) | 2018-11-01 | 2022-07-19 | Northrop Grumman Systems Corporation | System and method for implementing a dynamically stylable open graphics library |
RU2777302C1 (en) * | 2021-09-06 | 2022-08-02 | Акционерное общество "Лаборатория Касперского" | System and method for controlling the delivery of messages transmitted between processes from different operating systems |
US11863580B2 (en) | 2019-05-31 | 2024-01-02 | Varmour Networks, Inc. | Modeling application dependencies to identify operational risk |
US11876817B2 (en) | 2020-12-23 | 2024-01-16 | Varmour Networks, Inc. | Modeling queue-based message-oriented middleware relationships in a security system |
Families Citing this family (133)
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 |
US7343413B2 (en) | 2000-03-21 | 2008-03-11 | F5 Networks, Inc. | Method and system for optimizing a network by independently scaling control segments and data flow |
US7676580B2 (en) | 2003-03-27 | 2010-03-09 | Microsoft Corporation | Message delivery with configurable assurances and features between two endpoints |
GB0420810D0 (en) * | 2004-09-18 | 2004-10-20 | Ibm | Data processing system and method |
JP2008532177A (en) | 2005-03-03 | 2008-08-14 | ワシントン ユニヴァーシティー | Method and apparatus for performing biological sequence similarity searches |
US8200563B2 (en) * | 2005-09-23 | 2012-06-12 | Chicago Mercantile Exchange Inc. | Publish and subscribe system including buffer |
GB0521355D0 (en) * | 2005-10-19 | 2005-11-30 | Ibm | Publish/subscribe system and method for managing subscriptions |
US8005879B2 (en) | 2005-11-21 | 2011-08-23 | Sap Ag | Service-to-device re-mapping for smart items |
US8156208B2 (en) | 2005-11-21 | 2012-04-10 | Sap Ag | Hierarchical, multi-tiered mapping and monitoring architecture for service-to-device re-mapping for smart items |
US7860968B2 (en) * | 2005-11-21 | 2010-12-28 | Sap Ag | Hierarchical, multi-tiered mapping and monitoring architecture for smart items |
US8522341B2 (en) | 2006-03-31 | 2013-08-27 | Sap Ag | Active intervention in service-to-device mapping for smart items |
US8131838B2 (en) * | 2006-05-31 | 2012-03-06 | Sap Ag | Modular monitor service for smart item monitoring |
US8296413B2 (en) | 2006-05-31 | 2012-10-23 | Sap Ag | Device registration in a hierarchical monitor service |
US8065411B2 (en) * | 2006-05-31 | 2011-11-22 | Sap Ag | System monitor for networks of nodes |
US8396788B2 (en) | 2006-07-31 | 2013-03-12 | Sap Ag | Cost-based deployment of components in smart item environments |
US8042090B2 (en) * | 2006-09-29 | 2011-10-18 | Sap Ag | Integrated configuration of cross organizational business processes |
KR100749820B1 (en) * | 2006-11-06 | 2007-08-17 | 한국전자통신연구원 | System and method for processing sensing data from sensor network |
US8195825B2 (en) | 2006-11-10 | 2012-06-05 | Bally Gaming, Inc. | UDP broadcast for user interface in a download and configuration gaming method |
US8478833B2 (en) * | 2006-11-10 | 2013-07-02 | Bally Gaming, Inc. | UDP broadcast for user interface in a download and configuration gaming system |
US8135793B2 (en) * | 2006-11-10 | 2012-03-13 | Bally Gaming, Inc. | Download progress management gaming system |
US8850451B2 (en) * | 2006-12-12 | 2014-09-30 | International Business Machines Corporation | Subscribing for application messages in a multicast messaging environment |
CN100521662C (en) * | 2006-12-19 | 2009-07-29 | 腾讯科技(深圳)有限公司 | Method and system for realizing instant communication using browsers |
US7730214B2 (en) * | 2006-12-20 | 2010-06-01 | International Business Machines Corporation | Communication paths from an InfiniBand host |
US8374086B2 (en) * | 2007-06-06 | 2013-02-12 | Sony Computer Entertainment Inc. | Adaptive DHT node relay policies |
US20090182825A1 (en) * | 2007-07-04 | 2009-07-16 | International Business Machines Corporation | Method and system for providing source information of data being published |
US8527622B2 (en) * | 2007-10-12 | 2013-09-03 | Sap Ag | Fault tolerance framework for networks of nodes |
WO2009056448A1 (en) * | 2007-10-29 | 2009-05-07 | International Business Machines Corporation | Method and apparatus for last message notification |
US8214847B2 (en) | 2007-11-16 | 2012-07-03 | Microsoft Corporation | Distributed messaging system with configurable assurances |
US8200836B2 (en) | 2007-11-16 | 2012-06-12 | Microsoft Corporation | Durable exactly once message delivery at scale |
US8935687B2 (en) * | 2008-02-29 | 2015-01-13 | Red Hat, Inc. | Incrementally updating a software appliance |
US8924920B2 (en) * | 2008-02-29 | 2014-12-30 | Red Hat, Inc. | Providing a software appliance based on a role |
US8583610B2 (en) * | 2008-03-04 | 2013-11-12 | International Business Machines Corporation | Dynamically extending a plurality of manageability capabilities of it resources through the use of manageability aspects |
EP2266289B1 (en) * | 2008-03-31 | 2013-07-17 | France Telecom | Defence communication mode for an apparatus able to communicate by means of various communication services |
US9092243B2 (en) * | 2008-05-28 | 2015-07-28 | Red Hat, Inc. | Managing a software appliance |
US10657466B2 (en) | 2008-05-29 | 2020-05-19 | Red Hat, Inc. | Building custom appliances in a cloud-based network |
US8868721B2 (en) | 2008-05-29 | 2014-10-21 | Red Hat, Inc. | Software appliance management using broadcast data |
US9032367B2 (en) * | 2008-05-30 | 2015-05-12 | Red Hat, Inc. | Providing a demo appliance and migrating the demo appliance to a production appliance |
US8943496B2 (en) * | 2008-05-30 | 2015-01-27 | Red Hat, Inc. | Providing a hosted appliance and migrating the appliance to an on-premise environment |
US20090313160A1 (en) * | 2008-06-11 | 2009-12-17 | Credit Suisse Securities (Usa) Llc | Hardware accelerated exchange order routing appliance |
US8108538B2 (en) * | 2008-08-21 | 2012-01-31 | Voltaire Ltd. | Device, system, and method of distributing messages |
US10600130B1 (en) * | 2008-08-22 | 2020-03-24 | Symantec Corporation | Creating dynamic meta-communities |
US9477570B2 (en) | 2008-08-26 | 2016-10-25 | Red Hat, Inc. | Monitoring software provisioning |
CN101668031B (en) * | 2008-09-02 | 2013-10-16 | 阿里巴巴集团控股有限公司 | Message processing method and message processing system |
US8291479B2 (en) * | 2008-11-12 | 2012-10-16 | International Business Machines Corporation | Method, hardware product, and computer program product for optimizing security in the context of credential transformation services |
US8165041B2 (en) * | 2008-12-15 | 2012-04-24 | Microsoft Corporation | Peer to multi-peer routing |
US8392567B2 (en) * | 2009-03-16 | 2013-03-05 | International Business Machines Corporation | Discovering and identifying manageable information technology resources |
WO2010109260A1 (en) * | 2009-03-23 | 2010-09-30 | Pierre Saucourt-Harmel | A multistandard protocol stack with an access channel |
US20100293555A1 (en) * | 2009-05-14 | 2010-11-18 | Nokia Corporation | Method and apparatus of message routing |
US20100322236A1 (en) * | 2009-06-18 | 2010-12-23 | Nokia Corporation | Method and apparatus for message routing between clusters using proxy channels |
US20100322264A1 (en) * | 2009-06-18 | 2010-12-23 | Nokia Corporation | Method and apparatus for message routing to services |
US8667122B2 (en) * | 2009-06-18 | 2014-03-04 | Nokia Corporation | Method and apparatus for message routing optimization |
US8065419B2 (en) * | 2009-06-23 | 2011-11-22 | Core Wireless Licensing S.A.R.L. | Method and apparatus for a keep alive probe service |
US8533230B2 (en) * | 2009-06-24 | 2013-09-10 | International Business Machines Corporation | Expressing manageable resource topology graphs as dynamic stateful resources |
CN101651553B (en) * | 2009-09-03 | 2013-02-27 | 华为技术有限公司 | User side multicast service primary and standby protecting system, method and route devices |
US8700764B2 (en) * | 2009-09-28 | 2014-04-15 | International Business Machines Corporation | Routing incoming messages at a blade chassis |
US10721269B1 (en) | 2009-11-06 | 2020-07-21 | F5 Networks, Inc. | Methods and system for returning requests with javascript for clients before passing a request to a server |
US10015286B1 (en) | 2010-06-23 | 2018-07-03 | F5 Networks, Inc. | System and method for proxying HTTP single sign on across network domains |
US11062391B2 (en) * | 2010-09-17 | 2021-07-13 | International Business Machines Corporation | Data stream processing framework |
US8379525B2 (en) | 2010-09-28 | 2013-02-19 | Microsoft Corporation | Techniques to support large numbers of subscribers to a real-time event |
WO2012055111A1 (en) | 2010-10-29 | 2012-05-03 | Nokia Corporation | Method and apparatus for distributing published messages |
WO2012068465A1 (en) | 2010-11-19 | 2012-05-24 | Interdigital Patent Holdings, Inc. | Machine-to-machine (m2m) interface procedures for announce and de-announce of resources |
US10037568B2 (en) | 2010-12-09 | 2018-07-31 | Ip Reservoir, Llc | Method and apparatus for managing orders in financial markets |
US10135831B2 (en) | 2011-01-28 | 2018-11-20 | F5 Networks, Inc. | System and method for combining an access control system with a traffic management system |
WO2012166927A1 (en) * | 2011-06-02 | 2012-12-06 | Numerex Corp. | Wireless snmp agent gateway |
US9246819B1 (en) * | 2011-06-20 | 2016-01-26 | F5 Networks, Inc. | System and method for performing message-based load balancing |
US20130031001A1 (en) * | 2011-07-26 | 2013-01-31 | Stephen Patrick Frechette | Method and System for the Location-Based Discovery and Validated Payment of a Service Provider |
US8607049B1 (en) * | 2011-08-02 | 2013-12-10 | The United States Of America As Represented By The Secretary Of The Navy | Network access device for a cargo container security network |
EP2772073B1 (en) | 2011-10-24 | 2019-01-09 | Iot Holdings, Inc. | Methods, systems and apparatuses for application service layer (asl) inter-networking |
US9047243B2 (en) * | 2011-12-14 | 2015-06-02 | Ip Reservoir, Llc | Method and apparatus for low latency data distribution |
US10230566B1 (en) | 2012-02-17 | 2019-03-12 | F5 Networks, Inc. | Methods for dynamically constructing a service principal name and devices thereof |
US11436672B2 (en) | 2012-03-27 | 2022-09-06 | Exegy Incorporated | Intelligent switch for processing financial market data |
US9990393B2 (en) | 2012-03-27 | 2018-06-05 | Ip Reservoir, Llc | Intelligent feed switch |
US10650452B2 (en) | 2012-03-27 | 2020-05-12 | Ip Reservoir, Llc | Offload processing of data packets |
US10121196B2 (en) | 2012-03-27 | 2018-11-06 | Ip Reservoir, Llc | Offload processing of data packets containing financial market data |
EP2853074B1 (en) | 2012-04-27 | 2021-03-24 | F5 Networks, Inc | Methods for optimizing service of content requests and devices thereof |
CN104813616B (en) | 2012-08-28 | 2019-02-15 | 塔塔咨询服务有限公司 | Issue the system and method for the dynamic select of the reliability of data |
US9774527B2 (en) | 2012-08-31 | 2017-09-26 | Nasdaq Technology Ab | Resilient peer-to-peer application message routing |
US9509529B1 (en) * | 2012-10-16 | 2016-11-29 | Solace Systems, Inc. | Assured messaging system with differentiated real time traffic |
CN103297517B (en) * | 2013-05-20 | 2017-02-22 | 中国电子科技集团公司第四十一研究所 | Distributed data transmission method of condition monitoring system |
WO2014194452A1 (en) * | 2013-06-03 | 2014-12-11 | 华为技术有限公司 | Message publishing and subscribing method and apparatus |
CN104243226B (en) * | 2013-06-20 | 2018-09-11 | 南京中兴软件有限责任公司 | Flow statistical method and device |
CN104426926B (en) * | 2013-08-21 | 2019-03-29 | 腾讯科技(深圳)有限公司 | The processing method and processing device of data is issued in timing |
US9792162B2 (en) * | 2013-11-13 | 2017-10-17 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Network system, network node and communication method |
US10187317B1 (en) | 2013-11-15 | 2019-01-22 | F5 Networks, Inc. | Methods for traffic rate control and devices thereof |
KR102152116B1 (en) * | 2013-12-26 | 2020-09-07 | 한국전자통신연구원 | Virtual object generating apparatus and method for data distribution service(dds) communication in multiple network domains |
US9634891B2 (en) * | 2014-01-09 | 2017-04-25 | Cisco Technology, Inc. | Discovery of management address/interface via messages sent to network management system |
US9544356B2 (en) | 2014-01-14 | 2017-01-10 | International Business Machines Corporation | Message switch file sharing |
CN104794119B (en) * | 2014-01-17 | 2018-04-03 | 阿里巴巴集团控股有限公司 | Storage and transmission method and system for middleware message |
CN103905530A (en) * | 2014-03-11 | 2014-07-02 | 浪潮集团山东通用软件有限公司 | High-performance global load balance distributed database data routing method |
US9942365B2 (en) * | 2014-03-21 | 2018-04-10 | Fujitsu Limited | Separation and isolation of multiple network stacks in a network element |
US10015143B1 (en) | 2014-06-05 | 2018-07-03 | F5 Networks, Inc. | Methods for securing one or more license entitlement grants and devices thereof |
US11838851B1 (en) | 2014-07-15 | 2023-12-05 | F5, Inc. | Methods for managing L7 traffic classification and devices thereof |
US10122630B1 (en) | 2014-08-15 | 2018-11-06 | F5 Networks, Inc. | Methods for network traffic presteering and devices thereof |
US10182013B1 (en) | 2014-12-01 | 2019-01-15 | F5 Networks, Inc. | Methods for managing progressive image delivery and devices thereof |
CN104468337B (en) * | 2014-12-24 | 2018-04-13 | 北京奇艺世纪科技有限公司 | Method for message transmission and device, message management central apparatus and data center |
US10484244B2 (en) * | 2015-01-20 | 2019-11-19 | Dell Products, Lp | Validation process for a storage array network |
US11895138B1 (en) | 2015-02-02 | 2024-02-06 | F5, Inc. | Methods for improving web scanner accuracy and devices thereof |
US10834065B1 (en) | 2015-03-31 | 2020-11-10 | F5 Networks, Inc. | Methods for SSL protected NTLM re-authentication and devices thereof |
US10505818B1 (en) | 2015-05-05 | 2019-12-10 | F5 Networks. Inc. | Methods for analyzing and load balancing based on server health and devices thereof |
US11350254B1 (en) | 2015-05-05 | 2022-05-31 | F5, Inc. | Methods for enforcing compliance policies and devices thereof |
US9407585B1 (en) | 2015-08-07 | 2016-08-02 | Machine Zone, Inc. | Scalable, real-time messaging system |
US11757946B1 (en) | 2015-12-22 | 2023-09-12 | F5, Inc. | Methods for analyzing network traffic and enforcing network policies and devices thereof |
US10404698B1 (en) | 2016-01-15 | 2019-09-03 | F5 Networks, Inc. | Methods for adaptive organization of web application access points in webtops and devices thereof |
US11178150B1 (en) | 2016-01-20 | 2021-11-16 | F5 Networks, Inc. | Methods for enforcing access control list based on managed application and devices thereof |
US10541900B2 (en) * | 2016-02-01 | 2020-01-21 | Arista Networks, Inc. | Hierarchical time stamping |
US9602450B1 (en) | 2016-05-16 | 2017-03-21 | Machine Zone, Inc. | Maintaining persistence of a messaging system |
US10791088B1 (en) | 2016-06-17 | 2020-09-29 | F5 Networks, Inc. | Methods for disaggregating subscribers via DHCP address translation and devices thereof |
US9608928B1 (en) | 2016-07-06 | 2017-03-28 | Machine Zone, Inc. | Multiple-speed message channel of messaging system |
WO2018044334A1 (en) * | 2016-09-02 | 2018-03-08 | Iex Group. Inc. | System and method for creating time-accurate event streams |
US9667681B1 (en) | 2016-09-23 | 2017-05-30 | Machine Zone, Inc. | Systems and methods for providing messages to multiple subscribers |
US10505792B1 (en) | 2016-11-02 | 2019-12-10 | F5 Networks, Inc. | Methods for facilitating network traffic analytics and devices thereof |
US10447623B2 (en) * | 2017-02-24 | 2019-10-15 | Satori Worldwide, Llc | Data storage systems and methods using a real-time messaging system |
US10812266B1 (en) | 2017-03-17 | 2020-10-20 | F5 Networks, Inc. | Methods for managing security tokens based on security violations and devices thereof |
US10540190B2 (en) * | 2017-03-21 | 2020-01-21 | International Business Machines Corporation | Generic connector module capable of integrating multiple applications into an integration platform |
US10972453B1 (en) | 2017-05-03 | 2021-04-06 | F5 Networks, Inc. | Methods for token refreshment based on single sign-on (SSO) for federated identity environments and devices thereof |
US11122042B1 (en) | 2017-05-12 | 2021-09-14 | F5 Networks, Inc. | Methods for dynamically managing user access control and devices thereof |
US11343237B1 (en) | 2017-05-12 | 2022-05-24 | F5, Inc. | Methods for managing a federated identity environment using security and access control data and devices thereof |
US10289525B2 (en) * | 2017-08-21 | 2019-05-14 | Amadeus S.A.S. | Multi-layer design response time calculator |
US11122083B1 (en) | 2017-09-08 | 2021-09-14 | F5 Networks, Inc. | Methods for managing network connections based on DNS data and network policies and devices thereof |
EP3753228B1 (en) * | 2018-02-15 | 2024-02-07 | Telefonaktiebolaget Lm Ericsson (Publ) | Providing cloud connectivity to a network of communicatively interconnected network nodes |
US10547510B2 (en) * | 2018-04-23 | 2020-01-28 | Hewlett Packard Enterprise Development Lp | Assigning network devices |
US10810064B2 (en) * | 2018-04-27 | 2020-10-20 | Nasdaq Technology Ab | Publish-subscribe framework for application execution |
US20190332522A1 (en) * | 2018-04-27 | 2019-10-31 | Satori Worldwide, Llc | Microservice platform with messaging system |
US10866844B2 (en) * | 2018-05-04 | 2020-12-15 | Microsoft Technology Licensing, Llc | Event domains |
US11368298B2 (en) * | 2019-05-16 | 2022-06-21 | Cisco Technology, Inc. | Decentralized internet protocol security key negotiation |
US11711374B2 (en) | 2019-05-31 | 2023-07-25 | Varmour Networks, Inc. | Systems and methods for understanding identity and organizational access to applications within an enterprise environment |
US11249464B2 (en) * | 2019-06-10 | 2022-02-15 | Fisher-Rosemount Systems, Inc. | Industrial control system architecture for real-time simulation and process control |
US11822826B2 (en) * | 2020-02-20 | 2023-11-21 | Raytheon Company | Sensor storage system |
CN113992741B (en) * | 2020-07-10 | 2023-06-20 | 华为技术有限公司 | Method and device for indexing release data |
US11537455B2 (en) | 2021-01-11 | 2022-12-27 | Iex Group, Inc. | Schema management using an event stream |
US20230108838A1 (en) * | 2021-10-04 | 2023-04-06 | Dell Products, L.P. | Software update system and method for proxy managed hardware devices of a computing environment |
US11683400B1 (en) | 2022-03-03 | 2023-06-20 | Red Hat, Inc. | Communication protocol for Knative Eventing's Kafka components |
US12113700B2 (en) * | 2022-12-20 | 2024-10-08 | Arrcus Inc. | Method and apparatus for telemetry monitoring of BGP prefixes in a network topology |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5557798A (en) * | 1989-07-27 | 1996-09-17 | Tibco, Inc. | Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes |
US6141705A (en) * | 1998-06-12 | 2000-10-31 | Microsoft Corporation | System for querying a peripheral device to determine its processing capabilities and then offloading specific processing tasks from a host to the peripheral device when needed |
US20020026533A1 (en) * | 2000-01-14 | 2002-02-28 | Dutta Prabal K. | System and method for distributed control of unrelated devices and programs |
US6507863B2 (en) * | 1999-01-27 | 2003-01-14 | International Business Machines Corporation | Dynamic multicast routing facility for a distributed computing environment |
US20030177412A1 (en) * | 2002-03-14 | 2003-09-18 | International Business Machines Corporation | Methods, apparatus and computer programs for monitoring and management of integrated data processing systems |
US20030226012A1 (en) * | 2002-05-30 | 2003-12-04 | N. Asokan | System and method for dynamically enforcing digital rights management rules |
US20030228012A1 (en) * | 2002-06-06 | 2003-12-11 | Williams L. Lloyd | Method and apparatus for efficient use of voice trunks for accessing a service resource in the PSTN |
US6754773B2 (en) * | 2001-01-29 | 2004-06-22 | Snap Appliance, Inc. | Data engine with metadata processor |
US20040225554A1 (en) * | 2003-05-08 | 2004-11-11 | International Business Machines Corporation | Business method for information technology services for legacy applications of a client |
US6832297B2 (en) * | 2001-08-09 | 2004-12-14 | International Business Machines Corporation | Method and apparatus for managing data in a distributed buffer system |
US20050044197A1 (en) * | 2003-08-18 | 2005-02-24 | Sun Microsystems.Inc. | Structured methodology and design patterns for web services |
US6871113B1 (en) * | 2002-11-26 | 2005-03-22 | Advanced Micro Devices, Inc. | Real time dispatcher application program interface |
US20050251556A1 (en) * | 2004-05-07 | 2005-11-10 | International Business Machines Corporation | Continuous feedback-controlled deployment of message transforms in a distributed messaging system |
US20070025351A1 (en) * | 2005-06-27 | 2007-02-01 | Merrill Lynch & Co., Inc., A Delaware Corporation | System and method for low latency market data |
US7349980B1 (en) * | 2003-01-24 | 2008-03-25 | Blue Titan Software, Inc. | Network publish/subscribe system incorporating Web services network routing architecture |
Family Cites Families (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2511591B2 (en) * | 1990-10-29 | 1996-06-26 | インターナショナル・ビジネス・マシーンズ・コーポレイション | Wireless optical communication system operating method and optical communication system |
JPH0888651A (en) * | 1994-09-20 | 1996-04-02 | Nippon Telegr & Teleph Corp <Ntt> | Radio packet transfer method |
US6226365B1 (en) * | 1997-08-29 | 2001-05-01 | Anip, Inc. | Method and system for global communications network management and display of market-price information |
US5870605A (en) * | 1996-01-18 | 1999-02-09 | Sun Microsystems, Inc. | Middleware for enterprise information distribution |
US5832499A (en) * | 1996-07-10 | 1998-11-03 | Survivors Of The Shoah Visual History Foundation | Digital library system |
US5905873A (en) * | 1997-01-16 | 1999-05-18 | Advanced Micro Devices, Inc. | System and method of routing communications data with multiple protocols using crossbar switches |
DE69832168T2 (en) * | 1997-05-14 | 2006-04-20 | Citrix Systems Inc., Fort Lauderdale | SYSTEM AND METHOD FOR CONNECTING ADMINISTRATION BETWEEN A SERVER AND A CLIENT NODE |
US6189043B1 (en) * | 1997-06-09 | 2001-02-13 | At&T Corp | Dynamic cache replication in a internet environment through routers and servers utilizing a reverse tree generation |
US6628616B2 (en) * | 1998-01-30 | 2003-09-30 | Alcatel | Frame relay network featuring frame relay nodes with controlled oversubscribed bandwidth trunks |
CN100536419C (en) * | 1999-02-23 | 2009-09-02 | 阿尔卡塔尔互联网运行公司 | Switch and method for emulating multiple routers in single switch |
US7020697B1 (en) * | 1999-10-01 | 2006-03-28 | Accenture Llp | Architectures for netcentric computing systems |
US6639910B1 (en) * | 2000-05-20 | 2003-10-28 | Equipe Communications Corporation | Functional separation of internal and external controls in network devices |
WO2001098936A2 (en) * | 2000-06-22 | 2001-12-27 | Microsoft Corporation | Distributed computing services platform |
US7315554B2 (en) * | 2000-08-31 | 2008-01-01 | Verizon Communications Inc. | Simple peering in a transport network employing novel edge devices |
AU2002239391A1 (en) * | 2000-11-30 | 2002-06-11 | Message Machines, Inc. | Systems and methods for routing messages to communications devices |
US20020078265A1 (en) * | 2000-12-15 | 2002-06-20 | Frazier Giles Roger | Method and apparatus for transferring data in a network data processing system |
US7177917B2 (en) * | 2000-12-27 | 2007-02-13 | Softwired Ag | Scaleable message system |
US6868069B2 (en) * | 2001-01-16 | 2005-03-15 | Networks Associates Technology, Inc. | Method and apparatus for passively calculating latency for a network appliance |
JP4481518B2 (en) * | 2001-03-19 | 2010-06-16 | 株式会社日立製作所 | Information relay apparatus and transfer method |
JP3609763B2 (en) * | 2001-08-17 | 2005-01-12 | 三菱電機インフォメーションシステムズ株式会社 | Route control system, route control method, and program for causing computer to execute the same |
JP2003110562A (en) * | 2001-09-27 | 2003-04-11 | Nec Eng Ltd | System and method for time synchronization |
US7293109B2 (en) * | 2001-10-15 | 2007-11-06 | Semandex Networks, Inc. | Dynamic content based multicast routing in mobile networks |
CA2361861A1 (en) * | 2001-11-13 | 2003-05-13 | Ibm Canada Limited-Ibm Canada Limitee | Wireless messaging services using publish/subscribe systems |
US20030105931A1 (en) * | 2001-11-30 | 2003-06-05 | Weber Bret S. | Architecture for transparent mirroring |
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 |
US8122118B2 (en) * | 2001-12-14 | 2012-02-21 | International Business Machines Corporation | Selection of communication protocol for message transfer based on quality of service requirements |
AU2002357144A1 (en) * | 2001-12-15 | 2003-06-30 | Thomson Licensing S.A. | Quality of service setup on a time reservation basis |
US7551629B2 (en) * | 2002-03-28 | 2009-06-23 | Precache, Inc. | Method and apparatus for propagating content filters for a publish-subscribe network |
US20030225857A1 (en) * | 2002-06-05 | 2003-12-04 | Flynn Edward N. | Dissemination bus interface |
US7243347B2 (en) * | 2002-06-21 | 2007-07-10 | International Business Machines Corporation | Method and system for maintaining firmware versions in a data processing system |
US20070208574A1 (en) * | 2002-06-27 | 2007-09-06 | Zhiyu Zheng | System and method for managing master data information in an enterprise system |
US20040083305A1 (en) * | 2002-07-08 | 2004-04-29 | Chung-Yih Wang | Packet routing via payload inspection for alert services |
US7672275B2 (en) * | 2002-07-08 | 2010-03-02 | Precache, Inc. | Caching with selective multicasting in a publish-subscribe network |
US7720910B2 (en) * | 2002-07-26 | 2010-05-18 | International Business Machines Corporation | Interactive filtering electronic messages received from a publication/subscription service |
US6721806B2 (en) * | 2002-09-05 | 2004-04-13 | International Business Machines Corporation | Remote direct memory access enabled network interface controller switchover and switchback support |
KR100458373B1 (en) * | 2002-09-18 | 2004-11-26 | 전자부품연구원 | Method and apparatus for integration processing of different network protocols and multimedia traffics |
JP2004153312A (en) * | 2002-10-28 | 2004-05-27 | Ntt Docomo Inc | Data distribution method, data distribution system, data receiver, data relaying apparatus, and program for the data receiver and data distribution |
GB0228941D0 (en) * | 2002-12-12 | 2003-01-15 | Ibm | Methods, apparatus and computer programs for processing alerts and auditing in a publish/subscribe system |
GB0305066D0 (en) * | 2003-03-06 | 2003-04-09 | Ibm | System and method for publish/subscribe messaging |
JP2004348680A (en) * | 2003-05-26 | 2004-12-09 | Fujitsu Ltd | Composite event notification system and composite event notification program |
US20050033657A1 (en) * | 2003-07-25 | 2005-02-10 | Keepmedia, Inc., A Delaware Corporation | Personalized content management and presentation systems |
US8284752B2 (en) * | 2003-10-15 | 2012-10-09 | Qualcomm Incorporated | Method, apparatus, and system for medium access control |
US7757211B2 (en) * | 2004-05-03 | 2010-07-13 | Jordan Thomas L | Managed object member architecture for software defined radio |
US7437375B2 (en) * | 2004-08-17 | 2008-10-14 | Symantec Operating Corporation | System and method for communicating file system events using a publish-subscribe model |
CA2594267C (en) * | 2005-01-06 | 2012-02-07 | J. Barry Thompson | End-to-end publish/subscribe middleware architecture |
US7539892B2 (en) * | 2005-10-14 | 2009-05-26 | International Business Machines Corporation | Enhanced resynchronization in a storage-based mirroring system having different storage geometries |
-
2005
- 2005-12-23 CA CA2594267A patent/CA2594267C/en active Active
- 2005-12-23 AU AU2005322969A patent/AU2005322969A1/en not_active Abandoned
- 2005-12-23 JP JP2007550404A patent/JP2008527848A/en active Pending
- 2005-12-23 WO PCT/US2005/047217 patent/WO2006073980A2/en active Application Filing
- 2005-12-23 US US11/318,151 patent/US20060146999A1/en not_active Abandoned
- 2005-12-23 JP JP2007550403A patent/JP2008527847A/en active Pending
- 2005-12-23 AU AU2005322970A patent/AU2005322970A1/en not_active Abandoned
- 2005-12-23 EP EP05855728A patent/EP1849092A4/en not_active Withdrawn
- 2005-12-23 US US11/317,295 patent/US20060168070A1/en not_active Abandoned
- 2005-12-23 US US11/317,280 patent/US20060168331A1/en not_active Abandoned
- 2005-12-23 CA CA2595254A patent/CA2595254C/en active Active
- 2005-12-23 WO PCT/US2005/047216 patent/WO2006073979A2/en active Application Filing
- 2005-12-23 EP EP05855729A patent/EP1849093A2/en not_active Withdrawn
-
2006
- 2006-01-05 US US11/327,526 patent/US20060146991A1/en not_active Abandoned
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5557798A (en) * | 1989-07-27 | 1996-09-17 | Tibco, Inc. | Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes |
US6141705A (en) * | 1998-06-12 | 2000-10-31 | Microsoft Corporation | System for querying a peripheral device to determine its processing capabilities and then offloading specific processing tasks from a host to the peripheral device when needed |
US6507863B2 (en) * | 1999-01-27 | 2003-01-14 | International Business Machines Corporation | Dynamic multicast routing facility for a distributed computing environment |
US20020026533A1 (en) * | 2000-01-14 | 2002-02-28 | Dutta Prabal K. | System and method for distributed control of unrelated devices and programs |
US6754773B2 (en) * | 2001-01-29 | 2004-06-22 | Snap Appliance, Inc. | Data engine with metadata processor |
US6832297B2 (en) * | 2001-08-09 | 2004-12-14 | International Business Machines Corporation | Method and apparatus for managing data in a distributed buffer system |
US20030177412A1 (en) * | 2002-03-14 | 2003-09-18 | International Business Machines Corporation | Methods, apparatus and computer programs for monitoring and management of integrated data processing systems |
US20030226012A1 (en) * | 2002-05-30 | 2003-12-04 | N. Asokan | System and method for dynamically enforcing digital rights management rules |
US20030228012A1 (en) * | 2002-06-06 | 2003-12-11 | Williams L. Lloyd | Method and apparatus for efficient use of voice trunks for accessing a service resource in the PSTN |
US6871113B1 (en) * | 2002-11-26 | 2005-03-22 | Advanced Micro Devices, Inc. | Real time dispatcher application program interface |
US7349980B1 (en) * | 2003-01-24 | 2008-03-25 | Blue Titan Software, Inc. | Network publish/subscribe system incorporating Web services network routing architecture |
US20040225554A1 (en) * | 2003-05-08 | 2004-11-11 | International Business Machines Corporation | Business method for information technology services for legacy applications of a client |
US20050044197A1 (en) * | 2003-08-18 | 2005-02-24 | Sun Microsystems.Inc. | Structured methodology and design patterns for web services |
US20050251556A1 (en) * | 2004-05-07 | 2005-11-10 | International Business Machines Corporation | Continuous feedback-controlled deployment of message transforms in a distributed messaging system |
US20070025351A1 (en) * | 2005-06-27 | 2007-02-01 | Merrill Lynch & Co., Inc., A Delaware Corporation | System and method for low latency market data |
Cited By (66)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9253243B2 (en) * | 2005-01-06 | 2016-02-02 | Tervela, Inc. | Systems and methods for network virtualization |
US20060149840A1 (en) * | 2005-01-06 | 2006-07-06 | Tervela, Inc. | End-to-end publish/subscribe middleware architecture |
US20060168070A1 (en) * | 2005-01-06 | 2006-07-27 | Tervela, Inc. | Hardware-based messaging appliance |
US7970918B2 (en) * | 2005-01-06 | 2011-06-28 | Tervela, Inc. | End-to-end publish/subscribe middleware architecture |
US8321578B2 (en) | 2005-01-06 | 2012-11-27 | Tervela, Inc. | Systems and methods for network virtualization |
US20130166681A1 (en) * | 2005-01-06 | 2013-06-27 | Travela, Inc. | Systems and methods for network virtualization |
US20060146999A1 (en) * | 2005-01-06 | 2006-07-06 | Tervela, Inc. | Caching engine in a messaging system |
US20070002732A1 (en) * | 2005-06-30 | 2007-01-04 | Batni Ramachendra P | Application load level determination |
US7783294B2 (en) * | 2005-06-30 | 2010-08-24 | Alcatel-Lucent Usa Inc. | Application load level determination |
US20070174232A1 (en) * | 2006-01-06 | 2007-07-26 | Roland Barcia | Dynamically discovering subscriptions for publications |
WO2008066876A1 (en) * | 2006-12-02 | 2008-06-05 | Andrew Macgaffey | Smart jms network stack |
US20080186971A1 (en) * | 2007-02-02 | 2008-08-07 | Tarari, Inc. | Systems and methods for processing access control lists (acls) in network switches using regular expression matching logic |
US20100083006A1 (en) * | 2007-05-24 | 2010-04-01 | Panasonic Corporation | Memory controller, nonvolatile memory device, nonvolatile memory system, and access device |
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 |
US20090024817A1 (en) * | 2007-07-16 | 2009-01-22 | Tzah Oved | Device, system, and method of publishing information to multiple subscribers |
US7802071B2 (en) | 2007-07-16 | 2010-09-21 | Voltaire Ltd. | Device, system, and method of publishing information to multiple subscribers |
WO2009010972A3 (en) * | 2007-07-16 | 2010-02-25 | Voltaire Ltd. | Device, system, and method of publishing information to multiple subscribers |
WO2009010972A2 (en) * | 2007-07-16 | 2009-01-22 | Voltaire Ltd. | Device, system, and method of publishing information to multiple subscribers |
US20140177441A1 (en) * | 2007-07-20 | 2014-06-26 | Broadcom Corporation | Method and system for establishing a queuing system inside a mesh network |
US9462508B2 (en) * | 2007-07-20 | 2016-10-04 | Broadcom Corporation | Method and system for establishing a queuing system inside a mesh network |
US20100306264A1 (en) * | 2009-06-02 | 2010-12-02 | International Business Machines Corporation | Optimizing publish/subscribe matching for non-wildcarded topics |
US8250032B2 (en) * | 2009-06-02 | 2012-08-21 | International Business Machines Corporation | Optimizing publish/subscribe matching for non-wildcarded topics |
US8489722B2 (en) | 2009-11-24 | 2013-07-16 | International Business Machines Corporation | System and method for providing quality of service in wide area messaging fabric |
US20110145374A1 (en) * | 2009-12-10 | 2011-06-16 | Samsung Electronics Co., Ltd. | Communication system for supporting communication between distributed modules in distributed communication network and communication method using the same |
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 |
US9667737B2 (en) | 2011-02-23 | 2017-05-30 | International Business Machines Corporation | Publisher-assisted, broker-based caching in a publish-subscription environment |
US8874666B2 (en) | 2011-02-23 | 2014-10-28 | International Business Machines Corporation | Publisher-assisted, broker-based caching in a publish-subscription environment |
US9537970B2 (en) | 2011-02-23 | 2017-01-03 | International Business Machines Corporation | Publisher-based message data caching in a publish-subscription environment |
US8959162B2 (en) | 2011-02-23 | 2015-02-17 | International Business Machines Corporation | Publisher-based message data cashing in a publish-subscription environment |
US9565266B2 (en) | 2011-02-24 | 2017-02-07 | International Business Machines Corporation | Broker facilitated peer-to-peer publisher collaboration in a publish-subscription environment |
US8725814B2 (en) | 2011-02-24 | 2014-05-13 | International Business Machines Corporation | Broker facilitated peer-to-peer publisher collaboration in a publish-subscription environment |
US8489694B2 (en) | 2011-02-24 | 2013-07-16 | International Business Machines Corporation | Peer-to-peer collaboration of publishers in a publish-subscription environment |
US9246859B2 (en) | 2011-02-24 | 2016-01-26 | International Business Machines Corporation | Peer-to-peer collaboration of publishers in a publish-subscription environment |
US9185181B2 (en) | 2011-03-25 | 2015-11-10 | International Business Machines Corporation | Shared cache for potentially repetitive message data in a publish-subscription environment |
US8954504B2 (en) | 2011-05-18 | 2015-02-10 | International Business Machines Corporation | Managing a message subscription in a publish/subscribe messaging system |
WO2013184225A1 (en) * | 2012-06-06 | 2013-12-12 | The Trustees Of Columbia University In The City Of New York | Unified networking system and device for heterogeneous mobile environments |
US20150156122A1 (en) * | 2012-06-06 | 2015-06-04 | The Trustees Of Columbia University In The City Of New York | Unified networking system and device for heterogeneous mobile environments |
US11889575B2 (en) | 2012-06-06 | 2024-01-30 | The Trustees Of Columbia University In The City Of New York | Unified networking system and device for heterogeneous mobile environments |
US10541926B2 (en) * | 2012-06-06 | 2020-01-21 | The Trustees Of Columbia University In The City Of New York | Unified networking system and device for heterogeneous mobile environments |
US9992220B2 (en) * | 2013-07-31 | 2018-06-05 | Splunk Inc. | Graphical display of events indicating security threats in an information technology system |
US20170142149A1 (en) * | 2013-07-31 | 2017-05-18 | Splunk Inc. | Graphical Display of Events Indicating Security Threats in an Information Technology System |
US9276946B2 (en) * | 2013-07-31 | 2016-03-01 | Splunk Inc. | Blacklisting and whitelisting of security-related events |
US11178167B2 (en) * | 2013-07-31 | 2021-11-16 | Splunk Inc. | Graphical display suppressing events indicating security threats in an information technology system |
US20180351990A1 (en) * | 2013-07-31 | 2018-12-06 | Splunk Inc. | Graphical display of events indicating security threats in an information technology system |
US10382472B2 (en) * | 2013-07-31 | 2019-08-13 | Splunk Inc. | Graphical display of events indicating security threats in an information technology system |
US12034759B2 (en) * | 2013-07-31 | 2024-07-09 | Splunk Inc. | Automatic creation and updating of event group summaries |
US9596252B2 (en) * | 2013-07-31 | 2017-03-14 | Splunk Inc. | Identifying possible security threats using event group summaries |
US20150040225A1 (en) * | 2013-07-31 | 2015-02-05 | Splunk Inc. | Blacklisting and whitelisting of security-related events |
US20220046052A1 (en) * | 2013-07-31 | 2022-02-10 | Splunk Inc. | Automatic creation and updating of event group summaries |
US10069604B2 (en) | 2013-10-23 | 2018-09-04 | Huawei Technologies Co., Ltd. | Data transmission method and apparatus |
US10496710B2 (en) | 2015-04-29 | 2019-12-03 | Northrop Grumman Systems Corporation | Online data management system |
US20170195458A1 (en) * | 2016-01-06 | 2017-07-06 | Northrop Grumman Systems Corporation | Middleware abstraction layer (mal) |
US10462262B2 (en) * | 2016-01-06 | 2019-10-29 | Northrop Grumman Systems Corporation | Middleware abstraction layer (MAL) |
US10666712B1 (en) * | 2016-06-10 | 2020-05-26 | Amazon Technologies, Inc. | Publish-subscribe messaging with distributed processing |
US10785296B1 (en) | 2017-03-09 | 2020-09-22 | X Development Llc | Dynamic exchange of data between processing units of a system |
US10628280B1 (en) | 2018-02-06 | 2020-04-21 | Northrop Grumman Systems Corporation | Event logger |
US11257184B1 (en) | 2018-02-21 | 2022-02-22 | Northrop Grumman Systems Corporation | Image scaler |
US11798129B1 (en) | 2018-02-21 | 2023-10-24 | Northrop Grumman Systems Corporation | Image scaler |
US11157003B1 (en) | 2018-04-05 | 2021-10-26 | Northrop Grumman Systems Corporation | Software framework for autonomous system |
US11392284B1 (en) | 2018-11-01 | 2022-07-19 | Northrop Grumman Systems Corporation | System and method for implementing a dynamically stylable open graphics library |
US11863580B2 (en) | 2019-05-31 | 2024-01-02 | Varmour Networks, Inc. | Modeling application dependencies to identify operational risk |
US11818152B2 (en) * | 2020-12-23 | 2023-11-14 | Varmour Networks, Inc. | Modeling topic-based message-oriented middleware within a security system |
US11876817B2 (en) | 2020-12-23 | 2024-01-16 | Varmour Networks, Inc. | Modeling queue-based message-oriented middleware relationships in a security system |
US20220201024A1 (en) * | 2020-12-23 | 2022-06-23 | Varmour Networks, Inc. | Modeling Topic-Based Message-Oriented Middleware within a Security System |
RU2777302C1 (en) * | 2021-09-06 | 2022-08-02 | Акционерное общество "Лаборатория Касперского" | System and method for controlling the delivery of messages transmitted between processes from different operating systems |
Also Published As
Publication number | Publication date |
---|---|
WO2006073979A2 (en) | 2006-07-13 |
JP2008527848A (en) | 2008-07-24 |
US20060146991A1 (en) | 2006-07-06 |
US20060146999A1 (en) | 2006-07-06 |
WO2006073979A3 (en) | 2006-12-28 |
AU2005322969A1 (en) | 2006-07-13 |
AU2005322970A1 (en) | 2006-07-13 |
CA2594267A1 (en) | 2006-07-13 |
CA2595254C (en) | 2013-10-01 |
EP1849092A4 (en) | 2010-01-27 |
CA2594267C (en) | 2012-02-07 |
WO2006073980A3 (en) | 2007-05-18 |
WO2006073980A9 (en) | 2007-04-05 |
CA2595254A1 (en) | 2006-07-13 |
WO2006073980A2 (en) | 2006-07-13 |
EP1849092A2 (en) | 2007-10-31 |
WO2006073979B1 (en) | 2007-02-22 |
US20060168070A1 (en) | 2006-07-27 |
EP1849093A2 (en) | 2007-10-31 |
JP2008527847A (en) | 2008-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20060168331A1 (en) | Intelligent messaging application programming interface | |
CA2594036A1 (en) | Intelligent messaging application programming interface | |
US20110185082A1 (en) | Systems and methods for network virtualization | |
US10275412B2 (en) | Method and device for database and storage aware routers | |
CN101326508A (en) | Intelligent messaging application programming interface | |
US20030093555A1 (en) | Method, apparatus and system for routing messages within a packet operating system | |
Shantaf et al. | A comparison study of TCP/IP and named data networking protocol |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: TERVELA, INC., NEW YORK Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:THOMPSON, J. BARRY;SINGH, KUL;FRAVAL, PIERRE;REEL/FRAME:017168/0381 Effective date: 20051223 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |