Mar 10th, 2009, 12:31 AM
Web Service based application - Cache as a Master Data Source
We want to develop a shopping web-application that interacts with system(s) of many vendors. It could be thro. web-services or any other means.
Moreover, vendors can register themselves and the data will be stored in DB.
Now, when the customer searches data from vendors in DB as well as other vendors have to be shown.
So, we have planned to use 'cache as a master data source'. The proposed architecture is attached.
1) Will it work?
2) How to implement this with J2EE (Spring & Hibernate)?
3) Sites like redbus.in, makeMyTrip.com have similar functionality. So, what is the standard way to do that?
Last edited by vss123; Mar 10th, 2009 at 12:32 AM.
Reason: Image attached
Mar 19th, 2009, 12:08 PM
It will work, but it will also introduce duplication of data. I can see that this could result in higher cost in terms of maintenance in the long run. I mean, how is the data from each data source is going to be replicated? Any thoughts on backing up the cached master data (if needed)? How would you ensure that the cached master data is kept up to date?
If you look at other companies (that provide services for booking flights, holidays, etc.) they use middleware integration, such as MQ or a message broker. So a Service Oriented Architecture (SOA) design is adopted, and also allows for asynchronous calls.
The architecture design is not that far off. But instead of looking at databases for caching as the master data perhaps the use of a message broker may be the one to go for. IBM MQ is an expensive option, but there are Open Source alternatives such as ActiveMQ (http://activemq.apache.org/) that is powerful and I recommend. I see that you already have adapters in place so they can be utilised.
The cheaper option is to use Enterprise Service Bus technologies (such as Tibco (proprietary) or MuleESB (http://www.mulesource.org - open source))).
It is all possible to use Spring for your solution. In fact, ActiveMQ and MuleESB integrates very well with Spring.
Hope this helps.
Tags for this Thread