나는 카산드라를 연구 중이며 내가 연구하고있는 프로젝트를위한 클러스터를 설정하는 과정에있다. 다음 예제를 고려하십시오. 각각에 대해 200GB 공간이있는 5 노드 클러스터를 설정한다고 가정 해보십시오. 이는 전체 공간의 최대 1000GB (둥근 약 1TB)에 해당합니다. 내 파티션이 클러스터에서 균등하게 분할되었다고 가정하면 노드를 쉽게 추가하고 선형 확장 성을 달성 할 수 있습니다. 그러나이 5 개의 노드가 200GB의 SSD 한계에 도달하면 어떻게 될까요? 이 경우 5 개의 노드를 추가 할 수 있으며 이제는 10 개의 노드로 분할됩니다. 그러나 오래된 노드는 여전히 클러스터의 일부이므로 데이터를 쓰고 있습니다. 이 5 개의 이전 노드를 '읽기 전용'으로 만드는 방법이 있습니까? 전체 클러스터에서 무작위 읽기 쿼리를 실행하고 싶지만 더 이상 구형 노드에 쓰기를 원하지 않습니다 (200GB 제한에 의해 제한됨).카산드라 클러스터의 노드가 한계에 도달하면 어떻게해야합니까?
도움을 주시면 대단히 감사하겠습니다. 고맙습니다.
참고 : 쿼리의 99 %가 읽기에 1 % 이하인 쓰기 쿼리라고 말할 수 있습니다. 앱이 Cassandra에서 클릭 이벤트를 지속해야합니다.
답장을 보내 주셔서 감사합니다. 내 이해는 다음과 같습니다. 노드를 클러스터에 추가하면 이전 노드의 데이터가 그대로 유지되지만 cassandra의 vnode 및 적절한 분할 전략을 사용하면 새 데이터가 이전 노드로 방출됩니다. 계속 데이터를 가져올 수 있습니다. Cassandra는 노드를 추가하여 이전 노드의 데이터를 가져 와서 새 노드로 전송 한 다음 이전 노드의 데이터를 삭제합니다. – Ankush92
나는 거의 같은 말을하고 있습니다. 동일한 데이터 센터에 노드를 추가하면 토큰 범위 중 일부가 전체 데이터로드에 기여하기 위해 할당됩니다 (험담을 통해 다른 노드에 알려짐). 이 토큰 범위에 해당하는 데이터는 해당 새 노드에 보관됩니다. 따라서 일부 오래된 노드는 자체로드 중 일부를 해제합니다. – r005t3r
또한이 새로운 데이터 배포는 일정하지 않습니다. 하지만 * 노르 트 툴 수리를 실행하여 균형을 잡을 수 있습니다. 추신. 그것의 * nodetool 정리 * – r005t3r