Efficient Distributed Computing Architecture
High-performance architecture for
enterprise systems consists of one or more frontend load balancers
(the Front Controller design pattern) distributing requests to a
cluster of middle-tier web application servers running J2EE, with a
database behind this middle tier. Components designed to operate
asynchronously with message queues holding requests for the
components optimize the throughput of the system (the Message
Façade design pattern). Server management of client socket
connections should use the
java.nio
package classes, and in particular
sockets should be multiplexed with the
Selector
class. Load balancing is efficiently supported using multiplexed I/O
(the Reactor design pattern). (Typically, the application server
manages sockets transparently in the application, but if your
application manages sockets directly, do it with NIO multiplexing.)
In addition, these main architectural components should be supported with caches, resource pools, optimized database access, and a performance-monitoring subsystem, and should have no single point of failure. Caches and resource pools should be made tunable by altering configuration parameters—i.e., they shouldn’t require code tuning. Resource pools are recommended only for resources that are expensive to replace or need limiting, such as threads and database connections. Database access optimization is made simpler if there is a separate database access layer (the Data Access Object ...
Get Java Enterprise Best Practices now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.