Kafka və Event-Driven Architecture
Kafka-nın vacib daxili mexanizmləri, çatdırılma semantikası və etibarlı event əsaslı dizayn.
Bu proqram planlaşdırılır və hələ cədvələ salınmayıb. Tarix, qiymət və qrup elan olunmayıb. Maraq bildirsəniz, proqram planlaşdırıldıqda və ya fərdi format müzakirə olunduqda sizinlə əlaqə saxlayarıq.
Məqsəd
Proqram Kafka-nı yalnız istifadə etməyi yox, onun davranışını başa düşərək etibarlı event əsaslı sistem qurmağı hədəfləyir. Sıralama, çatdırılma semantikası, idempotent istehlak, transactional outbox və schema təkamülü real səhvlər üzərindən öyrənilir. Operasiya və monitorinq də dizaynın tərkib hissəsi kimi əhatə olunur.
Kimin üçündür
- Spring Boot və mesajlaşma ilə artıq tanış olan backend developer-lər
- Event əsaslı sistemin dizaynında iştirak edən senior namizədlər
- Mövcud Kafka istifadəsində dublikat, itki və gecikmə problemləri ilə üzləşənlər
- Mikroservislər arası əlaqəni asinxron qurmalı olanlar
Kimin üçün deyil
- Mesajlaşma anlayışı ilə ilk dəfə tanış olanlar: əvvəlcə Spring Boot və servis əsaslarını möhkəmləndirin
- Kafka klasterinin administratorluğunu əsas peşə kimi öyrənmək istəyənlər
- Sadə növbə ilə həll olunan məsələyə Kafka tətbiq etmək istəyənlər: proqram bu seçimi də sorğulayır
İlkin tələblər
- Spring Boot ilə servis yazmaq təcrübəsi
- Transaction və verilənlər bazası uyğunluğu anlayışı
- Docker ilə lokal mühit qurmaq
- Mikroservis və ya asinxron kommunikasiya haqqında ümumi biliklər
Proqramın sonunda nə bacaracaqsınız
Proqramın sonunda nə bacaracaqsınız
- Topic, partition və replication-ın sıralama və throughput-a təsirini izah etmək
- Açar seçimi ilə sıralamanı qorumaq
- Consumer group, offset commit və rebalancing davranışını proqnozlaşdırmaq
- At-most-once, at-least-once və exactly-once semantikasının real mənasını fərqləndirmək
- Dublikata davamlı (idempotent) consumer yazmaq
- Transactional outbox ilə verilənlər bazası və Kafka arasında uyğunluğu təmin etmək
- Schema Registry ilə event schema-sını geriyə uyğun şəkildə dəyişdirmək
- Consumer lag və digər metriklər üzrə monitorinq və xəbərdarlıq qurmaq
Heç bir təhsil proqramı işə qəbula və ya vəzifə yüksəlişinə zəmanət verə bilməz.
Tədris planı
Tədris planı
- 01
Kafka-nın əsas modeli
Log əsaslı modelin nə verdiyini və nə vermədiyini başa düşürük.
- Topic, partition, segment və log modeli
- Replication, leader və ISR
- Retention və log compaction
- Producer batch, acks və gecikmə
- Kafka queue-dan nə ilə fərqlənir
Praktik laboratoriya: Lokal klasterdə topic yaradıb partition və retention parametrlərinin davranışa təsirini müşahidə etmək.
- 02
Sıralama və partisiyalaşdırma
Sıralama yalnız partition daxilində qorunur; bunu dizayn qərarına çeviririk.
- Message key və partitioner
- Hot partition və paylanma problemi
- Partition sayının seçimi və sonradan artırmanın nəticələri
- Sıralamanın pozulma ssenariləri (retry, çoxlu producer)
- Açarın domain əsasında seçilməsi
Praktik laboratoriya: Eyni müştərinin event-lərinin sırasını qoruyan açar seçimi edib sıranın pozulduğu halı təkrarlamaq.
- 03
Consumer group və rebalancing
İstehlakçıların partition-ları necə bölüşdüyünü və bunun nəyə səbəb ola biləcəyini öyrənirik.
- Consumer group və partition təyinatı
- Offset commit strategiyaları
- Rebalance növləri və cooperative rebalancing
- max.poll.interval və yavaş consumer problemi
- Consumer lag və paralelliyin həddi
Praktik laboratoriya: Consumer-i yavaşladıb rebalance fırtınası yaratmaq, səbəbi log və metriklərdən tapıb düzəltmək.
- 04
Çatdırılma semantikası və idempotent istehlak
Dublikat qaçılmazdır; ona davamlı consumer yazmağı öyrənirik.
- At-most-once, at-least-once, exactly-once
- Idempotent producer və Kafka transactions
- Consumer tərəfində idempotency: unikal açar və deduplikasiya
- Retry topic və dead letter topic
- Poison message ilə davranış
Praktik laboratoriya: Eyni mesajı iki dəfə qəbul edən consumer yazıb nəticənin təkrar tətbiq olunmadığını testlə sübut etmək.
- 05
Transactional outbox
Verilənlər bazasına yazmaq və event göndərmək arasındakı uyğunsuzluğu aradan qaldırırıq.
- Dual write problemi
- Outbox cədvəli və polling publisher
- CDC əsaslı yanaşma (Debezium konsepti)
- Outbox təmizlənməsi və sıralama
- Inbox pattern
Praktik laboratoriya: Sifariş servisində outbox qurub servis çökməsi zamanı event-in itmədiyini və dublikatın idarə olunduğunu göstərmək.
- 06
Event modelləşdirməsi və schema təkamülü
Event-lər uzunömürlü müqavilədir; onları sındırmadan dəyişməyi öyrənirik.
- Event vs command vs state transfer
- Event adlandırması və tərkibi
- Avro/Protobuf və Schema Registry
- Geriyə və irəliyə uyğunluq qaydaları
- Versiyalaşdırma və köhnə event-lərlə yaşamaq
Praktik laboratoriya: Mövcud event schema-sına sahə əlavə və silmə dəyişikliyi edib uyğunluq yoxlamasının hansını rədd etdiyini müşahidə etmək.
- 07
Choreography və orchestration
Çoxaddımlı biznes axınını event-lərlə koordinasiya etməyin iki yolunu müqayisə edirik.
- Choreography: üstünlük və gizli coupling
- Orchestration: mərkəzi nəzarət və onun dəyəri
- Axının görünürlüyü və debug
- Kompensasiya və timeout idarəsi
Praktik laboratoriya: Eyni biznes axınını iki yanaşma ilə qurub izlənilmə və dəyişdirilmə asanlığı baxımından müqayisə etmək.
- 08
Operasiya və monitorinq
Kafka əsaslı sistemi etibarlı işlətmək üçün nəyi izləməli olduğumuzu müəyyən edirik.
- Consumer lag və xəbərdarlıq
- Broker və topic metrikaları
- Capacity planlaması və retention xərci
- Replay: event-ləri yenidən emal etmək
- Təhlükəsizlik: autentifikasiya və ACL əsasları
Praktik laboratoriya: Consumer lag üçün dashboard və xəbərdarlıq qaydası qurub lag yaradan ssenarini yoxlamaq.
Praktik tapşırıqlar
- Açar seçimi və sıralama testi
- Rebalance problemini diaqnoz hesabatı
- Idempotent consumer və dublikat testi
- Outbox implementasiyası
- Schema dəyişikliyi və uyğunluq yoxlaması
Portfolio nəticələri
- Outbox və idempotent consumer ilə event əsaslı nümunə sistem
- Dublikat və çökmə ssenarilərini əhatə edən test dəsti
- Event kataloqu və schema təkamülü qaydaları sənədi
- Consumer lag dashboard-u və runbook
Necə qiymətləndirilir
- Event dizaynının müdafiəsi
- Mentor code review-su
- Nasazlıq ssenarisinin yazılı təhlili
- Choreography/orchestration seçimi üzrə qərar qeydi
Alətlər və texnologiyalar
- Apache Kafka
- Spring for Apache Kafka
- Schema Registry
- Avro və ya Protobuf
- PostgreSQL
- Debezium (konseptual)
- Docker Compose
- Testcontainers
- Prometheus və Grafana
Səviyyə ardıcıllığı
- Əvvəl
- Əvvəl: Microservices və Distributed Systems və ya çoxservisli sistemlərdə təcrübə.
- Sonra
- Sonra: System Design.
- Müddət və format
- Müddət və format hələ müəyyən edilməyib; proqram planlaşdırılır və təqvimə salınmayıb.
Tez-tez verilən suallar
Tez-tez verilən suallar
Proqram hazırda açıqdır?
Xeyr. Proqram planlaşdırılır və hələ cədvələ salınmayıb. Tarix və qiymət elan olunmayıb. Maraq bildirə və ya konsultasiya istəyə bilərsiniz.
Əvvəlcədən Kafka təcrübəsi lazımdır?
Tələb olunmur. Mesajlaşmanın ümumi anlayışını və Spring Boot təcrübəsini bilmək kifayətdir; Kafka-nın əsas modeli proqramın birinci modulunda izah olunur.
Exactly-once həqiqətən mümkündür?
Müəyyən şərtlərlə Kafka daxilində mümkündür, amma xarici sistemlərlə bütün zəncirdə yox. Proqram bunun hüdudlarını və praktik alternativ olan idempotent istehlakı izah edir.
Sertifikat və ya iş vədi var?
Xeyr. Sertifikat və ya nəticə vədi yoxdur. Dəyərləndirmə dizayn müdafiəsi və mentor rəyi şəklindədir və tövsiyə xarakteri daşıyır.
Bu proqramla əlaqəli məqalələr
- Paylanmış sistemlərDistributed sistemlərdə uğursuzluğun idarəsi
- Event-driven arxitekturaEvent-driven arxitekturanın kompromisləri
- Paylanmış sistemlərTəhlükəsiz retry üçün idempotency pattern-ləri
- Event-driven arxitekturaDelivery semantics, idempotent consumer və outbox pattern
- KafkaBackend mühəndisləri üçün Kafka əsasları