Last updated
Last updated
Hazelcast(하젤캐스트) 란 ?
The Leading Open Source In-Memory Data Grid
: In-memory data grid를 제공하는 오픈소스
1) 분산 환경에서 여러 프로그램이 여러개의 자료구조를 굥유할 수 있도록 만든 프로그램
2) Apache 2.0 License
3) Hazelcast client는 java, c++, Python 등을 지원한다
- 처음 연결시 server-client 구조로 시작(member - cluster로 연결시 자동으로 연결 된다고... 문서에 나와있음)
지원하는 Data Structure
a. Map, Queue, MultiMap, Set, List, Ringbuffer 등을 지원
b. Lock, Semaphore지원
출처: [OWL-KIM's history]
Distributed Computing, Simplified.
Map, Queue, Executor Service, IAtomicLong, Lock, Cache, 기타 등등의 기능을 지원한다.
java api만 사용하여 의존성이 없다
P2P 통신
많은 NoSQL과 달리 peer-to-peer 통신을 사용한다.
Master/Slave가 아니라 SPoF가 없다.
모든 member가 동일한 양의 데이터를 쥐고 동일한 양의 연산을 수행한다.
Hazelcast를 기존 어플리케이션에 내재시키거(embed)나 혹은 Server/Client 모드로 Hazelcast member의 client로써 어플리케이션을 실행시킬 수 있다.
Scalable
member를 간단히 추가할수 있으며, 자동으로 cluster를 찾고 선형으로 메모리 및 처리량을 증가시킨다.
각 member들은 TCP로 서로 연결되어 있으며 모든 통신인 TCP로 이루어진다.
Fast : 모든 것을 memory에 저장하며, 빠른 읽기/저장이 가능하다
중복지원
여러 member에 각 data entry의 백업을 보존한다
한 member에서 실패가 발생시, 백업에서 복구가 되며, 클러스터는 다운되지 않고 동작하게 된다.
In Memory Data Grid
더 빠른 결과를 제공하기 위해 여러 시스템의 메모리에 데이터를 분산시켜 저장하는 사례가 늘고 있습니다. 이런 제품을 IMDG라고 합니다.
com.hazelcast.config.Config
bean 을 정의하면 , Spring Boot는 그것을 사용합니다. 구성이 인스턴스 이름을 정의하면, Spring Boot는 새로운 인스턴스를 생성하기보다는 기존 인스턴스를 찾으려고 시도합니다.
hazelcast.xml
다음 예와 같이 구성을 통해 사용할 구성 파일을 지정할 수도 있습니다 .
if hazelcast-client
가 classpath에 존재하면, Spring Boot는 먼저 다음 설정 옵션을 체크하여 클라이언트를 생성하려고 시도합니다 :
com.hazelcast.client.config.ClientConfig
빈 의 존재 .
spring.hazelcast.config
특성에 의해 정의 된 구성 파일 .
hazelcast.client.config
시스템 프로퍼티 의 존재 .
A hazelcast-client.xml
는 작업 디렉토리 또는 클래스 경로의 루트에 있습니다.
클래스 패스에 적당한 구성이 발견되면, Spring Boot는 애플리케이션에 삽입할 수 있는 HazelcastInstance
를 자동으로 구성합니다.
그렇지 않으면 스프링 부트는 기본 디렉토리(작업 디렉토리안의 hazelcast.xml
나 클래스 패스의 루트 에 있는) 에서 Hazelcast 설정을 찾습니다 . 또한 hazelcast.config
시스템 속성이 설정되어 있는지 확인합니다 . 자세한 내용은 를 참조하십시오.
Spring Boot는 또한 Hazelcast에 대한 명시 적 캐싱을 지원합니다 . 캐싱을 사용 HazelcastInstance
하면 CacheManager
구현 이 자동으로 래핑됩니다 .