일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- K8s
- Java
- 스트림
- spring
- list
- GC
- Collection
- 자바
- MSA
- Kotlin
- Real MySQL
- JPA
- IntellJ
- Stack
- thread
- jvm
- 토비의 스프링 정리
- 백준
- OS
- 보조스트림
- 쿠버네티스
- SpringBoot
- gradle
- 스프링
- mysql
- 이스티오
- redis
- 자바 ORM 표준 JPA 프로그래밍
- Stream
- 토비의 스프링
- Today
- Total
목록Kafka (4)
인생을 코딩하다.

보통 Kafka 사용 시 처리량을 늘리기 위해 컨슈머와 파티션 수를 늘린 후 병렬처리를 통해 처리량을 증가시킵니다. 하지만 저는 처리량을 늘릴 때마다 파티션을 추가하는 것이 최선인지에 대한 의문을 가지고 있었습니다. 파티션을 늘리는 대신, 한 파티션에서 단일 메시지가 아니라 여러 개의 메시지를 가져와 병렬 처리하면, 파티션 개수를 증가시키지 않고도 성능을 높일 수 있지 않을까 하는 고민을 해왔습니다. 이러한 고민을 하게 된 이유는 아래와 같습니다. 인프라 비용 증가파티션이 많아질수록 추가적인 브로커가 필요할 가능성이 높아지고 브로커 노드 수 증가에 따른 서버 비용, 네트워크 비용 등이 상승할 수 있습니다.브로커 파일 시스템 리소스 사용량 증가Kafka 브로커는 각 파티션별로 데이터를 저장합니다. 데이터 ..

카프카를 사용시 consume이 단 한 번만 일어나면 좋겠지만 실제로 그렇지 않은 경우가 종종 있습니다. consume이 딱 한 번만 일어나지 않으면 어떤 문제가 발생할까요? consumer가 카프카 브로커로부터 메시지를 가져와서 데이터 처리를 할 텐데, 만일 중복 consume이 발생하면 그 데이터 처리도 중복으로 처리될 수 있습니다. 때로는 consume 누락이 발생할 수도 있습니다. 그럼 데이터 처리도 누락됩니다. 이 문제를 막기 어려운 근본적인 이유는 아래와 같습니다. commit 시점과 데이터 처리 완료 시점이 완벽하게 일치할 수 없는 경우(그 시간 간극 동안 리밸런싱이 발생할 수도 있음) offset 관리가 consumer측이 아니라 broker 측에서 이루어지는 경우(_consumer_off..

카프카 리밸런싱이란 무엇일까요? 컨슈머 그룹으로 이루어진 컨슈머 들 중 일부 컨슈머에 장애가 발생하면, 장애가 발생한 컨슈머에 할당된 파티션은 장애가 발생하지 않은 컨슈머에 소유권이 넘어갑니다. 이러한 과정을 리밸런싱이라고 부릅니다. 리밸런싱이 일어날 수 있는 상황 두 가지는 크게 컨슈머가 추가되는 상황과 컨슈머가 제외되는 상황으로 나뉩니다. 이슈가 발생한 리밸런싱 즉, 컨슈머를 컨슈머 그룹에서 제외하여 모든 파티션이 지속적으로 데이터를 처리할 수 있도록 가용성을 높여 주어야 합니다. 그럼 컨슈머에 문제가 발생했을 때 리밸런싱이 일어난다는 건데, 문제가 발생한걸 어떻게 실시간으로 판단하고 자동으로 리밸런싱이 되게 할 수 있을까요? 저는 리밸런싱에 관해 이러한 생각이 들었습니다. "그럼 컨슈머에 장애가 난..

Apache Kafka란? Apache Kafka는 이벤트 스트리밍 플랫폼입니다. Kafka는 고성능 TCP 네트워크 프로토콜을 통해 통신하는 서버와 클라이언트로 구성된 분산 시스템입니다. 베어메탈 하드웨어, 가상 머신, 온프레미스 및 클라우드 환경의 컨테이너에 배포할 수 있습니다. 서버 : Kafka는 여러 데이터 센터 또는 클라우드 지역에 거쳐 있을 수 있는 하나 이상의 서버 클러스터로 실행됩니다. 이러한 서버 중 일부는 브로커라고 하는 스토리지 계층을 형성합니다. 다른 서버는 Kafka Connect 를 실행 하여 데이터를 이벤트 스트림으로 지속적으로 가져오고 내보내고 Kafka를 관계형 데이터베이스 및 기타 Kafka 클러스터와 같은 기존 시스템과 통합합니다. 미션 크리티컬한 사용 사례를 구현할 ..