Ana Paket İşlem Akışı
ACK Semantiği
Ingest Servis cihaza döndüreceği HTTP yanıtını, paketin sistemin hangi aşamasında sonlandığına göre belirler. Aşağıdaki tablo her sonlanma noktasını, tetikleyici koşulunu ve cihazın alacağı yanıtı özetler.
| HTTP Kodu | Durum | Tetikleyici Koşul | Sistem Etkisi |
|---|---|---|---|
413 Payload Too Large | ❌ Ret | Payload boyutu edge limitini aştı | Hiçbir katmana ulaşmaz; raw DB, Redis, Kafka yazılmaz |
400 Bad Request | ❌ Ret | JSON parse başarısız | Hiçbir katmana ulaşmaz |
422 Unprocessable Entity | ❌ Ret | CPS şema doğrulaması başarısız | Hiçbir katmana ulaşmaz |
200 OK | ⚠️ Kabul (duplicate) | Paket daha önce alındı; duplicate tespit edildi | Raw DB'ye yeniden yazılmaz; Redis güncellenmez; warning event/log üretilir; device_runtime sayaçları güncellenir |
500 Internal Server Error | ❌ ACK yok | Raw DB insert başarısız | Redis ve Kafka aşamasına geçilmez |
500 Internal Server Error | ❌ ACK yok | Canonical normalize başarısız | Raw DB yazıldı; Redis ve Kafka aşamasına geçilmez |
500 Internal Server Error | ❌ ACK yok | Redis device_buffer write başarısız | Raw DB yazıldı; Kafka aşamasına geçilmez |
200 OK | ✅ Tam kabul (Kafka hatasız) | Raw DB + normalize + Redis başarılı; Kafka emit başarılı | Tüm katmanlar tamamlandı; downstream servisler tetiklendi |
200 OK | ✅ Kabul (Kafka hatalı) | Raw DB + normalize + Redis başarılı; Kafka emit başarısız | Veri kalıcı olarak kabul edildi; Kafka hatası operasyonel log ve retry kuyruğuna alındı |
ACK Güç Sıralaması
200 OK, yalnızca HTTP seviyesinde isteğin görüldüğü zayıf bir onay değildir. Kabul garantisi şu sırayla güçlenir:
- Raw DB'ye yazıldı → veri kaybolmaz, replay mümkündür
- Redis'e normalize edildi → downstream servisler çalışma verisine erişebilir
- Kafka tetiklendi → işleme zinciri başlatıldı (birincil kabul koşulu değil)
Kafka başarısızlığı, veri kaybı anlamına gelmez; downstream gecikme anlamına gelir.