Senior Fitness - Exercise and Nutrition for Aging Men and Women
FREE Article Feed for your website.
Home Ownership Magazine
Party Planning Information
Article Marketing Resources
Bio-Medical Research Article Database
Informative Articles on Life, Love and Happiness
Tutorials on Business to Writing
Famous Quotes from Famous People
Song Lyric Information
New US Patent Information
Comprehensive List of Content by Category
Online Auctions and Shopping Related Articles
Article Search
Most Recent Articles
Title: Optical device and method of manufacture of the same, display device, electronic device, and detection device
Patent Number: 6,919,991 Issued on 07/19/2005 to Koyama

Title: Method and apparatus for remote interactive exercise and health equipment
Patent Number: 6,808,472 Issued on 10/26/2004 to Hickman

Title: Memory cell with transistors having relatively high threshold voltages in response to selective gate doping
Patent Number: 6,773,972 Issued on 08/10/2004 to Marshall,   et al.

Title: Crystalline mixture solid composition and process for preparation thereof
Patent Number: 6,746,541 Issued on 06/08/2004 to Ueno,   et al.

Title: Thermally suppressing circuit for restarting a locked motor with a restart-discharging drive member
Patent Number: 6,920,024 Issued on 07/19/2005 to Horng,   et al.

Title: Method and arrangement for controlling the position of an actuating element
Patent Number: 7,194,319 Issued on 03/20/2007 to Grossmann,   et al.

Title: Pre-prefetching target of following branch instruction based on past history
Patent Number: 6,912,650 Issued on 06/28/2005 to Ukai,   et al.

Title: Method for fabricating a patterned, synthetic transversely exchanged biased GMR sensor
Patent Number: 7,134,186 Issued on 11/14/2006 to Horng,   et al.

Title: Reduced complexity intercarrier interference cancellation
Patent Number: 7,120,209 Issued on 10/10/2006 to Gorokhov,   et al.

Title: Method of making a semiconductor device, and semiconductor device made thereby
Patent Number: 6,919,244 Issued on 07/19/2005 to Remmel,   et al.

Title: Resizing a protected area on a hard disk
Patent Number: 6,748,511 Issued on 06/08/2004 to Nichols

Title: Dielectric materials to prevent photoresist poisoning
Patent Number: 7,115,534 Issued on 10/03/2006 to Nguyen,   et al.

Title: Disk drive spindle motor with radial inward thrust area annular protruding portion and bearing member communicating passage
Patent Number: 6,920,013 Issued on 07/19/2005 to Nishimura,   et al.

Title: Method of producing a perforated mask for particle radiation
Patent Number: 6,773,854 Issued on 08/10/2004 to Ehrmann,   et al.

Title: Disc head slider designs to reduce particle sensitivity
Patent Number: 6,920,015 Issued on 07/19/2005 to Mundt,   et al.

Title: Process for the regeneration of zeolite catalysts
Patent Number: 7,115,537 Issued on 10/03/2006 to Perego,   et al.

Title: UV absorbent and preparation method thereof, compositions and image forming method
Patent Number: 6,773,861 Issued on 08/10/2004 to Takashima,   et al.

Title: Method for adjusting of controlling the diet and/or a person's consumption
Patent Number: 7,175,595 Issued on 02/13/2007 to Stegmann

Title: Projector with consumable component having memory device
Patent Number: 6,956,490 Issued on 10/18/2005 to Childers

Title: Cache coherence directory eviction mechanisms for modified copies of memory lines in multiprocessor systems
Patent Number: 6,920,532 Issued on 07/19/2005 to Glasco,   et al.

Title: Brushless DC motor and refrigerant compressor employing the motor
Patent Number: 6,873,081 Issued on 03/29/2005 to Arai,   et al.

Title: Method and system for random access packet channel request
Patent Number: 6,785,548 Issued on 08/31/2004 to Moulsley,   et al.

Title: Heddle shaft with center connector
Patent Number: 7,137,415 Issued on 11/21/2006 to Olbing,   et al.

Title: Cooling bracelet
Patent Number: 6,772,445 Issued on 08/10/2004 to Yeager

Title: Methods of synthesizing heteroatom-bearing ligands and intermediate used therefor
Patent Number: 6,933,391 Issued on 08/23/2005 to Ramalingam

Title: Shared pole design for reduced thermal pole tip protrusion
Patent Number: 6,754,050 Issued on 06/22/2004 to Kong,   et al.

Title: Composite diamond window
Patent Number: 6,956,706 Issued on 10/18/2005 to Brandon

Title: Movable bathroom fixtures
Patent Number: 6,820,290 Issued on 11/23/2004 to Mullick,   et al.

Title: Motor vehicle with a front-mounted engine and air guide chassis
Patent Number: 6,786,291 Issued on 09/07/2004 to Linden,   et al.

Title: Dynamically configurable printer and method of use thereof
Patent Number: 6,999,188 Issued on 02/14/2006 to Ashe

Title: Fishing leader apparatus and method of making same
Patent Number: 6,862,838 Issued on 03/08/2005 to Gibbs

Title: Method to prevent graft rejection using TGF-beta to induce T suppressor cells
Patent Number: 6,759,035 Issued on 07/06/2004 to Horwitz

Title: Method and apparatus for latency reduction in low power two way communications equipment applications in hybrid fiber coax plants
Patent Number: 6,785,564 Issued on 08/31/2004 to Quigley,   et al.

Title: Zoom lens and image pickup apparatus
Patent Number: 6,950,247 Issued on 09/27/2005 to Saruwatari

Title: Control system and controlling method for motor drive four wheel drive vehicle
Patent Number: 7,119,513 Issued on 10/10/2006 to Ishikawa

Title: Method and apparatus for simultaneously displaying both moving and still pictures on a display
Patent Number: 6,771,319 Issued on 08/03/2004 to Konuma

Title: Mobile communication unit with bone conduction speaker
Patent Number: 6,957,049 Issued on 10/18/2005 to Takeda

Title: Detection of ovarian cancer based upon alpha-haptoglobin levels
Patent Number: 7,112,408 Issued on 09/26/2006 to Ye,   et al.

Title: Reduced torque gate valve with roller screw
Patent Number: 6,918,574 Issued on 07/19/2005 to Hallden,   et al.

Title: Portable toilet
Patent Number: 6,820,288 Issued on 11/23/2004 to Suitsu

Title: Determining the reaction progress of graft polymerization reactions
Patent Number: 7,122,379 Issued on 10/17/2006 to Wolf,   et al.

Title: System and method for machine specific register addressing in a split transactional unidirectional bus architecture
Patent Number: 6,785,758 Issued on 08/31/2004 to Kotlowski,   et al.

Title: Sound quality box call
Patent Number: 6,942,539 Issued on 09/13/2005 to Kirby

Title: Semi-physical modeling of HEMT high frequency small signal equivalent circuit models
Patent Number: 6,772,400 Issued on 08/03/2004 to Tsai

Title: Switched reluctance machine control system and method
Patent Number: 7,119,512 Issued on 10/10/2006 to Green

Title: System and method for generating waveforms using waveform segment queues
Patent Number: 6,957,239 Issued on 10/18/2005 to Conway,   et al.

Title: Composite serial lamp set
Patent Number: 7,137,719 Issued on 11/21/2006 to Wu

Title: Method of providing dynamic regionally relevant data to a mobile environment
Patent Number: 6,785,551 Issued on 08/31/2004 to Richard

Title: System for handling components at a component mounting machine
Patent Number: 6,948,541 Issued on 09/27/2005 to Bergstrom,   et al.

Title: Method for downstream editing of compressed video
Patent Number: 6,970,510 Issued on 11/29/2005 to Wee,   et al.

Title: Methods and devices for luminal and sphincter augmentation
Patent Number: 7,175,589 Issued on 02/13/2007 to Deem,   et al.

Title: Method of detecting misalignment of ion implantation area
Patent Number: 7,122,388 Issued on 10/17/2006 to Han

Title: Holder for a graduated element
Patent Number: 6,910,279 Issued on 06/28/2005 to Affa,   et al.

Title: Method for compensating a digital image for light falloff while minimizing light balance change
Patent Number: 6,940,546 Issued on 09/06/2005 to Gallagher

Title: System and method for measuring amplifier gain in a digital network
Patent Number: 6,775,635 Issued on 08/10/2004 to Coy,   et al.

Title: Sequences of hepatitis C virus genotypes and their use as therapeutic and diagnostic agents
Patent Number: 7,122,306 Issued on 10/17/2006 to Maertens,   et al.

Title: Method for supporting multi-level stripping of non-homogeneous memory to maximize concurrency
Patent Number: 6,785,785 Issued on 08/31/2004 to Piccirillo,   et al.

Title: Feeding apparatus for products such as fruits
Patent Number: 7,137,501 Issued on 11/21/2006 to Van Wijngaarden,   et al.

Title: Turbidity sensor with temperature sensing for household appliances
Patent Number: 6,771,373 Issued on 08/03/2004 to Schenkl,   et al.

Title: Human genes and gene expression products V
Patent Number: 7,122,373 Issued on 10/17/2006 to Williams,   et al.

Title: Electrophotographic image formation apparatus
Patent Number: 6,771,389 Issued on 08/03/2004 to Sawayama

Title: Post detection chromatic dispersion compensation
Patent Number: 6,775,631 Issued on 08/10/2004 to Van Schyndel

Title: Reduced recovery time for perpendicular recording systems
Patent Number: 7,119,977 Issued on 10/10/2006 to Dolan, Jr.,   et al.

Title: MTCMOS flip-flop circuit capable of retaining data in sleep mode
Patent Number: 6,870,412 Issued on 03/22/2005 to Cho

Title: Torque distribution for multiple propulsion system vehicles
Patent Number: 6,958,587 Issued on 10/25/2005 to Naik

Title: Plasma display device, luminance correction method and display method thereof
Patent Number: 6,933,911 Issued on 08/23/2005 to Suzuki

Title: Image synthesizing apparatus
Patent Number: 6,940,526 Issued on 09/06/2005 to Noda,   et al.

Title: Vitro methods for determining in vivo thrombotic events
Patent Number: 7,122,324 Issued on 10/17/2006 to Ginsberg,   et al.

Title: Apparatus and method for synthesizing combinatorial libraries
Patent Number: 7,122,323 Issued on 10/17/2006 to Patek,   et al.

Title: Consolidated material of coated powders and process for producing same
Patent Number: 6,863,979 Issued on 03/08/2005 to Atarashi,   et al.

Title: Self powered data communication optical fiber cable extender
Patent Number: 6,755,575 Issued on 06/29/2004 to Kronlund,   et al.

Title: Cutterless dunnage converter and method
Patent Number: 7,186,208 Issued on 03/06/2007 to Demers,   et al.

Title: Updating a file in a fragmented file system
Patent Number: 6,954,765 Issued on 10/11/2005 to Spiegel

Title: High voltage transfer circuit
Patent Number: 6,903,595 Issued on 06/07/2005 to Won

Title: User-oriented method and system for database query
Patent Number: 6,775,660 Issued on 08/10/2004 to Lin,   et al.

Scaleable message system Number:7,177,917 from the United States Patent and Trademark Office (PTO) owispatent

Home    Author Login    Submit Article    Article Search    Add Your Link    Edit Your Link    Contact Us    Advertising    Disclaimer

   

 
Web LinkGrinder.com

Top Breaking News
     Greek, Cypriot Leaders Resume Unification Talks in Nicosia by Nathan Morley
     Indonesia Tobacco Sales Grow, Raising Health Fears
     South Korea Allows Top Defector to Travel Overseas by VOA News

Title: Scaleable message system

Abstract: A message system for delivering data in the form messages between message clients comprises a server cluster with a group of client manager nodes and a group of independent message manager nodes. The client manager nodes have the function of managing client connections, whereas the message manager are configured to store and distribute messages. The system further comprising communication channel means in the form of a multicast messagebus for providing a multicast communication channel between said at least one client manager node and said at least one message manager node. The system guarantees delivery of a message by storing it until a receiver is ready to consume it.

Patent Number: 7,177,917 Issued on 02/13/2007 to Giotta


Inventors: Giotta; Paul (Winterthur, CH)
Assignee: Softwired AG (Zurich, CH)
Appl. No.: 09/750,009
Filed: December 27, 2000


Current U.S. Class: 709/219 ; 709/204; 709/227
Current International Class: G06F 15/16 (20060101)
Field of Search: 709/203,204,205,206,207,218


References Cited [Referenced By]

U.S. Patent Documents
5303343 April 1994 Ohya et al.
5345558 September 1994 Opher et al.
5390170 February 1995 Sawant et al.
5519707 May 1996 Subramanian et al.
5561807 October 1996 Verplanken et al.
5581753 December 1996 Terry et al.
5649103 July 1997 Datta et al.
5694547 December 1997 Subramanian et al.
5974449 October 1999 Chang et al.
5983265 November 1999 Martino, II
5991892 November 1999 Honda
6038592 March 2000 Verplanken et al.
6078948 June 2000 Podgorny et al.
6097723 August 2000 Fielding et al.
6157946 December 2000 Itakura et al.
6182111 January 2001 Inohara et al.
6195345 February 2001 Kramer
6205479 March 2001 Dulai et al.
6253230 June 2001 Couland et al.
6279029 August 2001 Sampat et al.
6466978 October 2002 Mukherjee et al.
6477569 November 2002 Sayan et al.
6549516 April 2003 Albert et al.
6557111 April 2003 Theimer et al.
6594693 July 2003 Borwankar
6606315 August 2003 Albert et al.
6606316 August 2003 Albert et al.
6628654 September 2003 Albert et al.
6629138 September 2003 Lambert et al.
6633560 October 2003 Albert et al.
6650641 November 2003 Albert et al.
6678735 January 2004 Orton et al.
6687222 February 2004 Albert et al.
6704278 March 2004 Albert et al.
6735169 May 2004 Albert et al.
6742045 May 2004 Jordan et al.
6775692 August 2004 Albert et al.
6802067 October 2004 Camp et al.
6804818 October 2004 Codella et al.
6836462 December 2004 Albert et al.
6859527 February 2005 Banks et al.
6912565 June 2005 Powers et al.
6970913 November 2005 Albert et al.
Foreign Patent Documents
WO 01/56234 Aug., 2001 WO
WO 03/005194 Jan., 2003 WO

Other References

Henk L. Muller etc, "The Data Diffusion Machine with a Scalable Point-to-Point Network", Oct. 1993, Technical Report CSTR-9 17, Department of Computer Science, University of Bristol. cited by examiner .
Anawat Chankhunthod etc, "A Hierarchical Internet Object Cache", 1996, 1996 USENIX Technical Conference, pp. 153-163. cited by examiner .
Michael J. Feeley etc, "Implementing Global Memory Management in an Workstation Cluster", 1995, ACM 15th Symposium on Operating Systems Principles, pp. 201-212. cited by examiner .
Prasenjit Sarkar etc, "Efficient Cooperative Caching Using Hints", 1996, Second USENIX Symposium on Operating Systems Design and Implementation, pp. 35-46. cited by examiner .
Anderl et al., An Enhanced Message Networking Topology: Multimedia Messaging with the Intuity TM Interchange Server, Bell Labs Technical Journal, Apr. 1, 1998, pp. 124-135, vol. 3, No. 2. cited by other.

Primary Examiner: Cardone; Jason
Assistant Examiner: Duong; Thomas
Attorney, Agent or Firm: Oppedahl Patent Law Firm LLC

Claims



I claim:

1. A message system for delivering data in the form messages between message clients; the message system being configured to receive messages from message producing clients and to forward messages to message consuming clients; the message system comprising a server cluster containing a group of client manager nodes, said group of client manager nodes comprising a plurality of client manager nodes; each client manager node of said group of client manager nodes comprising means for connecting to clients, means for managing client connections and means for forwarding messages received from message producing clients to message manager nodes, and means for forwarding messages received from message manager nodes to message consuming clients; the server cluster further containing a group of message manager nodes being configured differently from the client manager nodes, said group of message manager nodes comprising a plurality of message manager nodes; each message manager node comprising means for storing and distributing messages, said messages comprising a destination information addressing a destination, said destination being at least one of a queue and a topic; the system further comprising communication channel means for providing a multicast communication channel for forwarding messages between said group of client manager nodes and said group of message manager nodes.

2. The message system of claim 1: said message manager nodes being configured to comprise destinations, said destinations being at least one of a queue and a topic; each client manager node comprising computer program code means for sending message data across said multicast communication channel, said message data containing a destination information and not containing an individual address of a message manager node, each message manager node comprising computer program code means for receiving message data comprising destination information matching a destination of the message manager, and for maintaining said destination being at least one of a queue and a topic.

3. The message system of claim 2 where each message manager node further comprises data storage means for storing message data in at least one of a queue and a topic and comprises means for sending message data, depending on the content of a request signal.

4. The message system of claim 1 where the number of the client manager nodes of said group of client manager nodes is independent from the number of the message manager nodes of said group of message managers.

5. The message system of claim 1 in which not all possible pairs of nodes in the server cluster are required to exchange data directly.

6. The message system of claim 1, in which a reliable multicast communications protocol is used for inter-node data transfer, in which a plurality of message manager nodes is provided, wherein at least two message manager nodes are configured to contain identical destinations to maintain one or more identical, redundant copies of stored data received in the same multicast transmission from a client manager as the original copy of stored data.

7. A method for delivering data in the form messages between message clients using a server cluster comprising the steps of: providing a group of client managers of said server cluster, said group of client managers comprising a plurality of client manager nodes; providing a group of message managers of said server cluster, said group of message managers comprising a plurality of message managers having at least one destination, said destination being at last one of a queue and a topic; connecting a message client to a client manager node of said group of client managers of said server cluster; transmitting a message from said message client to said client manager node; depending on the content of said message, sending message data by said client manager across at least one multicast communication channel connected to said client manager, said message data comprising a destination information addressing a destination; and receiving said message data by all message managers having said destination addressed by said destination information and storing said message data on data storage means of said message managers.

8. The method of claim 7, further comprising the steps of: depending on a list of client subscriptions of said message manager, sending message data comprising a client information from one message manager across said at least one multicast communication channel; receiving said message data by the client manager addressed by said client information; and transmitting, depending on the content of said message data, a message to the message client addressed by said client information by said client manager.

9. The method of claim 8 wherein in said group of message managers primary message managers and backup message managers are provided, each backup message manager containing the same destinations as one associated primary message manager and controlling regularly whether said associated primary message manager functions, wherein each backup manager monitors the multicast communication on said multicast communication channel and stores the same message data as said associated primary message manager, and wherein each backup manager does not send any message data unless said associated primary message manager fails to function.

10. The method of claim 9 where each backup message manager is associated a channel rank and where upon failure of a primary message manager, the associated backup message manager having the lowest or highest channel rank changes its status and becomes a primary message manager.

11. The method of claim 7, wherein, if the message size exceeds a maximum message size value, said message to be transmitted between said message client and said message manager is fragmented by the message manager or by the message client and sent as a separate command.

12. The method of claim 1, wherein at least two multicast communication channels are present, and wherein either every client manager node is connected to all of said multicast communication channels and every message manager node is connected to only one of said multicast communication channels or every message manager node is connected to all of said multicast communication channels and every client manager node is connected to only one of said multicast communication channels.

13. A computer-readable medium having computer readable program code means embodied therein for enabling a computer to serve as a client manager in a server cluster, the computer-readable medium comprising computer readable code means for enabling the computer: to establish a connection to a message client; to communicate with at least one of a plurality of message manager nodes comprising means for storing messages and at least one destination across a multicast communication channel, said destination being at least one of a queue and a topic; to receive a message from said message client, and depending on the content of said message, to transmit message data across said multicast communication to at least one of said message manager nodes, said message comprising a destination information addressing a destination, further comprising computer readable code means for enabling the computer: to receive message data containing a client information from a message manager node, and to transmit, depending on the content of said message data, a message to the message client addressed by said message data.

14. The computer-readable medium of claim 13, wherein said computer readable code means for enabling the computer to establish a connection to a message client comprise means employing a library written in the Java language and conforming to the Java Message Service API.

15. The computer-readable medium of claim 13, wherein said computer readable code means comprise the following elements: a core module comprising session tasks and session command dispatchers, a client I/O module for routing commands, sending messages to a message client and receiving messages from a message client, said client I/O module comprising command routing means and connection management means, and a cluster I/O module for routing commands, sending messages to a message manager and receiving messages from a message manager, said client I/O module comprising command routing means and channel management means.

16. The computer-readable medium of claim 13, wherein said computer readable code means comprise configuration data, means for creating a digest of said configuration data and means for sending said digest to other client manager nodes and means for receiving a configuration data digest from other client manager nodes, as well as means for acquiring configuration data from other client manager nodes in case the digest of its configuration data and a received configuration data digest do not match.

17. A computer-readable medium having computer readable program code means embodied therein for enabling a computer to serve as a message manager node in a server cluster, the computer-readable medium comprising computer readable code means for enabling the computer to communicate with at least one client manager across a multicast communication channel, to receive message data from said client manager node, said message data comprising a destination information addressing a destination, depending on the destination information, to store said message data, to maintain a list of client subscriptions, and to compare the list of client subscriptions to available messages, and, when there is a match, for transmitting message information with a client information to a client server across said multicast communication channel.

18. The computer-readable medium of claim 17, wherein said computer readable code means comprise the following elements: a core module comprising a destination manager task, an admin manager task, a config distributor task, a reliability manager task an destination tasks, at least one destination command dispatcher, and a cluster I/O module for routing commands, sending messages to a client manager and receiving messages and requests from a client manager, said client I/O module comprising command routing means and channel management means.

19. The computer-readable medium of claim 17, wherein said computer readable code means comprise configuration data, means for creating a digest of said configuration data and means for sending said digest to other message manager nodes and means for receiving a configuration data digest from other message manager nodes, as well as means for acquiring configuration data from other message manager nodes in case the digest of its configuration data and a received configuration data digest do not match.

20. A message system for delivering data in the form of messages between message clients, the message system being configured use at least one of queues and topics as destinations, and being configured to receive messages from message producing clients and to forward messages to message consuming clients, the system comprising: a server cluster containing a group of client manager nodes; each client manager node of said group of client manager nodes comprising means for connecting to clients, means for managing client connections, means for forwarding messages received from message producing clients to message manager nodes, said messages comprising destination information specifying at least one of a queue and a topic, and means for forwarding messages received from message manager nodes to message consuming clients; the server cluster further containing a group of message manager nodes being configured differently from the client manager nodes; each message manager node comprising means for storing and distributing messages and means for managing at least one of a queue and a topic, said messages comprising a destination information addressing a destination, said destination being at least one of a queue and a topic; the system further comprising communication channel means for providing a multicast communication channel for forwarding messages from a plurality of said client manager nodes to a plurality of said message manager nodes, and vice versa; wherein at least two message manager nodes are configured to comprise identical destinations, each of which is arranged to maintain a redundant copy of a message received in the course of the same multicast transmission from a client manager to said destination, said destination being at least one of a queue and a topic.
Description



FIELD OF THE INVENTION

The invention is in the field of methods and systems of delivering messages between computer programs via a message server.

BACKGROUND OF THE INVENTION

This invention more specifically pertains to the field of Message Oriented Middleware (MOM). MOM enables multiple computer programs to exchange discrete messages with each other over a communications network. MOM is characterized by `loose coupling` of senders and recipients, in that the sender of a message need not know details about the identity, location or number of recipients of a message. Furthermore, when an intermediary message server is employed, message delivery can be assured even when the ultimate receivers of the message are unavailable at the time at which it is sent. This can be contrasted with Connection Oriented Middleware, which requires a computer program to have details of the identity and network location of another computer, in order that it can establish a connection to that computer before exchanging data with it. To establish a connection, both computers must be available and responsive during the entire time that the connection is active. Despite the similarities with email, MOM is not e-mail. E-mail is a system for moving text messages and attachments to human consumers. MOM is for moving messages containing arbitrary data between computer programs. An implementation of an E-mail system could be realized using MOM, however.

This invention pertains specifically to the case where an intermediary message server in employed to store and distribute messages. Although the senders and receivers (collectively referred to as clients) are loosely coupled with each other when communicating via MOM, the intermediary message servers are normally required to communicate with these clients in a connection-oriented fashion. Thus permitting senders and receivers to communicate without both being available at the same time requires the server to be available at all times. Furthermore all clients who may wish to exchange messages must be connected to the same server, or different servers which are capable or working together in a connection-oriented fashion to achieve the equivalent functionality of a single server, i.e. to serve as a single logical server. MOM is often used in systems in which a large number of servers have to serve as one logical server, as one of the reasons for employing MOM is to alleviate the requirement of defining which programs may exchange data with each other a priori. This means that large organizations that use MOM for computer applications distributed throughout the organization, or organizations that use MOM to provide service to the general public over the internet, must be ready to accommodate many thousands of programs communicating through a single logical server. In addition, there may be demands to be able to deliver messages within a limited amount of time. Security trading, live online auctions and chat rooms are examples of potential MOM applications that have restriction on the amount of time required to deliver messages. These factors combine to create the need for MOM servers that can handle large message volumes quickly and reliably.

The following factors dictate the need for a single logical message server that is implemented using the combined resources of multiple physical computers in order to meet the needs of the most demanding MOM applications: There are inherent limits on the amount of message throughput that can be achieved with a message server running on a single computer. The possibility of hardware failure results in the need for redundant computer hardware containing identical copies of all critical data at all times. A group of inexpensive computers may be able to provide a required level of functionality more cost effectively that a single large computer.

In the context of this document, we will define a cluster as a group of computers that work together to provide a single service with more speed and higher reliability than can be achieved using a single computer.

A critical measure of the effectiveness of a cluster is scalability. Scalability can generally defined as the degree to which increased functionality is achieved by employing additional resources. The uniqueness of this invention is the way in which it addresses the scalability issues of message server clustering. The specific aspects of scalability that it addresses are: Scalability with respect to performance: This is the degree to which adding additional computers to the cluster can increase the amount of data that can be delivered with in a time period, or the speed at which an individual message can delivers to its destinations. Scalability with respect to connections: Each active connection to the cluster consumes a certain amount of system resources, placing a limit on the number of connections that can be active at one time, even if these connections are not used to transfer significant amounts of data. This describes the degree to which adding additional computers to the cluster increases the number of simultaneous active connections that are possible. Scalability with respect to redundancy: This is the degree to which adding additional computers to the cluster can increase the redundancy, and therefore the reliability of the cluster, especially with regard to data storage. If each piece of data is copied onto two different computers, then any one computer can fail without causing data loss. If each piece of data is copied onto three different computers, then any two computers can fail without causing data loss. Etc. Scalability with respect to message storage: This is the ability to increase the total storage capacity of the cluster by adding more machines. A clustering scheme that requires all computers in the cluster to store all messages cannot scale its storage capacity beyond the storage capacity of the least capable computer in the cluster. Scalability with respect to message size: This concerns the maximum limit on the size of a single message. Unlike the other aspects of Scalability, this is not related to the number of computers in the cluster. Conventional message server solutions cause the maximum message size to be determined by the amount or working memory (RAM) available in the computers that handle the message, when other aspects of the implementation do not limit it to be even less than that. This invention alleviates this restriction and allows maximum message size to be limited only by the amount of mass storage (hard disk capacity) available on each computer.

Messaging cluster implementations according to the state of the art are mere extensions of servers architected to run on a single computer. Each computer in the cluster is a complete server, with extensions that allow it to work together with other servers in the cluster. In order to insure that all messages are available to all potential receivers, all servers in the cluster must share information about the existence of messages and/or the existence of receivers with all other servers in the cluster. The current state of the art in reliable network communications is unicast (point-to-point) network connections. The use of unicast to exchange data between all possible pairs of computers in the cluster results in inefficient usage of the communications network that severely limits Scalability. In a cluster of N servers, each piece of information that a server must share with all other servers in the cluster must be sent N-1 times across the same communication network. This means that adding additional servers to the cluster causes more communications network capacity to be used, even when the actual data rate does not change. This does not scale well, since adding large numbers of servers to a cluster will cause the communication network to become saturated, even with small numbers of senders and receivers, and low message volumes.

SUMMARY OF THE INVENTION

It is thus an objective of the invention to deliver a system and a method for delivering data using MOM which overcomes drawbacks of existing systems and methods and which specifically provides a highly scalable message server.

This objective is achieved by the invention as defined in the claims.

According to the invention different functions are assigned to different computers in the cluster. The programs running on each individual computer cannot, and need not, operate as a complete server. This actually eliminates the need for all computers in the cluster to communicate with all other computers in the cluster. Additionally, a reliable multicast (point to multipoint) protocol is employed to further reduce the need for identical data be sent multiple times across the same communications network.

The invention thus defined uses a unique cluster design to achieve a higher degree of scalability than has been previously possible with this type of server. The cluster is designed to scale well with respect to number of connections, message volume, and reliability. This means that the capacity of the cluster in each of these areas will increase as more machines are added to the cluster. In addition it is designed to be scaleable with respect to message size, in that it will not fail to operate with messages of arbitrarily large size.

The cluster consists of two distinct types of nodes. These can be visualized as forming 2 layers, with each layer consisting exclusively on one type of node. The top layer is reachable by messaging clients and consists of Connection Manager (CM) nodes. CM's are responsible for managing all activities that are specific to client connections. The lower layer consists of nodes of type Message Manager (MM). MM's have no direct contact with clients and are responsible for managing all activities that are specific to message storage and distribution.

In order to connect to the cluster, a client must connect to one of the CM's. All of CM's in a cluster are interchangeable. A client will get the exact same service from the cluster, regardless of which CM is connects to. The CM is responsible for managing client connections, client authentication, access control, forwarding messages from producer clients to the MM and forwarding messages from the MM to a consuming client. As stated above, all of the CM's are interchangeable, and additional CM's can be added to increase the total number of clients that can be served by the cluster. If a CM fails, the clients that were previously connected to that CM may reconnect to another CM and continue functioning without any loss of service.

Messages are stored in a destination until they are consumed. The destination can be a queue or a topic, depending on the actual service desired. These terms are defined in the JMS specification. Each destination exists on one or more MM's. When a destination exists on more than one MM, one of them is designated as the primary and is responsible for providing all of the services of the destination. All others MM's containing that destination are backups, which maintain the same state as the primary, but do not provide any services unless the primary fails to function. Increasing the number of MM's increases the capacity of the cluster to store messages and increases the number of destinations that can be accomidated. Increasing the number of MM's also permits an increase in the number of backup MM's, which decreases the likelihood of loosing data if multiple nodes fail simultaneously.

In order to assure that all clients can send messages to, and receive from, all destinations, it is necessary that all CM's can communicate with all MM's, and vice versa. It is not necessary for CM's to directly communicate with other CM's. It is not necessary for MM's to communicate with each other directly, except for communication between primaries and their corresponding backups. This reduces the number of connections that must be maintained between node by half, compared to traditional cluster designs that require all nodes to be connected to each other. As discussed below, the use of multicast communication removes the need for point to point connections between nodes entirely. Despite this, the fact that not all pairs of nodes require direct communications still provides benefit because it allows a lot of freedom in creating partitioned network topologies that prevent network communication from becoming the bottleneck that limits the performance of the cluster. (See Drawing 2: Alternate Network Topologies)

The transfer of data between CM's and MM's is achieved using a reliable multicast protocol. Multicast protocols are different than unicast (point to point communication) protocols in that they enable one piece of data to be distributed to multiple machines across a network without have to send that same data over the same network multiple times. It is different than broadcast protocols in that it does not require the data to be distributed to all computers on the local network. Multicast is the most efficient means of distributing identical data to a limited number of computers on the same local area network. The preferred embodiment of this invention uses the reliable multicast communication protocol provided by the product iBus//MessageBus from Softwired.

Since data is distributed via multicast, the primary and backup MM's can receive the same data without incurring significantly more network traffic than there would be if no backups were present. This means that the cluster can have as many backups as desired, resulting in no limit on the Scalability of storage redundancy. The cluster does not, however, require that all machines store all messages, which would limit the Scalability of cluster storage capacity.

The unique aspect of this invention is its ability to provide the function of single logical message server, while providing a high degree of scalability in all of the following respects: Scalability with respect to performance: Load balancing permits performance to scale as the number of nodes is increased. Different clients the connect to different CM's and exchange messages over different destinations must not access the same nodes at the same time, thus all operations done by the cluster on behalf of these clients may execute in parallel. Limits are imposed when many clients compete for resources of the same CM or the same MM (too much load on one destination), as well as by the data network that interconnects the cluster. When the cluster is deployed with: client applications that distribute load evenly over many destinations; client connection logic that distributes clients evenly over CM's and network topologies that permit maximal parallel data transfer between CM's and MM's, then there is no fixed limit in performance. Scalability with respect to connections: The number of connections that may be maintained scales linearly with the number of CM's. This means that if each CM can handle n connections, then m CM's can handle m.times.n connections. The number of CM nodes may be increased independently of the number of MM nodes. Scalability with respect to redundancy: The use of multicast data communication allows backup nodes maintain data synchronization with their primary node without adding load to the primary or consuming additional network bandwidth This means that a cluster may be deployed with as many redundant backups as desired, without a significant impact on cluster performance. Scalability with respect to message storage: On a single node, message storage is limited by the amount of mass storage (hard disk space) that can be attached to that node, as well as the speed at which data can be transferred to and from that mass storage. This cluster design does not require all MM nodes to store all data. Each primary MM stores different data, and the total amount of storage capacity scales linearly with the number of primary MM nodes, assuming all MM nodes have the same storage capacity and the client application is effective in distributing load evenly across destinations. Scalability with respect to message size: Message size is unrelated to the number of nodes in the cluster, but avoiding a fixed limit on the maximum size is also an important scalability issue. This cluster design allows clients to send messages that are located only in mass storage. The message is read from mass storage in chunks, with each chunk being sent to a CM and forwarded to an MM where it is placed back into mass storage. The first chunks of the message may be written to mass storage in the MM before the last ones are read from mass storage in the client. Transfer of messages from a MM to a consuming client happens in the same fashion. The result of this is that no message will cause cause capacity limits to be exceeded, and messages that are extremely large will not degrade performance for other messages that are transferred at the same time.

An additional important feature of this invention is that it does not possess a single point of failure. The failure of any single function in the cluster will not cause the entire system to become inoperative. Many other systems that provide some form of fault tolerance still have dependencies on some system aspect whose failure will render the entire system unusable.

According to a preferred embodiment, the system and the method are set up in a design allowing to accommodate programs that send and receive messages using the Java Message Service (JMS) application programming interface published by Sun Microsystems Inc. The definition of this interface is available at http://java.sun.com/products/jms/docs.html.

BRIEF DESCRIPTION OF THE DRAWINGS

In the following, preferred embodiments of the invention are described with reference to drawings. In the drawings,

Drawing 1 shows a typical message system configuration with multiple instances of each type of node: CM, MM primary, MM backup.

Drawing 2 shows a message system similar to the one of Drawing 1, but with two examples of more complex network structures used to interconnect the nodes of the cluster, which structures allow increased network capacity,

Drawing 3 represents the internal detail of a Client Manager (CM) node, and

Drawing 4 shows the internal detail of a Message Manager (MM) node.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

The structure of a complete message system in shown in Drawing 1. In the drawing, the cluster is represented by a dashed box. The cluster comprises a number of individual machines called nodes. Each node runs a program that constitutes one part of the cluster. There are two types of nodes: Message Manager MMa, MMb and Client Manager CM. A cluster consists of one or more CM'S and one or more MM's. The CM's are responsible for managing client connections. The MM's are responsible for storing messages. The Message Managers of drawing 1 serve different functions. Some Message Managers (MMa Primary, MMb Primary in the drawing) serve as primaries and are responsible for providing all the services of the destination. Other Message Managers (MMa Backup, MMb Backup) serve as backup servers and contain the same destinations as a primary server. The backup servers do not provide any services unless their primary server fails to function. Also in Drawing 1, the network structure of the cluster is visible. This structure is in striking contrast to clusters according to the state of the art, where there are connections from every server to any other server, thus leading to a n.sup.2-scaling. In the cluster of drawing 1, a Multicast MessageBus is provided, which connects to every Client Manager and connects to every Message Manager. Therefore, the number of connections scales linearly with the number of servers. By listening to the messages sent via the Multicast MessageBus, the Backup servers maintain the same state as their primary. The clients, of which an arbitrary number can be present, are denoted in the Figure by a "C" enclosed by a triangle. Each of the clients C connects to one client server CM.

Drawing 2 shows two examples of the system of Drawing 1 with some modifications in the network structure. Here, only the differences are described. Instead of one Multicast MessageBus, two MessageBuses are present. This is of course only an example, in practice, any number of MessageBuses may be chosen, the number being adaptable to the specific system. As can be seen in the drawing, each Message Manager (top half of drawing 2) or each Client Manager (bottom half of drawing 2) is connected to but one MessageBus, respectively. On the other hand, each Client Manager (top half of drawing 2) or each Message Manager (bottom half of drawing 2) is connected to all MessageBuses. It is important, though, that in any case a Primary Message Manager is connected to the same MessageBus(es) as its backup Message Manager. Network structures as the one shown in drawing 2 allow to increase the network speed, since they eliminate the bottleneck of the single MessageBus. It should be noted that such network structures are only possible because not all nodes are required to communicate directly with each other, i.e. they are only possible in a structure according to the invention.

In the following, the architecture of an individual node is described in more detail with reference to drawing 3, which shows a the architecture of a client manager, and drawing 4 representing the architecture of a message manager. In particular, diagrams 3 and 4 show block diagrams of both the CM and MM nodes, respectively. The architecture at the level shown in the diagrams is very similar for both node types, and they share many common components. Thus, elements occurring in both node types will be described only once. Much of the application specific functionality (the so called `business logic`) is encapsulated in the Session Task of the CM and the Destination Task of the MM. This functionality is well defined in the JMS specification and does not contribute significantly to the uniqueness of the invention, Therefore the internal structure of these blocks is not detailed. Each of drawings 3 and 4 shows the individual functional blocks in the node. These are designated by solid boxes. The functional blocks are divided into modules, which are designated by dashed lines. At the same time the drawings show the flow of control with arrows, and the thread structure with gray boxes.

The module structure of the nodes is intended to subdivide each node into smaller pieces. Each module has well defined responsibilities and the interfaces between the modules are well defined and minimal. This approach helps to manage the complexity of the system and facilitates analysis, design, implementation and maintainability. The interaction between clients and CM's, as well as between CM's and MM's is accomplished by sending commands. The most common type of command is one that contains a message to delivered to some other place in the cluster, but there commands to create new sessions, start and stop flow control, commit transactions, etc.

The Core module contains the application specific functionality of the node. These are the session tasks in the drawing 3 and the destination tasks in the drawing 4. In addition the Core contains all other functions which are must respond to or initiate interaction with the clients or with other nodes. In drawing 3 these are the Session Management Tasl, Log Task, Admin Manager Task, Destination Manager Task, Reliability Manager Task and Config Distributer Task. In drawing 4 these are the Destination Manager Task, Admin Manger Task, Config Distributer Task, Reliability Manager Task, and Log Task. These functions are each described in detail in subsequent sections of this document. The Core is where the different threads of the node interact. The threading model is intended to provide optimal concurrency as described later. This is best illustrated by following the typical paths over which commands travel in the system. Command dispatchers are responsible for receiving incoming commands from clients or other nodes. The command dispatchers are designated by boxes with rounded comers. It is important to preserve the overall order of command arrival until the commands are routed to the individual tasks that will act upon them. This is because the order of command execution within each task must be well defined and repeatable. Commands are thus delivered to the command dispatchers in a single thread to preserve this ordering. The Core must be able to accept incoming commands at any time, so this thread has higher execution priority than others in the system, hence the designation Priority Thread. The command dispatcher does little more than placing the command in the synchronized command queue of the appropriate task. It then frees the thread so that it is available to deliver the next incoming command. The synchronized command queues (not to be confused with JMS queues which are a type of destination) are shown as thick arrows in the diagrams. The commands wait in the synchronized command queues until the corresponding thread task is ready to process them. They also provide a clean interface between threads. There is a danger of data corruption when two threads attempt to modify the same data at the same time. Synchronization refers to a lock mechanism that insures that only one thread at a time is accessing the command queue. The individual tasks in the Core modules are also required to send commands to other nodes, and in the case of CM to clients. In this case the commands are passed to the Client I/O or Cluster I/O module for transmission. This is not done via a synchronized queue, as the task must often block awaiting a reply (usually an indication of success or failure) from the I/O module. The corresponding interface of the I/O modules must be synchronized however. The task must only provide the unique destination or session ID (effectively the address) of the intended recipient. The I/O modules takeover responsibility of routing the commands over the correct connection or channel and using the correct protocol. In some cases a task must generate a command destined for another task in the same node. The Inter-Task Dispatcher is provided for this purpose. It has synchronized command queues to and from each task, and eliminates the dangers associated with direct interaction across different threads.

The Cluster I/O Module is contained in both the CM and MM. The Client I/O module is only contained in the CM. As indicated above, the Client I/O and Cluster I/O are responsible for all of the details of communicating with clients and other node, respectively. Each session is associated with a particular connection, and each destination is associated with a channel. There is no need for the Core to know about channels and connections. For the core it is only important to know the type of the command, and when appropriate, which session or destination it is intended for. The I/O modules contain Command Routers that accept incoming commands from channels and connections and pass them to the correct command dispatcher according to their type. When sending outgoing commands, the Core address the command using the session ID or destination ID of the intended recipient. In order to route outgoing commands to the correct channel or connection, each I/O module contains a table mapping Session ID's to Channel ID's (Client I/O) or Destination ID's to Channel ID's (Cluster). The ID's are unique identifiers that are assigned when each entity is created, and are used throughout the life of the entity to perform command routing. In addition the Connection Management and Channel Management functions keep track of all existing connections and channels. If a connection is unexpectedly closed, or a channel member becomes unreachable for some reason, the Connection/Channel Manager can use the Connection/Channel Table to identify which sessions or destinations depend on that connection/channel, and create commands to notify the sessions/destinations of the event.

Each of drawings 3 and 4 show a Services module. These modules contain a collection of generic services that are accessed by the other modules in the same node. In some cases, the services are accessed by so many other functions, that the control flow arrows stop at the module boundary instead of reaching to all of the individual functions. This is intended to keep the drawing from excessively cluttered. In the MM the Services module includes the functions Thread Pool Manager and Global ID Manager. In the CM the Services module contains the functions Thread Pool Manager, Global ID Manager, Access Control, Destination Service, and Transaction Manager. All of these functions are described in detail in other parts of this document.

In order to achieve high scalability, concurrency issues must be properly addressed. Concurrency refers to multiple activities taking place at the same time. A certain degree of concurrency is implicit in cluster because it consists of multiple computers operating at the same time. The messaging cluster described here requires a much higher degree of concurrency than that provided by multiple computers; it requires each CM session and each MM destination to have an independent flow of control. All modern operating systems support multi treading, which permits multiple threads of control within one program. Because there are practical limits on the number of threads that may be active in a program, and this limit will often be less than the number of sessions or destinations present in a node, a thread pooling scheme is employed. The thread pool manages of collection or pool of threads which will not exceed the number of threads the can efficiently coexist in one program. The threads in the pool will be distributed among the sessions or destinations on an as needed basis.

The thread pooling approach described above--in contrast to giving each session a dedicated thread--is crucial for the following reasons: Failure to allow for the proper level of concurrency can cause the entire cluster to exhibit performance degradation due to one overloaded machine or one demanding client, even though enough resources (CPU, memory, bandwidth) would actually be available. Spreading the functionality of the message server over multiple machines gives rise to a number of situations in which the flow of control in one session may block for a relatively long period of time, while other sessions could continue to execute if enough threads of control are available. Examples of these scenarios are: Two Phase Commit: Committing a transacted session that is accessing data from multiple MM's requires a two phase commit protocol (internal to the cluster). This can take a long time to complete, as it requires several round trips of communication between the transaction manager and the transaction resources. Since the scope of a transaction is limited to one session, other sessions should be able to execute uninterrupted during this time. Uneven Load: Despite load balancing efforts, there will be times when individual machines in the cluster will be more heavily loaded that others. Sessions that are accessing data stored exclusively on lightly loaded MM's should not be blocked by sessions that are accessing overloaded MM's. Very Large Messages: Support for very large messages also give rise to situations where one session may need to wait for a very long period of time while bulk data is being transferred. Other sessions should be able to send and receive smaller messages during this time.

Distributing the client connections over many CM processes provides one level of concurrency. As we anticipate typical deployments to have tens of thousands of clients, and only tens of CM in a cluster, this is not enough. We need many threads within each CM. Indeed, according to the JMS specification, one of the reasons that a single client may create multiple sessions is to achieve concurrency, thus it is essential that the CM be multithreaded at the session level and not at the connection level. On the server, each session must effectively have it's own thread in order to fulfill the requirements described above. Since we expect to handle thousands sessions on each CM, it is therefore not practical to give each session a dedicated thread and to use thread pooling instead.

These arguments apply to the MM as well, except that the unit of concurrency is the destination. Each destination must maintain a well-defined message order, which precludes concurrently executing the commands for one destination. The actions of sessions that interact with common destinations will become at least partially serialized, but sessions that do not access common destinations should be able to interleave their operation without restriction.

In the following, some elements of the node architecture appearing in drawing 3 and drawing 4 and especially the requirements they have to meet are described in more details.

Client I/O and Cluster I/O modules:

These modules decouple the server core from the communications infrastructure. The I/O subsystems serve to hide communication functionality from the core server and help divide functionality more cleanly into separate modules. The specific responsibilities of the I/O subsystems are: Hiding Connection/Channel details: The functionality of the CM core revolves around the session object. JMS inherently groups together sessions by connection, but connections are a concept of remote communication only. Thus the client I/O subsystem can completely hide the connection details from the rest of the server. It takes on full responsibility for opening and closing connections, as well as storing all state and properties associated with the connection itself. It must, as well, provide a means to map session ID's to connections so that the session objects can communicate with their corresponding clients without the need to maintain connection information themselves. Likewise the Cluster I/O hides all details of the channels (ibus topics) used to communicate with the MM's and provides a mapping from destination ID to channel. Authentication: This is the act of verifying the identity of the client using name and password or a digital certificate. This is primarily relevant for Client I/O, but could be extended to Cluster I/O if there is a requirement to insure the identity of nodes joining the cluster. (This level of control is expect


Free Web Sudoku Puzzles.
Solve with your browser.
  4   2     7    
1 9   6          
          7 5 4  
  8     9        
9   3       6   5
        6     8  
  7 2 3          
          6   3 7
    5     4   9  
What is it?



Add Your Site · Terms Of Service · Privacy Policy


DISCLAIMER
Linkgrinder is a free service that searches the Internet and indexes all files found so that you may search quickly and easily for shared files. These files are created and made available individually by users whose identity we are not aware of and who we have no control over. In essence we function like a search engine tool; these files ARE NOT STORED OR SERVED BY OUR NETWORK. We are not responsible for any materials obtained by using our service. We do not monitor any of the contents of these files. These files may contain viruses, illegal materials, materials inappropriate for minors, offensive files and the like. BY USING OUR SERVICE, YOU ASSUME FULL RESPONSIBILITY FOR DOWNLOADING THESE MATERIALS AND WILL INDEMNIFY US FOR ANY DAMAGES THAT MAY BE INCURRED.

For More Specific Information VIEW OUR TERMS OF SERVICE.

Thank you and Enjoy!