Requirements for Developing Distributed Applications
Now that we’ve defined some terms that can be used to discuss distributed applications, we can start to look at what goes into developing these applications. In this section we’ll discuss some of the issues that you face when developing distributed systems, and what kinds of tools and capabilities you’ll need in order to address these issues. The next section will describe how Java provides these tools and capabilities.
Partitioning and Distributing Data and Functions
If you think of the computer hosts and network connections available for a distributed application to use as a “virtual machine,” then one of the primary tasks you have is to engineer an optimal mapping of processes, objects, threads and agents to the various parts of this virtual machine. In some cases, a straightforward client/server partitioning based on data requirements can be used. Computational tasks can be distributed based on the data needs of the application: maximize local data needed for processing, and minimize data transfers over the network. In other, more compute-intensive applications, you can partition the system based upon the functional requirements of the system, with data mapped to the most logical compute host. This method of partitioning is especially useful when the overhead associated with data transfers is negligible compared to the computing time spent at the various hosts.
In the best of all possible worlds, you could develop modules ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access