본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
https://bit.ly/4hTSJNB


I. 학습 인증샷 4장 이상 포함

1. 공부시작: 날짜, 시각 다 나오도록

공부 시작

2. 공부 종료: 날짜 시각 다 나오도록

공부 종료

3. 1개 클립 수강 (강의장 목록 캡쳐, 수강화면이 보이지 않도록) 1장

clip30: 3번째 튜닝.. ㅠㅠ

4. 학습 인증샷 1장(필기 촬영이나 작업물 촬영)

병렬처리 최대화


II. 학습 후기 700자 이상 (공백 제외)

또 튜닝.. 마지막이다... 진짜..Consumer 튜닝에 대한 내용이다.

  • Kafka Consumer Group의 병렬 처리를 최적화하는 방법을 설명한다
    • 각 Partition은 특정 Consumer Group의 단일 Consumer에 의해서만 소비된다
    • Consumer는 Topic내의 다수의 Partition들을 Consume할 수 있다
    •  Partition Assignment Strategy에 따라 어떤 Partition이 어떤 Consumer에게 할당되는지가 결정된다
    • Strategy 종류
      • Range
      • RoundRobin
      • Sticky
      • CooperativeSticky
      • Custom
    • 하나의 Consumer Group에 둘 이상의 Consumer들을 추가하여 Consume 작업을 병렬화 할 수 있습니다.
  • Consumer Liveness
    • 각 Consumer는 전용 Thread를 통해 Group Coordinator(Broker)에게 주기적인 Liveness Signal를 보냄
    • session.timeout.ms 이상 Liveness Signal 이 수신되지 않으면
      • Consumer는 죽은 것으로 간주
      • Group Coordinator는 Partition 재할당을 Trigger
    •  나머지 Consumer Group 구성원에 대한 Partition 할당 계산은 Group Leader에게 위임
    • 그런 다음 Group Coordinator는 Group의 각 Consumer에게 새 Partition 할당을 전달
    • heartbeat.interval.ms
      • 두 개의 연속 하트비트 신호 사이의 간격이 얼마나 긴지 정의
    • Consumer의 Liveness Thread가 여전히 작동하지만,
      데이터에
      대한 Polling을 수행하는 Main Thread가 ”hang”이 걸려서 max.poll.interval.ms 을 초과하면
      해당 Consumer는 죽은
      것으로 간주
    • Group Coordinator 가 Partition 재할당을 Trigger합니다.
  • Consumer Group Join/Leave:
    • Consumer가 그룹에 Join하거나 Leave할 때 발생하는 Rebalancing 과정과 Group Coordinator의 역할 설명.

---

  • Apache Kafka에 대한 첫걸음을 떼기 위해 이 강의를 구매했는데....
  • 처음에는 이론부터 알려줘서 좋은데.. 현재 튜닝과 최적화까지 이론으로 계속 접하니... 이제 이게 맞는지 아리송하다..
  • 일단 Consumer 튜닝과 관련된 다양한 설정 옵션을 설명하는 강의이다.
  • 병렬 처리 최대화에 대한 내용은 심플하지만 명확한 지침을 주고 있다
    • 각 Partition은 특정 Consumer Group의 단일 Consumer에 의해서만 소비된다
    • Consumer는 Topic내의 다수의 Partition들을 Consume할 수 있다
  • 이 2가지의 명제는 변하지 않는다.opic의 Partition 수보다 Consumer가 많으면 일부 Consumer가 Idle 상태로 남는다는 점이 앞선 강의부터 계속 반복된다.
  • Offset Commit 전략은 Kafka가 얼마나 유연한 시스템인지(그리고 공부하기 얼마나 그지 같은지) 느끼게 해준 부분이다
    • Auto Commit은 간단하지만 중복 처리 가능성이 있고,
    • Manual Commit은 복잡하지만 더 정교한 제어가 가능하다
    • 특히 commitSync()와 commitAsync()의 차이를 배우며 상황에 맞게 설정을 조정해야 한다는 점이 
      미치게 한다( 상황에 맞게 설정을 그러니까 어떻게)
    • Partition 개수를 몇 개로 설정하는 것이 이상적일까?
      • 강의에서는  Broker 수와 Consumer 수를 고려하라고 했지만,
        실제로 어떤 기준으로 결정해야 하는지 더 구체적인 사례를 절대 주지 않는다
    • Fetch Request에서 fetch.min.bytes와 fetch.max.wait.ms를 조정할 때,
      Latency와 Throughput 간의 균형점을 어떻게 찾아야 하는가?
      • 삽질 안하도록 구체적인 가이드를 줬으면 좋겠다...
      • 하지만 주지 않는다 ㅠ
블로그 이미지

감동맨

rkaehdaos의 블로그

,