Closed heowc closed 1 year ago
인체에서 중추 신경계 해당
폭 넓은 사례
단일 솔루션으로 핵심 3가지 기능으로 통해 원하는 end-to-end 이벤트 스트리밍을 구현 가능
어떻게?
장애가 나면 다른 서버에서 이어 받아, 데이터 유실없이 지속적인 운영을 보장 그렇다면 장애가 났을 때, 유살될 여지는?
어떻게? 🤔
개념과 용어
이벤트
유저 고유 id를 키로 가져가 순서를 보장해볼 수 있을 듯 대신 동일 파티션으로 들어가기 때문에 복제가 필수가 되어야 장애 대응이 가능할 듯? 관련 블로그: https://www.popit.kr/kafka-%EC%9A%B4%EC%98%81%EC%9E%90%EA%B0%80-%EB%A7%90%ED%95%98%EB%8A%94-%EC%B2%98%EC%9D%8C-%EC%A0%91%ED%95%98%EB%8A%94-kafka/
프로듀서: 이벤트를 발행하는 클라이언트 애플리케이션 컨슈머: 이벤트를 읽고 처리하는 클라이언트 애플리케이션
토픽: 이벤트 저장 단위(?)
그래도 너무 큰 메시지를 보내거나 한다면? 하드 디스크가 작다면? 문제가 될 듯? 관련 모니터링은 필수로 보여지며, 설계를 잘 해야할 듯 카프카 <-> 웹소켓 같이 알림 역할의 이벤트라면 굉장히 짧아도 무관할 듯 https://godekdls.github.io/Apache%20Kafka/topic-configuration/#retentionms
파티셔닝: 토픽 분할(?)
버킷이란? https://www.confluent.io/blog/prioritize-messages-in-kafka/#defining-buckets https://github.com/riferrei/bucket-priority-pattern https://kafka.apache.org/documentation/#topicconfigs
API 분류
유즈 케이스
디자인
동기
실시간 데이터 피드를 처리할 수 있는 통합 플랫폼이 되도록 설계
실시간 로그 집계
대용량 데이터 백로그 -> 짧은 지연 시간으로 데이터 전달
파티셔닝도 해야하고 분산 처리도 해야함 😢 -> 파티셔닝 / 컨슈머 탄생
스트림 전송 하되 내결함성을 보장 해야함 😢 -> ????
저장
잘이 어렵지... 😢
저장
데이터 크기와 왜 전혀 상관이 없을까? 🤔 Record ID, https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=k97b1114&logNo=140152019847
효율성
producer/consumer 모두 batch-size를 조절할 수 있음
배치 압축
리더가 프로듀서에게 메시지를 받았다면, 이를 팔로워에게 알리는가? 아니면 팔로워는 리더의 오프셋이 증가했는지 어떻게 인지하는가? -> 팔로워가 자기 오프셋보다 높은 값을 리더에게 일단 찔러봄
리더에게 리더에포크를 요청을 보낼 수 없을 정도의 장애 상황이라면? -> TBD
replication factor
궁금점
궁금증
스태틱 멤버십
리밸런싱은 컨슈머 그룹 전체를 대상이기 때문에 부담이 많은 작업 중 하나이다
레인지 파티샨 할당 전략
컨슈머 그룹에 컨슈머가 하나면 리밸런싱이 일어날까..?
The default partition.assignment.strategy is changed to "[RangeAssignor, CooperativeStickyAssignor]", which will use the RangeAssignor by default, but allows upgrading to the CooperativeStickyAssignor with just a single rolling bounce that removes the RangeAssignor from the list. Please check the client upgrade path guide here for more detail.
다양한 이유로 주기적인 버전 업그레이드는 필수이다.
{MAJOR}
.{MINOR}
.{PATCH}
2.6
설치inter.broker.protocol.version
=2.1log.message.protocol.version
=2.1설정이나 환경 문제로 예상치 못한 문제가 생길 수 있으니 개발 서버와 운영서버을 동일한 환경으로 맞추고 사전 테스트를 해볼 것
kafka-reassign-partitions.sh
도구 활용
log.message.format.version
제거 예정
inter.broker.protocol.version
은 kraft 적용 중인 3.3 이상은 사용 안됨
protocol.version 처리 방식
내부 시스템으로 사용되어 기본적으로 설정되어 있지 않음
https://godekdls.github.io/Apache%20Kafka/contents/
http://www.yes24.com/Product/Goods/104410708