Dağıtık mimarilerde hata işleme merkezi, öngörülebilir ve ağ hizmetleri ile çalışırken kaçınılmaz olan çeşitli arıza türlerine dayanıklı olmalıdır. Retry, Circuit Breaker, Timeout, Fallback gibi desenlerin kullanılması önerilir.
İlkeler:
Python'da pybreaker kütüphanesi ile Circuit Breaker örneği:
import pybreaker import requests breaker = pybreaker.CircuitBreaker(fail_max=3, reset_timeout=60) @breaker def get_data(): return requests.get('http://service/api/data', timeout=3) try: response = get_data() except pybreaker.CircuitBreakerError: # fallback: bir yedek veya hata döndür response = 'Fallback data'
Ana özellikler:
Hatalar durumunda istemciye tüm ayrıntıları verebilir miyiz?
Hayır. İstisna ayrıntıları açığa çıkarılamaz - bu bir güvenlik tehdididir. Yanıtlarımızda yalnızca genel bilgiler verilmektedir, teknik ayrıntılar iç sistemlerde günlüğe kaydedilmektedir.
Hizmetler arasında ağ hataları için sadece "retry" yapmak yeterli mi?
Hayır, "temiz" retry problemi daha da kötüleştirebilir - sağlam bir geri çekilme (backoff) stratejisi uygulanması tercih edilir; katı tekrarlar yerine.
Günlükleri her mikro hizmetin yerel diskinde saklamak daha mı iyi?
Hayır. En iyi seçenek, tüm günlüklerin arama ve analiz için tek bir noktada erişilebilir olmasıdır (örneğin, ELK, Loki, Grafana kullanarak).