Hazelcast 시작하기 -1-


Hazelcast는 분산 환경에서 데이터 공유를 위한 'In Memory Data Grid' (이하 IMDG) 오픈 소스 솔루션이다. 그동안 비슷한 류의 data grid 소스들이 존재했지만(e.g, Terracotta, Coherence, etc), Hazelcast는 좀 더 단순하게 자신을 소개하고 있다.


The Leading Open Source In-Memory Data Grid.

HazelCast is a clustering and high scalable data distribution platform for Java.

- http://www.hazelcast.com -


Hazelcast는 한창 trend인 vert.x 및 Atlassian, Apache Camel 등에 사용되고 있을 정도로 안정성과 경량화된 컨테이너로 인정받고 있으며, 위에서 보듯이 JVM 환경에서 동작한다. Java로 제공되는 단순한 API들은 learning-curve를 줄여주고 어플리케이션으로의 통합을 쉽게 한다. 기능상으로 보면 오픈 소스 캐시 솔루션인 EhCache와 그 역할이 비슷해 보이는데, 실제로 EhCache의 BigMemory와 Hazelcast의 Direct Memory처럼 native memory allocation 기능을 포함하여 비슷한 기능들을 다수 제공하고 있다.


Hazelcast vs EhCache: http://vschart.com/compare/ehcache/vs/hazelcast



Features

Hazelcast의 특징을 요약하면 다음과 같다.

 Distributed Data Structure

 Queue, Set, List, Map, MultiMap, etc...

 Distributed Executor Service

 간단한 분산 스케줄러로 사용할만 하다.

 Transaction

 Commit/Rollback을 지원하므로 좀 더 정합한 연산을 보장한다.

 Partitioning

 분산 노드로 데이터 분할 저장이 가능하다. (* Default)

 Dynamic Clustering

 동적인 노드 확장/축소가 가능하며, 100개 이상의 큰 노드 그룹을 지원한다.

 Index and Query

 데이터 색인 및 간단한 질의문(SQL like)을 제공한다.

 Message Queue

 DistributedTopic의 경우 초당 10만 건 이상의 메세지 처리가 가능하다.

 Distributed Lock

 분산 환경에서 하나의 동기화된 Lock을 공유할 수 있다. 좀 더 정교한 연산 제어가 가능하다.

 Cache Supported

 캐시의 특징인 Eviction, Expiration 등의 속성을 지원하며, Hibernate 2nd Level 캐시로 사용이 가능하다.

 Integration

 Spring Framework 및 JCA(Java EE Connector Architecture)를 통한 J2EE Container와의 손쉬운 통합을 지원한다.

 Persistency

 전체 혹은 일부 데이터를 직렬화를 통해 영구적인 저장소(e.g. File, DBMS, etc...)로 저장할 수 있다. 또한 JVM의 Heap 메모리가 아닌, Off-Heap 메모리(Direct Buffer) 할당이 가능하므로, big memory 환경에서의 Full GC delay에 대비할 수 있다.

 동기/비동기(sync/async) 쓰기를 지원한다.

 Distributed Event

 데이터 연산에 대한 분산 이벤트가 제공되므로, 분산 환경에서 다양한 이벤트 핸들링이 가능하다.


특징만으로 보자면 일반적인 Cache + NoSQL 성향을 보인다. 클러스터링 노드를 구성하기가 쉬워 다른 Open Source들의 데이터 분산/공유, Web Session Clustering/Replication 등의 용도로 많이 사용되고 있다.

(* deep하게 테스트해 보지는 않았으나, Tomcat의 session clustering보다 속도가 좋아보인다.)


이전에 많은 프로젝트에서 도입했던 EhCache보다도 사용하기가 쉽고, 위에는 언급하지 않았으나 자체 설정으로 AWS를 지원하는 것도 특징 중 하나이다.



License

Apache License 2.0을 준수한다. Off-Heap Memory, WAN, Monitoring 등의 몇가지 기능이 빠져있는 Community Edition과 상용 버전인 Enterprise Edition 두 버전이 제공된다.

(기능 비교표: http://hazelcast.com/products/hazelcast-enterprise)



Benchmark

Independent Benchmark: Hazelcast Performance vs MongoDB, Cassandra, Terracotta and Oracle Coherence (

http://blog.hazelcast.com/2013/11/14/independent-benchmark-hazelcast-performance-vs-mongodb-cassandra-terracotta-and-oracle-coherence)



Ps. 다음 포스팅에서는 간략한 distributed environment에서 cluster replication을 hazelcast를 통해 구성하는 예를 들겠다.


'TODO: blah blah~' 카테고리의 다른 글

Java 8 - Lambda Expression과 변경된 Interface의 모호함  (0) 2014.09.09
Java 8 - Metaspace Area  (0) 2014.06.02
Hazelcast 시작하기 -1-  (0) 2014.03.25
MVW(Model View Whatever)의 이해  (0) 2014.03.19
Java SE 8 New Features  (0) 2014.02.04
Flash Scope in Spring MVC 3.1  (0) 2014.02.04