Metasearch'te Supplier Latency ve Timeout Budget
Hotel ve flight metasearch search pipeline'ı için timeout budget, paralel supplier call, partial result, circuit breaker ve latency SLO yaklaşımını öğrenin.
Metasearch latency'si fan-out search içindeki en yavaş katmanlardan etkilenir: upstream supplier, normalization ve ranking. Resilient tasarım her aşamaya zaman bütçesi verir ve tek yavaş provider'ın tüm sayfayı bloke etmesi yerine anlamlı partial result döndürür.
End-to-end search budget ile başlayın
İlk faydalı sonucun ve complete search'ün maksimum süresini tanımlayın. Ardından bu bütçeyi gateway, supplier call, normalization, deduplication, ranking ve rendering arasında bölün.
Kullanıcıya iki saniyede sonuç göstermeyi hedefliyorsanız her supplier'a ayrı ayrı iki saniye timeout veremezsiniz.
Parallel fan-out tek başına yeterli değildir
Hotel ve flight metasearch birden fazla kaynağı eşzamanlı çağırır. Paralel çağrı total latency'yi azaltır ama her search her provider'a giderse load ve failure amplification yaratabilir.
Provider eligibility, market relevance, cache coverage ve geçmiş quality verisine göre hangi supplier'ın sorguya katılacağını seçin.
Provider bazlı timeout kullanın
Her provider aynı timeout'u hak etmek zorunda değildir. Stable şekilde 600 ms'de dönen yüksek-conversion supplier ile üç saniye süren düşük-yield provider farklı budget alabilir.
Average yerine provider/endpoint bazında p50, p95 ve p99 izlemek daha anlamlıdır.
Partial result bir ürün kararıdır
Tüm provider'ları beklemek experience'i yavaşlatabilir. İlk faydalı offer set'ini render edip kısa süre içinde geç gelen supplier'ları eklemek çoğu zaman daha iyi perceived speed üretir; fakat UI sürekli re-sort olup zıplamamalıdır.
Pratik pattern:
- cached veya hızlı provider sonuçlarını göster,
- kısa secondary window içinde late result merge et,
- hard deadline sonrası response kabul etme,
- deadline kaçıran provider'ı metric olarak kaydet.
Timeout evidence üretmeli
Timeout yalnız exception değildir. Provider, endpoint, query class, elapsed time, retry count ve fallback gösterilip gösterilmediğini kaydedin.
Böylece “offer yok” ile “supplier zamanında cevap vermedi” birbirinden ayrılır.
Retry latency'yi daha kötü yapabilir
Interactive request içinde yavaş upstream'i tekrar çağırmak tüm budget'ı tüketebilir. Retry yalnız açıkça transient error için bounded olmalı; recovery mümkünse critical path dışında yapılmalıdır.
Exponential backoff asynchronous refresh ve feed processing için interactive iki saniyelik search'e göre daha uygundur.
Circuit breaker sistemi korur
Supplier sürekli timeout veya error veriyorsa full traffic göndermeye devam etmek thread, connection ve outbound capacity tüketir. Circuit breaker veya health-based routing provider düzelene kadar çağrı hacmini azaltabilir.
Upstream incident sırasında bu davranış tüm platformun etkilenmesini önler.
Meta Search yorumu
Latency control aslında workload orchestration'dır. Search için açık end-to-end budget tanımlayın, provider deadline'larını ayırın, partial result'ı bilinçli kullanın, timeout evidence tutun ve tek bozuk entegrasyonun bütün search deneyimini yavaşlatmasını engelleyin.
End-to-end budget'i provider'lara nasıl dağıtmalı?
Kullanıcıya 2 saniyede anlamlı result göstermek istiyorsanız her supplier'a 2 saniye timeout veremezsiniz.
Örnek budget:
request parsing 50 ms
cache/entity lookup 100 ms
supplier fan-out 1200 ms
normalization 150 ms
ranking 100 ms
render/network reserve 400 ms
-----------------------------
total 2000 msProvider deadline bu shared budget içinde hesaplanmalıdır.
Hedging ve partial result ne zaman kullanılmalı?
Fast provider'lar ilk result set'i oluşturabilir; late provider kısa secondary window içinde merge edilebilir. Ancak late offer geldiğinde UI sürekli reorder olursa perceived quality düşebilir.
Hedged request yalnız belirli provider'ın latency tail'i yüksekse ve duplicate request cost kabul edilebiliyorsa düşünülmelidir.
Failure isolation
- circuit breaker,
- bulkhead/concurrency limit,
- per-provider queue,
- timeout budget,
- fallback cache,
- health-based routing
bir supplier incident'ının tüm search cluster'ını tüketmesini engeller.
KPI'lar
- p50/p95/p99 by provider,
- deadline miss rate,
- partial-result rate,
- late-response discard,
- fallback-cache rate,
- circuit-open duration,
- conversion by latency bucket.
Latency optimizasyonu yalnız speed değil; coverage kaybetmeden tail latency'yi kontrol etme problemidir.
Production kontrol listesi
- End-to-end latency SLO ve first-useful-result hedefini ayrı tanımlayın.
- Provider/endpoint bazında timeout budget kullanın.
- Fan-out concurrency için bulkhead sınırı koyun.
- Partial ve final result state'lerini analytics'te ayırın.
- Timeout, retry ve fallback sonucunu correlation ID ile loglayın.
- Circuit breaker recovery için half-open probe tanımlayın.
- Provider latency percentile ve deadline-miss alert'lerini izleyin.
- Değişiklik sonrası conversion/coverage kaybını latency kazanımıyla birlikte değerlendirin.
Bu problemi production’da mı yaşıyorsunuz?
Semptomu, veri akışını ve entegrasyon davranışını birlikte teknik olarak inceleyebiliriz.