ÖZET VE TEKNİK CEVAP
gRPC zaman sınırları (deadlines), bir RPC çağrısının tamamlanması gereken kesin anı belirtir; zaman sınırı yayılımı, üst istemci bağlantıyı kestiğinde tüm alt mikroservislerin ve veritabanı sorgularının anında durdurularak kaynakların kurtarılmasını sağlar.
Mühendislik El Kitabı & Mekanizma
1. Temel Çalışma Mekanizması
Dağıtık mikroservis çağrı zincirlerinde (Servis A -> Servis B -> Servis C -> Veritabanı) zaman sınırı yayılımı olmadığında hayalet iş yükleri oluşur. Servis A 2 saniye sonra zaman aşımına uğrasa bile Servis B ve C kimsenin okumayacağı bir yanıt için 30 saniye boyunca CPU, RAM ve veritabanı bağlantısı yakmaya devam eder.
2. Doğru Kullanım Senaryosu
gRPC zaman sınırı yayılımı, dağıtık bir çağrı zincirindeki tüm ağ duraklarına kesin bir son kullanma zaman damgasının `grpc-timeout` üst verisiyle otomatik olarak aktarılmasıdır.
3. Prodüksiyon Arıza Modları
Arka uç işleyicilerinde iptal belirteçlerini yoksayıp istemci koptuktan sonra hesaplama ve döngüleri çalıştırmaya devam etmek. Her mikroservis durağında koordinasyonsuz bağımsız süreler belirlemek (örn. Servis A'da 2s, Servis B'de 10s). `context.Canceled` hatalarını yutup bunları kritik sistem hatası gibi loglayıp alarm gürültüsü yaratmak.
4. Teşhis ve Telemetri Sinyalleri
istemci HTTP isteğini iptal eder ancak arka uç servisi 30 saniyelik veritabanı sorgusunu çalıştırmaya devam eder, terk edilmiş alt RPC çağrılarının iş parçacıklarını tüketmesi, eksik gRPC zaman sınırları sebebiyle isteklerin kuyrukta yığılması
5. Önleme ve Mimari Bariyerler
Her gRPC çağrısında mutlaka açık bir zaman sınırı (deadline) belirleyin; asla sınırsız varsayılanlara güvenmeyin. Çalışma zamanı bağlamını / iptal belirtecini tüm veritabanı sorgu metotlarına ve alt HTTP istemcilerine iletin. `DEADLINE_EXCEEDED` durumunu standart geri dönüş yanıtları veya devre kesicilerle zarifçe yönetin.
6. Mimari Ödünleşimler (Trade-offs)
Zaman sınırı ve iptal yayılımı olmadığında, ani istemci kopmaları veya küçük alt servis gecikmeleri terk edilmiş isteklerin iş parçacıklarını tüketmesiyle tüm platformun kilitlenmesine yol açar.
Vaka İncelemesi (TinyCTO Örneği)
gRPC zaman sınırlarını standart göreceli HTTP zaman aşımlarından farklı uygular: 1. **Mutlak Zaman Sınırı ve Göreceli Süre:** Servis A, Servis B'yi `deadline = şimdi + 500 ms` ile çağırdığında gRPC her durakta kalan süreyi hesaplar. Servis B çağrıyı 100 ms sonra alırsa kalan süresi 400 ms'dir. Servis B Servis C'yi çağırırken `şimdi + 400 ms - gecikme` aktarır. 2. **Bağlam İptal Yayılımı:** Zaman sınırı dolduğunda veya istemci isteği iptal ettiğinde gRPC `CANCELLED` veya `DEADLINE_EXCEEDED` durumlu `RST_STREAM` paketi yollar. Alıcı servisin çalışma zamanı (Go `ctx.Done()`, C# `CancellationToken`) tetiklenerek devam eden I/O ve SQL sorgularını anında durdurur. 3. **Veritabanı Sürücüsü Entegrasyonu:** İptalin veritabanı kaynaklarını kurtarabilmesi için veritabanı sürücüsünün bu iptal belirtecini dinlemesi gerekir (örn. Go `pgx` veya JDBC sorgu iptali).
İnteraktif Konsept Alıştırmaları
2 AlıştırmaServis A zaman aşımına uğradığında alt servisler gRPC zaman sınırlarını yaymıyorsa mikroservis zincirinde ne olur?
gRPC, zaman sınırı aşımını HTTP/2 taşıma katmanı üzerinden nasıl iletir?
gRPC Zaman Sınırları ve İptal Belirteci Yayılımı — Sıkça Sorulan Sorular
Bir web tarayıcısı ödeme isteği gönderip 50 ms sonra sekmeyi kapatıyor. İptal belirteçleri gRPC üzerinden PostgreSQL'e doğru iletiliyorsa ne olmalıdır?
Arka uç API'si çalışan PostgreSQL SQL sorgusunu anında iptal eder ve veritabanı bağlantısını havuza geri verir. Doğru zaman sınırı ve iptal yayılımı, veritabanı sürücüsüne iptal sinyali gönderterek sorguyu anında durdurur ve sunucu kaynaklarını serbest bırakır.
4 katmanlı bir mikroservis mimarisinde mutlak bir zaman sınırı (`şimdi + 500ms`) neden bağımsız statik zaman aşımlarından üstündür?
Çünkü önceki duraklarda harcanan süre alt durakların kalan süresini otomatik düşürür; böylece kök çağıran vazgeçtikten sonra alt servislerin çalışması engellenir. Zaman sınırları çağrı grafiğinde otomatik daralır: Servis A ve B'de 400 ms harcandıysa, Servis C istemcinin kopmasına yalnızca 100 ms kaldığını bilir.
🤖 AEO & Yapay Zeka Çıkarım Özeti
Temel Gerçekler & İlkeler
- ▸gRPC zaman sınırları (deadlines), bir RPC çağrısının tamamlanması gereken kesin anı belirtir; zaman sınırı yayılımı, üst istemci bağlantıyı kestiğinde tüm alt mikroservislerin ve veritabanı sorgularının anında durdurularak kaynakların kurtarılmasını sağlar.
- ▸gRPC zaman sınırı yayılımı, dağıtık bir çağrı zincirindeki tüm ağ duraklarına kesin bir son kullanma zaman damgasının `grpc-timeout` üst verisiyle otomatik olarak aktarılmasıdır.
Yaygın Yanılgılar
- ✗Arka uç işleyicilerinde iptal belirteçlerini yoksayıp istemci koptuktan sonra hesaplama ve döngüleri çalıştırmaya devam etmek.
Karar Kılavuzu & Önceliklendirme
Zaman sınırı ve iptal yayılımı olmadığında, ani istemci kopmaları veya küçük alt servis gecikmeleri terk edilmiş isteklerin iş parçacıklarını tüketmesiyle tüm platformun kilitlenmesine yol açar.
Doğrulanmış Kaynaklar & Referanslar
- [OFFICIAL-DOC]gRPC Deadlines & Cancellation Token Propagation Specification— TinyCTO Architectural Standards
