1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220
|
<?xml version="1.0" standalone="no"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
"../../../../docbook-support/support/docbook-dtd/docbookx.dtd" [
<!ENTITY overview SYSTEM "modules/overview.xml">
<!ENTITY blocks SYSTEM "modules/blocks.xml">
<!ENTITY protocols SYSTEM "modules/protocols.xml.tmp">
<!ENTITY installation SYSTEM "modules/installation.xml.tmp">
<!ENTITY api SYSTEM "modules/api.xml">
<!ENTITY advanced SYSTEM "modules/advanced.xml">
<!ENTITY writing SYSTEM "modules/writing.xml">
]>
<book>
<bookinfo>
<title>Reliable Multicasting with the JGroups Toolkit</title>
<pubdate>Jan 2011</pubdate>
<authorgroup>
<author>
<firstname>Bela</firstname>
<surname>Ban</surname>
<affiliation>
<orgname>
<ulink url="http://www.jgroups.org/">JGroups Project</ulink>
</orgname>
<address>
<email>belaban@yahoo.com</email>
</address>
</affiliation>
</author>
</authorgroup>
<copyright>
<year>1998-2006</year>
<holder>Bela Ban</holder>
</copyright>
<copyright>
<year>2006-2011</year>
<holder>Red Hat Inc</holder>
</copyright>
<legalnotice>
<para>This document is licensed under the
<ulink url="http://creativecommons.org/licenses/by-sa/3.0/us/legalcode">
Creative Commons Attribution-ShareAlike (CC-BY-SA) 3.0
</ulink>
</para>
</legalnotice>
</bookinfo>
<preface>
<title>Foreword</title>
<para>This is the JGroups manual. It provides information about:
<orderedlist>
<listitem>
<para>Installation and configuration</para>
</listitem>
<listitem>
<para>Using JGroups (the API)</para>
</listitem>
<listitem>
<para>Configuration of the JGroups protocols</para>
</listitem>
</orderedlist>
</para>
<para>
The focus is on how to <emphasis>use</emphasis> JGroups, not on how JGroups is implemented.
</para>
<para>Here are a couple of points I want to abide by throughout
this book:
<orderedlist>
<listitem>
<para>I like brevity. I will strive to describe concepts as
clearly as possible (for a non-native English speaker) and will
refrain from saying more than I have to to make a point.</para>
</listitem>
<listitem>
<para>I like simplicity. Keep It Simple and Stupid. This is
one of the biggest goals I have both in writing this manual
and in writing JGroups. It is easy to explain simple
concepts in complex terms, but it is hard to explain a
complex system in simple terms. I'll try to do the
latter.</para>
</listitem>
</orderedlist>
</para>
<bridgehead>So, how did it all start?</bridgehead>
<para>I spent 1998-1999 at the Computer Science Department at
Cornell University as a post-doc, in Ken Birman's group. Ken is
credited with inventing the group communication paradigm,
especially the Virtual Synchrony model. At the time they were
working on their third generation group communication prototype,
called Ensemble. Ensemble followed Horus (written in C by Robbert
VanRenesse), which followed ISIS (written by Ken Birman, also in
C). Ensemble was written in OCaml, developed at INRIA, and is a
functional language and related to ML. I never liked the OCaml
language, which in my opinion has a hideous syntax. Therefore I
never got warm with Ensemble either.</para>
<para>However, Ensemble had a Java interface (implemented by a
student in a semester project) which allowed me to program in Java
and use Ensemble underneath. The Java part would require that an
Ensemble process was running somewhere on the same machine, and would connect to it via a
bidirectional pipe. The student had developed a simple protocol
for talking to the Ensemble engine, and extended the engine as
well to talk back to Java.</para>
<para>However, I still needed to compile and install the Ensemble
runtime for each different platform, which is exactly why Java was
developed in the first place: portability.</para>
<para>Therefore I started writing a simple framework (now
<classname>JChannel</classname>
), which would allow me to treat
Ensemble as just another group communication transport, which
could be replaced at any time by a pure Java solution. And soon I
found myself working on a pure Java implementation of the group
communication transport (now:
<classname>ProtocolStack</classname>
). I figured that a pure Java
implementation would have a much bigger impact that something
written in Ensemble. In the end I didn't spend much time writing
scientific papers that nobody would read anyway (I guess I'm not a
good scientist, at least not a theoretical one), but rather code
for JGroups, which could have a much bigger impact. For me,
knowing that real-life projects/products are using JGroups is
much more satisfactory than having a paper accepted at a
conference/journal.
</para>
<para>That's why, after my time was up, I left Cornell and
academia altogether, and started a job in the industry: with
Fujitsu Network Communications in Silicon Valley.</para>
<para>At around that time (May 2000), SourceForge had just opened
its site, and I decided to use it for hosting JGroups. I guess
this was a major boost for JGroups because now other developers
could work on the code. From then on, the page hit and download
numbers for JGroups have steadily risen.</para>
<para>
In the fall of 2002, Sacha Labourey contacted me, letting me know that JGroups was being used by JBoss for
their clustering implementation. I joined JBoss in 2003 and have been working on JGroups and JBossCache. My
goal is to make JGroups the most widely used clustering software in Java ...
</para>
<para>Bela Ban, San Jose, Aug 2002, Kreuzlingen Switzerland 2006</para>
</preface>
<preface>
<title>Acknowledgments</title>
<para>I want to thank all contributors to JGroups, present and
past, for their work. Without you, this project would never have
taken off the ground.</para>
<para>I also want to thank Ken Birman and Robbert VanRenesse for
many fruitful discussions of all aspects of group communication in
particular and distributed systems in general.</para>
<para>I want to dedicate this manual to Jeannette and Michelle.</para>
</preface>
&overview;
&installation;
&api;
&blocks;
&advanced;
&writing;
&protocols;
<bibliography>
<bibliomixed id="Ensemble:1997">
<title>The Ensemble Distributed Communication System</title>
,
<orgname>CS Dept Cornell University</orgname>
,
<pubdate>1997</pubdate>
.
<releaseinfo>
<ulink
url="http://www.cs.cornell.edu/Info/Projects/Ensemble/index.html"/>
</releaseinfo>
.
</bibliomixed>
<bibliomixed id="Gamma:1995">
<firstname>Erich</firstname>
<surname>Gamma</surname>
,
<firstname>Richard</firstname>
<surname>Helm</surname>
,
<firstname>Ralph</firstname>
<surname>Johnson</surname>
, and
<firstname>John</firstname>
<surname>Vlissides</surname>
.
<title>Design Patterns: Elements of Reusable Object-Oriented
Software</title>
.
<publishername>Addison-Wesley</publishername>
,
<pubdate>1995</pubdate>
.
</bibliomixed>
</bibliography>
</book>
|