ΠΊΠ°ΡΠΊΠ° ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠΎΠΏΠΈΠΊ
PVbase: compacted topic Π² Apache Kafka
ΠΠΎΠ΄ΡΠΌΠ°ΠΉΡΠ΅ ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΅ΡΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Big Data, ΠΈ Π·Π°Π΄Π°ΠΉΡΠ΅ ΡΠ΅Π±Π΅ Π²ΠΎΠΏΡΠΎΡ: Β«Π§ΡΠΎ Π±ΡΠ΄Π΅Ρ, Π΅ΡΠ»ΠΈ ΠΌΡ Π·Π°Ρ ΠΎΡΠΈΠΌ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΌΠ°ΡΡΡΠ°Π± Π² 100 000 ΡΠ°Π·?Β» ΠΡΠ²Π΅Ρ ΠΏΡΠΎΡΡ: producer ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ Π·Π°ΠΊΠ°ΡΠΈΠ²Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π² ΠΈΡΠΎΠ³Π΅ Π½Π° Π΄ΠΈΡΠΊΠ΅ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡΡ ΠΌΠ΅ΡΡΠΎ Π΄Π»Ρ ΠΈΡ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ.
Log Compaction (ΡΠΆΠ°ΡΠΈΠ΅ ΠΆΡΡΠ½Π°Π»Π°) β ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² Apache Kafka β ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌ Π±ΡΠΎΠΊΠ΅ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΌ Π΄Π»Ρ Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΆΡΡΠ½Π°Π»ΠΎΠ² ΡΠΎΠ±ΡΡΠΈΠΉ, ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π² Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Ρ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΉΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ², ΡΠ±ΠΎΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Π΅ΠΉ Π½Π° ΡΠ°ΠΉΡΠ΅. ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠΈΡΡΠ΅ΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ Kafka, ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΌΠΈ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΎΠ±ΡΡΠΌΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΠ΄Π΅ΡΡ Ρ ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ ΠΎΠΏΠΈΡΠ°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠ°Π½ΡΡ ΡΠ°Π±ΠΎΡΡ compacted topic. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠΌ log compaction, ΡΡΠ° ΡΡΠ°ΡΡΡ Π΄Π»Ρ Π²Π°Ρ.
Π‘ΡΡΡ ΡΠΆΠ°ΡΠΈΡ ΠΆΡΡΠ½Π°Π»Π° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² Π²ΡΠ±ΠΎΡΠΎΡΠ½ΠΎΠΌ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ Π·Π°ΠΏΠΈΡΠ΅ΠΉ, Π² ΠΊΠΎΡΠΎΡΡΡ Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ.
ΠΠ»Ρ ΠΏΡΠΎΡΡΠΎΡΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΏΡΠΈΠ²Π΅Π΄ΡΠΌ ΡΠ°ΠΊΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ ΠΈΠ· ΠΆΠΈΠ·Π½ΠΈ: Π΄ΠΎΠΏΡΡΡΠΈΠΌ, Π½Π΅ΠΊΠΈΠΉ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ (ΠΠ²Π°Π½ ΠΠ²Π°Π½ΠΎΠ²ΠΈΡ) ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π½Ρ ΡΠΌΠΎΡΡΠΈΡ Π½Π° Π³ΡΠ°Π΄ΡΡΠ½ΠΈΠΊ ΠΈ Π²Π½ΠΎΡΠΈΡ Π·Π°ΠΏΠΈΡΠΈ ΠΎ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ΅ Π² ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΠΉ ΠΆΡΡΠ½Π°Π» (Π² ΡΠ°Π·Π΄Π΅Π» Β«Π’Π΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ° Π²ΠΎΠ·Π΄ΡΡ Π°Β»):
2 Π½ΠΎΡΠ±ΡΡ 2021, 14:40
3 Π½ΠΎΡΠ±ΡΡ 2021, 10:10
ΠΡΡΠ³ΠΈΠ΅ Π»ΡΠ΄ΠΈ Ρ Π½Π΅ΠΊΠΎΠΉ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎΡΡΡΡ ΡΠΌΠΎΡΡΡΡ ΡΡΠΈ Π·Π°ΠΏΠΈΡΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΈΡ Π² ΡΠ²ΠΎΠ΅ΠΉ Π΄Π΅ΡΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΡΠΈΡΡΠΌ Π² ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠΌΡΡΠ»Π΅ ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΌΠ°Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ°, Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎ ΠΏΡΠΎΡΠ΅Π΄ΡΠΈΠΌ Π΄Π½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π΅ ΠΈΠΌΠ΅ΡΡ.
Π‘ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΆΡΡΠ½Π°Π» ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ Π½Π΅Π½ΡΠΆΠ½ΡΠΌΠΈ Π·Π°ΠΏΠΈΡΡΠΌΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ°Π· Π² Π½Π΅Π΄Π΅Π»Ρ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ ΠΠ°ΡΠΈΠ»ΠΈΠΉ ΠΠ΅ΡΡΠΎΠ²ΠΈΡ ΠΈ ΡΠΈΡΡΠΈΡ Π΅Π³ΠΎ, ΡΠ΄Π°Π»ΡΡ Π²ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈ ΠΎΡΡΠ°Π²Π»ΡΡ ΡΠ°ΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π·Π°ΠΏΠΈΡΡ (ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΡΠΌΡΡΠ»Π°):
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π² ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΠΎ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Kafka:
ΠΠ»ΡΡ (key): ΠΠ²Π°Π½ ΠΠ²Π°Π½ΠΎΠ²ΠΈΡ;
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ (value): +10 Π³ΡΠ°Π΄ΡΡΠΎΠ²;
ΠΠ΅ΡΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (timestamp): 4 Π½ΠΎΡΠ±ΡΡ 2021, 15:30;
Π’ΠΎΠΏΠΈΠΊ (topic): ΡΠΏΠΎΡΠΎΠ± Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠΌ [4] β ΡΠ°Π·Π΄Π΅Π» ΠΆΡΡΠ½Π°Π»Π° Β«Π’Π΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ° Π²ΠΎΠ·Π΄ΡΡ Π°Β»;
Π Π°Π·Π΄Π΅Π» (partition): ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΡΠΎΠΏΠΈΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Ρ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΈΡ ΠΏΠΎΡΡΡΠΏΠ»Π΅Π½ΠΈΡ [4];
ΠΠ½Π°Ρ Π²ΡΡ ΡΡΠΎ, ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΡ ΠΠ²Π°Π½Π° ΠΠ²Π°Π½ΠΎΠ²ΠΈΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π²ΠΈΠ΄Π΅:
ΠΠ£Π ΠΠΠ Π‘ΠΠΠΠ©ΠΠΠΠ
Π’ΠΎΠΏΠΈΠΊ (topic): ΡΠ°Π·Π΄Π΅Π» ΠΆΡΡΠ½Π°Π»Π° Β«Π’Π΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ° Π²ΠΎΠ·Π΄ΡΡ Π°Β»
Π Π°Π·Π΄Π΅Π» (partition)
ΠΠ»ΡΡ (key)
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ (value)
ΠΠ΅ΡΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (timestamp)
2 Π½ΠΎΡΠ±ΡΡ 2021, 14:40
3 Π½ΠΎΡΠ±ΡΡ 2021, 10:10
4 Π½ΠΎΡΠ±ΡΡ 2021, 15:30
CΡΡΠ°ΡΠ΅Π³ΠΈΡ Log Compaction Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Kafka Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΆΡΡΠ½Π°Π»Π΅ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π° ΡΠΎΠΏΠΈΠΊΠ°. Π ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ°ΠΊΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π², ΠΊΠ°ΠΊ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π΄ΠΎ ΡΠ±ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠΈΡΡΠ΅ΠΌΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΊΠ΅ΡΠ° ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, Apache Kafka Π±ΡΠ΄Π΅Ρ Ρ ΡΠ°Π½ΠΈΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ Π·Π°ΠΏΠΈΡΠΈ ΠΈ ΡΠ΄Π°Π»ΡΡΡ ΡΡΠ°ΡΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Ρ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΊΠ»ΡΡΠΎΠΌ.
Π‘ΠΆΠ°ΡΠΈΠ΅ ΠΆΡΡΠ½Π°Π»Π° Kafka ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΌ (consumer-Π°ΠΌ) Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ²ΠΎΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈΠ· Π·Π°ΠΏΠΈΡΠΈ compacted topic. ΠΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, Π½ΠΎ ΡΠ΄Π°Π»ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ . ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ (offset) ΡΠ°Π·Π΄Π΅Π»Π° Π΄Π»Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ. ΠΡΡΠ½Π°Π» Π΄Π°Π½Π½ΡΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π³ΠΎΠ»ΠΎΠ²Ρ (head) ΠΈ Ρ Π²ΠΎΡΡΠ° (tail). ΠΠ°ΠΆΠ΄ΠΎΠ΅ Π½ΠΎΠ²ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π² ΠΊΠΎΠ½Π΅Ρ head. ΠΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ log compaction Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² Ρ Π²ΠΎΡΡΠ΅ ΡΠΏΠ»ΠΎΡΠ½ΡΠ½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°.
Π ΠΈΡ. 1. ΠΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ° Kafka β ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·Π΄Π΅Π»ΠΎΠ²
ΠΠ°Π·ΠΎΠ²ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π½Π΅Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ Π² ΡΠΎΠΏΠΈΠΊΠ°Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π°Ρ :
cleanup.policy=delete β Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π½Π΅Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ;
retention.bytes β ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠ°ΡΡΠΈΡΠΈΠΈ, ΠΏΠΎΡΠ»Π΅ ΠΏΡΠ΅Π²ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π½Π°ΡΠ°ΡΡ ΡΠ΄Π°Π»ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ;
retention.ms β ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ Π²ΠΎΠ·ΡΠ°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΏΠΎΡΠ»Π΅ ΠΏΡΠ΅Π²ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π΅Π³ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ.
ΠΠ°ΠΆΠ½Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΡΡ Π²ΡΠ΅ ΡΠΏΡΡΠΊΠ°ΡΡ! ΠΡΠΎΠΊΠ΅Ρ Kafka Ρ ΡΠ°Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°Ρ . ΠΠ½ΠΈ Π±ΡΠ΄ΡΡ ΡΠ΄Π°Π»ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΠΊΡΠΈΡΠ΅ΡΠΈΡΠΌ retention policy.
ΠΠΎ Π΅ΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ cleanup.policy=compact, ΡΠΎ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π±ΡΠ΄Π΅Ρ compacted topic. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠΊΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ Π²Π°ΠΆΠ½ΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Ρ:
LogCleaner β ΠΏΡΠ» ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ ΡΠΆΠ°ΡΠΈΠ΅ Π»ΠΎΠ³Π°;
LogTail β ΡΠ°ΡΡΡ Π»ΠΎΠ³Π°, Π½Π°Π΄ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΆΠ΅ Π±ΡΠ»Π° ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΡΠΆΠ°ΡΠΈΡ;
LogHead β ΡΠ°ΡΡΡ Π»ΠΎΠ³Π°, Π½Π°Π΄ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΡΠΆΠ°ΡΠΈΡ Π½Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»Π°ΡΡ.
Π‘Π°ΠΌ ΠΏΡΠΎΡΠ΅ΡΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
LogCleaner ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π»ΠΎΠ³ Ρ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠΌ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ΠΌ logHead/logTail.
ΠΠ½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π²ΡΠ΅ offset’Ρ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΊΠ»ΡΡΡ Π² logHead.
ΠΠΎΠΏΠΈΡΡΠ΅Ρ ΡΠ°ΠΌΡΠΉ ΡΡΠ°ΡΡΠΉ ΡΠ΅Π³ΠΌΠ΅Π½Ρ, ΡΠ΄Π°Π»ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΊΠ»ΡΡΠΈ ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ Π΄Π°Π»ΡΡΠ΅ Π² Π»ΠΎΠ³Π΅.
ΠΠΎΠ΄ΠΌΠ΅Π½ΡΠ΅Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΡΠ΅Π³ΠΌΠ΅Π½Ρ Π½Π° ΡΠΆΠ°ΡΡΠΉ.
ΠΠ°ΠΆΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ logCleaner:
log.cleanup.policy=compact β ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ log compaction;
log.cleaner.max.compaction.lag.ms β Π²ΡΠ΅ΠΌΡ ΠΆΠΈΠ·Π½ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΊΠ»ΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π°Π»ΡΡΠ΅ ΠΏΠΎ Π»ΠΎΠ³Ρ;
log.cleaner.threads β ΠΊΠΎΠ»-Π²ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² logCleaner.
ΠΡΠ° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΡΠ΄Π°Π»ΡΠ΅Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΠ΅ΡΡ Π·Π°ΠΏΠΈΡΠΈ, Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ»ΡΡΠΈ Ρ Π½ΡΠ»Π΅Π²ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ.
ΠΠ΅ΡΠ°Π»ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠ°Π±ΠΎΡΡ
ΠΠ°Π·ΠΎΠ²ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π½Π΅Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ Π² ΡΠΎΠΏΠΈΔΈΠ°Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π°Ρ :
cleanup.policy=delete β Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π½Π΅Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ;
retention.bytes β ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°Π·Π΄Π΅Π»Π°, ΠΏΠΎΡΠ»Π΅ ΠΏΡΠ΅Π²ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π½Π°ΡΠ°ΡΡ ΡΠ΄Π°Π»ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ;
retention.ms β ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ Π²ΠΎΠ·ΡΠ°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΏΠΎΡΠ»Π΅ ΠΏΡΠ΅Π²ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ Π΅Π³ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ.
ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΆΠΈΠ²ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, ΔΈΠ°ΔΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ log compaction.
Π‘ΔΈΠ°ΡΠ°Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ Apache Kafka (Π² ΠΌΠΎΡΠΌ ΡΠ»ΡΡΠ°Π΅ 2.7.0), ΠΏΠΎΠ΄Π½ΠΈΠΌΠ΅ΠΌ zookeeper ΠΈ Π±ΡΠΎΔΈΠ΅ΡΠ° Ρ default-Π½Π°ΡΡΡΠΎΠΉΔΈΠ°ΠΌΠΈ:
ΠΠ°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠΎΠΏΠΈΔΈ:
Π ΠΎΔΈΠ½Π΅ producer’Π° Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ:
Π ΠΎΔΈΠ½Π΅ consumer’a Π²Ρ Π½Π°ΠΉΠ΄ΡΡΠ΅ Π²ΡΠ΅ ΡΠ΅ ΠΆΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ. Π’Π΅ΠΏΠ΅ΡΡ ΡΠ΅ΡΠ΅Π· 60β90 ΡΠ΅ΠΊΡΠ½Π΄ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΠ΅ consoleconsumer, ΠΈ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅:
Π‘ΠΆΠ°ΡΡΠ΅ ΡΠ°Π·Π΄Π΅Π»Ρ ΡΡΠ΅Π±ΡΡΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΏΠ°ΠΌΡΡΠΈ ΠΈ Π¦Π Π²Π°ΡΠΈΡ Π±ΡΠΎΠΊΠ΅ΡΠΎΠ². ΠΠ»Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠΆΠ°ΡΠΈΡ ΠΆΡΡΠ½Π°Π»ΠΎΠ² Π½ΡΠΆΠ½Π° ΠΊΠ°ΠΊ ΠΊΡΡΠ° (ΠΏΠ°ΠΌΡΡΡ), ΡΠ°ΠΊ ΠΈ ΡΠΈΠΊΠ»Ρ Π¦Π Π½Π° Π±ΡΠΎΠΊΠ΅ΡΠ°Ρ , Π° Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎΠ΅ ΡΠΆΠ°ΡΠΈΠ΅ ΠΆΡΡΠ½Π°Π»ΠΎΠ² ΠΏΠΎΠ΄Π²Π΅ΡΠ³Π°Π΅Ρ Π±ΡΠΎΠΊΠ΅ΡΠΎΠ² ΡΠΈΡΠΊΡ ΠΈΠ·-Π·Π° Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΡΡΠ° ΡΠ°Π·Π΄Π΅Π»Π°.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΡΡ log.cleaner.dedupe.buffer.size ΠΈ log.cleaner.threads Π½Π° ΡΠ²ΠΎΠΈΡ Π±ΡΠΎΠΊΠ΅ΡΠ°Ρ , Π½ΠΎ ΠΈΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²Π»ΠΈΡΡΡ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΡΡΠΈ. ΠΡΠ»ΠΈ Π±ΡΠΎΠΊΠ΅Ρ Π²ΡΠ΄Π°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ OutOfMemoryError, ΠΎΠ½ ΠΎΡΠΊΠ»ΡΡΠΈΡΡΡ ΠΈ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠ΅ΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅.
Π Π°Π·ΠΌΠ΅Ρ Π±ΡΡΠ΅ΡΠ° ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π±ΡΠ΄ΡΡ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΊΠ°ΠΊ ΠΎΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΎΡΠΈΡΠ°Π΅ΠΌΡΡ ΡΠ°Π·Π΄Π΅Π»ΠΎΠ² ΡΠ΅ΠΌΡ, ΡΠ°ΠΊ ΠΈ ΠΎΡ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΊΠ»ΡΡΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π² ΡΡΠΈΡ ΡΠ°Π·Π΄Π΅Π»Π°Ρ .
Π‘ΠΆΠ°ΡΠΈΠ΅ ΠΆΡΡΠ½Π°Π»Π° β Ρ ΠΎΡΠΎΡΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π΄Π»Ρ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ compacted topic’Π°.
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²Π·Π³Π»ΡΠ΄ Π½Π° Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π² Kafka
ΠΡΠΈΠ³ΠΈΠ½Π°Π» ΡΡΠ°ΡΡΠΈ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ
Kafka ΠΏΠΎΠ²ΡΡΠ΄Ρ. ΠΠ΄Π΅ Π΅ΡΡΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ ΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, Π° ΠΎΠ½ΠΈ ΡΠ΅ΠΉΡΠ°Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Ρ, ΡΠ°ΠΌ ΠΏΠΎΡΡΠΈ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° Π΅ΡΡΡ ΠΈ Kafka. Π ΡΡΠ°ΡΡΠ΅ Ρ ΠΏΠΎΠΏΡΡΠ°ΡΡΡ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ, ΠΊΠ°ΠΊ Π² Kafka ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ.
Π―, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΏΠΎΡΡΠ°ΡΠ°Π»ΡΡ Π½Π΅ ΡΡΠ»ΠΎΠΆΠ½ΡΡΡ, Π½ΠΎ ΠΊΠΎΠΏΠ°ΡΡ Π±ΡΠ΄Π΅ΠΌ Π³Π»ΡΠ±ΠΎΠΊΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ Kafka Π½Π΅ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ. ΠΠ½Π°ΡΠ΅ Π½Π΅ Π²ΡΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ½ΡΡΠ½ΠΎ. Π ΠΎΠ±ΡΠ΅ΠΌ, ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉΡΠ΅ ΡΠΈΡΠ°ΡΡ Π½Π° ΡΠ²ΠΎΠΉ ΡΡΡΠ°Ρ ΠΈ ΡΠΈΡΠΊ.
ΠΠ±ΡΡΠ½ΠΎ ΡΡΠΈΡΠ°Π΅ΡΡΡ, ΡΡΠΎ Kafka β ΡΡΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ ΠΈ ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. Π‘ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ Π²Π΅ΡΠ½ΠΎ, Π½ΠΎ ΡΠ΅ΡΠΌΠΈΠ½ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π½Π΅ Π²ΡΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ. Π― ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Ρ Π΄ΡΡΠ³ΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅: ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΈ ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΆΡΡΠ½Π°Π» ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ². ΠΡΠ° ΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²ΠΊΠ° ΠΊΠ°ΠΆΠ΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΡΠ½ΠΎΠΉ, Π²Π΅Π΄Ρ ΠΌΡ Π²ΡΠ΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ Π·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΆΡΡΠ½Π°Π»Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π½Π° Π΄ΠΈΡΠΊ. ΠΡΠΎΡΡΠΎ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π° Π΄ΠΈΡΠΊ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Π² Kafka.
ΠΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π² Kafka ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π²Π° ΡΠ΅ΡΠΌΠΈΠ½Π°: ΠΏΠ°ΡΡΠΈΡΠΈΠΈ ΠΈ ΡΠΎΠΏΠΈΠΊΠΈ. ΠΠ°ΡΡΠΈΡΠΈΠΈ β ΡΡΠΎ Π΅Π΄ΠΈΠ½ΠΈΡΡ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, Π° ΡΠΎΠΏΠΈΠΊΠΈ β ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², Π² ΠΊΠΎΡΠΎΡΡΡ ΡΡΠΈ ΠΏΠ°ΡΡΠΈΡΠΈΠΈ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ.
Π‘ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ΅ΠΎΡΠΈΠ΅ΠΉ ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈΡΡ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅.
Π― ΡΠΎΠ·Π΄Π°ΠΌ Π² Kafka ΡΠΎΠΏΠΈΠΊ Ρ ΡΡΠ΅ΠΌΡ ΠΏΠ°ΡΡΠΈΡΠΈΡΠΌΠΈ. ΠΡΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ²ΡΠΎΡΡΡΡ Π·Π° ΠΌΠ½ΠΎΠΉ, Π²ΠΎΡ ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Kafka Π² Windows.
Π ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΠΆΡΡΠ½Π°Π»ΠΎΠ² Kafka ΡΠΎΠ·Π΄Π°Π½ΠΎ ΡΡΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°:
$ tree freblogg*
freblogg-0
|— 00000000000000000000.index
|— 00000000000000000000.log
|— 00000000000000000000.timeindex
`— leader-epoch-checkpoint
freblogg-1
|— 00000000000000000000.index
|— 00000000000000000000.log
|— 00000000000000000000.timeindex
`— leader-epoch-checkpoint
freblogg-2
|— 00000000000000000000.index
|— 00000000000000000000.log
|— 00000000000000000000.timeindex
`— leader-epoch-checkpoint
ΠΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π² ΡΠΎΠΏΠΈΠΊΠ΅ ΡΡΠΈ ΠΏΠ°ΡΡΠΈΡΠΈΠΈ, ΠΈ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ β ΡΠ²ΠΎΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΡΠ΅ ΡΡΡ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΉΠ»ΠΎΠ² (index, log ΠΈ Ρ Π΄.), Π½ΠΎ ΠΎ Π½ΠΈΡ ΡΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π² Kafka ΡΠΎΠΏΠΈΠΊ β ΡΡΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅, Π° ΠΏΠ°ΡΡΠΈΡΠΈΡ β ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π΅Π΄ΠΈΠ½ΠΈΡΠ° Ρ ΡΠ°Π½Π΅Π½ΠΈΡ. Π’ΠΎ, ΡΡΠΎ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ Ρ ΡΠ°Π½ΠΈΡΡΡ Π½Π° Π΄ΠΈΡΠΊΠ΅. ΠΠ°ΠΊ ΡΡΡΡΠΎΠ΅Π½Ρ ΠΏΠ°ΡΡΠΈΡΠΈΠΈ?
ΠΠ°ΡΡΠΈΡΠΈΠΈ
Π ΡΠ΅ΠΎΡΠΈΠΈ ΠΏΠ°ΡΡΠΈΡΠΈΡ β ΡΡΠΎ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠ°Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ (ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ) ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΏΠ°ΡΡΠΈΡΠΈΡ, Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π°Π»ΡΡΡ. Π ΠΏΠΎΠ΄ Β«ΠΌΡΒ» Ρ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Ρ ΠΏΡΠΎΠ΄ΡΡΠ΅ΡΠΎΠ² Π² Kafka. ΠΡΠΎΠ΄ΡΡΠ΅Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΄Π°Π»ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΡΠΎΠΏΠΈΠΊΠ°.
Π‘Π΅ΠΉΡΠ°Ρ ΠΌΡ ΠΎΡΠΏΡΠ°Π²ΠΈΠΌ Π² ΡΠΎΠΏΠΈΠΊ ΠΏΠ°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, Π½ΠΎ ΡΠ½Π°ΡΠ°Π»Π° ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΏΠ°ΠΏΠΊΠ°Ρ ΠΏΠ°ΡΡΠΈΡΠΈΠΉ.
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΠ°ΠΉΠ»Ρ index Π²ΠΌΠ΅ΡΡΠ΅ Π²Π΅ΡΡΡ 20 ΠΠ, Π° ΡΠ°ΠΉΠ» log ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΠΏΡΡΡΠΎΠΉ. Π ΠΏΠ°ΠΏΠΊΠ°Ρ
freblogg-1 ΠΈ freblogg-2 ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΎΡΠΏΡΠ°Π²ΠΈΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· console producer ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ:
Π― ΠΎΡΠΏΡΠ°Π²ΠΈΠ» Π΄Π²Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ β ΡΠ½Π°ΡΠ°Π»Π° Π²Π²Π΅Π» ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ Β«Hello WorldΒ», Π° ΠΏΠΎΡΠΎΠΌ Π½Π°ΠΆΠ°Π» Π½Π° Enter, ΠΈ ΡΡΠΎ Π²ΡΠΎΡΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅. ΠΡΠ΅ ΡΠ°Π· ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²:
freblogg-1:
total 21M
— freblogg 197121 10M Aug 5 08:26 00000000000000000000.index
— freblogg 197121 68 Aug 5 10:15 00000000000000000000.log
— freblogg 197121 10M Aug 5 08:26 00000000000000000000.timeindex
— freblogg 197121 11 Aug 5 10:15 leader-epoch-checkpoint
freblogg-2:
total 21M
— freblogg 197121 10M Aug 5 08:26 00000000000000000000.index
— freblogg 197121 79 Aug 5 09:59 00000000000000000000.log
— freblogg 197121 10M Aug 5 08:26 00000000000000000000.timeindex
— freblogg 197121 11 Aug 5 09:59 leader-epoch-checkpoint
ΠΠ²Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π·Π°Π½ΡΠ»ΠΈ Π΄Π²Π΅ ΠΏΠ°ΡΡΠΈΡΠΈΠΈ, ΠΈ ΡΠ°ΠΉΠ»Ρ log Π² Π½ΠΈΡ ΡΠ΅ΠΏΠ΅ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·ΠΌΠ΅Ρ. ΠΡΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΏΠ°ΡΡΠΈΡΠΈΠΈ Ρ ΡΠ°Π½ΡΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅ xxxx.log. ΠΠ°Π²Π°ΠΉΡΠ΅ Π·Π°Π³Π»ΡΠ½Π΅ΠΌ Π² ΡΠ°ΠΉΠ» log ΠΈ ΡΠ±Π΅Π΄ΠΈΠΌΡΡ, ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠ°Π²Π΄Π° ΡΠ°ΠΌ.
Π€Π°ΠΉΠ»Ρ Ρ ΡΠΎΡΠΌΠ°ΡΠΎΠΌ log Π½Π΅ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ ΡΠΈΡΠ°ΡΡ, Π½ΠΎ ΠΌΡ Π²ΡΠ΅ ΠΆΠ΅ Π²ΠΈΠ΄ΠΈΠΌ Π² ΠΊΠΎΠ½ΡΠ΅ Β«Hello WorldΒ», ΡΠΎ Π΅ΡΡΡ ΡΠ°ΠΉΠ» ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΎΡΠΏΡΠ°Π²ΠΈΠ»ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠΎΠΏΠΈΠΊ. ΠΡΠΎΡΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΌΡ ΠΎΡΠΏΡΠ°Π²ΠΈΠ»ΠΈ Π² Π΄ΡΡΠ³ΡΡ ΠΏΠ°ΡΡΠΈΡΠΈΡ.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΏΠ°Π»ΠΎ Π² ΡΡΠ΅ΡΡΡ ΠΏΠ°ΡΡΠΈΡΠΈΡ (freblogg-2), Π° Π²ΡΠΎΡΠΎΠ΅ β Π²ΠΎ Π²ΡΠΎΡΡΡ (freblogg-1). ΠΠ»Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Kafka Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΠΏΠ°ΡΡΠΈΡΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎ, Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΡΠΎΡΡΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎ ΠΊΡΡΠ³Ρ (round-robin). ΠΡΠ»ΠΈ ΠΌΡ ΠΎΡΠΏΡΠ°Π²ΠΈΠΌ ΡΡΠ΅ΡΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, Kafka Π·Π°ΠΏΠΈΡΠ΅Ρ Π΅Π³ΠΎ Π²ΠΎ freblogg-0 ΠΈ Π΄Π°Π»ΡΡΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ°. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈ ΡΠ°ΠΌΠΈ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΠΏΠ°ΡΡΠΈΡΠΈΡ, ΡΠΊΠ°Π·Π°Π² ΠΊΠ»ΡΡ. Kafka Ρ ΡΠ°Π½ΠΈΡ Π²ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΊΠ»ΡΡΠΎΠΌ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΠ°ΡΡΠΈΡΠΈΠΈ.
ΠΠ°ΠΆΠ΄ΠΎΠΌΡ Π½ΠΎΠ²ΠΎΠΌΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΏΠ°ΡΡΠΈΡΠΈΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ Id Π½Π° 1 Π±ΠΎΠ»ΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ. ΠΡΠΎΡ Id Π΅ΡΠ΅ Π½Π°Π·ΡΠ²Π°ΡΡ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ (offset). Π£ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ 0, Ρ Π²ΡΠΎΡΠΎΠ³ΠΎ β 1 ΠΈ Ρ. Π΄., ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π²ΡΠ΅Π³Π΄Π° Π½Π° 1 Π±ΠΎΠ»ΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Kafka, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΡΡΠΎ Π·Π° ΡΡΡΠ°Π½Π½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π² ΡΠ°ΠΉΠ»Π΅ log. ΠΠ°ΠΌ ΠΎΠ½ΠΈ ΠΊΠ°ΠΆΡΡΡΡ Π±Π΅ΡΡΠΌΡΡΠ»Π΅Π½Π½ΡΠΌΠΈ, Π½ΠΎ Π΄Π»Ρ Kafka ΡΡΠΎ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ. ΠΡΠΏΠΎΠ»Π½ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
umping logs\freblogg-2\00000000000000000000.log
Starting offset: 0
(Π― ΡΠ΄Π°Π»ΠΈΠ» ΠΈΠ· Π²ΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠ΅-ΡΡΠΎ Π»ΠΈΡΠ½Π΅Π΅.)
ΠΠ΄Π΅ΡΡ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅, Π²ΡΠ΅ΠΌΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ, ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠ»ΡΡΠ° ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π° Π΅ΡΠ΅ ΡΠ°ΠΌΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ (payload).
ΠΠ°Π΄ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ ΠΏΠ°ΡΡΠΈΡΠΈΡ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π° ΠΊ Π±ΡΠΎΠΊΠ΅ΡΡ. ΠΡΠ»ΠΈ Ρ Π½Π°Ρ, Π΄ΠΎΠΏΡΡΡΠΈΠΌ, ΡΡΠΈ Π±ΡΠΎΠΊΠ΅ΡΠ°, Π° ΠΏΠ°ΠΏΠΊΠ° freblogg-0 ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π² broker-1, Π² Π΄ΡΡΠ³ΠΈΡ Π±ΡΠΎΠΊΠ΅ΡΠ°Ρ Π΅Π΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ. Π£ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΠΏΠΈΠΊΠ° ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠ°ΡΡΠΈΡΠΈΠΈ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π±ΡΠΎΠΊΠ΅ΡΠ°Ρ , Π½ΠΎ ΠΎΠ΄Π½Π° ΠΏΠ°ΡΡΠΈΡΠΈΡ Π²ΡΠ΅Π³Π΄Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π² ΠΎΠ΄Π½ΠΎΠΌ Π±ΡΠΎΠΊΠ΅ΡΠ΅ Kafka (Π΅ΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 1, Π½ΠΎ ΠΎΠ± ΡΡΠΎΠΌ ΡΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅).
Π‘Π΅Π³ΠΌΠ΅Π½ΡΡ
Π§ΡΠΎ ΡΡΠΎ Π·Π° ΡΠ°ΠΉΠ»Ρ index ΠΈ log Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΠΏΠ°ΡΡΠΈΡΠΈΠΈ? ΠΠ°ΡΡΠΈΡΠΈΡ, ΠΌΠΎΠΆΠ΅Ρ, ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡΠ° Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π² Kafka, Π½ΠΎ Π½Π΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π°Ρ. ΠΠ°ΠΆΠ΄Π°Ρ ΠΏΠ°ΡΡΠΈΡΠΈΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π° ΡΠ΅Π³ΠΌΠ΅Π½ΡΡ, ΡΠΎ Π΅ΡΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. Kafka Π½Π΅ Ρ ΡΠ°Π½ΠΈΡ Π²ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΡΠΈΡΠΈΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ (ΠΊΠ°ΠΊ Π² ΡΠ°ΠΉΠ»Π΅ Π»ΠΎΠ³Π°), Π° ΡΠ°Π·Π΄Π΅Π»ΡΠ΅Ρ ΠΈΡ Π½Π° ΡΠ΅Π³ΠΌΠ΅Π½ΡΡ. ΠΡΠΎ Π΄Π°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ². (Π Π°Π·Π΄Π΅Π»ΡΠΉ ΠΈ Π²Π»Π°ΡΡΠ²ΡΠΉ, ΠΊΠ°ΠΊ Π³ΠΎΠ²ΠΎΡΠΈΡΡΡ.)
ΠΠ»Π°Π²Π½ΠΎΠ΅ β ΡΡΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΡΠΈΡΠ°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ . Π― ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ», ΡΡΠΎ ΡΠ°ΠΌΠΈ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π°Π»ΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΠΏΠ°ΡΡΠΈΡΠΈΠΈ, Π½ΠΎ Kafka ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π»Ρ ΡΠΎΠΏΠΈΠΊΠ°. Π£Π΄Π°Π»ΠΈΡΡ ΡΠ΅Π³ΠΌΠ΅Π½Ρ ΠΏΡΠΎΡΠ΅, ΡΠ΅ΠΌ ΡΠ°ΡΡΡ ΡΠ°ΠΉΠ»Π°, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠ΄ΡΡΠ΅Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π² Π½Π΅Π³ΠΎ Π΄Π°Π½Π½ΡΠ΅.
ΠΡΠ»ΠΈ (00000000000000000000) Π² ΡΠ°ΠΉΠ»Π°Ρ log ΠΈ index Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ ΠΏΠ°ΡΡΠΈΡΠΈΠΈ β ΡΡΠΎ ΠΈΠΌΡ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°. Π£ ΡΠ°ΠΉΠ»Π° ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ° Π΅ΡΡΡ ΡΠ°ΠΉΠ»Ρ segment.log, segment.index ΠΈ segment.timeindex.
Kafka Π²ΡΠ΅Π³Π΄Π° Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ»Ρ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΠ°ΡΡΠΈΡΠΈΠΈ, ΠΏΡΠΈΡΠ΅ΠΌ Ρ Π½Π°Ρ Π²ΡΠ΅Π³Π΄Π° Π΅ΡΡΡ Π°ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠ΅Π³ΠΌΠ΅Π½Ρ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ. ΠΠΎΠ³Π΄Π° Kafka Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ Π»ΠΈΠΌΠΈΡΠ° ΠΏΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°, ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ°Π½Π΅Ρ Π°ΠΊΡΠΈΠ²Π½ΡΠΌ.
Π ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ° ΠΎΡΡΠ°ΠΆΠ°Π΅ΡΡΡ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΠ° ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅ Π²ΡΡΠ΅ Π² ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ΅ 0 ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠΎ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΡ 0 Π΄ΠΎ 2, Π² ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ΅ 3 β ΠΎΡ 3 Π΄ΠΎ 5, ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ΅Π³ΠΌΠ΅Π½Ρ, ΡΠ΅ΡΡΠΎΠΉ, ΡΠ΅ΠΉΡΠ°Ρ Π°ΠΊΡΠΈΠ²Π΅Π½.
freblogg-1:
total 21M
— freblogg 197121 10M Aug 5 08:26 00000000000000000000.index
— freblogg 197121 68 Aug 5 10:15 00000000000000000000.log
— freblogg 197121 10M Aug 5 08:26 00000000000000000000.timeindex
— freblogg 197121 11 Aug 5 10:15 leader-epoch-checkpoint
freblogg-2:
total 21M
— freblogg 197121 10M Aug 5 08:26 00000000000000000000.index
— freblogg 197121 79 Aug 5 09:59 00000000000000000000.log
— freblogg 197121 10M Aug 5 08:26 00000000000000000000.timeindex
— freblogg 197121 11 Aug 5 09:59 leader-epoch-checkpoint
Π£ Π½Π°Ρ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠ΅Π³ΠΌΠ΅Π½ΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°ΡΡΠΈΡΠΈΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ΠΈ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ 00000000000000000000. Π Π°Π· Π΄ΡΡΠ³ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΎΠ² Π½Π΅Ρ, ΡΠ΅Π³ΠΌΠ΅Π½Ρ 00000000000000000000 ΠΈ Π±ΡΠ΄Π΅Ρ Π°ΠΊΡΠΈΠ²Π½ΡΠΌ.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ΅Π³ΠΌΠ΅Π½ΡΡ Π²ΡΠ΄Π°Π΅ΡΡΡ ΡΠ΅Π»ΡΠΉ Π³ΠΈΠ³Π°Π±Π°ΠΉΡ, Π½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ, ΡΡΠΎ ΠΌΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ Π² ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ΅Π³ΠΌΠ΅Π½Ρ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ.
ΠΠΎΠΏΡΡΡΠΈΠΌ, ΠΌΡ ΠΎΡΠΏΡΠ°Π²ΠΈΠ»ΠΈ Π² ΠΏΠ°ΡΡΠΈΡΠΈΡ freblogg-2 ΡΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΈ ΠΎΠ½Π° Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
Π’ΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ β ΡΡΠΎ Π½Π°Ρ Π»ΠΈΠΌΠΈΡ. ΠΠ° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ Kafka Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΊΡΠΎΠ΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ΅Π³ΠΌΠ΅Π½Ρ, ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ, ΡΠ΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ Π°ΠΊΡΠΈΠ²Π½ΡΠΌ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ°ΠΉΠ»Π΅ log ΡΡΠΎΠ³ΠΎ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°. (Π― Π½Π΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ Π½ΡΠ»ΠΈ, ΡΡΠΎΠ±Ρ Π±ΡΠ»ΠΎ ΠΏΡΠΎΡΠ΅ Π²ΠΎΡΠΏΡΠΈΠ½ΡΡΡ).
freblogg-2
|— 00.index
|— 00.log
|— 00.timeindex
|— 03.index
|— 03.log
|— 03.timeindex
`—
Π€Π°ΠΉΠ» index Π΄Π»Ρ ΡΠ°ΠΉΠ»Π° log, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ» Π² ΠΊΡΠ°ΡΠΊΠΎΠΌ ΠΎΡΡΡΡΠΏΠ»Π΅Π½ΠΈΠΈ, Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΊΠ°ΠΊ-ΡΠΎ ΡΠ°ΠΊ:
ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠΎ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ 1, ΠΌΡ ΠΈΡΠ΅ΠΌ Π΅Π³ΠΎ Π² ΡΠ°ΠΉΠ»Π΅ index ΠΈ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ Π΅Π³ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ β 79. ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ 79 Π² ΡΠ°ΠΉΠ»Π΅ log ΠΈ ΡΠΈΡΠ°Π΅ΠΌ. ΠΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± β ΠΌΡ Π±ΡΡΡΡΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΠΌ Π½ΡΠΆΠ½ΠΎΠ΅ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠΆΠ΅ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ index Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ°.
ΠΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌ Π² ΠΏΠ°ΡΡΠΈΡΠΈΡΡ
Π§ΡΠΎΠ±Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈΠ· ΠΏΠ°ΡΡΠΈΡΠΈΠΈ, Kafka Π΄Π°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠ°ΡΡΠΈΡΠΈΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΊΠΎΠ½ΡΡΠΌΠ΅ΡΡ (ΠΈΠ· Π³ΡΡΠΏΠΏΡ ΠΊΠΎΠ½ΡΡΠΌΠ΅ΡΠΎΠ²). ΠΡΠ»ΠΈ ΠΏΠ°ΡΡΠΈΡΠΈΡ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ a, f ΠΈ k, ΠΊΠΎΠ½ΡΡΠΌΠ΅Ρ ΡΠΈΡΠ°Π΅Ρ ΠΈΡ Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΏΠΎΡΡΠ΄ΠΊΠ΅: a, f ΠΈ k. ΠΡΠΎ Π²Π°ΠΆΠ½ΠΎ, Π²Π΅Π΄Ρ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠΎΠΏΠΈΠΊΠ° Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΡΡΠΈΡΠΈΠΉ.
ΠΡΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠΌΠ΅ΡΠΎΠ² Π±ΡΠ΄Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅, ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌ Π½Π΅ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡΡ. ΠΡΠΆΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠ°ΡΡΠΈΡΠΈΠΉ. Π§ΡΠΎΠ±Ρ Π΄Π²Π° ΠΊΠΎΠ½ΡΡΠΌΠ΅ΡΠ° ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°Π»ΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΡΠΎΠΏΠΈΠΊΠ°, Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π΄Π²Π΅ ΠΏΠ°ΡΡΠΈΡΠΈΠΈ β ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ. ΠΠ°ΡΡΠΈΡΠΈΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠΎΠΏΠΈΠΊΠ΅ ΠΌΠΎΠ³ΡΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² ΡΠ°Π·Π½ΡΡ Π±ΡΠΎΠΊΠ΅ΡΠ°Ρ , ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π²Π° ΠΊΠΎΠ½ΡΡΠΌΠ΅ΡΠ° ΡΠΎΠΏΠΈΠΊΠ° ΠΌΠΎΠ³ΡΡ ΡΡΠΈΡΡΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· Π΄Π²ΡΡ ΡΠ°Π·Π½ΡΡ Π±ΡΠΎΠΊΠ΅ΡΠΎΠ².
Π’ΠΎΠΏΠΈΠΊΠΈ
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΊ ΡΠΎΠΏΠΈΠΊΠ°ΠΌ. ΠΡ ΡΠΆΠ΅ ΠΊΠΎΠ΅-ΡΡΠΎ Π·Π½Π°Π΅ΠΌ ΠΎ Π½ΠΈΡ . ΠΠ»Π°Π²Π½ΠΎΠ΅, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ: ΡΠΎΠΏΠΈΠΊ β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠ°ΡΡΠΈΡΠΈΠΉ.
Π’ΠΎΠΏΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ Π±ΡΠΎΠΊΠ΅ΡΠ°ΠΌ ΡΠ΅ΡΠ΅Π· ΠΏΠ°ΡΡΠΈΡΠΈΠΈ, Π½ΠΎ ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΏΠ°ΡΡΠΈΡΠΈΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ Π±ΡΠΎΠΊΠ΅ΡΠ΅. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΎΠΏΠΈΠΊΠ° Π΅ΡΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ, ΠΎΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π·Π°Π²ΠΈΡΡΡ ΠΈΠΌΠ΅Π½Π° ΠΏΠ°ΡΡΠΈΡΠΈΠΉ.
Π Π΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ? Π‘ΠΎΠ·Π΄Π°Π²Π°Ρ ΡΠΎΠΏΠΈΠΊ Π² Kafka, ΠΌΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ Π΄Π»Ρ Π½Π΅Π³ΠΎ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ β replication-factor. ΠΠΎΠΏΡΡΡΠΈΠΌ, Ρ Π½Π°Ρ Π΄Π²Π° Π±ΡΠΎΠΊΠ΅ΡΠ° ΠΈ ΠΌΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ replication-factor 2. Π’Π΅ΠΏΠ΅ΡΡ Kafka ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ Π²ΡΠ΅Π³Π΄Π° ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π±ΡΠΊΠ°ΠΏ, ΠΈΠ»ΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΡ, Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°ΡΡΠΈΡΠΈΠΈ Π² ΡΠΎΠΏΠΈΠΊΠ΅. Kafka ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠ°ΡΡΠΈΡΠΈΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ HDFS ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π±Π»ΠΎΠΊΠΈ Π΄Π°Π½Π½ΡΡ ΠΏΠΎ Π½ΠΎΠ΄Π°ΠΌ.
ΠΠΎΠΏΡΡΡΠΈΠΌ, Π΄Π»Ρ ΡΠΎΠΏΠΈΠΊΠ° freblogg ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ 2. ΠΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΡΡΠΈΡΠΈΠΉ:
ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΏΠ°ΡΡΠΈΡΠΈΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² Π΄ΡΡΠ³ΠΎΠΌ Π±ΡΠΎΠΊΠ΅ΡΠ΅, Kafka Π½Π΅ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ Π΅Π΅ ΡΠΈΡΠ°ΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π½Π°Π±ΠΎΡΠ΅ ΠΏΠ°ΡΡΠΈΡΠΈΠΉ Π΅ΡΡΡ LEADER, ΡΠΎ Π΅ΡΡΡ Π»ΠΈΠ΄Π΅Ρ, ΠΈ FOLLOWERS β Π²Π΅Π΄ΠΎΠΌΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΡΠ°ΡΡΡΡ Π² ΡΠ΅Π·Π΅ΡΠ²Π΅. ΠΠ΅Π΄ΠΎΠΌΡΠ΅ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΡΡΡΡ Ρ Π»ΠΈΠ΄Π΅ΡΠΎΠΌ ΠΈ ΠΆΠ΄ΡΡ ΡΠ²ΠΎΠ΅Π³ΠΎ Π·Π²Π΅Π·Π΄Π½ΠΎΠ³ΠΎ ΡΠ°ΡΠ°. ΠΠΎΠ³Π΄Π° Π»ΠΈΠ΄Π΅Ρ Π²ΡΠΉΠ΄Π΅Ρ ΠΈΠ· ΡΡΡΠΎΡ, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· in-sync Π²Π΅Π΄ΠΎΠΌΡΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠ±ΡΠ°Π½ Π½ΠΎΠ²ΡΠΌ Π»ΠΈΠ΄Π΅ΡΠΎΠΌ, ΠΈ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΡΡΠΎΠΉ ΠΏΠ°ΡΡΠΈΡΠΈΠΈ.
ΠΠΈΠ΄Π΅Ρ ΠΈ Π²Π΅Π΄ΠΎΠΌΡΠΉ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΡΡΠΈΡΠΈΠΈ Π²ΡΠ΅Π³Π΄Π° Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΡΠ°Π·Π½ΡΡ Π±ΡΠΎΠΊΠ΅ΡΠ°Ρ . ΠΡΠΌΠ°Ρ, Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΡΡΡΠ½ΡΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ.
ΠΡ ΠΏΠΎΠ΄ΠΎΡΠ»ΠΈ ΠΊ ΠΊΠΎΠ½ΡΡ ΡΡΠΎΠΉ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠΈ. ΠΡΠ»ΠΈ Π²Ρ Π΄ΠΎΠ±ΡΠ°Π»ΠΈΡΡ Π΄ΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ° β ΠΏΠΎΠ·Π΄ΡΠ°Π²Π»ΡΡ. Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ Π·Π½Π°Π΅ΡΠ΅ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅ ΠΎ Ρ ΡΠ°Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ Π² Kafka. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ²ΡΠΎΡΠΈΠΌ, ΡΡΠΎΠ±Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π·Π°Π±ΡΡΡ.
ΠΡΠΎΠ³ΠΈ
Apache Kafka β ΠΌΠΎΠΉ ΠΊΠΎΠ½ΡΠΏΠ΅ΠΊΡ
ΠΡΠΎ ΠΌΠΎΠΉ ΠΊΠΎΠ½ΡΠΏΠ΅ΠΊΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΠΎΡΠΎΡΠΊΠΎ ΠΈ ΠΏΠΎ ΡΡΡΠΈ Π·Π°ΡΡΠΎΠ½Ρ ΡΠ°ΠΊΠΈΠ΅ ΠΏΠΎΠ½ΡΡΠΈΡ Kafka ΠΊΠ°ΠΊ:
β Π’Π΅ΠΌΠ° (Topic)
β ΠΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊΠΈ (consumer)
β ΠΠ·Π΄Π°ΡΠ΅Π»Ρ (producer)
β ΠΡΡΠΏΠΏΠ° (group), ΡΠ°Π·Π΄Π΅Π» (partition)
β ΠΠΎΡΠΎΠΊΠΈ (streams)
Kafka β ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅
ΠΡΠΈ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠΈ Kafka Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΈ Π²ΠΎΠΏΡΠΎΡΡ, ΠΎΡΠ²Π΅ΡΡ Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ½Π΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΡΠΊΡΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ , Π²ΠΎΡ ΡΡΠΎ ΠΈ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΎ Π² ΡΡΠΎΠΌ ΠΊΠΎΠ½ΡΠΏΠ΅ΠΊΡΠ΅. ΠΠ°ΠΊ ΡΡΠ°ΡΡΠΎΠ²Π°ΡΡ ΠΈ Ρ ΡΠ΅Π³ΠΎ Π½Π°ΡΠ°ΡΡ Ρ Π΄Π°ΠΌ ΠΎΠ΄Π½Ρ ΠΈΠ· ΡΡΡΠ»ΠΎΠΊ Π½ΠΈΠΆΠ΅ Π² ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°Ρ .
Apache Kafka β Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π½Π° Java ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅. Π Kafka Π΅ΡΡΡ ΡΠ΅ΠΌΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΊΠΎΡΠΎΡΡΡ ΠΈΠ·Π΄Π°ΡΠ΅Π»ΠΈ ΠΏΠΈΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈ Π΅ΡΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊΠΈ Π² ΡΠ΅ΠΌΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΡΠ°ΡΡ ΡΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π²ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΈΡΡΡΡΡ Π½Π° Π΄ΠΈΡΠΊ ΠΈ Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Π΅ΠΉ.
Π ΡΠΎΡΡΠ°Π² Kafka Π²Ρ ΠΎΠ΄ΡΡ Π½Π°Π±ΠΎΡ ΡΡΠΈΠ»ΠΈΡ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅ΠΌ, ΡΠ°Π·Π΄Π΅Π»ΠΎΠ², Π³ΠΎΡΠΎΠ²ΡΠ΅ ΠΈΠ·Π΄Π°ΡΠ΅Π»ΠΈ, ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊΠΈ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈ Π΄Ρ. ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Kafka Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΎΡ Β«ZooKeeperΒ», ΠΏΠΎΡΡΠΎΠΌΡ Π²Π½Π°ΡΠ°Π»Π΅ ΡΡΠ°ΡΡΡΠ΅ΠΌ ZooKeeper (zkServer.cmd) Π·Π°ΡΠ΅ΠΌ ΡΠ΅ΡΠ²Π΅Ρ Kafka (kafka-server-start.bat), ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΏΠ°ΠΏΠΊΠ°Ρ bin, ΡΠ°ΠΌ ΠΆΠ΅ ΠΈ ΡΡΠΈΠ»ΠΈΡΡ.
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ΅ΠΌΡ Kafka ΡΡΠΈΠ»ΠΈΡΠΎΠΉ, Ρ ΠΎΠ΄ΡΡΠ΅ΠΉ Π² ΡΠΎΡΡΠ°Π²
Π·Π΄Π΅ΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΡΠ΅ΡΠ²Π΅Ρ zookeeper, replication-factor ΡΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊ ΠΆΡΡΠ½Π°Π»Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, partitions β ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΎΠ² Π² ΡΠ΅ΠΌΠ΅ (ΠΎΠ± ΡΡΠΎΠΌ Π½ΠΈΠΆΠ΅) ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ°ΠΌΠ° ΡΠ΅ΠΌΠ° β βout-topicβ.
ΠΠ»Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Ρ ΠΎΠ΄ΡΡΠΈΠ΅ Π² ΡΠΎΡΡΠ°Π² Π³ΠΎΡΠΎΠ²ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Β«kafka-console-consumerΒ» ΠΈ Β«kafka-console-producerΒ», Π½ΠΎ Ρ ΡΠ΄Π΅Π»Π°Ρ ΡΠ²ΠΎΠΈ. ΠΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊΠΈ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ Π² Π³ΡΡΠΏΠΏΡ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΡΠ°Π·Π½ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ ΡΠΈΡΠ°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΡΠ΅ΠΌΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ.
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½Π° ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΡΠΈΡΠ°Ρ ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΏΡΠΎΡΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ (offset), ΡΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠΈΠΊΡΠ°ΡΠΈΠ΅ΠΉ (commit) ΡΡΠ΅Π½ΠΈΡ. Π ΡΠ°ΠΊ Π΅ΡΠ»ΠΈ ΠΈΠ·Π΄Π°ΡΠ΅Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅ΠΌΡ, ΡΠΎ ΠΎΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°Π½ΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΌ ΡΡΠΎΠΉ ΡΠ΅ΠΌΡ Π΅ΡΠ»ΠΈ ΠΎΠ½ Π·Π°ΠΏΡΡΠ΅Π½ ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ½ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡ. ΠΡΠΈΡΠ΅ΠΌ Π΅ΡΠ»ΠΈ Π΅ΡΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡ (client.id), ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΡΠ°ΡΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΡΠ΅ΠΌΡ, Π½ΠΎ Π² ΡΠ°Π·Π½ΡΡ Π³ΡΡΠΏΠΏΠ°Ρ , ΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ½ΠΈ ΠΏΠΎΠ»ΡΡΠ°Ρ Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π° ΠΈ Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ, ΠΊΠΎΠ³Π΄Π° Π±ΡΠ΄ΡΡ Π³ΠΎΡΠΎΠ²Ρ.
Π’Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠ΅ ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΌΠΈ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΡΠ΅ΠΌΡ.
ΠΠΎ Π΅ΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΡΠ΅ΠΌΡ ΠΌΠΎΠ³ΡΡ Π½Π°ΡΠ°ΡΡ ΠΏΠΎΡΡΡΠΏΠ°ΡΡ Π±ΡΡΡΡΠ΅Π΅ ΡΠ΅ΠΌ ΡΡ ΠΎΠ΄ΠΈΡΡ, Ρ.Π΅. ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΈΡ Π΄ΠΎΠ»ΡΡΠ΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π² ΡΠ΅ΠΌΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ°Π·Π΄Π΅Π»Ρ (partitions) ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Π΅ΠΉ Π² ΠΎΠ΄Π½ΠΎΠΉ Π³ΡΡΠΏΠΏΠ΅ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΠ΅ΠΌΡ.
Π’ΠΎΠ³Π΄Π° ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ Π½Π΅ Π²ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΡΠ΅ΠΌΠ΅ ΠΈ Π³ΡΡΠΏΠΏΠ΅ ΠΏΠΎΠΉΠ΄ΡΡ ΡΠ΅ΡΠ΅Π· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ. Π ΡΠΎΠ³Π΄Π° ΡΠΆΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠ±ΡΠ°Π½Π° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ, ΠΊΠ°ΠΊ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠ°Π·Π΄Π΅Π»Π°ΠΌ. ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΉ: round-robin β ΡΡΠΎ ΠΏΠΎ ΠΊΡΡΠ³Ρ, ΠΏΠΎ Ρ ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ°, ΠΈΠ»ΠΈ ΡΠ²Π½ΠΎΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½ΠΎΠΌΠ΅ΡΠ° ΡΠ°Π·Π΄Π΅Π»Π° ΠΊΡΠ΄Π° ΠΏΠΈΡΠ°ΡΡ. ΠΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊΠΈ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΠΎ ΠΏΠΎ ΡΠ°Π·Π΄Π΅Π»Π°ΠΌ. ΠΡΠ»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊΠΎΠ² Π±ΡΠ΄Π΅Ρ Π² Π³ΡΡΠΏΠΏΠ΅ Π±ΡΠ΄Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»ΠΎΠ², ΡΠΎ ΠΊΡΠΎ-ΡΠΎ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Ρ Π΄Π΅Π»Π°ΡΡΡΡ Π΄Π»Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΠΈ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅ΠΌΡ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΡΠ°Π·Π΄Π΅Π»ΠΎΠΌ Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» Π½Π° Π΄Π²Π° ΡΠ°Π·Π΄Π΅Π»Π°.
my_kafka_run.cmd com.home.SimpleProducer out-topic (ΠΈΠ·Π΄Π°ΡΠ΅Π»Ρ)
my_kafka_run.cmd com.home.SimpleConsumer out-topic testGroup01 client01 (ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊ)
my_kafka_run.cmd com.home.SimpleConsumer out-topic testGroup01 client02 (Π²ΡΠΎΡΠΎΠΉ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊ)
ΠΠ°ΡΠ°Π² Π²Π²ΠΎΠ΄ΠΈΡΡ Π² ΠΈΠ·Π΄Π°ΡΠ΅Π»Π΅ ΠΏΠ°ΡΡ ΠΊΠ»ΡΡ: Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π±Π»ΡΠ΄Π°ΡΡ ΠΊΡΠΎ ΠΈΡ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ. Π’Π°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠΎ Ρ ΡΡΡ ΠΊΠ»ΡΡΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ m:1 ΠΏΠΎΠΏΠ°Π»ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡ client01
Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ n:1 ΠΊΠ»ΠΈΠ΅Π½ΡΡ client02
ΠΡΠ»ΠΈ Π½Π°ΡΠ½Ρ Π²Π²ΠΎΠ΄ΠΈΡΡ Π±Π΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΏΠ°Ρ ΠΊΠ»ΡΡ: Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (ΡΠ°ΠΊΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΄Π΅Π»Π°Π» Π² ΠΈΠ·Π΄Π°ΡΠ΅Π»Π΅), Π±ΡΠ΄Π΅Ρ Π²ΡΠ±ΡΠ°Π½Π° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΠΏΠΎ ΠΊΡΡΠ³Ρ. ΠΠ΅ΡΠ²ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Β«mΒ» ΠΏΠΎΠΏΠ°Π»ΠΎ client01, Π° ΡΠΆΠ΅ Π²ΡΡΠΎΠ΅ client02.
Π Π΅ΡΠ΅ Π²Π°ΡΠΈΠ°Π½Ρ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ key:value:partition
Π Π°Π½Π΅Π΅ Π² ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΠΏΠΎ Ρ ΡΡ, m:1 ΡΡ ΠΎΠ΄ΠΈΠ» Π΄ΡΡΠ³ΠΎΠΌΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ (client01), ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΈ ΡΠ²Π½ΠΎΠΌ ΡΠΊΠ°Π·Π°Π½ΠΈΠΈ ΡΠ°Π·Π΄Π΅Π»Π° (β1, Π½ΡΠΌΠ΅ΡΡΡΡΡΡ Ρ 0) β ΠΊ client02.
ΠΡΠ»ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊΠ° Ρ Π΄ΡΡΠ³ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π³ΡΡΠΏΠΏΡ testGroup02 ΠΈ Π΄Π»Ρ ΡΠΎΠΉ ΠΆΠ΅ ΡΠ΅ΠΌΡ, ΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΡΡ ΠΎΠ΄ΠΈΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ ΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊΠ°ΠΌ, Ρ.Π΅. Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΡΠΎΡΠΈΡΠ°Π», Π° Π²ΡΠΎΡΠΎΠΉ Π½Π΅ Π±ΡΠ» Π°ΠΊΡΠΈΠ²Π΅Π½, ΡΠΎ ΠΎΠ½ ΠΏΡΠΎΡΠΈΡΠ°Π΅Ρ, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ°Π½Π΅Ρ Π°ΠΊΡΠΈΠ²Π΅Π½.
ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π³ΡΡΠΏΠΏ, ΡΠ΅ΠΌΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ:
ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Ρ ΡΠ΄Π΅Π»Π°Π» ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΠΉ ΡΠ°ΠΉΠ» β my_kafka_run.cmd
my_kafka_run.cmd com.home.SimpleConsumer out-topic testGroup02 client01
Kafka Streams
ΠΡΠ°ΠΊ, ΠΏΠΎΡΠΎΠΊΠΈ Π² Kafka ΡΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΎΠ±ΡΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΈΠ· ΡΠ΅ΠΌΡ, Π½Π°Π΄ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈ Π·Π°ΡΠ΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΡΠ΄Π°ΡΡ Π΄Π°Π»Π΅Π΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π΄ΡΡΠ³ΡΡ ΡΠ΅ΠΌΡ ΠΈΠ»ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π² ΠΠ, Π² ΠΎΠ±ΡΠ΅ΠΌ ΠΊΡΠ΄Π° ΡΠ³ΠΎΠ΄Π½ΠΎ. ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΊΠ°ΠΊ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ (filter), ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ (map), ΡΠ°ΠΊ ΠΈ Π°Π³ΡΠ΅Π³Π°ΡΠΈΠΈ (count, sum, avg). ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ KStream, KTable, Π³Π΄Π΅ KTable ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΠΊΠ°ΠΊ ΡΠ°Π±Π»ΠΈΡΡ Ρ ΡΠ΅ΠΊΡΡΠΈΠΌΠΈ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΠΏΠΎΡΡΡΠΏΠ»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π² ΡΠ΅ΠΌΡ. ΠΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ?
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·Π΄Π°ΡΠ΅Π»Ρ ΠΏΠΈΡΠ΅Ρ Π² ΡΠ΅ΠΌΡ ΡΠΎΠ±ΡΡΠΈΡ (ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ), Kafka Π²ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π² ΠΆΡΡΠ½Π°Π»Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ (Retention Policy), Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ 7 Π΄Π½Π΅ΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΠ±ΡΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΠΎ ΠΏΠΎΡΠΎΠΊ, Π΄Π°Π»Π΅Π΅ Ρ ΠΎΡΠΈΠΌ ΡΠ·Π½Π°ΡΡ ΡΡΠ΅Π΄Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΎΠ³Π΄Π° ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Stream ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·ΡΠΌΠ΅Ρ ΠΈΡΡΠΎΡΠΈΡ ΠΈΠ· ΠΆΡΡΠ½Π°Π»Π° ΠΈ ΠΏΠΎΡΡΠΈΡΠ°Π΅Ρ ΡΡΠ΅Π΄Π½Π΅Π΅, Π³Π΄Π΅ ΠΊΠ»ΡΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ Π°ΠΊΡΠΈΡ, Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ β ΡΡΠ΅Π΄Π½Π΅Π΅ (ΡΡΠΎ ΡΠΆΠ΅ ΡΠ°Π±Π»ΠΈΡΠ° Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ). Π’ΡΡ Π΅ΡΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ β ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΠΎΡΠ»ΠΈΡΠΈΠΈ ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ, ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅. ΠΠΎΡΡΠΎΠΌΡ Π²Π½ΠΎΠ²Ρ ΠΏΠΎΡΡΡΠΏΠ°ΡΡΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ (ΡΠΎΠ±ΡΡΠΈΡ) Π² ΡΠ΅ΠΌΡ, Π±ΡΠ΄ΡΡ ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ (state store), Π΄Π°Π»Π΅Π΅ Π²Π½ΠΎΠ²Ρ ΠΏΠΎΡΡΡΠΏΠ°ΡΡΠΈΠ΅ Π±ΡΠ΄ΡΡ ΠΏΠΈΡΠ°ΡΡΡΡ Π² ΠΆΡΡΠ½Π°Π», Stream ΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ, Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊ ΡΠΆΠ΅ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΠΎΠΌΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ. ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ. Π ΡΡΡ ΡΠΎΠΆΠ΅ stream Π±ΡΠ΄Π΅Ρ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΈΠ·Π΄Π°ΡΠ΅Π»Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·Π΄Π°ΡΠ΅Π»Ρ ΠΏΠΈΡΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° β stream Π² ΡΡΠΎ Π²ΡΠ΅ΠΌΡ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΡΠΎΠΏΠ°Π΄Π΅Ρ, Π²ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½Ρ Π² ΠΆΡΡΠ½Π°Π»Π΅ ΠΈ ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°-stream ΡΡΠ°Π½Π΅Ρ Π°ΠΊΡΠΈΠ²Π½ΠΎΠΉ, ΠΎΠ½Π° ΡΠ΄Π΅Π»Π°Π΅Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΡΠΎΡ ΡΠ°Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, Π²ΡΠΏΠΎΠ»Π½ΠΈΡ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΡΠΎΡΠΈΡΠ°Π½Π½ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ (ΠΏΠΎΠΌΠ΅ΡΠΈΡ ΡΡΠΎ ΠΎΠ½ΠΈ ΠΏΡΠΎΡΠΈΡΠ°Π½Ρ) ΠΈ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΎΠ½Π° ΡΠΆΠ΅ ΠΊ Π½ΠΈΠΌ Π½Π΅ Π²Π΅ΡΠ½Π΅ΡΡΡ, Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ ΡΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠΉΠ΄ΡΡ ΠΈΠ· ΠΆΡΡΠ½Π°Π»Π° (kafka-logs). Π’ΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎ Π³Π»Π°Π²Π½ΠΎΠ΅, ΡΡΠΎΠ±Ρ ΠΆΡΡΠ½Π°Π» (kafka-logs) ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΡΡΠΎ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Kafka Stream Ρ ΡΠ°Π½ΠΈΡ Π² RocksDB. ΠΡΡΠ½Π°Π» ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈ Π²ΡΠ΅ Ρ Π½ΠΈΠΌ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ΅ (ΡΠ΅ΠΌΡ, ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ, ΠΏΠΎΡΠΎΠΊΠΈ, ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΈ Π΄Ρ.) ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ ΠΏΠΎ ΠΏΡΡΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ Β«log.dirs=kafka-logsΒ» ΡΠ°ΠΉΠ»Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Β«config\server.propertiesΒ», ΡΠ°ΠΌ ΠΆΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΆΡΡΠ½Π°Π»Π° Β«log.retention.hours=48Β». ΠΡΠΈΠΌΠ΅Ρ Π»ΠΎΠ³Π°
Π ΠΏΡΡΡ ΠΊ Π±Π°Π·Π΅ Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΡΠΌΠΈ stream ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Π‘ΠΎΡΡΠΎΡΠ½ΠΈΡ Ρ ΡΠ°Π½ΡΡΡΡ ΠΏΠΎ ΠΠ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ (StreamsConfig.APPLICATION_ID_CONFIG). ΠΡΠΈΠΌΠ΅Ρ
ΠΡΠΎΠ²Π΅ΡΠΈΠΌ ΡΠ΅ΠΏΠ΅ΡΡ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Stream. ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Stream ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π΅ΡΡΡ ΠΏΠΎΡΡΠ°Π²ΠΊΠ΅ (Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΠΎΠΉ Π΄Π»Ρ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°), ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΡΠΈΡΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ ΡΠ»ΠΎΠ² ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·Π΄Π°ΡΠ΅Π»Ρ ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊ. ΠΠΈΡΠ°ΡΡ Π±ΡΠ΄Π΅Ρ Π² ΡΠ΅ΠΌΡ in-topic
my_kafka_run.cmd com.home.SimpleProducer in-topic
my_kafka_run.cmd com.home.KafkaCountStream in-topic app_01
my_kafka_run.cmd com.home.SimpleProducer in-topic
my_kafka_run.cmd com.home.SimpleConsumer out-topic testGroup01 client01
ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ Π²Π²ΠΎΠ΄ΠΈΡΡ ΡΠ»ΠΎΠ²Π° ΠΈ Π²ΠΈΠ΄ΠΈΠΌ ΠΈΡ ΠΏΠΎΠ΄ΡΡΠ΅Ρ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ°ΠΊΠΎΠΉ Stream App-ID ΠΈΡ ΠΏΠΎΠ΄ΡΡΠΈΡΠ°Π»
Π Π°Π±ΠΎΡΠ° Π±ΡΠ΄Π΅Ρ ΠΈΠ΄ΡΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Stream ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΠΏΠΈΡΠ°ΡΡ Π² ΡΠ΅ΠΌΡ, ΠΎΠ½ ΠΏΠΎΡΠΎΠΌ ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅ ΠΏΠΎΡΡΠΈΡΠ°Π΅Ρ. Π ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠΌ Π²ΡΠΎΡΠΎΠΉ Stream c App-ID = app_02 (ΡΡΠΎ ΡΠΎΠΆΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½ΠΎ Ρ Π΄ΡΡΠ³ΠΈΠΌ ΠΠ), ΠΎΠ½ ΠΏΡΠΎΡΠΈΡΠ°Π΅Ρ ΠΆΡΡΠ½Π°Π» (ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΎΠ±ΡΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅ Retention), ΠΏΠΎΠ΄ΡΡΠΈΡΠ°Π΅Ρ ΠΊΠΎΠ»-Π²ΠΎ, ΡΠΎΡ ΡΠ°Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈ Π²ΡΠ΄Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π΄Π²Π° ΠΏΠΎΡΠΎΠΊΠ° Π½Π°ΡΠ°Π² ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠ°Π·Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΈΡΠ»ΠΈ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ.
Π ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ Π½Π°Ρ ΠΆΡΡΠ½Π°Π» ΡΡΡΠ°ΡΠ΅Π» (Retention ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°) ΠΈΠ»ΠΈ ΠΌΡ Π΅Π³ΠΎ ΡΠ΄Π°Π»ΠΈΠ»ΠΈ (ΡΡΠΎ Π±ΡΠ²Π°Π΅Ρ Π½Π°Π΄ΠΎ Π΄Π΅Π»Π°ΡΡ) ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΡΡΠ΅ΡΠΈΠΉ stream Ρ App-ID = app_03 (Ρ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠ» Kafka, ΡΠ΄Π°Π»ΠΈΠ» kafka-logs ΠΈ Π²Π½ΠΎΠ²Ρ ΡΡΠ°ΡΡΠΎΠ²Π°Π») ΠΈ Π²Π²ΠΎΠ΄ΠΈΠΌ Π² ΡΠ΅ΠΌΡ Π½ΠΎΠ²ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π²ΠΈΠ΄ΠΈΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ (app_01) ΠΏΠΎΡΠΎΠΊ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠ» ΠΏΠΎΠ΄ΡΡΠ΅Ρ Π° Π½ΠΎΠ²ΡΠΉ ΡΡΠ΅ΡΠΈΠΉ Π½Π°ΡΠ°Π» Ρ Π½ΡΠ»Ρ.
ΠΡΠ»ΠΈ Π·Π°ΡΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΠΌ ΠΏΠΎΡΠΎΠΊ app_02, ΡΠΎ ΠΎΠ½ Π΄ΠΎΠ³ΠΎΠ½ΠΈΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΈ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ ΡΠ°Π²Π½Ρ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΡΡ . ΠΠ· ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΡΠ°Π»ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΠΊΠ°ΠΊ Kafka ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΆΡΡΠ½Π°Π», Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΊ ΡΠ°Π½Π΅Π΅ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΠΎΠΌΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
Π’Π΅ΠΌΠ° Kafka ΠΎΡΠ΅Π½Ρ ΠΎΠ±ΡΠΈΡΠ½Π°, Ρ Π΄Π»Ρ ΡΠ΅Π±Ρ ΡΠ΄Π΅Π»Π°Π» ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΎΠ±ΡΠ΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ π