Striming va oqim tahlillari
1) Maqsadi va qiymati
Striming konturi «uchishda» qarorlar qabul qilinishini ta’minlaydi:- Antifrod/AML: depozitlarning tuzilishini, velocity-hujumlarni, provayderlarning anomaliyalarini aniqlash.
- Responsible Gaming (RG): limitlardan oshib ketish, xatar-patternlar, o’z-o’zini istisno qilish.
- Operatsiyalar/SRE: SLA degradatsiyasi, xatolar portlashi, hodisalarning erta signallari.
- Mahsulot/marketing: shaxsiylashtirish voqealari, missiyalar/kvestlar, real-time segmentatsiyasi.
- near-real-time hisoboti: GGR/NGR vitrinalari, operatsion panellar.
Maqsadli tavsiflari: p95 end-to-end 0. 5-5 s, to’liqligi ≥ 99. 5%, boshqariladigan qiymat.
2) Etalon arxitekturasi
1. Ingest/Edge
`/events/batch` (HTTP/2/3), gRPC, OTel Collector.
Sxemalarni validatsiya qilish, anti-dublikatlar, geo-yo’naltirish.
2. Hodisa shini
Kafka/Redpanda (partiyalashtirish’user _ id/tenant/market’).
Retention 3-7 kun, siqish, «singan» xabarlar uchun DLQ/« karantin ».
3. Ishlov berish
Flink / Spark Structured Streaming / Beam.
Stateful-operatorlar, CEP, watermark, allowed lateness, deduplikatsiya.
Boyitish (Redis/Scylla/ClickHouse-Lookup), asinxron I/O taymautlar bilan.
4. Serving/operativ vitrinalar
ClickHouse/Pinot/Druid daqiqali/soniyali agregatsiya va dashbordlar uchun.
Modellarni skoring qilish uchun Feature Store (online).
Alert-topiklar → SOAR/tiketing/vebxuklar.
5. Uzoq muddatli saqlash (Lakehouse)
Bronze (raw), Silver (clean), Gold (serve) — Parquet + Delta/Iceberg/Hudi.
Replay/bektestlar, time-travel.
6. Kuzatish
Payplaynlar metrikasi, treysing (OTel), logi, lineage.
3) Sxemalar va kontraktlar
Schema-first: JSON/Euro/Protobuf + Registry,’schema _ version’.
Evolyutsiya: back-compatible - yangi nullable maydonlar; breaking - ’/v2’+ ikki marta nashr etish.
’event _ time’ (UTC),’event _ id’,’trace _ id’,’user. pseudo_id`, `market`, `source`.
4) Derazalar, watermarks va kechiktirilgan ma’lumotlar
Oynalar:- Tumbling (qatʼiy), Hopping (qoplangan), Session (harakatsizligi boʻyicha).
- Watermark: event-time bo’yicha «bilim» ostonasi; masalan, 2-5 daqiqa.
- Late data: tuzatishlar chiqarish, «late = true», kuchli orqada qolganda DLQ.
sql
SELECT user_id,
TUMBLE_START(event_time, INTERVAL '10' MINUTE) AS win_start,
COUNT() AS deposits_10m,
SUM(amount_base) AS sum_10m
FROM stream.payments
GROUP BY user_id, TUMBLE(event_time, INTERVAL '10' MINUTE);
5) Stateful-agregatsiyalar va CEP
Ulanish:’user _ id’,’device _ id’,’payment. account_id`.
Holati: shoshilinch summalar/hisoblagichlar, sessiyalar, dedup uchun bloom-filtrlar.
CEP-patternlar: strukturalash (<chegara, ≥ N marta, T oynasi uchun), device-switch, RG-fatigue.
python if deposits.count(last=10MIN) >= 3 and deposits.sum(last=10MIN) > THRESH and all(d.amount < REPORTING_THRESHOLD):
emit_alert("AML_STRUCTURING", user_id, window_snapshot())
6) Exactly-Once, tartib va idempotentlik
Shina: at-least-once + partiyalash kalitlari mahalliy tartibni taʼminlaydi.
Idempotentlik:’event _ id’+ dedup-steyt (TTL 24-72 soat).
Sink: tranzaksion kommitalar (2-phase) yoki upsert/merge-idempotentlik.
Outbox/Inbox: OLTP domen voqealarini kafolatlangan tarzda nashr etish.
7) Real vaqtda boyitish
Lookup: Redis/Scylla (RG-limitlar, KYC-maqom, BIN → MCC, IP → Geo/ASN).
Asinxron qo’ng’iroqlar: sanksiya/PER API bilan taymaut va fallback («unknown»).
FX/taymzona: summalarni normallashtirish va bozorning mahalliy vaqti (’fx _ source’,’tz’).
8) Serving va real-time vitrinalar
ClickHouse/Pinot/Druid: daqiqalar/soniyalar boʻyicha agregatsiyalar, materialized views.
Gold-stream: GGR/RG/AML, SLA tezkor jadvallari kechiktirish uchun ≤ 1-5 daqiqa.
API/GraphQL: dashbordlar va tashqi integratsiyalar uchun past latentlik.
sql
CREATE MATERIALIZED VIEW mv_ggr_1m
ENGINE = AggregatingMergeTree()
PARTITION BY toDate(event_time)
ORDER BY (toStartOfMinute(event_time), market, provider_id) AS
SELECT toStartOfMinute(event_time) AS ts_min,
market,
provider_id,
sumState(stake_base) AS s_stake,
sumState(payout_base) AS s_payout
FROM stream.game_events
GROUP BY ts_min, market, provider_id;
9) Kuzatuv va SLO
SLI/SLO (taxminlar):- p95 ingest → alert ≤ 2 s (tanqidiy), ≤ 5 s (qolgan).
- Completeness T ≥ 99. 5%.
- Sxemalar xatosi ≤ 0. 1%; ’trace _ id’ bilan sodir bo’lgan voqealar ulushi ≥ 98%.
- Strim-servisdan foydalanish imkoniyati ≥ 99. 9%.
- Partiyalar/topiklar bo’yicha laglar, operatorlarning busy time, holat miqdori.
- «Hodisa → qoida → keys» hunisi, «issiq» kalitlar xaritasi, late-ratio.
- Qiymati: cost/GB, cost/query, chekpoyntlar/repleylar qiymati.
10) Maxfiylik va komplayens
PII-minimallashtirish: ID taxallusi, maydonlarni kamuflyaj qilish, PAN/IBAN tokenizatsiyasi.
Ma’lumotlarning rezidentligi: mintaqaviy konveyerlar (EEA/UK/BR), alohida shifrlash kalitlari.
Huquqiy operatsiyalar: downstream vitrinalarida DSAR/RTBF, keys/hisobotlar uchun Legal Hold.
Audit: kirish daftarlari, echimlarning o’zgarmas arxivlari.
11) Iqtisodiyot va unumdorlik
Kalitlar va sharding: «issiq» kalitlardan qoching (salting/composite key).
Holat: oqilona TTL, snapshotlar, tyuning RocksDB/steyt orqa tomoni.
Shovqinli oqimlar uchun up-front reduce.
Sampling: masalan, nekritik metriklarda (tranzaksiya/komplayensda emas).
Chargeback: mavzular/joblar bo’yicha budjetlar, kvotalar va jamoalar bo’yicha allokatsiya.
12) Oqimli DQ (sifat)
Ingest-validatsiya (schema, enums, size), dedup’(event_id, source)’.
Oqimda: completeness/dup-rate/late-ratio, oynalarni boshqarish (ikki marta hisoblash yoʻq).
Reaksiya siyosati: critical → DLQ + alert; major/minor → tag va keyingi tozalash.
yaml stream: payments rules:
- name: schema_valid type: schema severity: critical
- name: currency_whitelist type: in_set column: currency set: [EUR,USD,GBP,TRY,BRL]
- name: dedup_window type: unique keys: [event_id]
window_minutes: 1440
13) Foydalanish xavfsizligi va release-nazorat
RBAC/ABAC: oqimlarni oʻqishda alohida rollar, qoidalar/modellarni oʻzgartirish.
Dual control: «2 kalit» orqali qoidalar va modellarni chiqarish.
Canary/A/B: qoidalar va modellarning qorong’u uchirilishi, precision/recall nazorati.
Sirlar: KMS/CMK, muntazam rotatsiya, jurnallarda sirlarni taqiqlash.
14) Jarayonlar va RACI
R (Responsible): Streaming Platform (infra/relizlar), Domain Analytics (qoidalar/fichlar), MLOps (skoring).
A (Accountable): Head of Data/Risk/Compliance.
C (Consulted): DPO/Legal (PII/retention), SRE (SLO/hodisalar), Arxitektura.
I (Informed): Mahsulot, Qo’llab-quvvatlash, Marketing, Moliya.
15) Joriy etish yo’l xaritasi
MVP (2-4 hafta):1. Kafka/Redpanda + ikkita tanqidiy topika (’payments’,’auth’).
2. Flink-job watermark, dedup va bitta CEP-qoidasi (AML yoki RG) bilan.
3. ClickHouse/Pinot vitrin 1-5 daqiqa, dashbordlar lag/completeness.
4. Hodisa kanali (vebxuki/Jira), asosiy SLO va alertlar.
2-bosqich (4-8 hafta):- Onlayn boyitish (Redis/Scylla), Feature Store, asinxron lookups.
- Qoidalarni kod sifatida boshqarish, kanareya relizlari, A/B.
- DQ oqimi, konveyerlarni hududlashtirish, DSAR/RTBF tartib-taomillari.
- Multi-region active-active, replay-simulyator «what-if», ostonalarni avtokalibrlash.
- To’laqonli Gold-stream vitrinalar (GGR/RG/AML), hisobot near-real-time.
- Qiymatli dashbordlar, chargeback, DR-mashqlar.
16) Misollar (parchalar)
Flink CEP — device switch:sql
MATCH_RECOGNIZE (
PARTITION BY user_id
ORDER BY event_time
MEASURES
FIRST(A.device_id) AS d1,
LAST(B.device_id) AS d2,
COUNT() AS cnt
PATTERN (A B+)
DEFINE
B AS B.device_id <> PREV(device_id) AND B.ip_asn <> PREV(ip_asn)
) MR
Kafka Streams - idempotent filtr:
java if (seenStore.putIfAbsent(eventId, now()) == null) {
context.forward(event);
}
17) Sotishdan oldingi chek-varaq
- Registry, back-compat testlaridagi sxemalar va shartnomalar yashil rangda.
- watermark/allowed lateness, dedup va DLQ kiritilgan.
- SLO va alertlar (lag/late/dup/state size) moslashtirilgan.
- Keshlar va taymautlar bilan boyitish, fallback «unknown».
- RBAC/dual-control qoidalari/modellari, barcha o’zgarishlar ro’yxatga olinadi.
- Qoidalar, vitrinalar va runbook’va replay/qaytarish hujjatlari.
18) Tez - tez xatolar va ulardan qanday qochish mumkin
Ignor event-time: watermarkssiz metriklar «suzadi».
Dedup yo’q: yolg’on alerta va ikki tomonlama hisob.
Issiq kalitlar: notekis partiyalar → salting/resharding.
Issiq yoʻldagi sinxron tashqi API: faqat async + kesh.
Boshqarilmaydigan qiymat: oldindan agregatsiya qilish, TTL holati, kvotalar, cost-dashbordlar.
Simulyator yo’qligi: «replay» bo’lmagan chiqishlar regressiyaga olib keladi.
19) Lugʻat (qisqacha)
CEP - Complex Event Processing.
Watermark - event-time boʻyicha oynalarning tayyorlik chegarasi.
Allowed Lateness - kech voqealarga ruxsat berish.
Stateful Operator - saqlangan holatga ega operator.
Feature Store - belgilarning kelishilgan servingi (online/offline).
20) Jami
Striming va oqim tahlillari - bu boshqariladigan tizim: kontraktlar, derazalar va watermarks, stateful-logika va CEP, boyitish va real-time vitrinalar, SLO va kuzatish qobiliyati, maxfiylik va nazorat ostidagi qiymat. Ushbu amaliyotlar asosida platforma ishonchli xavf detektorlari, tezkor panellar va bashorat qilinadigan latentlik va xarajatlar bilan shaxsiylashtiriladi.