Skip to content

[Volume 2][Chapter 04] Q&A #20

@KKambi

Description

@KKambi

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를 보장하기 위한 카프카 기능

  1. 멱등성 프로듀서 : Producer unique ID + Sequence ID 전달
  2. 트랜잭션 프로듀서/컨슈머
    • 프로듀서 : 여러 레코드를 원자 단위로 묶어 전달
    • 컨슈머 : 트랜잭션이 완료된 메세지만 읽음
    • 추가적으로 : 컨슈머의 오프셋 커밋을 트랜잭션에 포함하는 기능 (sendOffsetsToTransaction)
    • This method should be used when you need to batch consumed and produced messages together, typically in a consume-transform-produce pattern.
      제목 없음

데브원영 - 아파치 카프카 Exactly-once 처리의 진실과 거짓
결론 = 정확히 한 번을 달성할 수 있는 구간이 정해져있다.

  1. 프로듀서 → 토픽 : 멱등성 프로듀서
  2. 토픽A → 컨슈머 → 프로듀서 → 토픽B : 트랜잭션 프로듀서/컨슈머

토픽 → 컨슈머 구간만 봤을 때, 카프카로만 정확히 한 번을 달성할 수 없다.

  • 즉, 토픽에서 특정 컨슈머가 정확히 1번만 소비하도록 보장할 수 없다.
  • ex) 가져온 레코드를 데이터베이스에 넣는 작업 : 카프카와 데이터베이스는 서로 다른 서비스라 하나의 트랜잭션으로 묶을 수 없다.
    → 소비한 오프셋을 저장할 때 문제가 발생한다면, 동일한 레코드를 또 저장하게 될 것
    → 연동된 서비스에서 중복 적재에 대한 대응이 있다면(유니크 키?) 정확히 한 번 달성 가능

따라서 세 구간을 나눠서 생각한다.

  1. 프로듀서->토픽 : 멱등성 프로듀서
  2. 토픽->컨슈머->프로듀서->토픽 : 트랜잭션 프로듀서/컨슈머
  3. 토픽->컨슈머 : (카프카가 아닌 곳에서도) 멱등성 처리

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions