Most read:
Popular archives:
JavaWorld's new look is here!
We've upgraded the site with a fresh look-and-feel, improved topical navigation, better search, new features, and expanded
community platform. Learn more about the changes to JavaWorld.
| Oracle Compatibility Developer's Guide |
| The Explosion in DBMS Choice |
Page 2 of 7
Both networking models feature advantages and disadvantages. You can visualize from Figure 1 that as a client/server network grows (that is, as more and more clients are added), the pressure on the central point, the server, increases. As each client is added, the central point weakens; its failure can destroy the whole network.
A P2P network delivers a quite different scenario. Since every entity (or peer) in the network is an active participant, each peer contributes certain resources to the network, such as storage space and CPU cycles. As more and more peers join the network, the network's capability increases. Hence, as the network grows, it strengthens. You won't find that kind of scalability in client/server architectures.
A P2P network also differs from the client/server model in that the P2P network can be considered alive even if only one peer is active. The P2P network is unavailable only when no peers are active.
You pay the price for the advantages a P2P network offers, however. First, managing such a network can be a nightmare compared to managing a client/server network, where administration is only needed at the central points. Therefore, the enforcement of security policies, backup policies, and so on proves complicated in a P2P network. Second, P2P protocols are much more "talkative" -- as peers join and exit the network at will -- than typical client/server protocols. This transient nature can trigger performance concerns. (See "Bandwidth Barriers to Gnutella Network Scalability" for more information.)
Different protocols, different architectures, different implementations. That accurately describes current P2P solutions. Currently, developers use diverse methodologies and approaches to create P2P applications. Standards, abundant in the client/server world, are noticeably absent in the P2P world. To tackle this deficit, Sun developed Jxta.
From the Jxta vision statement:
Project Jxta is building core network computing technology to provide a set of simple, small, and flexible mechanisms that can support P2P computing on any platform, anywhere, and at any time. The project is first generalizing P2P functionality and then building core technology that addresses today's limitations on P2P computing. The focus is on creating basic mechanisms and leaving policy choices to application developers.
Jxta strives to provide a base P2P infrastructure over which other P2P applications can be built. This base consists of a set of protocols that are language independent, platform independent, and network agnostic (that is, they do not assume anything about the underlying network). These protocols address the bare necessities for building generic P2P applications. Designed to be simple with low overhead, the protocols target, to quote the Jxta vision statement, "every device with a digital heartbeat."
Jxta currently defines six protocols, but not all Jxta peers are required to implement all six of them. The number of protocols that a peer implements depends on that peer's capabilities; conceivably, a peer could use just one protocol. Peers can also extend or replace any protocol, depending on its particular requirements.