π€ Kafka κ° λλ°?
Kafka λ LinkedIn μμ κ°λ°λ μ€ν μμ€ λ©μμ§ μμ€ν μ λλ€.
νμ¬λ Apache Software Foundation μμ κ΄λ¦¬λλ Apache Kafka νλ‘μ νΈλ‘ λ°μ νμμ΅λλ€.
Kafka κ° λμ λκΈ° μ μλ μμ κ°μ΄ end-to-end μ°κ²° λ°©μμΌλ‘ μ¬λ¬ μ ν리μΌμ΄μ λ€μ΄ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°μμ΅λλ€. νμ§λ§ μλΉμ€κ° 컀μ§λ©΄μ 볡μ‘λκ° μ¦κ°νκ³ νμ₯μ΄ μ΄λ €μμ§κ³ μ₯μ λ°μ κ°λ₯μ±μ΄ 컀μ§λ λ¬Έμ μ μ΄ λ°μνμ΅λλ€.
μ΄λ¬ν λ¬Έμ μ λ€μ ν΄κ²°νκΈ° μν΄ Kafka κ° κ°λ°λμμ΅λλ€.
Kafka λ₯Ό λμ ν κ²°κ³Ό λ°μλλ λͺ¨λ λ°μ΄ν°μ λ°μ΄ν°μ νλ¦μ μ€μμμ κ΄λ¦¬ν μ μκ² λμμ΅λλ€. λν μλΉμ€μ νΉμ λΆλΆμμ μ₯μ κ° λ°μνλλΌλ Kafka λ λ°μ΄ν°μ μ μ€ λ° μ€λ³΅μ λν΄ λμ²ν μ μλ μ¬λ¬ λ°©λ²μ΄ μκΈ° λλ¬Έμ μ₯μ λ₯Ό μ μ°νκ² μ²λ¦¬ν μ μκ² λμμ΅λλ€. scale out μ΄ μ©μ΄ν μμ€ν μ΄κΈ° λλ¬Έμ μλΉμ€ νμ₯λ μ©μ΄ν΄μ‘μ΅λλ€.
π» Pub/Sub λͺ¨λΈ
Kafka λ μ΄λ»κ² λ°μ΄ν° κ΄λ¦¬λ₯Ό μ€μμ§μ€ν ν μ μμμκΉμ?
μ΄λ Kafka κ° Pub/Sub λͺ¨λΈμ κΈ°λ°μΌλ‘ λ§λ€μ΄μ§ μμ€ν μ΄κΈ° λλ¬Έμ λλ€.
Pub/Sub λͺ¨λΈμ΄λ Publish/Subscribe μ μ€μλ§λ‘ λ©μμ§ κΈ°λ° λ―Έλ€μ¨μ΄ μμ€ν μ μλ―Έν©λλ€.
Pub/Sub λͺ¨λΈμλ μ΄λ²€νΈ(λ©μμ§)λ₯Ό λ°ννλ Publisher κ° μ‘΄μ¬νκ³ , Publisher λ νΉμ Channel(Topic)μ μ΄λ²€νΈλ₯Ό μ μ‘ν©λλ€.
ν΄λΉ μ΄λ²€νΈλ νΉμ Channel(Topic)μ ꡬλ νλ Subscriber μ μν΄ μ²λ¦¬λ©λλ€.
μ΄λ¬ν λͺ¨λΈμ κΈ°λ°μΌλ‘ νλ Kafka λ₯Ό λμ νκ² λλ©΄, κ° μ ν리μΌμ΄μ μ μ΄λ²€νΈλ₯Ό λ°νν ν μ΄λ²€νΈμ μ²λ¦¬μ λν΄μλ μ κ²½μ°μ§ μμλ λκΈ° λλ¬Έμ 볡μ‘λκ° κ°μν©λλ€. λν Subscriber μ μ₯μ κ° λ°μνλλΌλ λ©μμ§ μμ€ν λ§ μ μμ μΌλ‘ λμνλ©΄ μ΄λ²€νΈκ° μ μ€λμ§ μκΈ° λλ¬Έμ μ₯μ λ₯Ό μ μ°νκ² μ²λ¦¬ν μ μμ΄μ‘μ΅λλ€.
π‘ Kafka μ£Όμ κ°λ
Kafka μ λν΄ μ΄ν΄νκΈ° μν΄μλ μλμ κ°μ κ°λ λ€μ λν΄ νμ΅ν΄μΌν©λλ€.
μ°μ κ°λ¨νκ² νμ€ μ€λͺ μ λ³΄κ³ λμ΄κ°κ² μ΅λλ€.
- Zookeeper: Kafka μ ν΄λ¬μ€ν° λ©νλ°μ΄ν°μ μν μ 보λ₯Ό μ μ₯νκ³ κ΄λ¦¬νλ λΆμ° μ½λλ€μ΄ν° μμ€ν μ λλ€.
- Broker: Kafka ν΄λ¬μ€ν°λ₯Ό ꡬμ±νλ κ°λ³ μλ² λ Έλλ‘, λ©μμ§ μμ , μ μ₯, λΆλ°° λ±μ μν μ μννλ Kafka μλ²μ λλ€.
- Topic: Kafka μμ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°λ μ£Όμ λ₯Ό λνλ΄λ λ¨μλ‘, κ΄λ ¨λ λ©μμ§λ€μ΄ κ·Έλ£Ήνλλ μΉ΄ν κ³ λ¦¬ λλ νΌλμ λλ€.
- Partition: Kafka Topic μ λΆν νμ¬ μ¬λ¬ νν°μ μΌλ‘ λλλ κ²μΌλ‘, κ° νν°μ μ μμκ° μλ λ©μμ§ μ€νΈλ¦Όμ ν¬ν¨νλ©° λ³λμ μ€νμ μ κ°μ§κ³ μμ΅λλ€.
- Offset: Kafka Topic λ΄μμ λ©μμ§μ μμΉλ₯Ό μλ³νλ κ³ μ ν μλ³μλ‘, Consumer κ° μ½μ λ©μμ§μ μμΉλ₯Ό μΆμ νκ³ κ΄λ¦¬νλλ° μ¬μ©λ©λλ€.
- Producer: Kafka μ λ°μ΄ν°λ₯Ό μμ±νμ¬ νΉμ Topic μΌλ‘ 보λ΄λ μν μ νλ μ ν리μΌμ΄μ λλ μ»΄ν¬λνΈμ λλ€.
- Consumer: Kafka λ‘λΆν° λ°μ΄ν°λ₯Ό μλΉνλ μν μ νλ μ ν리μΌμ΄μ λλ μ»΄ν¬λνΈλ‘, Topic μ λ©μμ§λ₯Ό μ½κ³ μ²λ¦¬ν©λλ€. Consumer λ Consumer Group μ μν μ μμΌλ©°, λ©μμ§λ₯Ό λ³λ ¬λ‘ μ²λ¦¬ν μ μμ΅λλ€.
π Zookeeper μ Broker
Broker λ μΉ΄νμΉ΄ μλ² μ€ 1λλ₯Ό μλ―Έν©λλ€.
Broker μλ²λ₯Ό μ¬λ¬ λλ‘ κ΅¬μ±νμ¬ νλμ ν΄λ¬μ€ν°λ‘ ꡬμ±νλλ°, μΌλ°μ μΌλ‘ λ‘λλ°Έλ°μ±κ³Ό κ°μ©μ±μ μ μ§νκΈ° μν΄ 3κ°μ Broker λ‘ ν΄λ¬μ€ν°λ₯Ό ꡬμ±ν©λλ€.
Broker κ° nκ°λΌκ³ νμ λ, nκ°μ Broker λ 리λμ μν μ μννλ 리λ(leader) 1κ°μ λλ¨Έμ§ n-1κ°μ νλ‘μ(follower)λ‘ κ΅¬λΆλ©λλ€. 리λμ λ°μ΄ν°κ° λ³κ²½λ λ νλ‘μλ€μλ λ°μ΄ν°κ° λκΈ°νλκΈ° λλ¬Έμ 리λ λ Έλμ μ₯μ κ° λ°μν κ²½μ°, λλ¨Έμ§ νλ‘μλ€ μ€ νλλ₯Ό 리λλ‘ μ μ νμ¬ λμνκΈ° λλ¬Έμ κ°μ©μ±μ μ μ§ν μ μμ΅λλ€.
Zookeeper λ Kafka ν΄λ¬μ€ν°λ₯Ό κ΄λ¦¬νλ μμ€ν μ λλ€.
Broker λ μνλ₯Ό κ°μ§μ§ μκΈ° λλ¬Έμ Zookeeper κ° Broker λͺ©λ‘, Topic κ³Ό Partition μ ꡬμ±, 리λ μ μΆ μ 보μ κ°μ ν΄λ¬μ€ν° λ©νλ°μ΄ν°λ₯Ό κ΄λ¦¬ν©λλ€.
리λλ₯Ό μ μΆνλ κ² λν Zookeeper μ μν μ λλ€. 리λ λ Έλμμ μ₯μ κ° λ°μν κ²½μ°, Zookeeper λ μλ‘μ΄ λ Έλλ₯Ό 리λ λ Έλλ‘ μ μΆν©λλ€.
π Topic κ³Ό Partition, Offset
Topic μ λ°μ΄ν°κ° μ μ₯λλ 곡κ°μ μλ―Ένκ³ , μ¬λ¬ κ°μ ν ν½μ΄ μμ±λ μ μμ΅λλ€.
Producer μ Consumer λ Topic μ κΈ°μ€μΌλ‘ λ°μ΄ν°λ₯Ό λ°ννκ³ κ΅¬λ ν©λλ€.
Partition μ Topic λ΄μμ λ°μ΄ν°λ₯Ό λΆμ° μ²λ¦¬νλ λ¨μλ‘ λ³Ό μ μμ΅λλ€.
κ°κ°μ Topic μ 1κ° μ΄μμ Partition μΌλ‘ ꡬμ±λμ΄ μμ΅λλ€.
Partition μ Queue μ κ°μ FIFO ννλ‘, Consumer λ κ°μ₯ μ€λλ λ°μ΄ν°λΆν° κ°μ Έκ°λλ€.
Partition μ λ리λ μ΄μ λ λ°μ΄ν°λ₯Ό λΆμ° μ²λ¦¬νκΈ° μν¨μΈλ°, λ§μ½ Producer A, B, C κ° κ°μ Topic μ λ°μ΄ν°λ₯Ό μ μ‘νλ€κ³ κ°μ ν΄λ³΄κ² μ΅λλ€. Topic μ Partition μ΄ 1κ° μΈ κ²½μ°, ν΄λΉ Partition μμ A, B, C κ° λ³΄λ΄λ λͺ¨λ λ°μ΄ν°λ₯Ό μ²λ¦¬ν΄μΌν©λλ€. νμ§λ§ Partition μ΄ μ¬λ¬κ°λ‘ λμ΄λλ€λ©΄ Topic μμ μ¬λ¬κ°μ Partition λ€μ΄ λ°μ΄ν°λ₯Ό λ³λ ¬μ μΌλ‘ μ²λ¦¬ν μ μκ² λ©λλ€.
Offset μ κ° Partition λ§λ€ λ°μ΄ν°κ° μ μ₯λλ μμΉλ₯Ό μλ―Έν©λλ€.
Offset μ Partition λ§λ€ μ λν¬ν κ°μ κ°μ§κΈ° λλ¬Έμ Consumer κ° μ½μ λ©μμ§μ μμΉλ₯Ό μΆμ νκ³ κ΄λ¦¬νλ λ° μ¬μ©λ μ μμ΅λλ€.
π Producer μ Consumer
Producer λ Topic μ λ°μ΄ν°λ₯Ό μ μ‘νλ μν μ λ΄λΉν©λλ€.
μ§λ ¬ν → νν°μ λ → λ©μμ§ λ°°μΉ → μμΆ → μ λ¬ μ κ³Όμ μ κ±°μ³ λ°μ΄ν°λ₯Ό μ μ‘ν©λλ€.
Consumer λ Broker μμ λ°μ΄ν°λ₯Ό κ°μ Έμ€λ μν μ λ΄λΉν©λλ€.
νλμ Topic μ μ¬λ¬ κ°μ Consumer λ€μ΄ ꡬλ νλ κ²λ κ°λ₯νλ°, Consumer κ° λ©μμ§λ₯Ό μ½μμ λ λ©μμ§κ° λ°λ‘ μμ λμ§ μκΈ° λλ¬Έμ λμΌν λ°μ΄ν°λ₯Ό μ¬λ¬ Consumer μμ λ€μνκ² μ²λ¦¬ν μ μμ΅λλ€.
λν νλ μ΄μμ Consumer λ‘ Consumer Group μ ꡬμ±ν μ μμ΅λλ€.
Consumer Group μ λ€λ₯Έ Consumer Group κ³Ό 격리λλ νΉμ±μ κ°μ§κ³ μκΈ° λλ¬Έμ λμΌν λ°μ΄ν°μ λν΄ κ°κΈ° λ€λ₯Έ μν μ νλ Consumer Group λΌλ¦¬ μν₯μ λ°μ§ μκ² μ²λ¦¬ν μ μλ€λ νΉμ§μ΄ μμ΅λλ€.