YOUR FEEDBACK
John Portnov wrote: This code does not work for me. I created a new website and a C# console applic...
AJAXWorld RIA Conference
$300 Savings Expire August 22
Register Today and SAVE!

2008 East
DIAMOND SPONSOR:
Data Direct
Frontiers in Data Access: The Coming Wave in Data Services
PLATINUM SPONSORS:
Red Hat
The Opening of Virtualization
Intel
Virtualization – Path to Predictive Enterprise
Green Hills
IT Security in a Hostile World
JBoss / freedom oss
Practical SOA Approach
GOLD SPONSORS:
Software AG
The Art & Science of SOA: How Governance Enables Adoption
PlateSpin
Effective Planning for Virtual Infrastructure Growth
Fujitsu
Automated Business Process Discovery & Virtualization Service
Ceedo
Workspace Virtualization
Click For 2007 West
Event Webcasts

2008 East
PLATINUM SPONSORS:
Appcelerator
Think Fast: Accelerate AJAX Development with Appcelerator
GOLD SPONSORS:
DreamFace Interactive
The Ultimate Framework for Creating Personalized Web 2.0 Mashups
ICEsoft
AJAX and Social Computing for the Enterprise
Kaazing
Enterprise Comet: Real–Time, Real–Time, or Real–Time Web 2.0?
Nexaweb
Now Playing: Desktop Apps in the Browser!
Sun
jMaki as an AJAX Mashup Framework
POWER PANELS:
The Business Value
of RIAs
What Lies Beyond AJAX?
KEYNOTES:
Douglas Crockford
Can We Fix the Web?
Anthony Franco
2008: The Year of the RIA
Click For 2007 Event Webcasts

SYS-CON.TV
TOP THREE LINKS YOU MUST CLICK ON


Distributing Tasks in a Clustered Application Using JMS
Much more than asynchronous data transfer

Distributing Tasks in a Clustered Application Using JMS Much more than asynchronous data transfer

Decoupling and delaying processing in a request-driven environment is one of the key strategies in creating a robust and scalable distributed application. Many services rely on clustering alone to ensure scalability, but they frequently run into trouble when newfound requirements keep application complexity growing.

Although server clustering is an essential technology that facilitates scalability, it can be rather inefficient when all processing is done synchronously. Throughput can be increased, but responsiveness is a tougher nut to crack.

In this article, I discuss asynchronous processing and illustrate how clever task management can increase the performance, availability, scalability, and manageability of your application. We will create a generic task distribution framework that can send any task to either one or every server in your cluster, in a highly configurable fashion. Our framework will implement the well-known Command pattern by using polymorphism and the Java Message Service (JMS).

What Does Decoupling Mean in Practice?
When a server receives a client request, it usually needs to perform several individual tasks before a response can be returned. Decoupling means that instead of performing all tasks at once, some are instead queued and processed asynchronously. Because queuing is normally a low-cost operation, the synchronous request will finish quicker.

And the Benefits?
Processing tasks sequentially and in parallel is generally more efficient than processing them randomly (whenever clients happen to make requests). The positive impact is greater than what is immediately apparent. In theory, decoupling can increase performance in the following areas:

  • Robustness: Increases because requests will rely on fewer processes that can fail
  • Responsiveness: Partial post processing of requests decreases the time between receiving a request and returning a response
  • Scalability: All decoupled processes can grow in complexity without the threat of decreased responsiveness
  • Availability: Failures can be handled without the client ever knowing that something went wrong

Automatic retries are easily configured for situations where subsystems are unavailable.

Naturally, the difference between theory and practice will vary from application to application. However, it is clear that almost every implementation will have at least some of the aforementioned benefits.

Sounds Great, But Are There Any Pitfalls?
As with most good things, there are some caveats. One of the most severe is that you might actually find yourself decreasing availability if you don't ensure that you have enough hardware to clear busy processing queues. Queues grow very rapidly if more asynchronous requests come in than your system is able to process. Care has to be taken in the design, and automated monitoring of queues is certainly advisable. Another obvious problem is that most processes in request-driven environments aren't very good candidates for decoupling. In fact, most of the processing might be required to return a response. Sometimes it will require some out-of-the-box thinking and maybe even a change in the way you serve your clients.

Which Processes Can We Decouple?
From a purely technical perspective, nearly all processes can be decoupled. For instance, you can decouple an ordering transaction by queuing a list of purchased items together with customer details - the asynchronous process will take care of the rest. The downside is that you can't include any processing details in the response. Thus, meticulous prevalidation of data is important to ensure that nothing will go wrong.

An increasingly popular implementation is to queue requests immediately and then keep polling the server to know when a response can be retrieved. Although this approach is actually synchronous in nature and won't improve request processing times, it has the psychological benefit that a progress bar can be displayed during polling.

In addition to decoupling integral business logic (which can be a formidable challenge), less central processes such as logging and sending e-mail are very good candidates to consider. There is no reason to have a client wait for such tasks to complete when performance is of the essence. E-mail in particular is a very good candidate for decoupling. Let's have a closer look.

Case Study: Asynchronous E-mail
Sending e-mail the traditional way (as part of a synchronous request) poses some problems. First of all, connecting to an e-mail server requires a network round-trip and it might be slow, especially if the server is very busy. An overloaded e-mail server can even make a service that relies on e-mail temporarily unavailable.

XA Transaction Support
Another easily overlooked issue is that e-mail servers are commonly nontransactional by nature. This can cause inconsistent notifications when transactions are rolled back - a message can't be cancelled after it has been queued. Fortunately, JMS supports transactions and can fix this problem by delaying the delivery of a message until its underlying transaction is committed.

Take into account that when accessing the database and transaction-aware JMS, you will need to use XA and two-phase commit (2PC) transactions. It is possible to emulate XA with non-XA resources, but you might end up with inconsistent data. Enabling XA is a configuration issue and usually requires no changes in code. See the WebLogic documentation for details.

About John-Axel Stråhlman
John-Axel Stråhlman is the founder and CEO of Sanda Interactive Ltd (www.stc-interactive.com), a software consulting company based in Espoo, Finland. He is a distributed systems specialist and has been working as a consultant for his clients' projects for more than five years.

BEA WEBLOGIC LATEST STORIES
Red Hat CTO Brian Stevens, Citrix CTO Simon Crosby, Egenera CTO Pete Manca, Allen Stewart, Group Manager, Windows Virtualization at Microsoft, and Brian Duckering, Sr. Director of Products and Alliances at Symantec were the top industry executives who joined Jeremy Geelan in the 4th Fl...
Mike Neil is general manager for virtualization strategy in the Windows Server Division at Microsoft. Mike is focused on the delivery of the Windows virtualization technology, including Windows Server 2008 Hyper-V, Microsoft Hyper-V Server and Virtual PC 2007. Mike also directs the tec...
Two of the biggest launches in Rich Internet Application history took place in 2007/2008 when Adobe launched AIR 1.0 in February '08 and Microsoft launched Silverlight (September '07). At the 6th International AJAXWorld RIA Conference & Expo in October SYS-CON Events is delighted to be...
A standard from OASIS called Web Services for Remote Portlets (WSRP) is used so portlets can be decoupled from a portal. In part one (JDJ, Volume. 13, issue 3) of this article, we introduced the relevant standards and specifications and then demonstrated WSRP's capabilities by consumin...
SYS-CON's upcoming '3rd International Virtualization Conference & Expo' faculty includes such distinguished speakers as: Al Aghili (Managed Methods), Alan Chhabra (Egenera), Andi Mann (Enterprise Management Associates), Andrew Conte (APC), Andy Astor (EnterpriseDB), Ariel Cohen (Xsigo ...
From Application Virtualization to Xen, a round-up of the virtualization themes & topics being discussed in NYC June 23-24, 2008 by the world-class speaker faculty at the 3rd International Virtualization Conference & Expo being held by SYS-CON Events in The Roosevelt Hotel, in midtown ...
SUBSCRIBE TO THE WORLD'S MOST POWERFUL NEWSLETTERS
SUBSCRIBE TO OUR RSS FEEDS & GET YOUR SYS-CON NEWS LIVE!
Click to Add our RSS Feeds to the Service of Your Choice:
Google Reader or Homepage Add to My Yahoo! Subscribe with Bloglines Subscribe in NewsGator Online
myFeedster Add to My AOL Subscribe in Rojo Add 'Hugg' to Newsburst from CNET News.com Kinja Digest View Additional SYS-CON Feeds
Publish Your Article! Please send it to editorial(at)sys-con.com!

Advertise on this site! Contact advertising(at)sys-con.com! 201 802-3021

SYS-CON FEATURED WHITEPAPERS

ADS BY GOOGLE