New-age Transactional Systems - Not Your Grandpa's OLTP
John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.
Posted by Stefan Tilkov on Jan 08, 2007
Apache Synapse is intended to be the basis of a highly manageable XML-oriented Enterprise Service Bus (ESB) and supports logging, routing, and transforming all kinds of XML messages including XML/HTTP, SOAP, JMS. Also supported are a number of open standards including XSLT, XPath, WS-ReliableMessaging, WS-Security, WS-Policy and WS-Addressing.
According to a blog entry by WSO2 CTO Paul Fremantle, highlights of the release include:
InfoQ sat down with Paul Fremantle to ask a few questions about Synapse. As Paul's company, WSO2, is the driving force behind the Open Source Axis2 stack, the first question concerned Synapse's coupling to Axis2:
Synapse is pretty tightly coupled to Axis2. We have tried to keep the dependencies reasonably clean. For example we introduced a concept called the SynapseEnvironment that "stubs" out Axis2. However, we did this mainly to isolate the programmer from having to understand too much about Axis2. Because Axis2 is the only implementation of this interface, it would be hard to estimate how hard it would be to create an alternate implementation. A lot of the function (e.g. WSRM, WSSec, XML/HTTP support) is inherited from Axis2 and other projects like Sandesha and Rampart.
The next question concerned the topologies supported by Synapse.
Obviously the simplest installation is a single process, but there are a number of options to scale into a cloud.
Synapse supports some different ways of intercepting messages. For example, Synapse can be configured as an HTTP proxy, whereby all requests are routed via a Synapse instance. In this model its possible to specify a set of rules that operate on all messages. In effect this is a policy definition (not WS-Policy, just "policy" :-)). In this model there could be any number of Synapse engines interspersed around dealing with messages. This was the driver for our HTTP Registry support - so that a number of engines could be bootstrapped from a remote registry. In this model, Synapse will pick up changes from the registry at a fixed interval and then new messages will automatically use the updated configuration and rules.
In addition we have designed Synapse to be mostly stateless (it has state between a request and reply, but no state beyond a single interaction). The result is that it is very easy to cluster or replicate Synapse across a network.
Intrigued by the mentioning of an "HTTP-based registry", InfoQ asked whether it is a full-blown registry, and whether or not UDDI was supported:
As for registry support, we simply need the capability to "look up" some XML. It might be a synapse configuration directive, a WSDL, an XSLT transform, etc. So we abstracted the concept of a "registry". At the moment the only implementation we have of this is to grab the XML from a URL (you might think of this as a REST Registry). We have an extensible interface for this, so we could support UDDI fairly simply. But at the moment no-one has asked us for that!
Find out more about Apache on the website at http://ws.apache.org/synapse.
John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.
Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.
Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.
Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).
Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.
Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.
One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.
InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.
No comments
Watch Thread Reply