티스토리 뷰

 

요즘에 이벤트소싱이라는 개발 방법을 채택한 프로젝트를 진행하고 있는데,

다음과 같은 공통의 문제 패턴을 툴마다 비슷하게, 그리고 조금씩 다르게 해결하고 있는 모습이 눈에 띄는 것이 아닌가!!

(그리고 또, 작년에 만들었던 job dispatcher도 결국은 이런거였구나.. 라는게 이제야 좀 눈에 들어왔다) 

 

하나의 스트림을 여러 인스턴스로 (중복되지 않게, 그러나 처리되지 않는 것도 없게) 잘~ 분배하는 법.
(심화 미션: 런타임에 인스턴스 개수가 줄거나 늘어날 수 있답니다.)

 

 

 

kafka kinesis
(KCL library)
axon TEP
(tracking event processor)
 
topic stream event stream (event store) 처리해야하는 스트림
partition shard segment 스트림 subset
파티션 개수는 늘릴 수 만 있는 걸로 앎.. resharding split & merge 런타임 segment 개수 조정
offset sequenceNumber timestamp 어디까지 처리했는지 체크
consumer group appName processing group consumer group
일반적으로 중복 처리 x
consumer KCL worker node (axon host) 컨슈머 어플리케이션 인스턴스 하나 (pod 1)
consumer

보통은 하나의 consumer 스레드가 하나의 스레드로 운영.
parrallel-consumer라는 라이브러리 사용해서 multi-threading
record processor thread 스트림 subset 중 하나 처리하는 worker
heartbeat / re-join

(뒤의 두개와 좀 개념이 다름)
lease claiming token  
rebalancing     할당 재조정
__consumer_offsets 라는 내부 토픽 dynamodb leaseTable token store 메타데이터 저장소

 

'시리즈 > Stream Processing' 카테고리의 다른 글

Kinesis Lease  (1) 2023.11.19
kafka rebalancing  (1) 2023.11.19
mysql 쿼리 처리 방식 - 스트리밍 vs 버퍼링  (0) 2022.12.10
iterable, iterator 그리고 generator  (0) 2022.08.08
iterator 패턴  (0) 2022.07.31
댓글
공지사항
최근에 올라온 글