Kafka

Kafka

μΉ΄ν”„μΉ΄λŠ” λ©”μ‹œμ§€λ₯Ό μƒμ‚°ν•˜λŠ” ν”„λ‘œλ“€μ„œμ™€ μ†ŒλΉ„ν•˜λŠ” 컨슈머, 그리고 κ·Έ μ‚¬μ΄μ—μ„œ λ©”μ‹œμ§€λ₯Ό μ €μž₯, μ „λ‹¬ν•˜λŠ” 브둜컀둜 κ΅¬μ„±λœλ‹€.

κ·ΈλŸ¬λ‚˜ 각 역할에 λŒ€ν•΄μ„œ μ–˜κΈ°ν•˜κΈ°μ „μ— 기본적으둜 μ•Œκ³  λ„˜μ–΄κ°€μ•Ό ν•˜λŠ” κ°œλ…λ“€μ΄ μžˆλ‹€.


λ©”μ‹œμ§€

λ©”μ‹œμ§€ 큐의 ꡬ쑰 (좜처 : https://aws.amazon.com/ko/message-queue/)

μΉ΄ν”„μΉ΄μ˜ λΈŒλ‘œμ»€λŠ” ν”„λ‘œλ“€μ„œλ‘œλΆ€ν„° λ©”μ‹œμ§€λ₯Ό 전달받고, 이λ₯Ό 컨슈머둜 μ „λ‹¬ν•˜λŠ” 역할을 λ‹΄λ‹Ήν•œλ‹€.

μΉ΄ν”„μΉ΄μ˜ λ©”μ‹œμ§€λŠ” 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개 μ΄μƒμ˜ νŒ”λ‘œμ›Œ λ ˆν”Œλ¦¬μΉ΄λ‘œ κ΅¬μ„±λœλ‹€.

이 경우 λͺ¨λ“  λ ˆν”Œλ¦¬μΉ΄λ“€μ€ μ„œλ‘œ λ‹€λ₯Έ λΈŒλ‘œμ»€μ— κ΅¬μ„±λœλ‹€.

λ§Œμ•½ 같은 νŒŒν‹°μ…˜μ˜ λ ˆν”Œλ¦¬μΉ΄κ°€ λ™μΌν•œ λΈŒλ‘œμ»€μ— κ΅¬μ„±λ˜λŠ” κ²½μš°μ—λŠ” μ—λŸ¬κ°€ λ°œμƒν•œλ‹€.


브둜컀

https://mapr.com/ebooks/streaming-architecture/chapter-04-apache-kafka-overview.html

λΈŒλ‘œμ»€λŠ” 일반적으둜 μΉ΄ν”„μΉ΄ μ„œλ²„λΌκ³  λΆˆλ¦°λ‹€.

ν”„λ‘œλ“€μ„œμ™€ μ»¨μŠˆλ¨ΈλŠ” λ³„λ„μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μœΌλ‘œ κ΅¬μ„±λ˜λŠ” 반면 λΈŒλ‘œμ»€λŠ” μΉ΄ν”„κ°€ 자체이기 λ•Œλ¬Έμ΄λ‹€.

λ”°λΌμ„œ β€˜μΉ΄ν”„μΉ΄λ₯Ό κ΅¬μ„±ν•œλ‹€β€™ ν˜Ήμ€ β€˜μΉ΄ν”„μΉ΄λ₯Ό 톡해 λ©”μ‹œμ§€λ₯Ό μ „λ‹¬ν•œλ‹€β€™μ—μ„œ μΉ΄ν”„μΉ΄λŠ” 브둜컀λ₯Ό μ˜λ―Έν•œλ‹€.

브둜컀 λ‚΄λΆ€μ—λŠ” μ—¬λŸ¬ 토픽듀이 생성될 수 있고, μ΄λŸ¬ν•œ 토픽듀에 μ˜ν•΄ μƒμ„±λœ νŒŒν‹°μ…˜λ“€μ΄ λ³΄κ΄€ν•˜λŠ” 데이터에 λŒ€ν•΄ λΆ„μ‚° μ €μž₯을 ν•΄μ£Όκ±°λ‚˜ μž₯μ•  λ°œμƒ μ‹œ, μ•ˆμ „ν•˜κ²Œ 데이터λ₯Ό μ‚¬μš©ν•  수 μžˆλ„λ‘ λ„μ™€μ£ΌλŠ” 역할을 ν•œλ‹€.

μΉ΄ν”„μΉ΄ (브둜컀) ν΄λŸ¬μŠ€ν„° ꡬ성

λΈŒλ‘œμ»€λŠ” ν•œ λŒ€ μ΄μƒμ˜ λ…Έλ“œλ‘œ ν΄λŸ¬μŠ€ν„°λ₯Ό ꡬ성할 수 μžˆλ‹€. μ—¬κΈ°μ„œ 주킀퍼가 λ“±μž₯ν•œλ‹€.

주킀퍼

μ£Όν‚€νΌλŠ” μ•„νŒŒμΉ˜ ν”„λ‘œμ νŠΈμ€‘ ν•˜λ‚˜λ‘œ, ν•˜λ‘‘ 에코 μ‹œμŠ€ν…œμ„ κ΅¬μ„±ν•œλ‹€.

μ£Ό 역할은 λΆ„μ‚° μ‹œμŠ€ν…œμ˜ 메타 정보λ₯Ό κ΄€λ¦¬ν•˜κ³ , ν•„μš”μ‹œμ—λŠ” λΆ„μ‚° μ‹œμŠ€ν…œμ˜ λ§ˆμŠ€ν„°λ₯Ό μ„ μΆœν•œλ‹€.

예λ₯Ό λ“€μ–΄ μΉ΄ν”„μΉ΄ ν΄λŸ¬μŠ€ν„°λ₯Ό κ΅¬μ„±ν•˜λ©΄ μ£Όν‚€νΌμ—λŠ” μΉ΄ν”„μΉ΄ ν΄λŸ¬μŠ€ν„°μ˜ 식별 정보뢀터 ν˜„μž¬ μ‚΄μ•„μžˆλŠ” 브둜컀 정보, λ‚˜μ•„κ°€ κΆŒν•œ 정보 등이 μ €μž₯λœλ‹€.

λ˜ν•œ, μΉ΄ν”„μΉ΄ λΈŒλ‘œμ»€λ“€ 쀑 μΌμ’…μ˜ μ§€νœ˜μž 역할을 ν•˜λŠ” 컨트둀러 브둜컀λ₯Ό λ½‘λŠ” 역할을 λ‹΄λ‹Ήν•œλ‹€.

컨트둀러

쀄쀄이 μ€‘μš”ν•œ κ°œλ…λ“€μ΄ λ‚˜μ˜¨λ‹€.

μ»¨νŠΈλ‘€λŸ¬λŠ” ν΄λŸ¬μŠ€ν„°μ˜ μ—¬λŸ¬ 브둜컀 쀑 ν•˜λ‚˜κ°€ λ‹΄λ‹Ήν•˜κ²Œ λ˜λŠ” 역할이닀.

ν΄λŸ¬μŠ€ν„° λ‚΄μ˜ λΈŒλ‘œμ»€κ°€ μž₯μ•  λ°œμƒμœΌλ‘œ μ‚¬μš©ν•  수 μ—†λŠ” 경우,

μž₯μ• κ°€ λ°œμƒν•œ 브둜컀의 토픽에 μžˆλŠ” 리더 νŒŒν‹°μ…˜μ„ 같은 ν΄λŸ¬μŠ€ν„° λ‚΄μ˜ 정상 λ™μž‘ν•˜λŠ” λ‹€λ₯Έ λΈŒλ‘œμ»€μ—κ²Œ ν† ν”½μ˜ 리더 νŒŒν‹°μ…˜ μ§€μœ„λ₯Ό μž¬λΆ„λ°°ν•˜λŠ” 역할을 ν•œλ‹€.

이 λ•Œ, 컨트둀러의 역할을 ν•˜λŠ” λΈŒλ‘œμ»€μ— μž₯μ• κ°€ λ°œμƒν•˜λŠ” κ²½μš°μ—λŠ” λ‹€λ₯Έ λΈŒλ‘œμ»€κ°€ 컨트둀러의 역할을 ν•œλ‹€.

이 λ˜ν•œ 주킀퍼가 ν• λ‹Ήν•΄ μ£ΌλŠ” 것이닀.

μ£Όν‚€νΌλŠ” 디렉터리 ν˜•νƒœλ‘œ 데이터λ₯Ό μ €μž₯, κ΄€λ¦¬ν•œλ‹€.

그리고 μΉ΄ν”„μΉ΄μ˜ 메타 μ •λ³΄λŠ” ν΄λŸ¬μŠ€ν„°λ₯Ό ꡬ성할 λ•Œ 주킀퍼 μ—°κ²° μ„€μ •μ—μ„œ μ§€μ •λœ 디렉토리 ν•˜μœ„μ— μ €μž₯λœλ‹€.

λ”°λΌμ„œ λ™μΌν•œ μΉ΄ν”„μΉ΄ ν΄λŸ¬μŠ€ν„°λŠ” 주킀퍼 μ—°κ²° μ„€μ •μ—μ„œ λ™μΌν•œ 디렉토리 경둜λ₯Ό κ°€μ§€λ©°, ν•˜λ‚˜μ˜ 주킀퍼 ν΄λŸ¬μŠ€ν„°μ— μ—¬λŸ¬ μΉ΄ν”„μΉ΄ ν΄λŸ¬μŠ€ν„°κ°€ λ™μ‹œμ— ꡬ성될 수 μžˆλ‹€.

λ™μΌν•œ 주킀퍼 ν΄λŸ¬μŠ€ν„°μ— λ©€ν‹° μΉ΄ν”„μΉ΄ ν΄λŸ¬μŠ€ν„°λ₯Ό κ΅¬μ„±ν•˜λŠ” λͺ¨μŠ΅. 각 ν΄λŸ¬μŠ€ν„°λ§ˆλ‹€ μ„œλ‘œ λ‹€λ₯Έ 주킀퍼 경둜λ₯Ό μ„€μ •ν•œλ‹€.

μž μ‹œ 정리…

  • μΉ΄ν”„μΉ΄ ν΄λŸ¬μŠ€ν„°λŠ” ν•˜λ‚˜ μ΄μƒμ˜ λ…Έλ“œ(브둜컀)둜 κ΅¬μ„±λœλ‹€.

  • ν•˜λ‚˜μ˜ 주킀퍼 ν΄λŸ¬μŠ€ν„°μ— μ—¬λŸ¬ μΉ΄ν”„μΉ΄ ν΄λŸ¬μŠ€ν„°κ°€ ꡬ성될 수 μžˆλ‹€.

  • 카프라λ₯Ό ꡬ성할 λ•ŒλŠ” 보톡 ν•œ λŒ€ μ΄μƒμ˜ 주킀퍼 ν΄λŸ¬μŠ€ν„°μ™€, ν•œ λŒ€ μ΄μƒμ˜ 브둜컀둜 κ΅¬μ„±λœ 브둜컀 ν΄λŸ¬μŠ€ν„°λ‘œ κ΅¬μ„±λœλ‹€.

μΉ΄ν”„μΉ΄ ν΄λŸ¬μŠ€ν„°λŠ” λͺ¨λ“  λΈŒλ‘œμ»€κ°€ ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ„ μ²˜λ¦¬ν•  수 μžˆλŠ” Peer-to-Peer(P2P)의 ꡬ쑰λ₯Ό κ°€μ§„λ‹€.

μ΄λ ‡κ²Œ P2Pκ°€ κ°€λŠ₯ν•œ 것은 ν΄λΌμ΄μ–ΈνŠΈμ™€ μΉ΄ν”„μΉ΄ κ°„ 메타 데이터λ₯Ό μ „λ‹¬ν•˜λŠ” 과정이 있기 λ•Œλ¬Έμ΄λ‹€.

λ‹€λ§Œ 염두해야 ν•  것은 μ‹€μ œλ‘œ λ©”μ‹œμ§€λ₯Ό 전달받고 μ €μž₯ν•˜λŠ” λ‹¨μœ„μΈ νŒŒν‹°μ…˜μ€ 리더와 νŒ”λ‘œμ›Œλ‘œ λ‚˜λ‰˜μ–΄ μž‘μ—…μ„ μ²˜λ¦¬ν•œλ‹€λŠ” 것이닀.

ν•˜λ‚˜μ˜ 토픽이라도 리더 νŒŒν‹°μ…˜μ˜ μœ„μΉ˜μ— 따라 μ—¬λŸ¬ λΈŒλ‘œμ»€κ°€ μš”μ²­ 받을 수 μžˆλ‹€.

코디넀이터

코디넀이터(Coordinator)λŠ” ν΄λŸ¬μŠ€ν„°μ˜ μ—¬λŸ¬ 브둜컀 쀑 ν•˜λ‚˜μ˜ λΈŒλ‘œμ»€κ°€ μ½”λ””λ„€μ΄ν„°μ˜ 역할을 ν•˜κ²Œ λœλ‹€.

μ½”λ””λ„€μ΄ν„°λŠ” 컨슈머 그룹의 μƒνƒœλ₯Ό μ²΄ν¬ν•˜μ—¬ 컨슈머 κ·Έλ£Ή λ‚΄μ˜ μ»¨μŠˆλ¨Έκ°€ μž₯μ• κ°€ λ°œμƒν•˜μ—¬ 맀칭된 νŒŒν‹°μ…˜μ˜ 데이터λ₯Ό μ»¨μŠ˜ν•  수 μ—†λŠ” 경우, μž₯μ• κ°€ λ°œμƒν•œ μ»¨μŠˆλ¨Έμ—κ²Œ 맀칭된 νŒŒν‹°μ…˜μ„ 정상 λ™μž‘ν•˜λŠ” μ»¨μŠˆλ¨Έμ—κ²Œ ν• λ‹Ήν•œλ‹€.

이 λ•Œ, 이 μž¬ν• λ‹Ήν•΄μ£ΌλŠ” λ™μž‘μ„ Rebalance라고 ν•œλ‹€.

μ»¨μŠˆλ¨Έκ°€ μ£½μ—ˆμ„ λ•Œ λ‹€λ₯Έ μ»¨μŠˆλ¨Έμ—κ²Œ μž¬ν• λ‹Ήν•΄μ£ΌλŠ” μ—­ν•  : 코디넀이터

λΈŒλ‘œμ»€κ°€ μ£½μ—ˆμ„ λ•Œ λ‹€λ₯Έ λΈŒλ‘œμ»€μ—κ²Œ 리더 νŒŒν‹°μ…˜ μ§μœ„λ₯Ό μž¬λΆ„λ°° ν•˜λŠ” μ—­ν• : 컨트둀러


ν”„λ‘œλ“€μ„œ

ν”„λ‘œλ“€μ„œ(Producer)λŠ” λ©”μ‹œμ§€λ₯Ό 생산(produce)ν•΄μ„œ 브둜컀의 ν† ν”½μœΌλ‘œ λ©”μ‹œμ§€λ₯Ό λ³΄λ‚΄λŠ” 역할을 ν•˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄λ‚˜ μ„œλ²„ λͺ¨λ‘λ₯Ό ν”„λ‘œλ“€μ„œλΌκ³  λΆ€λ₯Έλ‹€.

ν”„λ‘œλ“€μ„œλŠ” 데이터λ₯Ό 전솑할 λ•Œ 리더 νŒŒν‹°μ…˜μ„ κ°€μ§€κ³  μžˆλŠ” μΉ΄ν”„μΉ΄ λΈŒλ‘œμ»€μ™€ 직접 ν†΅μ‹ ν•œλ‹€.

컨슈머

컨슈머(Consumer)λŠ” ν† ν”½μ˜ νŒŒν‹°μ…˜μ— μ €μž₯λ˜μ–΄ μžˆλŠ” λ©”μ‹œμ§€λ₯Ό μ†ŒλΉ„(consume)ν•˜λŠ” 역할을 ν•˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄λ‚˜ μ„œλ²„ λͺ¨λ‘λ₯Ό 컨슈머라 λΆ€λ₯Έλ‹€.

μ»¨μŠˆλ¨ΈλŠ” 데이터λ₯Ό μš”μ²­ν•  λ•Œ 리더 νŒŒν‹°μ…˜μ„ κ°€μ§€κ³  μžˆλŠ” μΉ΄ν”„μΉ΄ λΈŒλ‘œμ»€μ™€ ν†΅μ‹ ν•œλ‹€.

ν† ν”½μ˜ νŒŒν‹°μ…˜μœΌλ‘œλΆ€ν„° 데이터λ₯Ό κ°€μ Έκ°€κΈ° μœ„ν•΄ 컨슈머λ₯Ό μš΄μ˜ν•˜λŠ” 방법은 2κ°€μ§€λ‘œ, ν† ν”½μ˜ νŠΉμ • νŒŒν‹°μ…˜λ§Œ κ΅¬λ…ν•˜λŠ” 컨슈머λ₯Ό μš΄μ˜ν•˜λŠ” 것과 1개 μ΄μƒμ˜ 컨슈머둜 이루어진 컨슈머 그룹을 μš΄μ˜ν•˜λŠ” 것이 μžˆλ‹€.

Last updated