[jboss-cvs] JBoss Messaging SVN: r1398 - in trunk/docs: . clustering clustering/en clustering/en/modules
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Sep 29 10:02:12 EDT 2006
Author: timfox
Date: 2006-09-29 10:02:09 -0400 (Fri, 29 Sep 2006)
New Revision: 1398
Added:
trunk/docs/clustering/
trunk/docs/clustering/build.xml
trunk/docs/clustering/en/
trunk/docs/clustering/en/master.xml
trunk/docs/clustering/en/modules/
trunk/docs/clustering/en/modules/about.xml
trunk/docs/clustering/en/modules/configuration.xml
trunk/docs/clustering/en/modules/introduction.xml
trunk/docs/clustering/en/modules/overview.xml
Log:
First pass of clustering guide
Added: trunk/docs/clustering/build.xml
===================================================================
--- trunk/docs/clustering/build.xml 2006-09-29 11:34:42 UTC (rev 1397)
+++ trunk/docs/clustering/build.xml 2006-09-29 14:02:09 UTC (rev 1398)
@@ -0,0 +1,17 @@
+<project name="jbmessaging.documentation.cluster" default="all" basedir=".">
+
+ <property name="build.dir" value="${basedir}/../../output/docs/clustering"/>
+ <property name="pdf.name" value="ClusteringGuide.pdf"/>
+ <import file="${basedir}/../../lib/docbook-support/support.xml"/>
+
+ <target name="all" depends="clean">
+ <mkdir dir="en/images" />
+ <antcall target="lang.all"><param name="lang" value="en"/></antcall>
+ </target>
+
+ <target name="html.doc" description="creates the html docs only and opens a browser">
+ <mkdir dir="en/images" />
+ <antcall target="lang.dochtml"><param name="lang" value="en"/></antcall>
+ </target>
+
+</project>
Added: trunk/docs/clustering/en/master.xml
===================================================================
--- trunk/docs/clustering/en/master.xml 2006-09-29 11:34:42 UTC (rev 1397)
+++ trunk/docs/clustering/en/master.xml 2006-09-29 14:02:09 UTC (rev 1398)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3CR3//EN"
+"../../../lib/docbook-support/support/docbook-dtd/docbookx.dtd" [
+<!ENTITY about SYSTEM "modules/about.xml">
+<!ENTITY introduction SYSTEM "modules/introduction.xml">
+<!ENTITY overview SYSTEM "modules/overview.xml">
+<!ENTITY configuration SYSTEM "modules/configuration.xml">
+]>
+<book lang="en">
+ <bookinfo>
+ <title>JBoss Messaging Clustering Introduction</title>
+
+ <subtitle>A brief guide to clustering in JBoss Messaging</subtitle>
+ <para>Tim Fox</para>
+ </bookinfo>
+
+ <toc></toc>
+
+ &about;
+
+ &introduction;
+
+ &overview;
+
+ &configuration;
+
+</book>
Added: trunk/docs/clustering/en/modules/about.xml
===================================================================
--- trunk/docs/clustering/en/modules/about.xml 2006-09-29 11:34:42 UTC (rev 1397)
+++ trunk/docs/clustering/en/modules/about.xml 2006-09-29 14:02:09 UTC (rev 1398)
@@ -0,0 +1,26 @@
+<chapter id="about">
+
+ <title>JBoss Messaging Clustering Introduction</title>
+
+ <para>
+ This guide gives a brief overview of the features available in JBoss Messaging Clustering Alpha 1
+ </para>
+
+ <para>
+ It also gives a high level explanation of how clustering works and shows you how to set up a simple
+ cluster of JBoss Messaging servers.
+ </para>
+
+ <para>
+ This guide is work in progress.
+ </para>
+
+ <para>It will expand considerably before the 1.2 GA release.
+ </para>
+
+ <para>
+ Please send your suggestions or comments to the
+ <ulink url="http://www.jboss.org/index.html?module=bb&op=viewforum&f=238">JBoss Messaging user forum</ulink>.
+ </para>
+
+</chapter>
Added: trunk/docs/clustering/en/modules/configuration.xml
===================================================================
--- trunk/docs/clustering/en/modules/configuration.xml 2006-09-29 11:34:42 UTC (rev 1397)
+++ trunk/docs/clustering/en/modules/configuration.xml 2006-09-29 14:02:09 UTC (rev 1398)
@@ -0,0 +1,6 @@
+<chapter id="configurarion">
+
+ <title>JBoss Messaging Clustering Configuration</title>
+
+
+</chapter>
Added: trunk/docs/clustering/en/modules/introduction.xml
===================================================================
--- trunk/docs/clustering/en/modules/introduction.xml 2006-09-29 11:34:42 UTC (rev 1397)
+++ trunk/docs/clustering/en/modules/introduction.xml 2006-09-29 14:02:09 UTC (rev 1398)
@@ -0,0 +1,138 @@
+<chapter id="introduction">
+
+ <title>Introduction</title>
+
+ <para>
+ JBoss Messaging 1.2 GA will provide a highly sophisticated clustering implementation, far more sophisticated than you'll find in the vast
+ majority of other messaging systems.
+ </para>
+ <para>
+ It will allow you to smoothly distribute your application load across your cluster, intelligently balancing and utilising each nodes
+ CPU cycles, with no single point of failure, providing a highly scalable and performant clustering implementation.
+ </para>
+
+ <section id="features">
+ <title>JBoss Messaging 1.2 GA features:</title>
+
+ <para>
+ JBoss Messaging 1.2 GA Clustering will provide the following features:
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ Distributed queues. Messages sent to a distributed queue while attached to a particular node will be routed
+ to a queue instance on a particular node according to a routing policy
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Distributed topics. Messages sent to a distributed topic while attached at a particular node will be received by subscriptions on other nodes.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Fully reliable message distribution. Once and only once delivery is fully guaranteed.
+ When sending messages to a topic with multiple durable subscriptions
+ across a cluster we guarantee that message reaches all the subscriptions (or none of them in case of failure).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Persistent level reliability guarantee without persistence! By replicating persistent messages between nodes in memory,
+ we can obtain comparable reliability levels to persistenting messages to disk, without actually storing them to disk.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Pluggable routing implementation. The policy for routing messages to a queue is fully pluggable and easily replaceable.
+ The default policy always chooses a queue at the local node if there is one, and if not, it round robins between queues on different nodes.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Intelligent message redistribution policy. Messages are automatically distributed between nodes depending on how fast or slow consumers are on certain nodes.
+ If there are no or slow consumers on a particular queue node, messages will be pulled from that queue to a queue with faster consumers on a different node.
+ The policy is fully pluggable.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Shared durable subscriptions. Consumers can connect to the same durable subscription while attached to different nodes.
+ This allows processing load from durable subscriptions to be distributed across the cluster in a similar way to queues.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ High availability and seamless failover.
+ If the node you are connected to fails, you will automatically fail over to another node and will not lose any
+ persistent messages.
+ You can carry on with your session seamlessly where you left off.
+ Once and only once delivery of persistent messages is respected at all times.
+ </para>
+ </listitem>
+ </itemizedlist>
+
+
+ </section>
+
+ <section id="alphafeatures">
+ <title>JBoss Messaging 1.2 Alpha 1 features:</title>
+
+ <para> What's in the Alpha 1 release?</para>
+
+ <para>
+ JBoss Messaging Alpha 1, is the first experimental release of the JBoss Messaging clustering functionality.
+ </para>
+
+ <para>
+ Please note that this is an Alpha and will contain bugs!
+ We are releasing it to the community, so you can try it out, get familiar with it and feedback your experiences to us so we can improve it and stabilise it.
+ </para>
+
+ <para>
+ Thanks for your support!
+ </para>
+
+ <para>
+ This release does not have the full clustering functionality that will be available in 1.2 GA.
+ </para>
+
+ <para>
+ All the final features are available apart from:
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ High availability. There is no seamless failover in alpha. If you are attached to a particular node and it crashes, then you will not fail over
+ onto another node.
+ </para>
+ <para>
+ There is no HA JNDI support in alpha - when connecting to a particular node you must correct directly to JNDI at the node of interest.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Persistent level reliability guarantee without persistence. There is no option for in memory replication of persistent messages in Alpha.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Intelligent message distribution is available but disabled in the default configuration because it is currently unstable.
+ Stability should increase over the next few weeks.
+(For intrepid explorers - it is very straightforward to enable this if you wish - see the configuration section - but watch out for unpredictable results.)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Bear in mind you will need to get a bit more "down and dirty" with the configuration in this release, than you would with a GA release.
+ </para>
+
+ </section>
+
+</chapter>
Added: trunk/docs/clustering/en/modules/overview.xml
===================================================================
--- trunk/docs/clustering/en/modules/overview.xml 2006-09-29 11:34:42 UTC (rev 1397)
+++ trunk/docs/clustering/en/modules/overview.xml 2006-09-29 14:02:09 UTC (rev 1398)
@@ -0,0 +1,129 @@
+<chapter id="overview">
+
+ <title>Clustering overview</title>
+
+ <section id="description">
+ <title>JBoss Messaging Clustering Overview</title>
+
+ <para>
+ Here's a brief overview of how clustering works in JBoss Messaging 1.2.
+ </para>
+
+ <para>As mentioned in the previous chapter, please note that not all this functionality is
+ available in this release.
+ </para>
+
+ <para>
+ Clustered destinations (queues and topics) can be deployed at all or none of the nodes of the cluster.
+ </para>
+
+ <para>
+ A JMS client uses HA JNDI to lookup the connection factory. A client side load balancing policy will automatically chose a node to connect to (This is similar to
+ how EJB clustering chooses a node).
+ </para>
+
+ <para>
+ The JMS client has now made a connection to a node where it can create sessions, message producers and message consumers and browsers and send or consume messages,
+ using the standard JMS api.
+ </para>
+
+ <para>
+ When a distributed queue is deployed across the cluster, individual partial queues are deployed on each node.
+ </para>
+
+ <para>
+ When a message is sent from a message producer attached to a particular node to a distributed quueue, a routing policy determines which partial queue will receive
+ the message.
+ </para>
+
+ <para>
+ By default the router will always pass the message to a local queue, if there is one, this is so we avoid unnecessary network traffic.
+ </para>
+
+ <para>
+ If there is no local queue
+ then a partial queue on a different node will be chosen by the router, by default this will be round robin between remote partial queues.
+ </para>
+
+ <para>
+ When a message is sent to a distributed topic while attached to a node, there may be multiple subscriptions on different nodes that need to receive the
+ message.
+
+ Depending on the number and location of subscriptions, the message may be multicast or unicast across the cluster so the other nodes can pick it up.
+ </para>
+
+ <para>
+ All group communication, unicast, multicast and group management is handled by JGroups.
+ </para>
+
+ <para>
+ In the case of shared durable subscriptions, if a durable subscription with the same name exists on more than node, then only one of the instances needs to
+ receive the message.
+ </para>
+
+ <para>Which one is determined by the same routing policy used to route messages to partial queues.</para>
+
+ <para>
+ All of this is accomplished without losing the reliability guarantees required by JMS.
+ </para>
+
+ <para>
+ Subscriptions (both durable and non durable) can be created on all nodes and will receive messages sent via any node.
+ </para>
+
+ <para>
+ What happens if the consumers on one queue/subscription are faster/slower than consumers on another?
+ </para>
+
+ <para>
+ Normally this would result in messages building up on that queue and fast consumers being starved of work on another, thus wasting CPU cycles on the node that
+ could be put to good use.
+ </para>
+
+ <para>
+ The most degenerate example is of a queue containing many messages then the consumers being closed on that queue.
+
+ The messages might potentially remain stranded on the queue until another consumer attaches.
+ </para>
+
+ <para>
+ A routing policy is no use here, since the messages have already been routed to the queuee and the consumers closed / slowed down
+ after they were routed there.
+
+ </para>
+
+ <para>
+ JBoss Messaging deals with this problem by intelligently pulling messages from other less busy nodes, if it detects idle consumers on the fast node and slow consumers
+ on another node. (Please note that this functionality is currently unstable in the Alpha1 release).
+ </para>
+
+ <para>
+ Another feature (not available in alpha 1) that will enable very fast, very scalable reliable messaging without using databases is in memory replication
+ of reliable messages.
+ </para>
+
+ <para>
+ Normally, persistent messages are persisted in a shared database which is shared by all nodes in the cluster.
+
+ JBoss Messaging 1.2.GA will contain
+ an option where you can choose to not persist persistent messages in a database, but instead to replicate them between nodes of the cluster.
+ </para>
+
+ <para>
+ The idea here is the network IO on a fast network should be much faster than persisting to disk.
+ </para>
+
+ <para>
+ This solution should also be more scalable since different nodes replicate their messages onto
+ different other nodes - there is no "master node".
+ </para>
+
+ <para>
+ If the messages are replicated onto suffficient nodes and the hardware is set-up with UPS, then we believe a comparable reliability guarantee to persisting messages to disk
+ can be achieved.
+
+ Of course, this won't be suitable for all situations, but you use the best tool for the job.
+ </para>
+
+ </section>
+</chapter>
More information about the jboss-cvs-commits
mailing list