TIL
-
2023.10.15 기록장TIL 2023. 10. 15. 12:42
메시지를 DB 트랜잭션과 묶어서 커밋하여 비동기적으로 메시지 브로커에게 전달하는 패턴 자동 재시도는 내부 시스템의 지연이 발생할 수 있음. 도메인 특성상 지연이 되어도 큰 문제가 되지 않는다면 리트라이를 채택할 수 있을 듯 분산 시스템에서 메시지 안전하게 다루기 Transactional Outbox Pattern을 이용한 결과적 일관성 확보 by 강남언니 블로그 blog.gangnamunni.com 이벤트 저장소 활용 회원시스템 이벤트기반 아키텍처 구축하기 | 우아한형제들 기술블로그 {{item.name}} 최초의 배달의민족은 하나의 프로젝트로 만들어졌습니다. 배달의민족의 주문수는 J 커브를 그리는 빠른 속도로 성장했고, 주문수가 커지면서 자연스럽게 트래픽 또한 매우 커졌습니 techblog.woowah..
-
2023.09.23 기록장TIL 2023. 9. 22. 23:15
스프링 카프카를 사용하면서 컨슈머를 만들어야 할 때 새로 생성하는 것이 아닌 디폴트 컨슈머를 사용하는 것이 기본 설정을 확장하는 것이 안전하다고 생각했습니다. 자동 세팅을 모두 재정의하는 것보다. 그래서 디폴트 컨슈머 재정의는 싫으니 properties에서 deserializer만 재정의 해줄 수 있습니다. spring.kafka.consumer.value-deserializer=org.springframework.kafka.support.serializer.ErrorHandlingDeserializer #spring.kafka.consumer.properties.spring.deserializer.value.delegate.class=org.springframework.kafka.support.seri..
-
2023.09.20 기록장TIL 2023. 9. 20. 01:15
https://blog.voidmainvoid.net/262 Kafka consumer의 Automatic Commit은 중복이 생길 수 있다 https://books.google.co.kr/books?id=a3wzDwAAQBAJ&pg=PA77&lpg=PA77 Kafka: The Definitive Guide Every enterprise application creates data, whether it’s log messages, metrics, user activity, outgoing messages, or something else. And how to move all of this blog.voidmainvoid.net kafka template의 send 메소드를 보면 convertor를 사용..
-
2023.09.02 기록장TIL 2023. 9. 2. 01:49
연쇄 책임 패턴 vs list 둘은 행위는 비슷하지만 구현하는 방법에 따라 목적이 달라질 수 있다. 체이닝은 request에 재귀적인 전처리 후처리를 할 수 있지만 list구현은 재귀적으로 하려면 복잡한 콜백등의 구현을 해야 한다. 또 체이닝은 명시적으로 절차를 설명할 수 있다. list방식은 class끼리의 연관관계없이 request를 혼자서 처리할 수 있을 때 사용할 수 있다. 본인은 컬랙션 방식을 더 좋아하는데 이유는 체이닝 보다 코드가 더 간단하다는 점 때문이다. 딱히 재귀적 후처리가 필요하지 않고, 순서 보장이 필요 없다면 좋은 선택지이다. 다만 모든 list를 돌아도 실행을 할 수 있는 클래스가 없다면 default에서 실행하도록 또는 예외를 뱉도록 해줘야 한다. 체이닝에서는 가장 마지막 체인..
-
2023.08.31 기록장TIL 2023. 8. 31. 23:46
그룹에서 파티션별로 오프셋을 관리 파티션은 하나 이상의 컨슈머로 메시지를 보낼 수 없으니.. 만약에 메시지 키를 사용하여 동일 파티션에 메시지를 보낼 때 파티션 수와 컨슈머 수가 같다면 1:1 매칭일 것이고 그렇다면 분산환경이어도 메시지의 순서는 보장이 된다. 순서 보장의 개념은 동일 키, 동일 파티션 기준이고 스프링 카프카로 예를 들자면.. 아이템 하나 생성 수정의 순서 보장이 필요할 때.. 파티션 3개, 인스턴스가 3개이고 따로 컨슈머 멀티 스레드를 설정하지 않았다면 해당 인스턴스는 하나의 파티션에 매칭될 것이다. 만약 인스턴스 하나가 다운되면 파티션3, 인스턴스2 이겠지만 메시지 키(예로 아이템의 pk)로 동일한 파티션에 적재했으니 컨슘할 때 다른 파티션에 뭐가 와도 순서보장이 필요한 것과 문제는 ..
-