Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Any experience using Terracotta open source?

Does anybody have experience using the open source offering from Terracotta as opposed to their enterprise offering? Specifically, I'm interested if it is worth the effort to use terracotta without the enterprise tools to manage your cluster?

Over-simplified usage summary: we're a small startup with limited budget that needs to process millions of records and scale for hundreds-of-thousands of page views per day.

like image 961
Dave Jensen Avatar asked Nov 11 '08 00:11

Dave Jensen


3 Answers

I am in a process of integrating Terracotta with my project (a sensor node network simulator). About three weeks ago I found out about Terracotta from one of my colleagues. And now my application takes advantage of grid computing using Terracotta. Below I summarized some essential points of my experience with Terracotta.

  • The Terracotta site contains pretty detailed documentation. This article probably a good starting point for a developer Concept and Architecture Guide
  • When you are stuck with a problem and found no answer in the documentation, the Terracotta community forum is a good place to ask questions. It seems that Terracotta developers check it on a regular basis and pretty responsive.
  • Even though Terracotta is running under JVM and it is advertised that it is only a matter of configuration to make you application running in a cluster, you should be ready that it may require to introduce some serious changes in you application to make it perform reasonably well. E.g. I had to completely rewrite synchronization logic of my application.
  • Good integration with Eclipse.
  • Admin Console is a great tool and it helped me a lot in tweaking my application to perform decently under Terracotta. It collects all performance metrics from servers and clients you can only think of. It certainly has some GUI related issues, but who does not :-)
  • Prefer standard Java Synchronization primitives (synchronized/wait/notify) over java.util.concurrent.* citizens. I found that standard primitives provide higher flexibility (can be configured to be a read or write cluster lock or even not-a-lock at all), easier to track in the Admin Console (you see the class name of the object being locked rather then e.g. some ReentrantLock).

Hope that helps.

like image 115
Maxim Vladimirsky Avatar answered Nov 18 '22 18:11

Maxim Vladimirsky


At the moment, the Terracotta enterprise tools provide only a few features beyond the open source version around things like visualization and management (like the ability to kick a client out of the cluster). That will continue to diverge and the enterprise tools are likely to boast more operator-level functionality around things like managing and monitoring, but you can certainly manage and tune an app even with the open source tools.

The enterprise license also gives you things like support, indemnification, etc which may or may not be as important to you as the tooling.

I would urge you to try it for yourself. If you'd like to see an example of a real app using Terracotta, you should check out this reference web app that was just released:

The Examinator

like image 45
Alex Miller Avatar answered Nov 18 '22 17:11

Alex Miller


You may want to take a look at JBossCache/PojoCache which is an in-memory distributed caching solution. The difference is it uses a simple API to propagate objects across your 'cluster' of caches, where as Terracotta works at the classloading/jvm level.

(They don't actually have their own JVM, but they modify classes as they are loaded to allow them to be 'clusterable')

Our company had a lot of luck with JBossCache, I'd recommend checking it out.

like image 1
Vincent Avatar answered Nov 18 '22 17:11

Vincent