-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
122p. 회전디스크
높은 순차 탐색 성능

seek time + rotation time + transfer time
- 접근 패턴이 순차적일 때 좋은 성능
- 이리저리 이동하거나, 랜덤 액세스할 경우 시간이 더 걸린다...
적극적 디스크 캐시 전략
검색하니까 안나오는데, 124p에 나온 디스크 데이터를 메모리에 아주 적극적으로 캐시
이 의미인 것 같음
127p. 순환 중복 검사(Cyclic Redundancy Check, CRC)
특정 수학적 연산에 기초하여 계산한다.
- 받은 데이터를 통해 CRC를 계산하고, 받았던 CRC와 일치하는지 확인
- 네트워크를 통해 데이터를 전송하는 과정에서 오류가 있었는지 확인하기 위함 (노이즈, 간섭이 많다네요)
- 프로토콜 계층에서 물리층에 가까운지, 전송층에 가까운지에 따라 계산 방식이 다르다는데 정확히는 잘 모르겠다. (하드웨어적 vs 소프트웨어적)
- 하드웨어적 : 직렬데이터(한 비트씩 전송)에 기반한 출력
- 소프트웨어적 : 바이트 단위 기반 출력
132p. Long Polling
Short Polling
- 클라이언트(소비자)가 브로커에 새로운 메세지를 주기적으로 요청한다.
- 서버는 바로 응답한다 (메세지 여기 있어요 or 없어요)
- 커넥션이 자주 발생
Long Polling
- 클라이언트(소비자)가 브로커에 새로운 메세지를 주기적으로 요청한다.
- 서버는 응답을 지연시킨다.
- 메세지가 생기면 응답하거나, 타임아웃이 발생한다 (=최대 어느 정도 시간까지 기다리도록 함)
- 빈 응답이 감소한다.
Short / Long의 차이가 클라이언트의 요청 주기라고 생각했는데 아니었음
Short : 잦은 실시간 통신이 필요한 경우 좋지 않으나, 정기적인 업데이트나 간단한 정보 요청에 유리
152p. 카프카의 exactly once에 관한 이야기
카프카 기본 = at least once
- 유실은 없으나, 중복이 발생할 수 있음
- 평소에는 정확히 한 번만 메세지를 전달함. 문제가 생겼을 때만 at least once라는 것.
문제가 발생해도 exactly once를 보장하기 위한 카프카 기능
- 멱등성 프로듀서 : Producer unique ID + Sequence ID 전달
- 트랜잭션 프로듀서/컨슈머
데브원영 - 아파치 카프카 Exactly-once 처리의 진실과 거짓
결론 = 정확히 한 번을 달성할 수 있는 구간이 정해져있다.
- 프로듀서 → 토픽 : 멱등성 프로듀서
- 토픽A → 컨슈머 → 프로듀서 → 토픽B : 트랜잭션 프로듀서/컨슈머
토픽 → 컨슈머 구간만 봤을 때, 카프카로만 정확히 한 번을 달성할 수 없다.
- 즉, 토픽에서 특정 컨슈머가 정확히 1번만 소비하도록 보장할 수 없다.
- ex) 가져온 레코드를 데이터베이스에 넣는 작업 : 카프카와 데이터베이스는 서로 다른 서비스라 하나의 트랜잭션으로 묶을 수 없다.
→ 소비한 오프셋을 저장할 때 문제가 발생한다면, 동일한 레코드를 또 저장하게 될 것
→ 연동된 서비스에서 중복 적재에 대한 대응이 있다면(유니크 키?) 정확히 한 번 달성 가능
따라서 세 구간을 나눠서 생각한다.
- 프로듀서->토픽 : 멱등성 프로듀서
- 토픽->컨슈머->프로듀서->토픽 : 트랜잭션 프로듀서/컨슈머
- 토픽->컨슈머 : (카프카가 아닌 곳에서도) 멱등성 처리
Metadata
Metadata
Assignees
Labels
No labels
