comparison docs/blitz.html @ 0:3dc0c5604566

Initial checkin of blitz 2.0 fcs - no installer yet.
author Dan Creswell <dan.creswell@gmail.com>
date Sat, 21 Mar 2009 11:00:06 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:3dc0c5604566
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2 <html>
3 <head>
4
5
6
7 <title>Blitz Overview</title>
8 </head>
9
10
11 <body>
12
13
14
15
16 <h1>Blitz - Javaspaces Made Simple</h1>
17
18
19
20 <p>The <a href="http://www.dancres.org/blitz/index.html">Blitz</a> JavaSpaces<sup>TM</sup>
21 implementation aims to provide a rich set of features to make the
22 development &amp; deployment of JavaSpaces technology easier, more
23 efficient and more fun to experiment with.
24 </p>
25
26
27 <p>The Blitz Project is the first <a href="http://www.jini.org/">Jini<sup>TM</sup></a> 2.x compliant JavaSpace to be made available under an <a href="http://www.opensource.org/">OpenSource</a> <a href="LICENSE.TXT">license</a>.</p>
28
29
30
31 <h2>Key features</h2>
32
33
34
35 <ul>
36
37
38 <li>Ease of installation.</li>
39
40
41
42 <li>Jini 2.x enabled.</li>
43
44
45
46 <li>Use of established VM principles.</li>
47
48
49
50 <li>Smart indexing.</li>
51
52
53
54 <li>Tuneable persistence.</li>
55
56
57
58 <li>Tools.</li>
59
60
61
62 <li>Entry Browsing.</li>
63
64
65
66 <li>Embeddable Space support.</li>
67
68
69
70 <li>Active/Passive/Manual lease cleanup.</li>
71
72
73
74 <li>Built for experimentation and expansion.</li>
75
76
77
78 <li>Easy integration with the Inca X IDE &amp; Runtime Environment.</li>
79
80
81 </ul>
82
83
84
85
86 <h3>Ease of installation</h3>
87
88 Blitz aims to make installation simpler by not relying on other visible
89 services such as RDBMS products (which tend to require significant
90 admininistration knowledge of both the RDBMS and the OS) and providing
91 default configurations which make it useful out of the box.
92
93 <h3>JINI 2.x Enabled</h3>
94
95
96
97 First-class support for a variety of security configurations and deployment environments.
98
99 <h3>Use of established VM Principles</h3>
100
101
102
103 <p>Blitz's central abstraction for Entry storage is based on the
104 classic Virtual Memory (VM) concept such that a set of Entry's are
105 cached in memory at any one time and then paged, as required, according
106 to an algorithm which typically bases it's decisions on usage patterns.
107 &nbsp;In addition, readahead can be supported such that we can fault in
108 a collection of potentially matching Entry's when the cache has
109 provided no suitable candidates.
110 </p>
111
112
113
114 <p>This re-use of an OS concept allows Blitz to take advantage of a
115 huge body of existing research with respect to effective caching in the
116 face of varying application behaviour (some will have hotspots, some
117 will be random, some will reference things strictly in order).</p>
118
119
120
121 <p>Different JavaSpace applications will have common sets of behaviour
122 from a cache usage perspective. Blitz architecture makes it possible to
123 support several different cache management strategies and allow an
124 astute user to pick the one most suited to their application behaviour.
125 </p>
126
127
128
129 <h3>Smart Indexing</h3>
130
131
132
133 <p>Blitz uses on disk and in-memory Entry storage, which is fully indexed automatically and keeps search times to a minimum.
134 </p>
135
136
137
138 <h3>Tunable persistence</h3>
139
140
141
142 <p>Disk space is now cheap &amp; efficient both in speed and
143 reliability which reduces the motivation for developing a memory-only
144 JavaSpace. The basic performance limit for a persistent space is
145 related to guarenteeing consistency which is determined by the speed
146 with which a system can force log entries to disk. Blitz tackles these
147 problems by providing a range of profiles (Storage Models) giving
148 different tradeoffs between data-integrity and speed.</p>
149
150
151
152 <ul>
153
154
155 <li>VM-style caching with full consistent logging to ensure all changes are durable - full persistence.</li>
156
157
158
159 <li>VM-style caching with periodic flushing (after x seconds) - ensuring all changes x seconds ago are persistent.</li>
160
161
162
163 <li>VM-style caching with no logging - if your cache is big enough to
164 hold the working-set of Entry's for your application, no paging occurs
165 so all work is performed in memory with no disk access required -
166 transient.</li>
167
168
169 </ul>
170
171
172
173 <h3>Tools</h3>
174
175
176
177 A selection of tools are provided to assist developers and administrators:
178
179 <ol>
180
181
182 <li>Dashboard - GUI tool which displays useful information such as
183 the number of instances of each type, number of currently active
184 transactions, operation totals and memory consumption.</li>
185
186
187 <li>SyncAndShutdown - Flushes all updates to disk and shuts down a Blitz JavaSpaces instance.</li>
188
189
190 <li>DumpEntries - Displays the current contents of a Blitz JavaSpaces instance optionally unpacking and displaying each Entry.</li>
191
192
193 <li>Cleanup - Clears all Entry's from the Blitz JavaSpaces instance
194 and removes all schema information allowing for re-definition of Entry
195 structure with no restart required.</li>
196
197
198 <li>EntrySizer - assists in calculating Blitz JVM memory footprint</li>
199
200
201 </ol>
202
203
204
205 <h3>Entry Browsing</h3>
206
207
208
209 <p>Blitz JavaSpaces supports <code>com.sun.jini.outrigger.JavaSpaceAdmin</code> allowing appropriate Service Browsers (e.g. Inca X's community browser) to view and manipulate the Entry's within an instance.</p>
210
211
212
213 <h3>Embeddable Space support</h3>
214
215 Certain multi-threaded applications, running in a single JVM, can
216 benefit from the use of JavaSpaces. In these situations, having the
217 JavaSpace available as a remote service is undesirable. This feature
218 allows an application to run Blitz locally, within it's own JVM,
219 providing a performance boost.
220
221 <h3>Active/Passive lease cleanup</h3>
222
223
224
225 <p>In high-performance applications, the cost of tracking lease expiry
226 and clearing expired entries from disk may affect throughput
227 sufficiently that it is more economical to accept that some disk-space
228 will be lost to expired entries. Conversely, in environments where
229 disk-space is at a premium, it may be more appropriate to expend
230 processor and disk time doing full cleanup of expired entries.</p>
231
232
233
234 <p>Blitz provides three options for handling lease expiry processing:</p>
235
236
237 <ol>
238
239
240 <li>When an expired entry is loaded into cache-memory, it will be
241 marked for deletion at the next cache flush. This has the effect of
242 cleaning up entries which are slowing down the speed of searches.
243 (passive cleanup)</li>
244
245
246 <li>Occasional background scans of disk storage to find and remove
247 expired entry's that never get into cache. This has the effect of
248 conserving disk space. (active cleanup)</li>
249
250
251 <li>User requested background scans of disk storage to find and remove expired entry's. (manual cleanup)</li>
252
253
254 </ol>
255
256
257
258 <p><b>Note</b>: the active cleanup code by default, is turned <em>off</em>. It can be turned on by setting the <code>leaseReapInterval</code> variable in the configuration file to a non-zero value.</p>
259
260
261
262 <p><b>Note</b>: the manual cleanup code by default, is turned <em>off</em>. It can be turned on by setting the <code>leaseReapInterval</code> variable in the configuration file to <code>org.dancres.blitz.lease.LeaseReaper.MANUAL_REAP</code>.</p>
263
264
265
266 <h3>Built for experimentation and expansion</h3>
267
268 Because Blitz is open-source, should the need arise, you can make
269 whatever changes you desire. The design is based on a small number of
270 generic abstractions making it easy (hopefully) to get to grips with
271 the code.
272
273 <h3>Easy integration with the Inca X IDE &amp; Runtime Environment</h3>
274
275
276
277 The <a href="http://www.incax.com/">Inca X</a> team have been testing
278 Blitz and have built an installer to integrate it into all versions of
279 their IDE &amp; Runtime Environment.
280
281 <h2>Maturing with further development</h2>
282
283
284
285 <p>Looking at RDBMS technology, one can see that it has reached
286 maturity - these are some of the defining characteristics of such a
287 market:
288 </p>
289
290
291
292 <ul>
293
294
295 <li>A few dominant vendors.</li>
296
297
298
299 <li>A large body of technical research.</li>
300
301
302
303 <li>Established benchmarks.</li>
304
305
306
307 <li>Large number of common features between vendors.</li>
308
309
310
311 <li>A large body of knowledge with respect to application development and how to get appropriate performance.</li>
312
313
314
315 </ul>
316
317
318
319 <p>The maturity of the RDBMS market is in marked contrast to the
320 JavaSpaces technology where there's still a substantial amount of work
321 to be done.
322 </p>
323
324
325
326 <p>Blitz is intended to be a vehicle for furthering the development of
327 JavaSpaces technology covering issues as diverse as internal
328 implementation, application development (usage patterns, frameworks
329 etc) and administration/deployment.
330 </p>
331
332
333
334 <h2>About Blitz</h2>
335
336
337
338 The Blitz project was started by Dan Creswell.
339
340 <h3>Credits</h3>
341
342
343
344 Blitz uses:
345
346 <ol>
347
348
349 <li><a href="http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro.html">Doug Lea's util.concurrent package</a></li>
350
351
352 <li><a href="http://teatrove.sourceforge.net/trove.html">TeaTrove</a></li>
353
354
355 <li><a href="http://www.prevayler.org/">Prevayler</a></li>
356
357
358 <li><a href="http://www.sleepycat.com/">Berkeley Db and Berkeley Db Java Edition</a></li>
359
360
361 </ol>
362
363
364
365 <p></p>
366
367 <div align="center"><a href="../index.html">Back to Documentation</a></div>
368
369
370
371 <p><i>Java and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the U. S. and other countries</i></p>
372
373
374
375 </body>
376 </html>