본문 바로가기

Terracotta

What is Terracotta ?

NAM(Natwork Attached Memorry)
NAM 서버들이 서로 클러스터링 되어서 대용량의 데이타를 애플리케이션 입장에서 하나처럼 보여주는 것이다.

* Terracotta
OPEN SOURCE
http://www.terracotta.org

* Coherence
상용제품으로는 오라클이 인수한 제품중에서 Coherence라는 제품이 있다널리 쓰이고 있는 제품.


 

Felix => http://felix.apache.org/

 

Just Starting?

Save yourself some time. We can help you learn Terracotta quickly and discover if it can meet your requirements.

Contact Us »

Terracotta is Network-Attached Memory

Terracotta is open source infrastructure software that makes it easy to scale a Java application to as many computers as needed, without the usual custom application code and databases used to share data in a cluster.

Terracotta manages mission critical data using Network-Attached Memory (NAM) technology. NAM enables Terracotta to cluster Java Virtual Machines (JVMs) directly underneath applications, and is a proven runtime approach to providing Java applications both high availability and scalability.

Terracotta's open source community of developers is sponsored by Terracotta, Inc.

What Terracotta Does For You

Databases and custom development can be expensive. Terracotta gives you an alternative that's faster, easier, and just as reliable as the database. It saves you money and effort when building business critical applications.

Terracotta is durable to disk and runs at in-memory speeds, so it's faster and more scalable than databases or message-oriented replication.

Terracotta is integrated with a number of frameworks to help keep clustering simple. You can start using it quickly. Terracotta is also JVM-level which means there is no special API to learn, so when the time comes to work with threads and synchronization to build your own scalable frameworks, you already know what you need in order to get started.

Features

Terracotta is a complete clustering solution that works at the JVM level. It offers the following features:

  • Shared heap (object replication, cross-JVM object identity)
  • Distributed locking (synchronized, wait/notify, and util.concurrent support)
  • Guaranteed coherent clustered objects
  • Persistence to disk for high availability
  • Virtual memory (spill your heap to Terracotta or to disk, transparently)
  • Distributed data structures, like Maps, Lists, Arrays, Queues, & POJOs
  • Seamless integration with popular frameworks, like Spring, Hibernate, and EHCache
  • Superior cluster profiling and visualization for easy tuning
  • Superior JMX-based monitoring, and management for operational visibility and control
  • Highly available and horizontally scalable Terracotta server array

How It Works

Network-Attached Memory is similar to Network-Attached Storage (NAS). Both have a server component. Both have a client layer that works transparently underneath system I/O. And both have a network protocol to move data between the clients and server, caching data locally for fast read and write access.

A widely used version of NAS is NFS. The NFS server typically handles tens or hundreds of connected clients. The client interface is the filesystem. Just like NAS, Terracotta has clients and a serverc componenet but the interface is Java itself. And as NAS is transparent under a filesystem, NAM is transparent under the Java language. Objects in a multi-JVM application are created, manipulated, and kept consistent in NAM as files are in NAS. Unlike NAS, however, NAM can be scaled out to an array of servers for high availability and massive scalability at the server layer.

This creates a configurable JVM-level clustering capability that provides:

  • Objects with cluster-wide object IDs
  • Cluster-wide lock management and work coordination
  • Fast object change replication
  • High availability and scalability
  • No single point of failure

Simple

If you know Java, you know Terracotta. The advantage to Terracotta is that a clustered application looks no different than a standard Java application.

All the concepts you already know, POJOs, threads, synchronization, Spring, Hibernate, and more work exactly the same with Terracotta as they do in a single JVM. And if you use a framework, like EHCache, Spring, or Hibernate, Terracotta plugs right in to that framework.

This means you have the freedom to choose your stack and your development model. Use JPA, Hibernate, Spring, Tomcat, Jetty or JBoss. Code your domain model naturally, and let Terracotta handle the plumbing.

To see how easy it is, let's start off with our version of Hello World.

Hello Clustered World

Hello Clustered World lets you see for yourself how Terracotta works. It's our take on the classic Hello World application used to introduce developers to new languages and concepts.

In this case, it is a Java application written to run on a single JVM, to which we then add clustering without making significant code changes. In this app we cluster an int and a byte[]. But because Terracotta is JVM-level, we can cluster any Java POJO. See the Cookbook for a full suite of easy to run examples.