Back to Dot-Com Builder How-Tos Archive
Scaling J2EE Technology Applications Based on Application Infrastructure Techniques - Part 4
by Rakesh Radhakrishnan This article is the fourth in a four-part series that identifies multiple techniques for scaling applications based on J2EE technology to support many concurrent users.
Scaling Techniques
Certificate Server - Functional Partitioning and Workload Distribution (e.g., iPlanet Certificate Server) Typically the certificate authority for J2EE technology-based applications is outsourced to well-known certificate authorities (CAs) such as Verisign, Entrust, Identrus, and so on. In those unique cases where the CA is hosted locally, the certificate management server (CMS) can be scaled through a simple and successful approach of functional partitioning and workload distribution. The CMS can be functionally partitioned into a RM (registration manager), a CM (certificate manager) and a DM (data store/data recovery manager) - as shown in Figure 18.
The data manager can further be extended into DM-master and DM-replica. Through this approach, if the master data store fails, the replica takes over as the master, and vice versa. You can also configure the RM to take over the role of the CM when the CM fails, and vice versa. Figure 19 shows the addition of a second DM.
CORBA Server - Load Balancing and Gatekeeper (e.g., VisiBroker or Iona Orbix) Java IDL adds CORBA capability to the Java platform, ensuring standards-based interoperability and connectivity with applications not based on Java technology. Utilizing the industry standard OMG IDL (Object Management Group Interface Definition Language) and IIOP defined by the Object Management Group, Java IDL makes it possible for distributed Web-enabled Java applications to transparently invoke operations on remote network services built with other programming languages. There are two primary techniques associated with scaling CORBA servers: load balancing across multiple CORBA servers and using a gatekeeper.
Load-balancing CORBA Servers Distributed directory services can dynamically keep track of objects installed and/or active in the ORB (Object Request Broker). Server objects register with intelligent agents at startup. Client applications seeking to communicate with a server object of a particular type obtain an object reference from these intelligent agents, and then they re-use the object reference to communicate directly with an instance of the server object. Typically there is an object activation/deactivation daemon, which runs on each machine that hosts server objects. It cooperates with the intelligent agents to ensure that server objects are activated on demand and are shut down when they are no longer needed. Through this technique you can achieve load balancing within and across multiple CORBA servers.
Gatekeeper The gatekeeper is the second technique associated with scaling CORBA servers. For this technique to be effective, client applications must be able to access server objects independent of their physical locations. Also known as location transparency, this is a fundamental principle of component-based distributed computing. With an ORB gatekeeper, applications meet the requirement of location transparency. The ORB gatekeeper's role is to establish itself as a proxy object for all incoming requests from client applications. Should the server object not be available on the application host, the gatekeeper automatically creates a proxy object, thus coordinating access to all server objects that would otherwise be unreachable. Additionally, the gatekeeper can route IDL traffic between multiple ORB servers dedicated to individual applications built on specific programming languages (such as, Java, C and C++). This technique is shown in Figure 21.
An alternative approach to boost performance is to build Java Native Interfaces (JNI) to speed up access and inter-application calls. Conclusion: Scaling Techniques, Nine Design Principles The techniques discussed in this series address nine fundamental design principles, namely:
It is the architect's role to identify bottlenecks - or potential bottlenecks - in the environment and apply the appropriate scaling technique to the application infrastructure to give a boost to the performance of the application. The architect should also incorporate high availability, especially when introducing redundancy for scalability purposes. This recommended approach achieves two objectives, scalability and availability, with a single effort. All the techniques discussed in this series address both availability and scalability of the application infrastructure, in that they introduce redundancy in one form or another. Based on your requirements, choose an appropriate technique when incorporating scaling into an application infrastructure service that supports a J2EE application.
|
| ||||||||||||||