TIL
-
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)로 동일한 파티션에 적재했으니 컨슘할 때 다른 파티션에 뭐가 와도 순서보장이 필요한 것과 문제는 ..
-
-
2023.08.12 기록장TIL 2023. 8. 12. 21:59
loginctl 유저레벨에서 서비스 실행 시 세션이 끊어지면 실행되었다 모든 프로세스가 종료되는 문제가 있음. 사용자 세션이 시작될 때 함께 시작되기때문에 로그인 접속 시에는 서비스가 다시 돌았음. 그래서 세션 로그인 시에 서비스가 문제없이 실행되는 줄 알았음. 그래서 도메인 기반으로 헬스 체크 시에는 이중화가 되어있어 서비스의 다운을 감지할 수 없었지만 서버 사용량을 보면 감지할 수 있었음. 문제를 하기 위해 세션이 끊겨도 서비스가 살아있도록 수정. User-level systemd service 등록 | Hooni's Playground systemd service하면 보통 root로 돌아가는 서비스를 생각하기 마련인데 이는 사용자 수준에서도 동작한다. 이 문서에는 service 작성에 대한 이야기보..
-
2023.08.05 기록장TIL 2023. 8. 5. 14:44
cpu는 레지스터의 크기인 64비트 혹은 32비트 연산만 할 수 있음. 모든 숫자는 2진수로 변환하여 연산하는데 정확히 2진수로 떨어지지 않는 숫자들이 있음. 그것들은 레지스터 안에 다 담을 수 없기에 비트 이상의 수는 첨삭처리를 하고 계산을 함. 소수점 같은 경우 나누어 떨어지지 않는 경우가 많아서 정확히 더 큰 숫자를 계산하는 방식을 고안해 냈다. 1. 고정 소수점 비트의 일부분은 숫자의 부호를, 일부는 양수를, 일부는 실수를 저장해서 소수를 저장하는 것이다. 근데 64비트이든 32비트이든 레지스터의 크기는 정해져 있기 때문에 정수 부분이 큰 비트를 차지하면 큰 숫자를 저장할 수 있겠지만 소수 부분이 정확한 숫자가 아닐 것이고 실수가 크다면 어느 정도는 근접하겠지만 양수는 큰 숫자를 저장하지 못한다...
-