WinUpGo
Aramak
CASWINO
SKYSLOTS
BRAMA
TETHERPAY
777 FREE SPINS + 300%
Cryptocurrency casino Crypto Casino Torrent Gear, çok amaçlı torrent aramanızdır! Torrent Dişli

Başlangıçta beş kritik API tümleştirme hatası

Hata # 1. Hiçbir idempotence ve geri çekilme "fırtına"

Belirtiler: yinelenen siparişler/ödemeler, tutarlarda tutarsızlık, tartışmalı iadeler, DLQ uyarıları artıyor.

Kök: taleplerin/webhook'ların ve ağ flapplerinin tekrarlanan teslimatı normaldir. "Oluştur/kapat" işlemi idempotent değilse, retrays hasarı çarpar.

Nasıl yapılır

Tüm güvensiz yöntemlere Idempotency-Key/' operation _ id '(POST/PATCH).

'Operation _ id' için veritabanında benzersiz dizin. Tekrar oynatma - önceki sonucu döndürür.

Gelen Kutusu tablosu üzerinden Webhooks ('event _ id + signature'ile tekilleştirme). Giden olaylar - Giden kutusu.

Retrai: maksimum 1-2 kez, üs + jitter, sadece güvenli işlemler için.

HTTP kuralı (örnek):
http
POST/v1/ödemeler
Idempotency-Key: ik_f35a2
İçerik Türü: uygulama/json

{"miktar": 5000, "para birimi": "EUR", "kaynak": "card_..."}
SQL koruması (basitleştirilmiş):
sql
ALTER TABLE ödemeleri ADD CONSTRAINT uniq_op UNIQUE (operation_id);
Jitter (pseudocode) ile Retrai:
Aralıkta i için python (2):
try: return call_api (yük, zaman aşımı = 0). 6)
Zaman aşımı hariç:
uyku (0. 05 2i + rastgele. üniforma (0, 0. 05))
UpstreamUnavailable öğesini yükseltin
Denetim listesi:
  • Tüm "para/yaratma" mantığı 'operation _ id've uniq indeksine sahiptir.
  • Gelen webhooks sadece idempotent işçi ile Gelen Kutusu üzerinden.
  • İstemci SDK otomatik olarak Idempotency-Key'i ayarlar.

2 numaralı hata. Zaman Aşımları/Retrays vs. SLO: Bağımlılık Aşırı Isınma

Semptomlar: p95 aniden yüzer, kuyruklar büyür, devre kesici "patlama".

Kök: Yanıtın toplam SLO'su 400-600 ms'dir ve harici API'lere yapılan zaman aşımları 1-2 s'dir ve hatta × 3'ü geri alır. Yapabileceğinizden daha uzun süre yaparsınız ve bağımlılığı tekrarlarla fırtınaya sokarsınız.

Nasıl yapılır

Bütçe zamanlaması: SLO 400 ms ise, yukarı akış zaman aşımı: 250-300 ms; SLO ≤ isteğinin toplam zaman aşımı.

Sınırlar/Geri basınç: Her bağımlılığa yapılan çağrılar için semaforlar/işçi havuzu. Kalabalık - Aynı anda 429/503.

Devre kesici: Zaman aşımları/5xx ile 'açık', 'yarı açık' dozlu.

Kabul kontrolü: eşzamanlılığı kısıtlayın (iş parçacığı başına, uç nokta/PSP başına).

Örnek (Git):
go sem: = make (chan struct {}, 64 )//competition limit to PSP func callPSP (ctx context. Bağlam, req Req) (Res, hata) {
seçiniz {
case sem <- struct {} {}:
Erteleme func () {<-sem} ()
c, iptal: = bağlam. WithTimeout (ctx, 300time. Milisaniye)
İptal etmeyi ertele ()
dönüş psp. Do (c, req)
varsayılan değer:
Return res {}, ErrBusy//sonsuz kuyruk yerine anında arıza
}
}
Denetim listesi:
  • Zaman aşımları SLO'dan daha kısadır; Retrai ≤ 2; Jitter var.
  • Harici API'lere havuzlar/semaforlar; Metrikli devre kesici.
  • Yoğun rotalarda 429/Retry-After dönüyoruz, bağlantı kurmuyoruz.

3 numaralı hata. Zayıf Güvenlik: Webhook İmzalar, Sırlar, TLS

Belirtiler: "Diğer insanların" webhook'ları geçer, koddaki/günlükteki sırlar, MITM riskleri.

Kök: imza/tazelik kontrolü yok, sırlar env dosyalarında, eski TLS ve zayıf başlıklarda yaşıyor.

Nasıl yapılır

Webhook'ların imzası HMAC-SHA256 + 'X-Timestamp' (pencere ≤ 5-10 dakika), imzanın sıkı bir şekilde karşılaştırılması.

Kritik entegrasyonlar veya IP allow-list için mTLS.

Vault/Cloud KMS aracılığıyla sırların döndürülmesi; asgari haklar; çıkarma denetimi.

TLS 1. 2/1. Sadece 3, HSTS, doğru CORS (dar kaynak listesi).

İmza Doğrulama (Python):
Python def doğrulama (sig_hdr, ts_hdr, gövde, gizli):
eğer abs (zaman. time () - int (ts_hdr))> 600: raise Expired ()
Calc = hmac. Yeni (gizli, (ts_hdr + "." + gövde). kodla (), hashlib. sha256). hexdigest ()
hmac değilse. compare_digest (calc, sig_hdr): BadSig yükseltin ()
Denetim listesi:
  • Tüm webhook'lar imzalanmış ve doğrulanmıştır; tazelik penceresi sınırlıdır.
  • KMS/Vault sırlar, rotasyon ve denetim vardır.
  • TLS/HSTS etkin; CORS noktası; Uygun olduğunda IP/mTLS.

4 numaralı hata. Sözleşme sürüklenme: şema "hayatını yaşadı"

Belirtiler: Prod "sadece bazı istemcilerde" düştü, günlüklerde 500/422, SDK ve API'nin farklı sürümleri tartışıyor.

Kök: Sözleşmelerin katı bir tanımı, geriye dönük uyumsuz değişiklikler, "sessiz" alanlar, aynı isimler için farklı anlamlar yoktur.

Nasıl yapılır

Sözleşme-ilk: OpenAPI/AsyncAPI + sunucu/istemci üretimi; Olaylar için - Avro/Protobuf + Schema Registry.

Sürüm oluşturma: 'v1 - v2' (URI/header), sapma-plan, grace-period.

Geriye dönük-compat: sadece küçük sürümlerde ilave değişiklikler; v-bump olmadan silinemez/yeniden adlandırılamaz.

Sözleşme testleri: Pact/Buf - provider/consummer CI'da test edilir.

Örnekler:
Yaml
OpenAPI: küçük amount_minor birimlerinde net toplam türü:
Tip: minimum tamsayı: 0 açıklama: Minimum para birimi birimlerinde toplam (tam sayı)
Denetim listesi:
  • Sözleşmeler git'de saklanır, CI uyumsuzsa doğrular/kırılır.
  • Schema olayları kaydeder, "geri/ileri" uyumluluğu.
  • Değişikliklerin yerleştirme sayfası, depriction tarihleri, ortaklar için test tezgahı.

5 numaralı hata. "Kör" lansmanı: metrikler/günlükler/yollar ve sanal alan yok

Belirtiler: "Hiçbir şey görünmüyor", destek doluyor, debag - prod'da eller.

Kök: gözlemlenebilirlik dahil edilmedi, sentetik yok, sandbox "kelimelerle" test edildi.

Nasıl yapılır

KIRMIZI/KULLANIM metrikleri: rota/yöntem ile her uç nokta üzerinde hız/hata/gecikme.

Korelasyon: Tüm günlüklerde ve yanıtlarda 'trace _ id'; zapros↔vebkhuk yığını.

Sentetikler: sağlık testleri (giriş/depozito kumu), webhook'lar için SLA izleme T + 60.

Sandbox/stage: tamamen izole edilmiş anahtarlar/etki alanları, hayali PSP'ler, "raporlara dahil olmayan" girişler.

Trace ID ile yanıt:
http
HTTP/1. 1 202 Kabul edildi
Trace-Id: 7f2b3d8e9c1a4
Yer :/ v1/ops/req_42/status
Denetim listesi:
  • KIRMIZI/KULLANIM metrikleri, gösterge panoları, uyarılar (belirtiler + nedenler).
  • Uçtan uca yollar; JSON kayıtları, PII yok, 'trace _ id'ile.
  • Anahtar bölgelerden sentetikler; sandbox gereklidir, farklı anahtarlar.

Prelaunch Planı (T-7 - T-0)

T-7 günler:
  • Son sözleşme taraması: uyumsuz değişiklikler var mı; Planları dondurun.
  • Sırlar/Sertifikalar: rotasyonu, erişimleri, KMS politikalarını kontrol edin.
  • Sentetikler 7 × 24, uyarılar çağrıya bağlıdır.
T-3 gün:
  • Yükleme mini-run (patlama 2-5 dakika): p95/havuzlar/yeşil bölgede kuyruklar.
  • DRY-RUN webhooks (tekrarlar, 5xx, jitter), DLQ kontrolü.
  • Ortakların "telefon rehberi": L1/L2 kişiler, savaş odası kanalı.
T-0:
  • SLO kapıları için kanal trafiği %5 - %25 - %50; Geri dönüşe hazır.
  • Riskli özelliklerde kill-switch/feature-flags dahildir.
  • Savaş odası aktiftir, durum şablonları hazırlanır.

Geri alma planı (bir şey ters giderse)

1. Trafiği önceki kararlı sürüme/rotaya bırakın.

2. Tartışmalı değişiklikleri phicheflag devre dışı bırakın.

3. Kuyrukları/havuzları dengeleyin, bir fırtınada geri çekilmeleri durdurun.

4. Olay sonrası: zaman çizelgesi, kökler, görevler toplayın (sabit ileri/sözleşme düzeltmeleri).


Kendini sınama tablosunu başlat (kısa)

BlokSoruEvet, hayır
IdempotenceTüm "oluşturma" yöntemlerinin bir Idempotency-Key/' operation _ id've bir uniq dizini var mı?
Geri dönüşler/zaman aşımlarıZaman aşımları SLO'dan daha kısadır; Retrai ≤2; Jitter açık mı?
GüvenlikWebhooks imzalı, tazelik penceresi ≤10 dakika, KMS'de sırlar?
SözleşmelerOpenAPI/AsyncAPI sabit, CI uyumsuzluk yakalar?
GözlemlenebilirlikKIRMIZI/KULLANIM, yollar, sentetik T + 60, sandbox izole?
Geri almaBir/kill-switch geri alma düğmesi, iletişim planı var mı?

Sıkça sorulan "Ya..."

... Sağlayıcı Idempotency-Key'i desteklemiyor mu?

'Hash (body)' + 'partner _ request _ id' depolayın ve idempotency girin.

... Webhooks bazen cevaptan'önce "gelir?

'Operation _ id' üzerine dikin ve geçici olarak "bilinmeyen - uzlaştırın" durumunu koruyun; Periyodik uzlaştırıcılar tutarsızlıkları kapatacaktır.

... Eski müşterileri ve yeni müşterileri desteklemeniz mi gerekiyor?

Uç noktaların ('/v1've'/v2 ') sürümü, başlık/URI ile rota, en az N ay geriye dönük uyumluluk sağlar.


Özgeçmiş Özeti

Entegrasyon başarısızlıkları neredeyse her zaman aynı şeydir: idempotency yok, yanlış zaman aşımları ve geri çekilmeler, webhook'ların zayıf imzası, sözleşme sürüklenmesi ve görünürlük eksikliği. Sözleşmeleri önceden düzeltin, gözlemlenebilirliği sağlayın, sınırları/geri yansıtıcıyı yerleştirin, tüm dış etkileşimleri imzalayın ve sentetikleri çalıştırın. Ardından, ortakların başarısızlıkları durumunda bile, serbest bırakılmanız yönetilebilir kalacaktır - retras'ta kaybedilen para olmadan ve tüm ekip için uykusuz bir gece olmadan.

× Oyuna göre ara
Aramaya başlamak için en az 3 karakter girin.