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 Dionysios G. Synodinos on Feb 18, 2010
JBoss HornetQ has proven faster in peer reviewed benchmark, than the current version of ActiveMQ, mainly because of its choice to implement a highly tuned journal that uses AIO when running on Linux. ActiveMQ seems to be going the same way for version 6, pushing the competition.
Back in October of 2009 ActiveMQ had its first SPECjms2007 benchmark result for version 5.3. The ActiveMQ team was very pleased about the results back then:
Needless to say, 5.3.0 does nicely in both horizontal (number of destinations) and vertical (load per destination) scalability. It is fitting to see Apache ActiveMQ being used in the world's first SPECjms2007 submission.
SPECjms2007 is a benchmark for evaluating the performance of enterprise message-oriented middleware servers based on JMS, which provides a standard workload and performance metric for competitive product comparisons, as well as a framework for in-depth performance analysis of enterprise messaging platforms. It measures the end-to-end performance of all components that make up the application environment, including hardware, JMS server software, JVM software, database software if used for message persistence, and the system network.
Since then JBoss HornetQ has participated in the benchmark which reported that it was much faster then it competition:
HornetQ- the new ultra high performance enterprise grade messaging system from JBoss, sets a record breaking score in the SPECjms2007 industry standard benchmark for JMS messaging system performance. HornetQ 2.0.GA obtained scores up to 307% higher than previously published SPECjms2007 benchmark results, on the same server hardware and operating system set-up. The peer-reviewed results are available on the spec.org web-site: www.spec.org/jms2007/results/jms2007.html
As InfoQ has reported in the past, HornetQ, which is basically a rebranding of JBoss Messaging, has an optional highly customized journal that uses Linux Asynchronous IO (AIO) via a native code layer for higher performance:
HornetQ provides message persistence using its own built-in, high performance journal. HornetQ has no dependency on clunky, slow, relational databases for persistence. The journal is a unique piece of technology that automatically detects if running on Linux and uses Linux Asynchronous IO (AIO) via a native code layer for astonishing performance. If AIO is not available seamlessly falls back to using Java NIO, so will run seamlessly on any Java platform.
This technique seems to provide much better performance than journals implemented in pure Java and as Rod Davies author of “ActiveMQ in Action” responds to JBoss Tim Fox, it is being implemented in the next version of ActiveMQ:
[…] we liked the idea of using direct I/O on linux systems so much we added it to ActiveMQ 6 a few months ago. We like healthy competition - keep up the good work!
It will be interesting to see the results that ActiveMQ gets after this improvement and compare them with the also improved version of HornetQ (v2.1), when both became available.
You can find more information about HornetQ, ActiveMQ and JMS right here on InfoQ!
Dionysios G. Synodinos is a Web Engineer and a freelance consultant, focusing on Web technologies
I don't see this "astonishing performance" of HornetQ. I've tested it against SwiftMQ and it falls far behind. Even with their AIO log installed it is half the throughput with persistent messages as SwiftMQ with disk sync enabled.
Andreas,
As I said on the serverside article, we have tested HornetQ against SwiftMQ internally, and HornetQ scales with persistent messages to a level well beyond with SwiftMQ is capable of.
We'll be backing this up soon with a set of systematic benchmarks performed in as rigorous a way as possible. You'll also be able to repeat them yourself to verify the results.
No problem if this is verifiable and conforms with our license. You should also check your non-transacted/persistent send behavior. Seems you send async here which is not JMS conform.
HornetQ by default sends non transacted persistent messages "blocking", i.e. we wait for a response from the server before sending the next one, in order to conform to strict JMS semantics out of the box.
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.
4 comments
Watch Thread Reply