Realtim-fid 'ճարտարապետություն և անվտանգություն
Real-time-time-ը «արյան համակարգ» է, որն ունի գեյմինիզացիա, հակաֆրոդ, CRM-ձգումներ և վճարումներ։ Որպեսզի նա կանխատեսելի աշխատի գագաթնակետին, չի կրկնօրինակել մրցանակները և չի հոսել տվյալները, անհրաժեշտ է խիստ ճարտարապետություն 'կոդից և անվադողից մինչև ստորագրություն, idempotenty, capers բյուջե և դիտարկում։
1) Նպատակներն ու պահանջները
Վստահություն 'նվազագույն բայով իրադարձությունների տեղադրումը (p95-250 ms ingest, p95-1-2 մինչև սպառողը)։
Առաքում ՝ at-least-once տրանսպորտը + տրամաբանական exactly-once միջոցով։- Կարգը 'կարգավորել բանալին (սովորաբար «user _ id») վերարտադրման պատուհաններով։
- Անվտանգությունը ՝ MTSA, HMAC/JWT, կոդավորման ռոտացիա, պաշտպանություն replay/կրկնօրինակներից, PII նվազեցումը։
- Մասշտաբը 'հորիզոնական շարդինգը, backpressure, rate limiting, DLQ/replay։
- Կառավարումը 'schema registry, տարբերակումը, առանց անցքի։
- Կոմպլենսը 'աուդիտ (WORM), RG/KYC գեյտեր, գեո քաղաքականություն, GDPR/անանուն։
2) Օժանդակ ճարտարապետությունը (շերտի շերտը)
1. Meders (աղբյուրներ) 'խաղային սերվեր, դրամապանակ/վճարում, KYC/AML, հաճախորդների SDK (web/iOS/Android)։
2. API Gateway (Ingress) 'HTTP/gRPC ընդունումը, սխեմայի վալիդացիան, վավերացումը, HMAC/MTRS-ը, ժամանակի նորմալացումը։
3. Queue/Stream: Kafka/Rabbit/Cloud Pub/Sub - բուֆերիզացիա, «user _ id»։
4. Stream Processor 'նորալիզատոր, հարստացում, միկրոօրգանիզմացում, անորալիա/դրոշի հակատիպային բոտ, գաղափարական ձայնագրություն։
5. Consumers: Rules/Scoring, Reward Orchestrance, CRM/CDP կոնեկտորներ, հակաֆրոդ, վերլուծական sink '2019
6. Storage: Հում իրադարձություններ (immutable), վիտրիններ, գաղափարականության ինդեքսը, աուդիտի ամսագիրը։
7. Observability: metrics, logs, հետքեր, ալերտներ; panics → DLQ.
8. Admin Plane: schema registry, բանալիներ/գաղտնիքներ, RBAC/ABAC, ficheflagy, repley ծառայություն։
3) Առաքման արձանագրություններ. Երբ ինչ-որ բան օգտագործել
HTTP/JSON (server-to-server webhuks) 'պարզապես համատեղելի, լավ արտաքին գործընկերների համար։ Ավելացնել HMAC + idempotenty։
GRPC/Winobuf: Ցածր ուշացում, խիստ սխեմաներ, bidi-strimes ներքին ծառայությունների համար։
Socket/SSE: push հաճախորդի, UI-2019 առաջնորդի և առաջընթացի վրա։
CDC/Kafka Connection: Երբ աղբյուրները 'BD/դրամապանակներ, ոչ թե բիզնես ծառայություններ։
Առաջարկություն 'արտաքին պարիմետրը' HTTP + HMAC + MTSA; ներսում gRPC/Drobuf։
4) Իրադարձությունների և կոնվենցիայի մոդել
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"
}
}
Կանոնները
Երկու ժամանակ ՝ «occurred _ at» (աղբյուրը) և «ingested _ at» (դարպաս)։ Թույլ տվեք, որ շաբաթը 300 վ է։
Ուղղման բանալին այն է, որ որոշում է կարգը (սովորաբար «user _ id»)։- PII-ը միայն "ctx '/" payload "-ում նվազեցման սկզբունքով։ զգայուն ատրիբուտների համար թունավորումն է։
5) Առաքում, կարգուկանոն և գաղափարախոսություն
At-leport-once տրանսպորտը հնարավոր է կրկնօրինակներ և վերարտադրում։- Exactly-once տրամաբանությունը 'պահել idempotenty աղյուսակը յուրահատուկ ինդեքսով' «(event _ id)» և/կամ «(user _ id, source _ seq)»; խոհարարը 71-op է։
SQL սքեթչը
sql
CREATE TABLE event_log (
event_id TEXT PRIMARY KEY, user_id TEXT, event_type TEXT, occurred_at TIMESTAMPTZ, payload JSONB
);
- պաշտպանություն դուբլերից
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;
Կարգը 'հոսքի խմբաքանակը' "user _ id '+ reordering no 60-120 պրոցեսորով։ Հետո տեղի ունեցող իրադարձությունները հայտնվում են «վերագրանցման» (replay) ուղղող գործառույթների մեջ։
6) Backpressure-ը և խնջույքների կառավարումը
Token-bucket rate limiting на ingress (per-IP, per-partner, per-key).
Circuit breaker: 5xx-ով ներքին սպառողներից բացատրվում է դեգրադացիա (հակաբիոտիկ իրադարձություններ, գծերը ավելացնում են ռետրային ընդմիջումները)։
DLQ: պերմանենտալ սխալ հաղորդագրությունները (բիթային սխեման, ստորագրությունը անվնաս է, ավելի բարձր է TTL ստորագրությունները)։
Replay ծառայություն 'DLQ-ի ընտրովի ռեպաբլիշ' «event _ id »/ժամանակի միջակայքով։
7) Սխեմաներ և էվոլյուցիա. Ինչպե՞ ս չփորձել։
Schema Registry: JSON Schema/Protobuf; Քաղաքական գործիչները 'backward արտադրողների համար, forward կոնսուլմերների համար։
Տարբերակումը '«schema _ version», մաժորը միայն ֆիչեֆլագի և կրկնակի ձայնագրման միջոցով (dult-write)։- Պայմանագրեր 'սխեմայի առաջխաղացումը կանարեկային ժամանակահատվածից և green metram-ից հետո։
YAML-ը ստուգման կանոնների օրինակ է
yaml compatibility:
enforce: true mode: backward blocked_fields:
- payload. ssn
- payload. card_number required_fields:
- event_id
- event_type
- occurred_at
8) Սպառնալիքների և պաշտպանության մոդել
Սպառնալիքները 'մարմնի փոխարինումը, կրկնօրինակը (replay), PII արտահոսքը, ստեղնաշարի փոխզիջումը, schema-poisoning, DoS, MITM, ազդանշան-stronping։
Պաշտպանություն
MT.RU պարագծի վրա 'հաճախորդների հավաստագրեր կարճ ժամանակով, CRL/OCERT։- HMAC-ի մարմնի ստորագրությունը + «X-Timestamp» և TTL (3,300 s)։
- JWT (client credentials/OAuth2) - scope-ի հեղինակային և սահմանափակումների համար։
- Կոդավորման լուծումը (KFC) '«kid» վերնագրում; հավատարմագրման պլանը 30-90 օր; կրկնակի ստուգում պատահարի պատուհանում։
- Nonce/idempotention: «X-Request-Id» դիմումների համար (վճարումներ, բոնուսներ); պահեք TTL-ի ժամանակ։
- Content-Typinning, max body size, allow-list IP/ASN կրիտիկական ինտեգրման համար։
- WORM-ի աուդիտը բոլոր հատվածներում rault-payload + վերնագրեր (անփոփոխ պահեստ)։
HMAC (կեղծ) ստուգման օրինակ
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) Մասնավոր, PII և RG/KYC
Մինիմիզացիա: PII-ը տեղափոխում է թոկենով (5-15 րոպե) փոխարենը։ / խմբագրում անանանունացումը հում լոգարաններում արգելված է 'օգտագործեք առանձին PII-storans։
Հասանելիություն 'ABAC իրավասության և դերի մրցույթներում։ բոլոր ընթերցումները աուդիտի ամսագրում են։- GDPR 'հեռացման իրավունքը իրականացրեք key-mapping-ի միջոցով, որպեսզի PII-ը ստանա առանց իրադարձությունների փաստերի կոտրման։
- RG/KYC: Իրադարձություններ, որոնք պահանջում են արժեքավոր մրցանակներ, բաց թողեք միայն validn KYC մակարդակում և RG դրոշներում «OK»։
10) Դիտարկումը և SLO-ն
SLO (օրինակ)
Ingest p95-250 ms; end-to-end p95 ≤ 2 с; մերժումը 0։ 1 %/օր։
Սխալների ստորագրությունը (HMAC/JWT) 240։ Ընդհանուր հոսքի 02 տոկոսը։
DLQ fill rate ≤ 0. 1%; «կրկնօրինակները» 0-ից հետո։ 005%.
Դաշբորդ
RPS-ը աղբյուրներով, p50/p95 latency, 4xx/5xx, սխալների ստորագրություններ, Time-skew։
Lag կուսակցության, վերամշակման/վրկ, www.l DLQ, retries, replay ծավալներ։- Սխեմաները 'հաղորդագրությունների մասը տարբերակներով, խախտումներով։
- Անվտանգություն 'rps-throttle, circuit-breakers, IP/ASN անոմալիա։
Ալերտները (օրինակներ)
MSM հոսքը (կտրուկ խաչմերուկը մեկ աղբյուրից)։- P95> 355 րոպե +, DLQ> X/min աճը։
- Սխալներ> Y nom, «X-Request-Id» պատմիչների աճը։
- Drift ժամ> 120 աղբյուրի մոտ։
11) Մոլթիի տարածաշրջանը և անկայունությունը
Active-Active տարածաշրջանները, գլոբալ ռոտինգը (GeoTS/Anycript), sticky-key-key-ով 'user _ id' ռուսական տարածքը։
Քրոս-ռուսական կրկնօրինակման տոպիկը քննադատական իրադարձությունների համար (դրամական, KYC)։- Blast radius: մեկուսացում ստենանտների/բրենդների, առանձին բյուջեների և բանալիների վրա։
- DR պլանը ՝ RPO 355 րոպե, RTO 3530 րոպե; Փորձեր։
12) Retenshen և repley քաղաքականությունները
Հում իրադարձությունները ՝ 7-30 օր (արժեքով), ագրեգատները/վիտրինները ավելի երկար են։
Ռեպլեյը թույլատրվում է միայն ստորագրված runbook-ով (ով, ինչու, ժամանակի շրջանակը)։- Repley-ը միշտ գնում է նոր stream-version, որի դրոշը «replayed = no» է վերլուծական թափանցիկության համար։
13) Միգրացիայի օրինակներ
Ingress (NGINX-ոճ) լիմիտներ
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 (օրինակ)
properties num. partitions=64 min. insync. replicas=2 acks=all retention. ms=604800000 # 7 days compression. type=zstd
Policy-ի համար (KFC)
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) Չեկի թերթիկը, որը սկսել է real time fide
- MTSA պարագծի վրա, HMAC/JWT, կոդավորման («kid»)։
- Իդեմպոտենտություն տրամաբանության վրա (յուրահատուկ բանալիներ, ups.ru/ON SYLICT)։
- Կուսակցությունը 'user _ id', reordering pro, replay ծառայություն։
- Schema registry + քաղաքականության պաշտպանիչ; d07-write major-apdaytes-ում։
- Rate limiting, circuit breakers, DLQ + ձեռքով խանդավառությամբ։
- Դիտարկումը 'SLO, ստորագրության/լատենտ/DLQ/lag։
- PII/անունացում, ABAC, WORM աուդիտ։
- DR/մուլտֆիլմի շրջան, ֆեյլովերի փորձեր։
- Runbooks: Միջադեպեր, ակնարկներ, սխեմաների/նիշերի արձագանք։
15) Մինի-քեյսը (սինթետիկ)
Համատեքստը 'կիսագնդի պիկ, 120-ը RPS ingress, 64 կուսակցություն, Acctive-Active-ի երկու տարածք։
Ընդհանուր 4 շաբաթվա ընթացքում 'ingest p95 ms, e2e p95 1։ 6 s; DLQ 0. 05%; սխալներ 0։ 009%; կրկնօրինակները 0-ից հետո։ 003%.
Պատահականություն 'զուգընկերոջ (359 րոպե) մոտ ժամացույցի թռիչքը կատարվում է anti-replay-ի աճով։ Circuit breaker-ը փոխանցեց հոսքը «ստացիոնար» endpoint, partner-health-ը հայտարարեց CSM; Կապույտ NTP-ից հետո 'պատուհանի 12 րոպե բոլոր վահանակներին։ Մոսկվան և երկակի միգրանտներ չկան։
16) Ռեզյումե
Հուսալի իրական time fid-ը «պարզապես webhuks» չէ։ Սա հստակ պայմանագրերով մի համակարգ է 'at-least-once տրանսպորտը + տրամաբանական exactly-once, սխեման-գրանցումը և տարբերակումը, MTSA/HMAC/JWT-ը և կոդավորման տարհանումը, backpressure/DLQ/replay-ը, ple-ի նվազեցումը։ Եթե հետևեք այս պրակտիկային, կստանաք արագ, ապահով և կանխատեսելի հոսք, որի վրա կարող եք վստահորեն կառուցել խաղախաղեր, հակաֆրոդ, CRM և վճարումներ։