40.하젤캐스트(Hazelcast) by ys

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지원

출처: https://owl-kim.tistory.com/27 [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에서 실패가 발생시, 백업에서 복구가 되며, 클러스터는 다운되지 않고 동작하게 된다.

https://hazelcast.org/

In Memory Data Grid

더 빠른 결과를 제공하기 위해 여러 시스템의 메모리에 데이터를 분산시켜 저장하는 사례가 늘고 있습니다. 이런 제품을 IMDG라고 합니다.

https://d2.naver.com/helloworld/106824

Hazelcast가 클래스 패스에 적당한 구성이 발견되면, Spring Boot는 애플리케이션에 삽입할 수 있는 HazelcastInstance를 자동으로 구성합니다.

com.hazelcast.config.Configbean 을 정의하면 , Spring Boot는 그것을 사용합니다. 구성이 인스턴스 이름을 정의하면, Spring Boot는 새로운 인스턴스를 생성하기보다는 기존 인스턴스를 찾으려고 시도합니다.

hazelcast.xml다음 예와 같이 구성을 통해 사용할 구성 파일을 지정할 수도 있습니다 .

spring.hazelcast.config = classpath : config / my-hazelcast.xml

그렇지 않으면 스프링 부트는 기본 디렉토리(작업 디렉토리안의 hazelcast.xml 나 클래스 패스의 루트 에 있는) 에서 Hazelcast 설정을 찾습니다 . 또한 hazelcast.config시스템 속성이 설정되어 있는지 확인합니다 . 자세한 내용은 Hazelcast 문서 를 참조하십시오.

if hazelcast-client가 classpath에 존재하면, Spring Boot는 먼저 다음 설정 옵션을 체크하여 클라이언트를 생성하려고 시도합니다 :

  • com.hazelcast.client.config.ClientConfig빈 의 존재 .

  • spring.hazelcast.config특성에 의해 정의 된 구성 파일 .

  • hazelcast.client.config시스템 프로퍼티 의 존재 .

  • A hazelcast-client.xml는 작업 디렉토리 또는 클래스 경로의 루트에 있습니다.

Spring Boot는 또한 Hazelcast에 대한 명시 적 캐싱을 지원합니다 . 캐싱을 사용 HazelcastInstance하면 CacheManager 구현 이 자동으로 래핑됩니다 .

Last updated