Mercurial > hg > blitz_stable
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 & 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 & 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 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 & 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 & 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 & 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> |