[Kafka] Apache Kafka

๐ŸณApache Kafka

๐Ÿ’ซ์•„ํŒŒ์น˜ ์นดํ”„์นด ๊ฐœ์š” ๋ฐ ์„ค๋ช…

  • ํ๋ฆ„
    • Source Application โ†’ KafKa โ†’ Target Application
  • ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์šฉ์ด
  • ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ์ข…์†์„ฑ์„ ์•ฝํ™”

๐Ÿ’ซํ† ํ”ฝ์ด๋ž€?

  • ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ๊ณต๊ฐ„
  • ํ† ํ”ฝ ์—ฌ๋Ÿฌ ๊ฐœ ์ƒ์„ฑ ๊ฐ€๋Šฅ.
  • DB ํ…Œ์ด๋ธ” ๋˜๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ํด๋”์™€ ์œ ์‚ฌ
  • ๋ชฉ์ ์— ๋”ฐ๋ผ ํ† ํ”ฝ์„ ๋งŒ๋“ค๋ฉด ๊ด€๋ฆฌ ์šฉ์ด

๐Ÿ’ซํ† ํ”ฝ ๋‚ด๋ถ€

topic

  • ํ•˜๋‚˜์˜ ํ† ํ”ฝ์€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ํŒŒํ‹ฐ์…˜์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ
  • ํŒŒํ‹ฐ์…˜
    • 0๋ถ€ํ„ฐ ์‹œ์ž‘
    • ํŒŒํ‹ฐ์…˜ ๋‚ด์— ๋ฐ์ดํ„ฐ๊ฐ€ ์Œ“์ž„. ๊ฐ ๋ฐ์ดํ„ฐ๋Š” ์˜คํ”„์…‹(offset)์ด๋ผ๊ณ  ํ•˜๋Š” ์ˆซ์ž๊ฐ€ ๋ถ™๊ฒŒ๋จ.
    • ์ปจ์Šˆ๋จธ๋Š” ํŒŒํ‹ฐ์…˜์˜ ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋ถ€ํ„ฐ ๊ฐ€์ ธ๊ฐ
    • ์ปจ์Šˆ๋จธ๊ฐ€ record๋“ค์„ ๊ฐ€์ ธ๊ฐ€๋„ ๋ฐ์ดํ„ฐ๋Š” ์‚ญ์ œ๋˜์ง€ ์•Š์Œ
      • ์ง€์›Œ์ง€์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋Š” ์ƒˆ๋กœ์šด ์ปจ์Šˆ๋จธ๊ฐ€ ๋‹ค์‹œ 0๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ๊ฐ
        • ๋‹จ, ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์ด ๋‹ฌ๋ผ์•ผ ํ•˜๊ณ , auto.offset.reset = earliset ์„ธํŒ…๋˜์–ด ์žˆ์–ด์•ผ ํ•จ.
    • ํŒŒํ‹ฐ์…˜ 2๊ฐœ ์ด์ƒ ๊ฒฝ์šฐ
      • ํ”„๋กœ๋“€์„œ๊ฐ€ ํ‚ค ์„ค์ • ๊ฐ€๋Šฅ
        1. ํ‚ค null & ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋„ˆ ์‚ฌ์šฉ ๊ฒฝ์šฐ
          • Round Robin ์œผ๋กœ ํ• ๋‹น
        2. ํ‚ค not null & ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋„ˆ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ
          • ํ‚ค์˜ hash ๊ฐ’์„ ๊ตฌํ•ด ํŠน์ • ํŒŒํ‹ฐ์…˜์— ํ• ๋‹น
      • ํŒŒํ‹ฐ์…˜ ๋Š˜๋ฆด ๋•Œ ์œ ์˜!!!
        • ํŒŒํ‹ฐ์…˜์„ ๋Š˜๋ฆด ์ˆ˜ ์žˆ์ง€๋งŒ ์ค„์ผ ์ˆ˜๋Š” ์—†์Œ
        • Why ํŒŒํ‹ฐ์…˜ ์ฆ๊ฐ€? ํŒŒํ‹ฐ์…˜์„ ๋Š˜๋ฆฌ๋ฉด ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ถ„์‚ฐ ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ
    • Record ์–ธ์ œ ์‚ญ์ œ?
      • ์˜ต์…˜์— ๋”ฐ๋ผ ๋‹ค๋ฆ„
        • log.retention.ms : ์ตœ๋Œ€ record ๋ณด์กด ์‹œ๊ฐ„
        • log.retention.byte : ์ตœ๋Œ€ record ๋ณด์กด ํฌ๊ธฐ(byte)

๐Ÿ’ซ๋ธŒ๋กœ์ปค, ๋ณต์ œ, ISR

๐Ÿฌ์นดํ”„์นด ๋ธŒ๋กœ์ปค

  • ์นดํ”„์นด๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋Š” ์„œ๋ฒ„ ๋‹จ์œ„
  • ๋ณดํ†ต 3๊ฐœ ์ด์ƒ์˜ broker ๊ถŒ์žฅ
  • ๋ธŒ๋กœ์ปค ๊ฐœ์ˆ˜๊ฐ€ 3์ด๋ฉด replication์€ 3์„ ์ดˆ๊ณผํ•  ์ˆ˜ ์—†์Œ

๐ŸฌReplication

  • ํŒŒํ‹ฐ์…˜ ๋ณต์ œ๋ฅผ ์˜๋ฏธ
  • Eg) replication=1 : partition 1๊ฐœ๋งŒ ์กด์žฌ /
    • replication=3 : partition ์›๋ณธ 1๊ฐœ / ๋ณต์ œ๋ณธ 2๊ฐœ
  • Leader partition : ๋ฐ์ดํ„ฐ ์›๋ณธ์„ ์ €์žฅํ•˜๋Š” ํŒŒํ‹ฐ์…˜
    • ํ”„๋กœ๋“€์„œ๊ฐ€ ํ† ํ”ฝ์˜ ํŒŒํ‹ฐ์…˜์— ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ์‹œ ์ „๋‹ฌ๋ฐ›๋Š” ์ฃผ์ฒด
    • ํ”„๋กœ๋“€์„œ์˜ ack ์˜ต์…˜ : partition์˜ replication๊ณผ ๊ด€๋ จ
      • 0 : Leader partition์— ๋ฐ์ดํ„ฐ ์ „์†ก ํ›„ ์‘๋‹ต๊ฐ’ ๋ฐ›์ง€ ์•Š์Œ
        • ์†๋„ ๋น ๋ฅด๋‚˜ / ๋ฐ์ดํ„ฐ ์œ ์‹ค ๊ฐ€๋Šฅ์„ฑ ์กด์žฌ
      • 1 : leader partition์— ๋ฐ์ดํ„ฐ ์ „์†ก ํ›„ ์ •์ƒ ์‘๋‹ต ์—ฌ๋ถ€ ์‘๋‹ต๊ฐ’ ์ „๋‹ฌ
        • ๋ณต์ œ ์—ฌ๋ถ€ ํ™•์ธ ๋ถˆ๊ฐ€ : ๋ฐ์ดํ„ฐ ์œ ์‹ค ๊ฐ€๋Šฅ์„ฑ ์กด์žฌ. (Leader ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๋ฐ›์€ ์ฆ‰์‹œ ๋ฐ”๋กœ ๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ ๋ณต์ œ๊ฐ€ ์ •์ƒ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ)
      • all : ์‘๋‹ต + ๋ณต์ œ ์ •์ƒ ์—ฌ๋ถ€
        • ๋ฐ์ดํ„ฐ ์œ ์‹ค์€ ์—†์œผ๋‚˜ / ์†๋„ ํ˜„์ €ํžˆ ๋Š๋ฆผ
  • Follower partition : ์›๋ณธ ์ €์žฅ ์ œ์™ธ ํŒŒํ‹ฐ์…˜
  • ISR (In Sync Replica) : Leader + Follower partitions
  • ๊ณ ๊ฐ€์šฉ์„ฑ ๋ชฉ์ ์œผ๋กœ Replication ํ™œ์šฉ
    • ํ•˜๋‚˜์˜ ํŒŒํ‹ฐ์…˜์—์„œ ๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ ๋‹ค๋ฅธ ํŒŒํ‹ฐ์…˜ ํ™œ์šฉ ๊ฐ€๋Šฅ
  • ๋งŽ์œผ๋ฉด ์ข‹์€๊ฒŒ ์•„๋‹˜
    • ๋ธŒ๋กœ์ปค๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฆฌ์†Œ์Šค ์–‘๋„ ์ฆ๊ฐ€ (eg. Disk usage 1TB)
    • ๋ฐ์ดํ„ฐ๋Ÿ‰ & ์ €์žฅ์‹œ๊ฐ„ ๊ณ ๋ คํ•œ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ์ˆ˜ ๊ฒฐ์ •
    • ๋ธŒ๋กœ์ปค 3๊ฐœ์ด์ƒ ์‚ฌ์šฉ์‹œ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ 3 ์ถ”์ฒœ

๐Ÿ’ซํŒŒํ‹ฐ์…”๋„ˆ๋ž€?

๏ฟผpartitioner

  • ํ”„๋กœ๋“€์„œ๋Š” ํŒŒํ‹ฐ์…”๋„ˆ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ธŒ๋กœ์ปค๋กœ ์ „๋‹ฌ
  • ๋ฐ์ดํ„ฐ๋ฅผ ํ† ํ”ฝ์˜ ์–ด๋–ค ํŒŒํ‹ฐ์…˜์— ๋„ฃ์„์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์—ญํ• 
    • ๋ ˆ์ฝ”๋“œ์— ํฌํ•จ๋œ ๋ฉ”์‹œ์ง€ ํ‚ค ๋˜๋Š” ๋ฉ”์‹œ์ง€ ๊ฐ’์— ๋”ฐ๋ผ ํŒŒํ‹ฐ์…˜์˜ ์œ„์น˜ ๊ฒฐ์ •
  • ๋””ํดํŠธ ํŒŒํ‹ฐ์…”๋„ˆ : UniformStickyPartitioner
    • ๋ฉ”์‹œ์ง€ ํ‚ค ์œ ๋ฌด์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์ž‘๋™
      1. ๋ฉ”์‹œ์ง€ ํ‚ค ์กด์žฌ ์‹œ
        • ํ•ด์‹œ ๊ฐ’ => ํŒŒํ‹ฐ์…˜ ๋ฒˆํ˜ธ
        • ํ•ด์‹œ ๊ฐ’์ด ๋™์ผํ•  ๊ฒฝ์šฐ ๋™์ผํ•œ ํŒŒํ‹ฐ์…˜์— ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅ๋˜๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Œ.
      2. ๋ฉ”์‹œ์ง€ ํ‚ค ์—†์„ ์‹œ
        • Round Robin์œผ๋กœ ์ €์žฅ
          • ์กฐ๊ธˆ ๋‹ค๋ฅด๊ฒŒ ์ €์žฅ. ํ”„๋กœ๋“€์„œ์—์„œ ๋ฐฐ์น˜๋กœ ๋ชจ์„ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์•„ ํŒŒํ‹ฐ์…˜์— ๋ณด๋ƒ„
        • ํŒŒํ‹ฐ์…˜์— ์ ์ ˆํžˆ ๋ถ„๋ฐฐ๋จ
  • Custom Partitioner ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    • Kafka์—์„œ Partitioner ์ธํ„ฐํŽ˜์ด์Šค ์ œ๊ณต
    • ์–ธ์ œ ์‚ฌ์šฉ?
      • Eg. vip๊ณ ๊ฐ์„ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์กฐ๊ธˆ ๋” ๋นจ๋ฆฌ ์ฒ˜๋ฆฌ. ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋Š˜๋ฆด ์ˆ˜ ์žˆ์Œ. Vip ๊ณ ๊ฐ์„ ์œ„ํ•œ ํŒŒํ‹ฐ์…˜ ๊ฐœ์ˆ˜๋ฅผ ๋” ๋งŽ์ด ๊ฐ€์ ธ๊ฐ.

๐Ÿ’ซKafka Lag์ด๋ž€?

์นดํ”„์นด ๋ชจ๋‹ˆํ„ฐ๋ง ์ง€ํ‘œ.

๐ŸฌKafka Consumer Lag

  • ํ”„๋กœ๋“€์„œ๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋„ฃ์€ offset๊ณผ ์ปจ์Šˆ๋จธ๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ์ฝ์€ offset ๊ฐ„์˜ ์ฐจ์ด
  • ํ† ํ”ฝ ๋‚ด ํŒŒํ‹ฐ์…˜ ์—ฌ๋Ÿฌ ๊ฐœ ์กด์žฌ ์‹œ lag ์—ญ์‹œ ์—ฌ๋Ÿฌ ๊ฐœ ์กด์žฌ ๊ฐ€๋Šฅ
  • ์ฃผ๋กœ ์ปจ์Šˆ๋จธ์˜ ์ƒํƒœ์— ๋Œ€ํ•ด ๋ณผ ๋•Œ ์‚ฌ์šฉ
  • Records-lag-max
    • ํ•œ ๊ฐœ์˜ ํ† ํ”ฝ๊ณผ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์— ๋Œ€ํ•œ lag์ด ์—ฌ๋Ÿฌ๊ฐœ ์กด์žฌํ•  ์ˆ˜ ์žˆ์„ ๋•Œ ๊ทธ ์ค‘ ๊ฐ€์žฅ ๋†’์€ ์ˆซ์ž์˜ lag

๐Ÿ’ซKafka Burrow

  • KafkaConsumer ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ํ˜„์žฌ Lag ์ •๋ณด ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ. Lag ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์ปจ์Šˆ๋จธ ๋‹จ์œ„์—์„œ ํ•˜๋Š” ๊ฒƒ์€ ์œ„ํ—˜ํ•˜๊ณ  ์šด์˜์š”์†Œ๊ฐ€ ๋งŽ์ด ๋“ค์–ด๊ฐ
    • Why?
      • ์ปจ์Šˆ๋จธ ์ƒํƒœ์— ๋””ํŽœ๋˜์‹œ๊ฐ€ ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ. ์ปจ์Šˆ๋จธ๊ฐ€ ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋  ๊ฒฝ์šฐ ๋”์ด์ƒ lag ์ •๋ณด ๋ณด๋‚ผ ์ˆ˜ ์—†์Œ. Lag ์ธก์ • ๋ถˆ๊ฐ€ํ•ด์ง.
      • Consumer ์ถ”๊ฐ€๋  ๋•Œ๋งˆ๋‹ค Lag ์ธก์ • ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ํ•„์š”.
  • ์˜คํ”ˆ์†Œ์Šค
  • Golang
  • ์ปจ์Šˆ๋จธ Lag ๋ชจ๋‹ˆํ„ฐ๋ง์„ ๋„์™€์ฃผ๋Š” ๋…๋ฆฝ์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
  • 3๊ฐ€์ง€ ํŠน์ง•
    1. ๋ฉ€ํ‹ฐ ์นดํ”„์นด ํด๋Ÿฌ์Šคํ„ฐ ์ง€์›
      • ์นดํ”„์นด ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ๋”๋ผ๋„ ๋ฒ„๋กœ์šฐ 1๊ฐœ์—๋งŒ ์—ฐ๋™ํ•˜๋ฉด ์นดํ”„์นด ํด๋Ÿฌ์Šคํ„ฐ๋“ค์— ๋ถ™์€ ์ปจ์Šˆ๋จธ์˜ Lag๋ฅผ ๋ชจ๋‘ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ€๋Šฅ
    2. Sliding window๋ฅผ ํ†ตํ•œ Consumer์˜ status ํ™•์ธ
      • โ€˜ERRORโ€™, โ€˜WARNINGโ€™, โ€˜OKโ€™
        • ERROR : Consumer๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ๊ฐ€์ง€ ์•Š๋Š” ๊ฒฝ์šฐ
        • WARNING : ๋ฐ์ดํ„ฐ์–‘์ด ์ผ์‹œ์ ์œผ๋กœ ๋งŽ์•„์ง€๋ฉด์„œ Consumer offset์ด ์ฆ๊ฐ€๋˜๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ
        • OK
    3. HTTP API ์ œ๊ณต

Burrow ์†Œ๊ฐœ : https://blog.voidmainvoid.net/243
Burrow์˜ Consumer status ํ™•์ธ ๋ฐฉ๋ฒ• : https://blog.voidmainvoid.net/244
Burrow http endpoint ์ •๋ฆฌ : https://blog.voidmainvoid.net/245
Burrow github : https://github.com/linkedin/Burrow

AWS์— ์นดํ”„์นด ํด๋Ÿฌ์Šคํ„ฐ ์„ค์น˜ํ•˜๊ธฐ : https://blog.voidmainvoid.net/325

๐Ÿ’ซKafka Producer

๐Ÿฌํ”„๋กœ๋“€์„œ ์—ญํ• 

  • Topic์— ํ•ด๋‹นํ•˜๋Š” ๋ฉ”์‹œ์ง€ ์ƒ์„ฑ
  • ํŠน์ • topic์œผ๋กœ ๋ฐ์ดํ„ฐ publish
  • ์ฒ˜๋ฆฌ ์‹คํŒจ/์žฌ์‹œ๋„

Kafka-client ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜์กด์„ฑ ์ถ”๊ฐ€ ํ•„์š”.

  • ๋ธŒ๋กœ์ปค ๋ฒ„์ „ & ํด๋ผ์ด์–ธํŠธ ๋ฒ„์ „ ํ˜ธํ™˜์„ฑ ํ™•์ธ ํ•„์ˆ˜!!!

๐ŸฌKafka Producer ์ ์šฉ Java ์†Œ์Šค

producer ๏ฟผ

๐ŸฌKey๊ฐ€ Null ์ธ ๊ฒฝ์šฐ

producer key null๏ฟผ

๐ŸฌKey๋ฅผ ์ง€์ •ํ•œ ๊ฒฝ์šฐ

  • ํŒŒํ‹ฐ์…˜์„ ์ค‘๊ฐ„์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ key์™€ ํŒŒํ‹ฐ์…˜์˜ ๋งค์นญ์ด ๊นจ์ง!!
    • ์ค‘๊ฐ„์— ์ถ”๊ฐ€์ ์ธ ํŒŒํ‹ฐ์…˜์„ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•จ.

๏ฟผproducer key not null๏ฟผ

๐Ÿ’ซKafka Consumer

ํŒŒํ‹ฐ์…˜์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ด(polling)

๐Ÿฌ์ปจ์Šˆ๋จธ ์—ญํ• 

  • Topic์˜ partition์œผ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ Polling
  • Partition offset ์œ„์น˜ ๊ธฐ๋ก (commit)
  • Consumer group์„ ํ†ตํ•ด ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ

Kafka-client ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜์กด์„ฑ ์ถ”๊ฐ€ ํ•„์š”.

  • ๋ธŒ๋กœ์ปค ๋ฒ„์ „ & ํด๋ผ์ด์–ธํŠธ ๋ฒ„์ „ ํ˜ธํ™˜์„ฑ ํ™•์ธ ํ•„์ˆ˜!!!

๋‹ค๋ฅธ ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ๊ณผ ๋‹ค๋ฅธ ์ 

  • ์ปจ์Šˆ๋จธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ๊ฐ€๋ฉด ํ ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ ์‚ฌ๋ผ์ง
  • ์นดํ”„์นด๋Š” ํ ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ ์‚ฌ๋ผ์ง€์ง€ ์•Š์Œ

๐ŸฌKafka Consumer ์ ์šฉ Java ์†Œ์Šค

๏ฟผ๏ฟผconsumer๏ฟผ

  • ํด๋ง ๋ฃจํ”„ : poll() ๋ฉ”์„œ๋“œ๊ฐ€ ํฌํ•จ๋œ ๋ฌดํ•œ๋ฃจํ”„
    • Consumer API ํ•ต์‹ฌ ๋กœ์ง
    • 0.5์ดˆ ๋™์•ˆ ๋ฐ์ดํ„ฐ ๋„์ฐฉ ๊ธฐ๋‹ค๋ฆผ. ์ดํ›„ ์ฝ”๋“œ ์‹คํ–‰
    • ๋งŒ์•ฝ 0.5์ดˆ๋™์•ˆ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์˜ค์ง€ ์•Š์œผ๋ฉด ๋นˆ๊ฐ’์„ ๋ ˆ์ฝ”๋“œ ๋ฐ˜ํ™˜ / ๋ฐ์ดํ„ฐ ์กด์žฌ ์‹œ records ๊ฐ’ ๋ฐ˜ํ™˜
    • records๋Š” ๋ฐ์ดํ„ฐ ๋ฐฐ์น˜๋กœ, ๋ ˆ์ฝ”๋“œ์˜ ๋ฌถ์Œ list

๏ฟผ๏ฟผconsumer๏ฟผ

๐ŸฌKafka Consumer ์ž‘๋™๋ฐฉ์‹

๏ฟผ๏ฟผ๏ฟผconsumer๏ฟผ

  • offset์€ ํ† ํ”ฝ๋ณ„, ํŒŒํ‹ฐ์…˜๋ณ„๋กœ ๋ฉ”๊ฒจ์ง
    • offset์€ ์ปจ์Šˆ๋จธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋Š์ง€์ ๊นŒ์ง€ ์ฝ์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์šฉ๋„
  • ์ปจ์Šˆ๋จธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ๊ฐˆ๋•Œ๋งˆ๋‹ค ์นดํ”„์นด์˜ __consumer_offset ํ† ํ”ฝ์— offset ์ •๋ณด๋ฅผ ์ €์žฅ (commit)
    • ์˜ˆ๊ธฐ์น˜ ์•Š๊ฒŒ ์‹คํ–‰์ด ์ค‘๋‹จ๋  ๊ฒฝ์šฐ, __consumer_offset ํ† ํ”ฝ์˜ offset ์ •๋ณด๋ฅผ ํ† ๋Œ€๋กœ ์‹œ์ž‘์œ„์น˜ ๋ณต๊ตฌ ๊ฐ€๋Šฅ

๐Ÿฌ๋™์ผํ•œ Kafka Consumer Group

๏ฟผ๏ฟผconsumer๏ฟผ ๏ฟผ

๐Ÿฌ์—ฌ๋Ÿฌ ๊ฐœ์˜ Kafka Consumer Group

๏ฟผ๏ฟผ๏ฟผconsumer๏ฟผ

  • ์„œ๋กœ ๋‹ค๋ฅธ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์— ๋Œ€ํ•œ offset ์ •๋ณด๋Š” ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Œ
  • __consumer_offset ํ† ํ”ฝ์— ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน๋ณ„๋กœ ํ† ํ”ฝ๋ณ„๋กœ offset์„ ๋‚˜๋ˆ„์–ด ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ

์ฐธ์กฐ

[๋ฐ๋ธŒ์›์˜]์•„ํŒŒ์น˜ ์นดํ”„์นด for beginners