|
For almost 18 months a new implementation of JXTA Relay has been in development. The new implementation has been somewhat of a side project for me as I learned more about the implementation of the router and endpoint. There were an incredible number of details to account for in the interactions between the relay, the message transports, the endpoint and the router. The Relay was/is an inscruitable complex blob of hyper-spaghetti.
I started originally modifying the relay to add support for dynamically loading relay seeds. This patch was committed about 16 months ago but I have since continued to tinker with the relay code. I first attempted to apply better lease management and failover. I've probably refactored the code a dozen times in my efforts to grok the fundamental principles.
For quite a long time I tried to maintain on-the-wire compatibility with the existing relay implementation while fixing it's fundamental operation. A discussion with Hamada brought an insight--backwards compatibility was not required. There is no reason that any number of different relay implementations couldn't co-exist on the same network. Since this is the case it is possible to incrementally replace the existing relay by simply supporting both protocols simultaneously for a time. In early November of 2005 I prepared a completely rebuilt wire protocol that made no effort at backwards compatibility. It also applies all that we have learned about designing protocols for JXTA over the last seven years of development.
We had the first review of the new relay implementation in January. It was a preliminary review, mostly just me talking about what we had learned, the important parts of the new design and how the development was progressing. A big part of the new design is that it is a lot simpler to implement. Since JXTA-C currently has no Relay sever component slowhog and ericx have been very interested in developing a Relay Sever for JXTA-C which would use the new design and protocol. Henry took the existing JXTA JSE patch-in-progress and extracted the protocol schema and most of the important behaviours into an awesome wiki page.
Having someone else reverse engineer your implementation and documentation has to be the best way to have it reviewed. I'm not suggesting that the original author shouldn't attempt to document their work, more that fresh eyes and a collaborative approach to design documentation is more productive than doing it solo. It was simply amazing how many important questions and details Henry discovered as he built the wiki page. He also discovered an important simplification of the design that I hadn't noticed (and probably wouldn't have noticed). I am really really impressed with how quickly the wiki design page (it's starting to look more like a specification section) has improved. When it is finally integerated into JXTA the new JXTA Relay will be more thoroughly documented at introduction than any previous newly introduced component. I'm pretty proud of that.
So when is it going to be done you a probably wondering. We are still proceeding methodically and haven't yet made any firm commitment to integrating the code into a release version of JXTA. We have decided though that, at minimum, the JSE, JXME and JXTA-C implementations will have to be complete and fully interoperable to consider integration. Stability, scalability and robustness are also critical considerations. In spite of the known issues, the existing Relay has accumulated nearly five years of tweaking and bugfixing to make it function as well as it does. It is going to be hard to toss that aside and sets the expectations upon the new Relay implementation very high.
(2006-03-29 11:49:21.0/2006-03-29 11:49:21.0)
Permalink
Trackback: http://blogs.sun.com/bondolo/entry/replacing_the_jxta_relay
|
|
|
| « November 2009 | ||||||
| Sun | Mon | Tue | Wed | Thu | Fri | Sat |
|---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 10 | 11 | 13 | 14 | ||
15 | 16 | 17 | 18 | 19 | 20 | |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | |||||
| Today | ||||||
Today's Page Hits: 318