Hazelcast
Hazelcast logo.png
Developer(s)Hazelcast Team
Stable release2.4 / October 17, 2012; 13 days ago
Development statusActive
Written inJava
Operating systemCross-platform
TypeIn memory data grid
LicenseApache License 2.0
Websitehttp://www.hazelcast.com/


Hazelcast is an open source in memory data grid for Java.

Hazelcast architecture is peer-to-peer. It supports dynamic discovery using multicast or TCP/IP. After discovery, node communication is only TCP/IP using Java NIO.

Contents

  [hide

[edit]Hazelcast Features

  • Distributed Java data structures (Queue, Set, List, Map, Lock, Topic)
  • Distributed Executor Service
  • Distributed Multimap
  • Support for transactions
  • J2EE container integration via JCA
  • Hibernate 2nd level cache
  • Index and Query support
  • Dynamic clustering, scaling and partitioning
  • WAN (Wide Area Network) Replication
  • Decentralized. Each node in the cluster has the same role.
  • Data is distributed across the cluster (so each node contains different data).

[edit]Getting Started

Following is the sample usage of distributed hash map using Hazelcast.

import java.util.Map;
import java.util.Collection;
import com.hazelcast.core.Hazelcast;
 
Map<String, Person> mapPeople = Hazelcast.getMap("people");
mapPeople.put("1", new Person("Jack"));
mapPeople.put("2", new Person("Avi"));
 
Collection<Person> colPeople = mapPeople.values();
for (Person person : colPeople) {
    // print person
}

[edit]See also

[edit]External links







정의
Hazelcast 문서의 첫 줄에는 이를 다음과 같이 설명하고 있다.

Hazelcast is a clustering and highly scalable data distribution platform for Java.

조금 풀어서 써보면...
(1) 일단은 자바에서 사용할 수 있는 것이고
(2) 프로그램들을 그룹화(clustering)해서 걔들 간에 데이터를 가변적으로 분산시켜주기 위한 것이다.
저자의 의도대로 이해했는지 모르겠다.


조금 더 자세히
 


그림으로 표현하면 위와 같다. 
(1) 네트워크 상에 물려있는 2개의 프로그램이 있고, 이 프로그램은 hazelcast 기반으로 작성되었다. 
(2) hazelcast상에서 정의된 어떤 자료구조에 파란 옷을 입은 사람이 데이터를 쓰면 
(3) 이를 파란색 옷을 입은 사람도 꺼내갈 수 있고, 녹색옷을 입은 사람도 꺼내갈 수 있다.
즉, 물리적으로 떨어져 있는 두 프로그램이 하나의 자료구조를 공유할 수 있다.

이는 파란옷을 입은 사람이 데이터를 자료구조에 쓰면 hazelcast가 이 자료를 녹색옷 입은 사람에게도 전달하기 때문이고, 데이터 전달에는 multicast, tcp, aws가 사용될수 있다. 뒷단에서 데이터는 왔다 갔다 하겠지만 이 얼마나 아름다운가!! 

라이브러리는 apache license 2.0을 따르고 있으며 elastic memory, security 기능이 빠져있는 community edition은 무료로 다운로드 하여 사용할 수 있고, 이를 포함한 enterprise edition은 돈 주고 사야한다. (commercial license)


샘플 작성하기
hazelcast 기반으로 고리타분한 생산자-소비자를 만들어보자!! 생산자는 hazelcast에서 큐를 가져와 데이터를 생산하고, 소비자는 해당 큐에서 데이터를 꺼내오는 아주 아주 고전적인 실험이다. 프로그램 구조는 다음과 같다.


- conf/hazelcast.xml : hazelcast 환경설정 파일로, 생산자와 소비자가 공유할 자료구조와 통신방법에 대해 정의
- conf/log4j.properties : 로그를 찍기위한 환경설정 파일
- lib/hazelcast_1.9.4.4 : hazelcast 라이브러리 파일
- lib/log4j_1.2.15 : 로그 출력을 위한 라이브러리 파일
- mytest/listener : hazelcast가 생성하는 인스턴스에 대한 리스너로 이 실험에서는 로그를 찍어보기 위한 용도
- mytest/worker/Consumer.java : 생산자
- mytest/worker/Producer.java : 소비자
- mytest/worker/Worker.java : 생산자와 소비자의 슈퍼 클래스
- mytest/Main.java : 프로그램 시작 지점


소스
hazelcast.xml
- group : 이 프로그램이 속하는 그룹(clustering)에 대한 정보

- network : 통신 방법에 대한 정의
- queue : 생산자와 소비자가 사용할 큐에 대한 정보
- map : 큐에 대한 부가 정보


Worker.java (1) Thread를 상속받고 있으며
(2) Hazelcast에서 큐(BlockingQueue)를 가져와서 사용한다.


Producer.java (1) 3초 간격으로 데이터를 생산


Consumer.java (1) 큐에서 데이터를 꺼내서 출력


Main.java

더보기


실험결과
Producer 실행화면 (주요부분 발췌 및 설명추가)

Consumer 실행화면 (주요부분 발췌 및 설명추가) - 스레드로 작성되었기 때문에 프로그램 구동시점에 따라 로그 내용이 달라질 수 있음 


출처 - http://case35.tistory.com/226








'Computer Science > Cache' 카테고리의 다른 글

EHCache  (0) 2013.02.11
Memcached 설치 및 사용 방법  (0) 2012.11.06
Memcached의 확장성 개선  (0) 2012.11.06
memcached를 적용하여 사이트 성능 향상  (0) 2012.11.06
Memcached 구현 소개  (0) 2012.11.06
Posted by linuxism
,