Realteim-fid wakalar: arhitektura we howpsuzlyk
Wakalaryň hakyky wagty oýnamak, antifrod, CRM-triggerleri we tölegleri bolan önümleriň "gan aýlanyş ulgamy". Onuň piklerde öňünden aýdyp boljak derejede işlemegi, baýraklary köpeltmezligi we maglumatlary ýaýratmazlygy üçin berk arhitektura gerek: teswirnamalardan we tekerlerden gola, idempotentlige, býudjet-kaperlere we gözegçilik etmäge çenli.
1) Maksatlar we talaplar
Ygtybarlylyk: wakalary iň az lagda bermek (p95 ≤ 250 ms ingest, p95 ≤ 1-2 s sarp edijä).
Eltip bermek: at-least-once transport + idempotentlik arkaly logiki exactly-once.
Tertip: açar boýunça tertipleşdirmek (adatça 'user _ id').
Howpsuzlyk: MTLS, HMAC/JWT, açarlaryň aýlanmagy, replay/dublikatlardan goramak, PII-ni azaltmak.
Masştab: gorizontal şarding, backpressure, rate limiting, DLQ/replay.
Dolandyrylyşy: schema registry, wersiýalaşdyrmak, işsiz göçmek.
Ylalaşyk: audit (WORM), RG/KYC geýtleri, geo-syýasatlar, GDPR/anonimleşdirmek.
2) Esasy binagärlik (gatlak-gatlak)
1. Producers (çeşmeler): oýun serweri, gapjyk/töleg, KYC/AML, müşderi SDK (web/iOS/Android).
2. API Gateway (Ingress): HTTP/gRPC kabul etmek, shema tassyklamak, tassyklamak, HMAC/MTLS, wagt kadalaşdyrmak.
3. Queue/Stream: Kafka/Rabbit/Cloud Pub/Sub - buferizasiýa, partizasiýa 'user _ id'.
4. Stream Processor: kadalaşdyryjy, baýlaşdyryjy, mowzuklaryň marşrutlaşdyrylmagy, anormaliýa/baýdaklara garşy, idempotent ýazgysy.
5. Ulanyjylar: Rules/Scoring, Reward Orchestrator, CRM/CDP konnektorlary, antifrod, analitik sink '.
6. Storage: çig wakalar (immutable), vitrinler, idempotentlik indeksi, audit-magazineurnal.
7. Observability: metrikler, loglar, yzarlamalar, alertler; panics → DLQ.
8. Admin Plane: schema registry, açarlar/syrlar, RBAC/ABAC, ficheflagy, replay-service.
3) Eltip bermek teswirnamalary: haçan ulanmaly
HTTP/JSON (server-to-server webhuklar): ýönekeý, gabat gelýän, daşarky hyzmatdaşlar üçin gowy. HMAC + duýgurlygy goşuň.
gRPC/Protobuf: pes gijikdirme, berk shemalar, içerki hyzmatlar üçin bidi-akymlar.
WebSocket/SSE: müşderä push, Liderbordlara we öňe gidişlige UI ýazylmak.
CDC/Kafka Connect: çeşmeler - biznes hyzmatlary däl-de, DB/gapjyklar bolanda.
Maslahat: daşarky perimetri - HTTP + HMAC + MTLS; içinde - gRPC/Protobuf.
4) Wakanyň we konwensiýanyň nusgasy
json
{
"event_id": "e_01HF3Z8Z7Q8Q2K", "event_type": "bet", "schema_version": "1. 3. 0", "occurred_at": "2025-10-24T11:37:21Z", "ingested_at": "2025-10-24T11:37:21. 183Z", "key": { "user_id": "u_12345" }, "ctx": {
"session_id": "s_778", "platform": "ios", "geo": "TR", "device_fp": "fp_4a1..."
}, "payload": {
"game_id": "slot_wolf", "bet": 0. 5, "win": 1. 25, "currency": "EUR", "provider": "GameCo"
}, "sig": {
"algo": "HMAC-SHA256", "kid": "k_2025_10", "ts": 1730061441, "mac": "c7b7b3...f1"
}
}
Düzgünler:
- Iki wagt: 'occurred _ at' (çeşme) we 'ingested _ at' (şlýuz). Sagadyň süýşmegine rugsat beriň ± 300 s.
- Marşrut açary - tertibi kesgitleýän zat (adatça 'user _ id').
- PII diňe "ctx "/" payload" iň pes prinsipi boýunça; duýgur atributlar üçin - tokenizasiýa.
5) Eltip bermek, tertip-düzgün we duýgurlyk
At-least-once transporty → dublikatlar we üýtgedip tertiplemek mümkin.
Exactly-once logika: '(event_id)' we/veya '(user_id, source_seq)' üçin özboluşly indeksi bolan idempotentlik tablisasyny saklaň; gaýtalamak - no-op.
SQL-eskiz:sql
CREATE TABLE event_log (
event_id TEXT PRIMARY KEY, user_id TEXT, event_type TEXT, occurred_at TIMESTAMPTZ, payload JSONB
);
-- goşa gorag bilen goýma
INSERT INTO event_log(event_id, user_id, event_type, occurred_at, payload)
VALUES (:event_id,:user_id,:event_type,:occurred_at,:payload)
ON CONFLICT (event_id) DO NOTHING;
Tertip: 'user _ id' + reordering window 60-120 s prosessordaky akymyň partnerleşmegi. Soň gelen wakalar düzediş funksiýalarynyň "täzeden oýnamagyna" düşýär.
6) Backpressure we pikleri dolandyrmak
Token-bucket rate limiting на ingress (per-IP, per-partner, per-key).
Circuit breaker: 5xx içerki sarp edijilerden → pese gaçmak (goşmaça wakalaryň damjasy, nobatlar retrai aralyklaryny artdyrýar).
DLQ: hemişelik ýalňyş habarlar (döwülen shema, gol galmaz, gollaryň TTL-den ýokary).
Replay service: 'event _ id '/diapazony boýunça DLQ-den saýlama göçürme.
7) Shemalar we ewolýusiýa: nädip "döwmeli"
Schema Registry: JSON Schema/Protobuf; laýyklyk syýasaty: öndürijiler üçin backward, konsumerler üçin forward.
Wersiýa: 'schema _ version', major - diňe ficheflag we goşa ýazgy (dual-write) arkaly.
Şertnamalar: kanareýa döwründen soň shemany öňe sürmek we green metrics.
YAML-mysal barlamak düzgünleri:yaml compatibility:
enforce: true mode: backward blocked_fields:
- payload. ssn
- payload. card_number required_fields:
- event_id
- event_type
- occurred_at
8) Howplaryň nusgasy we gorag
Howplar: bedeni çalyşmak, gaýtalamak, PII syzmak, açary bozmak, schema-poisoning, DoS, MITM, signatura-stripping.
Gorag:- Perimetrde MTLS: gysga möhletli müşderi şahadatnamalary, CRL/OCSP.
- Bedeniň HMAC-goly + 'X-Timestamp' we TTL (± 300 s).
- JWT (client credentials/OAuth2) - awtorizasiýa we skope çäklendirmeleri üçin.
- Açarlaryň aýlanmagy (KMS): sözbaşyda 'kid'; aýlanyş meýilnamasy 30-90 gün; göçmek penjiresinde iki gezek barlamak.
- Nonce/idempotentlik: 'X-Request-Id' (tölegler, bonuslar); TTL wagtlaýyn saklaň.
- Content-Type pinning, max body size, allow-list IP/ASN kritiki integrasiýa üçin.
- WORM-audit ähli gelýän raw-payload + sözbaşylar (üýtgemeýän ammar).
python body = request. raw_body ts = int(request. headers["X-Timestamp"])
assert abs(now() - ts) <= 300 # анти-replay kid = request. headers["X-Key-Id"]
secret = kms. fetch(kid)
mac = hmac_sha256(secret, body)
assert hmac_eq(mac, request. headers["X-Signature"])
9) Gizlinlik, PII we RG/KYC
Minimallaşdyrma: PII baglanyşyk-belgi boýunça (5-15 minut) liniň ýerine geçirmek; çig ýazgylarda redaktirlemek/anonimleşdirmek gadagandyr - aýry-aýry PII-storanslary ulanyň.
Giriş: ABAC ýurisdiksiýa we rol atributlary boýunça; ähli okalyşlar - audit-journalurnalyna.
GDPR: PII-ni wakalaryň faktlaryny bozmazdan pozmak üçin key-mapping arkaly aýyrmak hukugyny ulanyň.
RG/KYC: gymmatly baýraklaryň berilmegini talap edýän wakalary diňe tassyklanan KYC derejesinde we "OK" RG baýdaklarynda sypdyryň.
10) Synlamak we SLO
SLO (mysal):- Ingest p95 ≤ 250 ms; end-to-end p95 ≤ 2 с; boýun gaçyrmak ≤ 0. 1 %/gün.
- Gol hatasy (HMAC/JWT) ≤ 0. Umumy akymyň 02% -i.
- DLQ fill rate ≤ 0. 1%; "dublikatlar" idempotentlikden soň ≤ 0. 005%.
- Çeşmeler boýunça RPS, p50/p95 latency, 4xx/5xx, gollar-ýalňyşlyklar, wagt-skew.
- Partiýa boýunça Lag, gaýtadan işlemek/sek, fill DLQ, retries, tekiz-göwrümler.
- Shemalar: wersiýalar boýunça habarlaryň paýy, laýyklygyň bozulmagy.
- Howpsuzlyk: rps-throttle ýygylygy, circuit-breakers, IP/ASN anomaliýalary.
- SRM akymy (bir çeşmeden traffigiň ýiti üýtgemegi).
- Gizlinlik p95> maksat 5 min +, ösüş DLQ> X/min.
- Hata gollary> Y ppm, 'X-Request-Id' gaýtalamalarynyň köpelmegi.
- Drift sagat> 120 s çeşmede.
11) Köp sebit we şowsuzlyga çydamlylyk
Active-Active sebitleri, global marşrut (GeoDNS/Anycast), sticky-key po 'user _ id' → sebit.
Möhüm wakalar üçin sebitleýin köpeltmek topikasy (pul, KYC).
Blast radius: tenantlar/markalar boýunça izolýasiýa, aýry-aýry býudjetler we açarlar.
DR-meýilnama: RPO ≤ 5 minut, RTO ≤ 30 minut; yzygiderli repetisiýalar.
12) Retenşna we repleýa syýasatlary
Çig wakalar: 7-30 gün (bahasy boýunça), agregatlar/vitrinler - has uzyn.
Bellik etmek diňe gol çekilen runbook (kim, näme, näme, wagt aralygy) arkaly rugsat berilýär.
Bu söz elmydama analitik aç-açanlyk üçin 'replayed = true' baýdagy bilen täze akym-wersiýa gidýär.
13) Konfigurasiýa mysallary
Ingress (NGINX-stil) çäkleri:nginx limit_req_zone $binary_remote_addr zone=req_limit:10m rate=300r/s;
limit_req zone=req_limit burst=600 nodelay;
client_max_body_size 512k;
proxy_read_timeout 5s;
Kafka (mysal):
properties num. partitions=64 min. insync. replicas=2 acks=all retention. ms=604800000 # 7 days compression. type=zstd
Açarlar üçin syýasat (KMS):
yaml rotation_days: 45 grace_period_days: 7 allow_algos: ["HMAC-SHA256"]
key_scopes:
- topic: "wallet_events"
producers: ["wallet-svc"]
consumers: ["ledger-svc","risk-svc"]
14) Fiediň hakyky wagtyny işe girizmegiň çek-sanawy
- Perimetrde MTLS, HMAC/JWT, açar aýlawy ('kid').
- Logikadaky deňagramlylyk (özboluşly açarlar, upsert/ON CONFLICT).
- "user _ id", "reordering window", "replay-service" boýunça partizasiýa.
- Shema registry + laýyklyk syýasaty; major-täzelenmelerde dual-write.
- Rate limiting, circuit breakers, DLQ + el bilen aglamak.
- Syn edilişi: SLO, gol/gizlinlik/DLQ/lag.
- PII/anonimleşdirmek syýasaty, ABAC, WORM barlagy.
- DR/köp sebit, feýloweriň repetisiýalary.
- Runbooks: hadysalar, bellikler, shemalar/açarlar.
15) Kiçi keýs (sintetik)
Kontekst: ýaryşlaryň iň ýokary derejesi, 120-e RPS ingress, 64 partiýa, 2 Active-Active sebiti.
Jemi 4 hepdede: ingest p95 210 ms, e2e p95 1. 6 s; DLQ 0. 05%; Gol hatasy 0. 009%; idempotentlikden soň dublikatlar 0. 003%.
Waka: ýoldaşda sagat süýşmesi (9 minutdan −) → anti-replay. Circuit breaker akymyny "bufer" endpointine geçirdi, partner-health CSM-e habar berdi; NTP sinkinden soň - penjiräniň sesi 12 minutdyr. Ýitgiler we goşa tölegler ýok.
16) Gysgaça mazmuny
Ygtybarly real-time fid "diňe webhuk" däl. Bu takyk şertnamalary bolan gatlakly ulgam: at-least-once transport + logiki exactly-once, shema-registrler we wersionirlemek, MTLS/HMAC/JWT we açarlaryň aýlanmagy, backpressure/DLQ/reples, PII-iň minimallaşdyrylmagy we berk audit. Bu amallary ýerine ýetirmek bilen, oýnamak, antifrod, CRM we tölegleri ynamly gurup boljak çalt, howpsuz we öňünden aýdyp boljak wakalaryň akymyny alarsyňyz.