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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions