작성
·
490
답변 2
0
안녕하세요, ksqldb 클러스터 관련 문의드립니다.
문서를 보면 토픽의 각 파티션에 대해서 active한 서버로 동작하고 active하지 않은 (본인의 담당이 아닌) 다른 파티션에 대해서는 stanby로 동작한다는 것 같습니다.
제가 이해한바로는 파티션 3개인 토픽에 대해 ksqldb 3개로 구성된 클러스터에서 쿼리를 수행한다면
partition-0, partition-1, partition-2에 대한 쿼리 수행을 각 ksqldb 서버에서 담당하게 되고 본인이 담당하지 않는 그 외 파티션에 대해서는 replica를 생성해 두는 것으로 이해되는데 그렇다면 분산 처리가 되는 클러스터가 아닌지 문의드립니다.
0
ㅎㅎ, 질문과 답변을 셀프로 하려니 조금 쑥쓰럽군요.
ksqlDB는 Cluster 구성을 지원한다고 스펙 또는 공식 문서에 나와 있습니다.
하지만 이 Cluster 구성은 Kafka Cluster 와 같이 1/N 기반의 Workload 분산 아키텍처라기 보다는 Active-Standby 개념의 장애 복구 서버라고 보시면 될 것 같습니다.
보통 여러개의 ksqlDB instance는 서로 독립적으로 움직이게 되며 이를 일반적인 Cluster 구성이라고 볼수는 없습니다
근데 이 Active-Standby 구성 역시 제가 시도해 보려고 했으나, 문서나 구성 방법이 명확하지 않아서 성공하지 못했습니다. 문서는 아래와 같습니다.
https://groups.google.com/g/ksql-users/c/59_AGd2Ufjw?pli=1
감사합니다.
음, 1, 2번 다 업무적으로 복잡하지 않을까 싶습니다.
대부분 분산까지 고려하지 않아도 KSQLDB 처리 성능이 나오지 않을까 싶습니다만...
정말 분산 처리까지 고려해야 할 정도로 현재 KSQLDB 성능이 안나오는지 부터 확인한 다음에 고민해도 늦지 않을 거 같습니다. 만약에 성능이 안나오면 고성능 SSD나 CPU Core를 수직 증설하는 방법이 더 낫지 않을까 싶습니다(물론 H/W 가격이 비싸지니까 당연히 초기 고려사항은 아니어서 질문을 하셨겠지만)
flink는 제가 잘 몰라서 ^^;; 패스 하도록 하겠습니다
좋은 답변 정말 감사합니다. 강사님
그런데 만약 kafka 한 토픽의 partition이 굉장히 많은 경우
분산처리 개념이 약한 ksqldb로 활용하려면
많은 수의 코어를 가진 컴퓨터를 안에서 ksqldb를 활용해 kafka의 큰토픽을 하부토픽으로 쪼갠다음 하부토픽 마다 따로 ksqldb를 사용해야 하는건가요 ?
아니면 kafak cluster만을 활용해 기존 토픽을 좀더 작은 토픽으로 나눈 이후 작은토픽에 ksqldb를 적용해야 하나요?
혹은 flink를 활용해서 분산처리를 하는게 나을지 ?
아니면 다른 더 좋은 대안이 있을까요?