Kafka
Kafka
μΉ΄νμΉ΄λ λ©μμ§λ₯Ό μμ°νλ νλ‘λμμ μλΉνλ 컨μλ¨Έ, κ·Έλ¦¬κ³ κ·Έ μ¬μ΄μμ λ©μμ§λ₯Ό μ μ₯, μ λ¬νλ λΈλ‘μ»€λ‘ κ΅¬μ±λλ€.
κ·Έλ¬λ κ° μν μ λν΄μ μκΈ°νκΈ°μ μ κΈ°λ³Έμ μΌλ‘ μκ³ λμ΄κ°μΌ νλ κ°λ λ€μ΄ μλ€.
λ©μμ§

μΉ΄νμΉ΄μ λΈλ‘컀λ νλ‘λμλ‘λΆν° λ©μμ§λ₯Ό μ λ¬λ°κ³ , μ΄λ₯Ό 컨μλ¨Έλ‘ μ λ¬νλ μν μ λ΄λΉνλ€.
μΉ΄νμΉ΄μ λ©μμ§λ Keyμ Valueλ‘ κ΅¬μ±λλ€.
λ¨Όμ λ©μμ§μ ν€λ ν΄λΉ λ©μμ§κ° μΉ΄νμΉ΄ λΈλ‘컀 λ΄λΆμ μ μ₯λ λ, μ μ₯λλ μμΉμ κ΄λ ¨λ μμμ΄λ€.
κΈ°λ³Έμ μΌλ‘ μΉ΄νμΉ΄λ κ° λ©μμ§λ₯Ό νμΌλ‘ μ μ₯νλ€.
νλ‘λμκ° λ©μμ§λ₯Ό λΈλ‘μ»€λ‘ μ λ¬ν λ, νλ‘λμ λ΄λΆμ νν°μ λ(Partitioner)κ° μ μ₯ μμΉλ₯Ό κ²°μ νλ€.
μ΄ λ ν€ κ°μ μ΄μ©νμ¬ μ°μ°νκ³ κ·Έ κ²°κ³Όμ λ°λΌ μ μ₯λλ μμΉλ₯Ό κ²°μ νλ€.
λ©μμ§μ κ°(value)λ μ€μ λ‘ κ·Έ λ©μμ§κ° μ λ¬νλ €λ λ΄μ©λ¬Όμ μλ―Ένλ€.
λ¨μν λ¬Έμμ΄μ΄ λ μλ μκ³ , κ°μ²΄μ ννλ‘ μ¬μ©ν μλ μλ€.
μ΄λ κ² λ€μν νμ μ κ°μ λ³΄λΌ μ μλ κ²μ λΈλ‘컀λ₯Ό ν΅ν΄ λ©μμ§κ° λ°νλκ±°λ μλΉλ λ, λ©μμ§ μ μ²΄κ° μ§λ ¬ν/μμ§λ ¬ν λκΈ° λλ¬Έμ΄λ€.
λ©μμ§μ ν€μ κ°μ λ€μν νμ μ΄ λ μ μμ§λ§, νΉμ ν κ΅¬μ‘°μΈ μ€ν€λ§(schema)λ₯Ό κ°μ§λ€.
μΉ΄νμΉ΄ λ©μμ§μ μ€ν€λ§λ λ°μ΄ν°λ² μ΄μ€μ ν μ΄λΈ μ€ν€λ§μ μ μ¬ν κ°λ μ΄λ€.
νλ‘λμκ° λ°ννκ³ μ»¨μλ¨Έκ° μλΉν λ, λ©μμ§λ₯Ό μ μ νκ² μ²λ¦¬νκΈ° μν΄ νμνλ€.
μλ₯Ό λ€μ΄, νλ‘λμκ° λ΄μ©(value)μ΄ JSON ννμΈ λ©μμ§λ₯Ό λ°νν λ, ν΄λΉ λ©μμ§λ₯Ό μλΉνλ 컨μλ¨Έλ νλ‘λμκ° μμ°ν JSONμ ꡬ쑰λ₯Ό μμνκ³ , κ·Έμ λ§κ² λ©μμ§λ₯Ό μ²λ¦¬νλ €κ³ ν κ²μ΄λ€.
μ΄ λ μ€ν€λ§κ° κ²ΉμΉμ§ μλλ€λ©΄ μ μμ μΈ μ²λ¦¬λ₯Ό κΈ°λνκΈ°λ νλ€ κ²μ΄λ€.
ν ν½
μΉ΄νμΉ΄μ ν ν½(Topic)μ λ©μμ§λ₯Ό ꡬλΆνλ λ Όλ¦¬μ μΈ λ¨μλ‘, λμΌν ν ν½μ λ©μμ§λ€μ λ Όλ¦¬μ μΌλ‘ κ°μ λ¬Έλ§₯(Context)λ₯Ό κ°μ§λ€.
μλ₯Ό λ€μ΄, μ£Όλ¬Έμ κ΄ν λ΄μ©μ λ΄κ³ μλ λ©μμ§λ₯Ό λ°ννκ³ , μλΉνκΈ° μν΄μ μ°λ¦¬λ orderλΌλ ν ν½μ μμ±νκ³ μ΄ ν ν½μ κΈ°μ€μΌλ‘ λ©μμ§λ₯Ό λ°ν, μλΉν μ μλ€.
μ΄μ²λΌ ν ν½μ λ Όλ¦¬μ μΈ λ¨μμ΄μ λ©μμ§ νλ¦μ λ¨μμ΄κΈ°λ νλ€.
λ€λ₯Έ ν ν½μ΄λΌλ©΄, λ€λ₯Έ νλ¦μ΄λΌκ³ λ³Ό μ μκ³ , λ€λ₯Έ νλΌκ³ λ΄λ 무방νλ€.
νν°μ
λ
Όλ¦¬μ μΈ λ¨μμΈ ν ν½μ κΈ°μ€μΌλ‘ λ°νλλ λ©μμ§λ€μ λΈλ‘컀 λ΄λΆμ 물리μ μΈ λ¨μμΈ νν°μ
μΌλ‘ λλλ€.

κ·Έλ¦Όμ μμΈν μ΄ν΄λ³΄λ©΄, T0 ν ν½μ 4κ°μ νν°μ μΌλ‘(P0-P3), T1 ν ν½μ 2κ°μ νν°μ (P0-P1)μΌλ‘ ꡬμ±λμ΄ μλ€.
μ΄λ κ² νλμ ν ν½μ λνμ¬ μ¬λ¬ νν°μ μ ꡬμ±νλ κ°μ₯ ν° μ΄μ λ λΆμ°μ²λ¦¬λ₯Ό ν΅ν μ±λ₯ ν₯μμ μλ€.
μΉ΄νμΉ΄λ νλμ ν ν½μ λν΄ μ¬λ¬ νλ‘λμκ° λ°νν μ μκ³ , μ¬λ¬ 컨μλ¨Έκ° κ΅¬λ ν μ μλ€.
κ·Έλ κΈ° λλ¬Έμ ν ν½μ νλμ νν°μ μΌλ‘ ꡬμ±νλ κ²λ³΄λ€ 2κ° μ΄μμ νν°μ μ λλ κ²μ΄ λ³λ ¬μ μΌλ‘ μ²λ¦¬κ° λμ΄ λΆνλ₯Ό λΆμ°μν€κ³ μ±λ₯μ΄ λμ± ν₯μλ κ²μ΄λ€.
μ΄μΈμλ νν°μ μ κ°μ₯ ν° νΉμ§μ νλμ νν°μ λ΄μμλ λ©μμ§ μμκ° λ³΄μ₯λλ€λ κ²μ΄λ€.
μ¦, νν°μ μ λ©μμ§ μμ 보μ₯μ λ¨μμ΄λ€.
κ° νν°μ μ λ©μμ§λ λ°νλλ μμλλ‘ κ΅¬λ ν μ μλ€.
λ°λΌμ νλμ ν ν½μ΄ μ¬λ¬ νν°μ μΌλ‘ ꡬμ±λλ κ²½μ°, ν ν½ λ¨μμ λ©μμ§ μμλ 보μ₯ν μ μλ€.
μ΄λ νν°μ λ΄λΆμμμ μμλ 보μ₯λμ§λ§ νν°μ κ°μ μμλ 보μ₯λμ§ μκΈ° λλ¬Έμ΄λ€.
νν°μ
볡μ
νλμ ν ν½μ νλ μ΄μμ νν°μ μΌλ‘ ꡬμ±λλ€.
μ¬κΈ°μμ λμκ° μΉ΄νμΉ΄λ νν°μ μ 볡μ κΈ°λ₯μ μ 곡νλλ°, μ΄λ₯Ό ν΅ν΄ μλΉμ€λ μμ νλκ³ μ₯μ μμ©λ μμν΄μ§λ€.
νλμ νν°μ μ 1κ°μ 리λ λ ν리카μ κ·Έ μΈ 0κ° μ΄μμ νλ‘μ΄ λ νλ¦¬μΉ΄λ‘ κ΅¬μ±λλ€.
νλμ ν ν½μ΄ 1κ° μ΄μμ νν°μ μΌλ‘, νλμ νν°μ μ΄ 1κ° μ΄μμ λ ν리카λ‘β¦
리λ λ ν리카λ νν°μ μ λͺ¨λ μ°κΈ°, μ½κΈ° μμ μ λ΄λΉνλ€.
λ°λλ‘ νλ‘μ΄ λ ν리카λ 리λ λ νλ¦¬μΉ΄λ‘ μ°μΈ λ©μμ§λ€μ κ·Έλλ‘ λ³΅μ νκ³ , λ§μ½ 리λ λ ν리카μ μ₯μ κ° λ°μνλ κ²½μ° λ¦¬λλ₯Ό μΉκ³λ°λλ€.
νν°μ μ λ ν리카 μλ 볡μ κ³μλ₯Ό ν΅ν΄ κ²°μ λλλ°, λ§μ½ 볡μ κ³μκ° 1μ΄λΌλ©΄ νν°μ μ 리λ λ ν리카λ‘λ§ κ΅¬μ±λλ€.
μ΄ λ, νν°μ κ³Ό 리λ λ ν리카λ λ³κ°μΈ κ²μ΄ μλλΌ λμΌν κ²μΌλ‘ λ³Ό μ μλ€.
μΌλ°μ μΌλ‘ λ§νλ 물리μ μΈ νν°μ = 리λ λ ν리카
λμκ° λ³΅μ κ³μκ° 2 μ΄μμ΄λΌλ©΄ ν΄λΉ νν°μ μ 1κ°μ 리λ λ ν리카μ 1κ° μ΄μμ νλ‘μ λ νλ¦¬μΉ΄λ‘ κ΅¬μ±λλ€.
μ΄ κ²½μ° λͺ¨λ λ ν리카λ€μ μλ‘ λ€λ₯Έ λΈλ‘컀μ ꡬμ±λλ€.
λ§μ½ κ°μ νν°μ μ λ νλ¦¬μΉ΄κ° λμΌν λΈλ‘컀μ ꡬμ±λλ κ²½μ°μλ μλ¬κ° λ°μνλ€.
λΈλ‘컀

λΈλ‘컀λ μΌλ°μ μΌλ‘ μΉ΄νμΉ΄ μλ²λΌκ³ λΆλ¦°λ€.
νλ‘λμμ 컨μλ¨Έλ λ³λμ μ ν리μΌμ΄μ μΌλ‘ ꡬμ±λλ λ°λ©΄ λΈλ‘컀λ μΉ΄νκ° μ체μ΄κΈ° λλ¬Έμ΄λ€.
λ°λΌμ βμΉ΄νμΉ΄λ₯Ό ꡬμ±νλ€β νΉμ βμΉ΄νμΉ΄λ₯Ό ν΅ν΄ λ©μμ§λ₯Ό μ λ¬νλ€βμμ μΉ΄νμΉ΄λ λΈλ‘컀λ₯Ό μλ―Ένλ€.
λΈλ‘컀 λ΄λΆμλ μ¬λ¬ ν ν½λ€μ΄ μμ±λ μ μκ³ , μ΄λ¬ν ν ν½λ€μ μν΄ μμ±λ νν°μ λ€μ΄ 보κ΄νλ λ°μ΄ν°μ λν΄ λΆμ° μ μ₯μ ν΄μ£Όκ±°λ μ₯μ λ°μ μ, μμ νκ² λ°μ΄ν°λ₯Ό μ¬μ©ν μ μλλ‘ λμμ£Όλ μν μ νλ€.
μΉ΄νμΉ΄ (λΈλ‘컀) ν΄λ¬μ€ν° ꡬμ±
λΈλ‘컀λ ν λ μ΄μμ λ Έλλ‘ ν΄λ¬μ€ν°λ₯Ό ꡬμ±ν μ μλ€. μ¬κΈ°μ μ£Όν€νΌκ° λ±μ₯νλ€.
μ£Όν€νΌ

μ£Όν€νΌλ μνμΉ νλ‘μ νΈμ€ νλλ‘, νλ‘ μμ½ μμ€ν μ ꡬμ±νλ€.
μ£Ό μν μ λΆμ° μμ€ν μ λ©ν μ 보λ₯Ό κ΄λ¦¬νκ³ , νμμμλ λΆμ° μμ€ν μ λ§μ€ν°λ₯Ό μ μΆνλ€.
μλ₯Ό λ€μ΄ μΉ΄νμΉ΄ ν΄λ¬μ€ν°λ₯Ό ꡬμ±νλ©΄ μ£Όν€νΌμλ μΉ΄νμΉ΄ ν΄λ¬μ€ν°μ μλ³ μ 보λΆν° νμ¬ μ΄μμλ λΈλ‘컀 μ 보, λμκ° κΆν μ 보 λ±μ΄ μ μ₯λλ€.
λν, μΉ΄νμΉ΄ λΈλ‘μ»€λ€ μ€ μΌμ’ μ μ§νμ μν μ νλ 컨νΈλ‘€λ¬ λΈλ‘컀λ₯Ό λ½λ μν μ λ΄λΉνλ€.
컨νΈλ‘€λ¬
μ€μ€μ΄ μ€μν κ°λ λ€μ΄ λμ¨λ€.
컨νΈλ‘€λ¬λ ν΄λ¬μ€ν°μ μ¬λ¬ λΈλ‘컀 μ€ νλκ° λ΄λΉνκ² λλ μν μ΄λ€.
ν΄λ¬μ€ν° λ΄μ λΈλ‘μ»€κ° μ₯μ λ°μμΌλ‘ μ¬μ©ν μ μλ κ²½μ°,
μ₯μ κ° λ°μν λΈλ‘컀μ ν ν½μ μλ 리λ νν°μ μ κ°μ ν΄λ¬μ€ν° λ΄μ μ μ λμνλ λ€λ₯Έ λΈλ‘컀μκ² ν ν½μ 리λ νν°μ μ§μλ₯Ό μ¬λΆλ°°νλ μν μ νλ€.
μ΄ λ, 컨νΈλ‘€λ¬μ μν μ νλ λΈλ‘컀μ μ₯μ κ° λ°μνλ κ²½μ°μλ λ€λ₯Έ λΈλ‘μ»€κ° μ»¨νΈλ‘€λ¬μ μν μ νλ€.
μ΄ λν μ£Όν€νΌκ° ν λΉν΄ μ£Όλ κ²μ΄λ€.
μ£Όν€νΌλ λλ ν°λ¦¬ ννλ‘ λ°μ΄ν°λ₯Ό μ μ₯, κ΄λ¦¬νλ€.
κ·Έλ¦¬κ³ μΉ΄νμΉ΄μ λ©ν μ 보λ ν΄λ¬μ€ν°λ₯Ό ꡬμ±ν λ μ£Όν€νΌ μ°κ²° μ€μ μμ μ§μ λ λλ ν 리 νμμ μ μ₯λλ€.
λ°λΌμ λμΌν μΉ΄νμΉ΄ ν΄λ¬μ€ν°λ μ£Όν€νΌ μ°κ²° μ€μ μμ λμΌν λλ ν 리 κ²½λ‘λ₯Ό κ°μ§λ©°, νλμ μ£Όν€νΌ ν΄λ¬μ€ν°μ μ¬λ¬ μΉ΄νμΉ΄ ν΄λ¬μ€ν°κ° λμμ ꡬμ±λ μ μλ€.

μ μ μ 리β¦
μΉ΄νμΉ΄ ν΄λ¬μ€ν°λ νλ μ΄μμ λ Έλ(λΈλ‘컀)λ‘ κ΅¬μ±λλ€.
νλμ μ£Όν€νΌ ν΄λ¬μ€ν°μ μ¬λ¬ μΉ΄νμΉ΄ ν΄λ¬μ€ν°κ° ꡬμ±λ μ μλ€.
μΉ΄νλΌλ₯Ό ꡬμ±ν λλ λ³΄ν΅ ν λ μ΄μμ μ£Όν€νΌ ν΄λ¬μ€ν°μ, ν λ μ΄μμ λΈλ‘μ»€λ‘ κ΅¬μ±λ λΈλ‘컀 ν΄λ¬μ€ν°λ‘ ꡬμ±λλ€.
μΉ΄νμΉ΄ ν΄λ¬μ€ν°λ λͺ¨λ λΈλ‘μ»€κ° ν΄λΌμ΄μΈνΈμ μμ²μ μ²λ¦¬ν μ μλ Peer-to-Peer(P2P)μ ꡬ쑰λ₯Ό κ°μ§λ€.
μ΄λ κ² P2Pκ° κ°λ₯ν κ²μ ν΄λΌμ΄μΈνΈμ μΉ΄νμΉ΄ κ° λ©ν λ°μ΄ν°λ₯Ό μ λ¬νλ κ³Όμ μ΄ μκΈ° λλ¬Έμ΄λ€.
λ€λ§ μΌλν΄μΌ ν κ²μ μ€μ λ‘ λ©μμ§λ₯Ό μ λ¬λ°κ³ μ μ₯νλ λ¨μμΈ νν°μ μ 리λμ νλ‘μλ‘ λλμ΄ μμ μ μ²λ¦¬νλ€λ κ²μ΄λ€.
νλμ ν ν½μ΄λΌλ 리λ νν°μ μ μμΉμ λ°λΌ μ¬λ¬ λΈλ‘μ»€κ° μμ² λ°μ μ μλ€.
μ½λλ€μ΄ν°
μ½λλ€μ΄ν°(Coordinator)λ ν΄λ¬μ€ν°μ μ¬λ¬ λΈλ‘컀 μ€ νλμ λΈλ‘μ»€κ° μ½λλ€μ΄ν°μ μν μ νκ² λλ€.
μ½λλ€μ΄ν°λ 컨μλ¨Έ κ·Έλ£Ήμ μνλ₯Ό 체ν¬νμ¬ μ»¨μλ¨Έ κ·Έλ£Ή λ΄μ 컨μλ¨Έκ° μ₯μ κ° λ°μνμ¬ λ§€μΉλ νν°μ μ λ°μ΄ν°λ₯Ό 컨μν μ μλ κ²½μ°, μ₯μ κ° λ°μν 컨μλ¨Έμκ² λ§€μΉλ νν°μ μ μ μ λμνλ 컨μλ¨Έμκ² ν λΉνλ€.
μ΄ λ, μ΄ μ¬ν λΉν΄μ£Όλ λμμ RebalanceλΌκ³ νλ€.
컨μλ¨Έκ° μ£½μμ λ λ€λ₯Έ 컨μλ¨Έμκ² μ¬ν λΉν΄μ£Όλ μν : μ½λλ€μ΄ν°
λΈλ‘μ»€κ° μ£½μμ λ λ€λ₯Έ λΈλ‘컀μκ² λ¦¬λ νν°μ μ§μλ₯Ό μ¬λΆλ°° νλ μν : 컨νΈλ‘€λ¬
νλ‘λμ
νλ‘λμ(Producer)λ λ©μμ§λ₯Ό μμ°(produce)ν΄μ λΈλ‘컀μ ν ν½μΌλ‘ λ©μμ§λ₯Ό 보λ΄λ μν μ νλ μ ν리μΌμ΄μ
μ΄λ μλ² λͺ¨λλ₯Ό νλ‘λμλΌκ³ λΆλ₯Έλ€.
νλ‘λμλ λ°μ΄ν°λ₯Ό μ μ‘ν λ 리λ νν°μ μ κ°μ§κ³ μλ μΉ΄νμΉ΄ λΈλ‘컀μ μ§μ ν΅μ νλ€.
컨μλ¨Έ
컨μλ¨Έ(Consumer)λ ν ν½μ νν°μ
μ μ μ₯λμ΄ μλ λ©μμ§λ₯Ό μλΉ(consume)νλ μν μ νλ μ ν리μΌμ΄μ
μ΄λ μλ² λͺ¨λλ₯Ό 컨μλ¨ΈλΌ λΆλ₯Έλ€.
컨μλ¨Έλ λ°μ΄ν°λ₯Ό μμ²ν λ 리λ νν°μ μ κ°μ§κ³ μλ μΉ΄νμΉ΄ λΈλ‘컀μ ν΅μ νλ€.
ν ν½μ νν°μ μΌλ‘λΆν° λ°μ΄ν°λ₯Ό κ°μ Έκ°κΈ° μν΄ μ»¨μλ¨Έλ₯Ό μ΄μνλ λ°©λ²μ 2κ°μ§λ‘, ν ν½μ νΉμ νν°μ λ§ κ΅¬λ νλ 컨μλ¨Έλ₯Ό μ΄μνλ κ²κ³Ό 1κ° μ΄μμ 컨μλ¨Έλ‘ μ΄λ£¨μ΄μ§ 컨μλ¨Έ κ·Έλ£Ήμ μ΄μνλ κ²μ΄ μλ€.
Last updated