Cluster를 소개하는 가장 좋은 방법은 Cluster가 해야할 역할에대해 간략하게
소개하는것입니다.
Cluster의 역할
- 구성 변경없이 새노드를 자동으로 검색하고 추가하며, 죽은 노드를 자동으로 제거함
- 클러스터의 노드 가용성 변화에 대한 알림을 구독할수 있게함
- 다양한 라우터를 지원하는 '역할' 할당으로 성능 분산에 대비하며 각각은 다른 성능 전략을 세울수 있습니다.
Cluster 에 사용되는 용어
- Node : 클러스터의 논리 구성원 입니다.
- Cluster : 멤버쉽 서비스를 통해 조인된 노드의 집합입니다.
- Gossip : 클러스터를 유지할수 있는 , 자동적으로 발생하는 메시들(잡담) 입니다.
- Leader : 멤버의 추가/삭제의 책임을 맞는 클러스터내의 단일노드입니다.
- Role : 클러스터 내의 명명된 책임으로 어플리케이션마다의 고유한 역활 정의
- Convergence : 클러스터 멤버의 상태변화 결정을 위한 수렴 메시지(잡담을 통한 단순 다수결)
Akka Cluster의 이점
- Fault-tolerant(결함허용) : 클러스터는 장애를 우아하게 복구합니다.
- Elastic(탄력성) : 클러스터는 본질적으로 필요에따라 확장/축소 할수 있습니다.
- Decentralized(분산형) : 동시에 실행되는 마이크로서비스 또는 여러개의 프로그램상태에대해 복제본을 가질수 있습니다.
- Peer-To-Peer : 새로운 노드는 구성 변경없이 네트워크에 완전히 통합될수 있습니다.
- 단일지점 실패/단일 병목 없음 : 여러 노드가 요청을 처리하여 병목현상이 없으며 특정 지점의 실패에대해 다른 노드를 통해 대비할수 있습니다.