ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΎ Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° kafkalet 0.1, Π΄Π΅ΡΠΊΡΠΎΠΏΠ΅Π½ Π³ΡΠ°ΡΠΈΡΠ΅Π½ ΠΊΠ»ΠΈΠ΅Π½Ρ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ Apache Kafka. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΊΠ°ΡΠΎ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»Π΅Π½ Π±ΠΈΠ½Π°ΡΠ΅Π½ ΡΠ°ΠΉΠ» Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΠΊΠΎΠ»ΠΎ 15 MB, Π½Π΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° JVM, Docker ΠΈΠ»ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΡΠ²ΡΡΠ½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Go ΠΈ TypeScript ΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ MIT Π»ΠΈΡΠ΅Π½Π·. ΠΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΠΈΡΠ΅ ΡΠ° ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ Π·Π° macOS (Intel ΠΈ Apple Silicon), Windows ΠΈ Linux.
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΠ΅ ΡΠ΅Π±-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ, ΠΊΠ°ΡΠΎ Kafka UI ΠΈ AKHQ, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ Π½Π° ΡΡΡΠ²ΡΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ Π² Docker, kafkalet ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π΄Π΅ΡΠΊΡΠΎΠΏΠ½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ β ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° DBeaver ΠΈΠ»ΠΈ DataGrip Π·Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΈΡΡ Π΄Π΅ΡΠΊΡΠΎΠΏΠ΅Π½ Kafka ΠΊΠ»ΠΈΠ΅Π½Ρ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π΅ Π±ΠΈΠ» Offset Explorer (ΠΏΠΎ-ΡΠ°Π½ΠΎ Kafka Tool), Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Java ΠΈ ΠΎΡΠ΄Π°Π²Π½Π° Π½Π΅ ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°Π½. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ kafkalet Π΅ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΎ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Wails v2, ΠΊΠΎΠΉΡΠΎ ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π° Go Π±Π΅ΠΊΠ΅Π½Π΄ Ρ ΡΠ΅Π± ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π° React 18, TypeScript ΠΈ shadcn/ui Π² Π΅Π΄ΠΈΠ½ Π½Π°ΡΠΈΠ²Π΅Π½ Π±ΠΈΠ½Π°ΡΠ΅Π½ ΡΠ°ΠΉΠ». ΠΠ° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ Kafka ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° franz-go, ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π½Π° ΡΠΈΡΡ Go Π±Π΅Π· Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ librdkafka ΠΈ CGO.
ΠΡΠ½ΠΎΠ²Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ:
- Π‘ΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΏΡΠΎΡΠΈΠ»ΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ΅Π΄ΠΈ (production, staging, dev). ΠΡΠ΅ΠΊΠΈ Π±ΡΠΎΠΊΠ΅Ρ Π² ΠΏΡΠΎΡΠΈΠ»Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½ΠΈ Π°ΠΊΠ°ΡΠ½ΡΠ° Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π±ΡΡΠ·ΠΎ ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅. ΠΠ°ΡΠΎΠ»ΠΈΡΠ΅ ΠΈ ΡΠΎΠΊΠ΅Π½ΠΈΡΠ΅ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎ Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° ΡΠ΅ΠΊΡΠ΅ΡΠΈ Π½Π° ΠΠ‘ (macOS Keychain, Windows Credential Manager, libsecret Π½Π° Linux) ΠΈ Π½Π΅ ΡΠ΅ Π·Π°ΠΏΠΈΡΠ²Π°Ρ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅.
- Π Π΅ΠΆΠΈΠΌΡΡ Observer β ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΡ ΡΠ΅ΠΌΠ° Π±Π΅Π· ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Ρ consumer Π³ΡΡΠΏΠ°, Π±Π΅Π· ΠΊΠΎΠΌΠΈΡ Π½Π° ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ Π±Π΅Π· ΡΡΡΠ°Π½ΠΈΡΠ½ΠΈ Π΅ΡΠ΅ΠΊΡΠΈ Π²ΡΡΡ Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°. ΠΡΠ΄Π΅Π»Π½ΠΈΡΡ ΡΠ΅ΠΆΠΈΠΌ Consumer ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΠΊΡΠΌ Π³ΡΡΠΏΠ°ΡΠ° ΠΈ ΡΠΈΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡΡΠ° ΡΡΡΠ½ΠΎ.
- ΠΠ°Π²ΠΈΠ³Π°ΡΠΈΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ (seek to timestamp) β ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ ΠΊΡΠΌ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΏΠΎΡΠΎΡΠ΅Π½Π° Π΄Π°ΡΠ° ΠΈ ΡΠ°Ρ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡ ΠΎΡ ΡΡΡΠ½ΠΎ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°Π½Π΅ Π½Π° ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ. ΠΠΎΠ΄ΠΊΡΠ΅ΠΏΠ° Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡ: SASL PLAIN, SCRAM-SHA-256, SCRAM-SHA-512, OAUTHBEARER (ΡΡΠ°ΡΠΈΡΠ΅Π½ ΡΠΎΠΊΠ΅Π½ ΠΈ flow Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈ ΠΊΡΠ΅Π΄Π΅Π½ΡΠΈΠ°Π»ΠΈ), TLS Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° ΡΡΡΠ²ΡΡ, mTLS (Π²Π·Π°ΠΈΠΌΠ½Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡ Ρ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ).
- ΠΠΎΡΠΎΠΊΠΎΠ²ΠΎ ΠΏΡΠ΅Π³Π»Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ regex ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅ ΠΏΠΎ ΠΊΠ»ΡΡΠΎΠ²Π΅ ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π² ΡΠ΅Π°Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅. ΠΠΎΠ΄ΠΊΡΠ΅ΠΏΡ ΡΠ΅ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅ΠΌΠΈ Π² ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΠ°Π·Π΄Π΅Π»ΠΈ. ΠΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΡΠΏΠΈΡΡΠΊΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° Π½Π°Π΄ 50 000 ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Π±Π΅Π· Π·Π°Π³ΡΠ±Π° Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ.
- Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΠΌΠΈ: ΡΡΠ·Π΄Π°Π²Π°Π½Π΅, ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅, ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ, ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΡΠ°Π·Π΄Π΅Π»ΠΈ, Π»ΠΈΠ΄Π΅ΡΠΈ ΠΈ Π½Π°Π±ΠΎΡ ΠΎΡ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ (ISR).
- Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ Π³ΡΡΠΏΠΈ: ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° Π·Π°ΠΊΡΡΠ½Π΅Π½ΠΈΠ΅ΡΠΎ (lag) ΠΏΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈ, Π½ΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΡΡΠ΅ΡΠΈΡΠ΅ Π½Π° earliest, latest ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π° Π²ΡΠ΅ΠΌΠ΅Π²Π° ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠ°, ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΡΡΠ°ΡΡΠ½ΠΈΡΠΈΡΠ΅ Π² Π³ΡΡΠΏΠ°ΡΠ° (ID Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, Ρ ΠΎΡΡ, Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈ ΡΠ΅ΠΌΠΈ), ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅ Π½Π° Π³ΡΡΠΏΠΈ.
- ΠΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΡΠΎΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠ»ΡΡ, ΡΡΠΎΠΉΠ½ΠΎΡΡ, Π·Π°Π³Π»Π°Π²ΠΊΠΈ ΠΈ ΡΠ΅Π»Π΅Π²ΠΈ ΡΠ°Π·Π΄Π΅Π».
- ΠΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠ΅ΠΌΠΈΡΠ΅: Π·Π°ΠΊΡΠ΅ΠΏΠ²Π°Π½Π΅ Π½Π° ΡΠ΅ΡΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΡΠ΅ΠΌΠΈ, Π³ΡΡΠΏΠΈΡΠ°Π½Π΅ Π² ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½ΠΈ ΠΏΠ°ΠΏΠΊΠΈ, ΡΡΡΡΠ΅Π½Π΅ Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΈ ΠΈΠ·ΡΠ°Π·ΠΈ ΠΈ ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅ ΠΏΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½ Π±ΡΠΎΠΉ ΡΠ°Π·Π΄Π΅Π»ΠΈ.
- ΠΠΊΡΠΏΠΎΡΡ Π½Π° Π±ΡΡΠ΅ΡΠ° ΡΡΡ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² JSON ΠΈΠ»ΠΈ CSV ΡΠΎΡΠΌΠ°Ρ.
- ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Confluent Schema Registry Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² Avro ΡΠΎΡΠΌΠ°Ρ.
- Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΎΡ JavaScript ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ Π·Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΎ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ (Protobuf, MessagePack ΠΈ Π΄ΡΡΠ³ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈ).
- ΠΠΌΠΏΠΎΡΡ ΠΈ Π΅ΠΊΡΠΏΠΎΡΡ Π½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π² JSON ΡΠΎΡΠΌΠ°Ρ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠΎΡΠΈΠ»ΠΈ, Π³ΡΡΠΏΠΈ ΡΠ΅ΠΌΠΈ ΠΈ Π·Π°ΠΊΡΠ΅ΠΏΠ΅Π½ΠΈ ΡΠ΅ΠΌΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
