Event-Streaming և real-time տվյալներ
(Բաժին ՝ Տեխնոլոգիաներ և ենթակառուցվածքներ)
Live ռեզյումե
Event-Streaming-ը նրանց հայտնագործման պահին իրադարձությունների վերամշակումն ու առաքումն է։ IGaming-ի համար դա նշանակում է ակնթարթային արձագանք տոկոսադրույքների, դեպոզիտների, հակաֆրոդ ազդանշանների, պատասխանատու խաղի սահմանափակումների, մրցույթների և անձնական օֆերի վրա։ Հիմնական աղյուսները ՝ իրադարձությունների անվադողերը (Kafka/Pulsar), հոսքի վերամշակման շարժիչը (Flink/ksqlDB/Spark Structured Streaming), CDC գործարքային BD (Debezae), Feature Store-ը առցանց Ml-ի և real-time վերլուծություն (նյութականացված ներկայացումներ, OLAP)։
Որտե՞ ղ է դա քննադատական iGaming-ում
Antifrod & ռիսկը 'գործարքների արագացումը <100-300 մզ, վարքագծային պաթոգենների հարաբերակցությունը, արգելափակումը և էսկալացիան։
Պատասխանատու խաղը 'սահմանների վերահսկումը, արագությունը, անոմալ վարքագիծը' ալտերտերը և իրական ժամանակում մեքենայի սահմանափակումները։
Վճարումները 'ստատիկ օդեր, webhooks PSA, smart-retry, հավասարակշռությունների կանխատեսում, SLA «time-to-wallet»։
Խաղային լիմենտներ 'մրցույթների առաջնորդների հաշվարկը (sliding պատուհաններ), խաղային փուլերը, CRM/մարքեթինգի համար ժապավենի իրական-ժամանակը։
Նիշալիզացիան 'առցանց ֆիչին (RFM, propertity) մեջբերում է ձգողական արշավները, push/email վայրկյանում։
Հիբրիդային վերլուծություն ՝ p95/p99 latency, ձագերի քայլերի փոխակերպումը, պլատֆորմի health ազդանշանները։
Ճարտարապետական մոդելներ
Lambda vs Kappa
Lambda: batch (MSH/ETL) + streaming (1934)։ Գումարած 'ճկունություն և «էժան» բախ։ մինուս կրկնակի տրամաբանություն է։
Kappa 'ամեն ինչ ամսագրի հոսքն է (Kafka)։ Գումարած 'մեկ կոդ, իրադարձությունների ռեգա; մինուսը ենթակառուցվածքի պահանջն է։
Պրակտիկա 'կրիտիկական real-time կոնտուրների համար' Kappa; / ML ուսուցման համար ավելացված batch-2019 է։
Իրադարձությունների փոխակրիչ (հանրաքվե)
1. Արտադրողները 'ծառայության/վճարման ծառայությունները հրապարակում են հիբրիդային իրադարձություններ (www.box.Kafka)։
2. Շինա 'Kafka-ը բեկորների խմբաքանակներով («player _ id», «bet _ id»)։
3. CDC: Debez.ru-ն ձգում է փոփոխությունները OLTP (հավասարակշռություններ, լիմիտներ) հոսանքի մեջ։
4. Հոսքի վերամշակում ՝ Flink/ksqlDB/Spark - միավորումներ, պատուհաններ, CEP, join։
5. Պրոյեկտներ ՝ նյութականացված սեղաններ (Kafka Streams state/ksqlDB tables/Redis), OLAP (ClickHouse/Druid)։
6. Սպառողները ՝ հակաֆրոդ, CRM, ծանուցումներ, dashbords, stuger workflow։
Տվյալների և սխեմայի պայմանագրերը
Avro/Disobuf + Schema Registry: Խիստ պայմանագրեր, backward-compatible 2019։
Տարբերակումը '"domain. event. v{n}`; արգելել կոտրող փոփոխությունները։
PII 'թունավորում/կոդավորում, դիմակավորում, purpose limitation (GDPR)։
Առաքման իմաստները և գաղափարախոսությունը
At-least-once-de-facto-ը (հնարավոր է կրկնօրինակներ) պարտական է idempotent-handling-ին։
Exactly-once-ում 'Kafka + EOS գործարքային վաճառողները Flink/Streams-ում; ավելի թանկ, օգտագործեք կետային (գումար/հավասարակշռություն)։
Dibox + CDC 'BD-ի ճշմարտության միակ աղբյուրը, պաշտպանությունը կրկնակի գրառումից։
Dedup: բանալին («idempotency _ key»), TTL-ի, ups.ru/merge-ի հետ դեդուպլիզացիայի լուծումը։
Ժամանակավոր պատուհանները և «ուշ» տվյալները
Պատուհաններ
Tumbling-ը ֆիքսված արցունքներ են (օրինակ, մեկ րոպե 108)։
Hopping-ը քայլ առ քայլ սայթաքող է (օրինակ, 5 րոպե պատուհան 1 րոպե)։
Session-ը ինքնաբերաբար (խաղացողի նստաշրջան)։
Watermarks: event-time-ի մշակում, «ուշ» (lateness), DLQ/side-put։
CEP (Complex Event Processing) '«A հետո B 3 րոպե», «N իրադարձություններ M վայրկյանում», «/փոխհատուցում »։
Վիճակը և մեծացումը
Stateful օպերատորները 'ագրեգացիան/ջոինները պահում են վիճակը (Rocult DB state backend)։
Changelog top.ru: 108 և state վերականգնումը։
Backpressure: Արագության կարգավորումը, sink/wwww.orld համակարգերը։
Մրցույթի բաշխումը 'տաք բանալիներ (heavy hitters) www.key-salting, skew mitigation։
Windows և SLO
SLO հոսքը ՝ p99 end-to-end latency (օրինակ ՝ 242 s), թույլատրելի consumer lag, հասանելիությունը 3699։ 9%.
Մետրիկները ՝ throughput, lag կուսակցություններով, watermark delay, drop/lation ratio, backpressure, time, GC/JVM։
Alerta: DLQ-ի աճը, watermark-ը, EOS chekpoints-ի ձախողումները, առցանց/ofline-ը։
Treising: Կորեացիոն ID («trace _ id», «բանաձև _ id») երկարաժամկետ հոսքի միջոցով։
Անվտանգություն և ընկերակցություն
TFC/MTSA, ACL/RBAC տոպիկի/աղյուսակի վրա, զգայուն վճարումների հատվածը (վճարումներ/KUS)։
PII-ի կոդավորումը տրանզիտում/n-ում; գաղտնիքները Vox/SOPS-ում։
Euretention & entality: Պահպանումը տարածաշրջաններով (ԵՄ, Թուրքիա, LatAm), պոլիս։
Աուդիտ ՝ ով է հրատարակել/կարդալ, վերարտադրություն։
Բարձր հասանելիություն և DR
Kafka: `replication. factor ≥ 3`, `min. insync. replicas ', «acks = all», cross-հիբրիդային կրկնօրինակումը (MM2) DR-ի համար։
Flink/Streams: compoint + savepoint վերահսկվող ածխաջրերի համար; HA-JobManager.
OLAP 'հատվածների կրկնօրինակումը, read replicas; failover թեստեր (game day)։
Արտադրողականություն և թյունինգ
Վաճառողները 'բատչինգը ("linger. ms`, `batch. size '), (lz4/zstd)։
Կոնսուումերները 'ճիշտ' max։ poll. interval ', becofe կուսակցության դադար։
Կուսակցությունը 'կուսակցության հաշիվը TPS և զուգահեռ։
State: RocksDB options (block cache/write buffer), NVMe/IOPS, pinning.
Network: 10/25G, TCP-tuning, n + 1 sink հարցումներ։
Մոսկվա ՝ հիմնական տեխնոլոգիաներ
Շինա 'Apache Kafka (այլընտրանքներ ՝ Pulsar, Redpanda)։
Հոսքային բուժումը 'Apache Flink, Kafka Streams, ksqlDB, Spark Structured Streaming։
CDC: Debez.ru (MySQL/Postgres), Disbox-կոնեկտորները։
Պրոյեկտների իրականացումը ՝ ksqlDB tables, Kafka Streams state store, Redis ցածր լատենտության համար, ClickHouse/Diuid/Pinot OLAP-ի համար։
Ֆիչեստորը ՝ Feast-ը կամ սեփական 'առցանց (Redis) + օֆլինը (Parquet/BigQuery), կոնսիստենտության երաշխավորը։
Դիզայնի արտոնագրերը
Medbox-ը Kafka-ն է 'յուրաքանչյուր հիբրիդային իրադարձություն BD գործարքից։
Սագի 'փոխհատուցում իրադարձությունների միջոցով։ նվագախումբը սթրիմ է։
Fan-out 'մի իրադարձություն է հակաֆրոդ, CRM, վերլուծություն, նոտացիա։
Materialized Views: առաջնորդներ, հավասարակշռություն, լիմիտներ 'աղյուսակների տեսքով, որոնք նորարարվում են սթրիմից։
Reprocessing 'տոպիկների վերարտադրումը ագրեգատների/ռետրո վերլուծաբանների փոխպատվաստման համար։
Օրինակներ (հասկացություններ)
ksqlDB 'մրցույթի առաջնորդներ (սահուն պատուհան)
sql
CREATE STREAM bets_src (
bet_id VARCHAR KEY,
player_id VARCHAR,
amount DOUBLE,
ts BIGINT
) WITH (KAFKA_TOPIC='bets. placed. v1', VALUE_FORMAT='AVRO', TIMESTAMP='ts');
CREATE TABLE leaderboard AS
SELECT player_id,
SUM(amount) AS total_stake,
WINDOWSTART AS win_start,
WINDOWEND AS win_end
FROM bets_src
WINDOW HOPPING (SIZE 10 MINUTES, ADVANCE BY 1 MINUTE)
GROUP BY player_id
EMIT CHANGES;
Flink (կեղծ) 'հակաֆրոդ սկորինգ c late-events
java stream
.assignTimestampsAndWatermarks(WatermarkStrategy. forBoundedOutOfOrderness(Duration. ofSeconds(10)))
.keyBy(e -> e. playerId)
.window(SlidingEventTimeWindows. of(Time. minutes(5), Time. minutes(1)))
.aggregate(scoreFunction, processWindow)
.sideOutputLateData(lateTag)
.addSink(riskTopic);
Հոսքերի որակի փորձարկումը
Corract-թեստեր սխեմաների և էվոլյուցիայի (Schema Registry)։
Բեռները ՝ TPS, p99, վարքագիծը sink քայքայման ժամանակ։
Failure/chaos 'բրոկերների/հանգույցների անկում, ցանցային ուշացումներ, split-brain։
Deterministic replays: Topiks-ի կրկնվող պրոթոնը նույն արդյունքն է։
Canary-հոսքերը 'հետաձգման և ամբողջականության ստուգման ստանդարտ։
Ներդրման թուղթ
1. Որոշեք SLO (p99 E2E 35X, lag no Y, հասանելիությունը 4Z)։
2. Ստանդարտացնել սխեմաները և բանալիները (player _ id/bet _ id)։
3. Ընտրել ճարտարապետությունը (Kappa քննադատական կոնտուրների համար)։
4. Տեղադրել wwww.box + CDC-ը և մեկուսացնել PII-ը։
5. Տեղադրել պատուհաններ, watermark, late-policy և DLQ/side puts։
6. Ներառել EOS/idempotention դրամական ուղիների վրա։
7. Ներմուծել արտադրանքներ և ալերտներ lag, watermark, DLQ-ում։
8. Ապահովել HA/DR և reprocessing։
9. Տեղադրել Feature Store-ը և առցանց/օֆլինի համաժամացումը։
10. Անցկացնել game-day 'ձախողումներ և վերականգնում։
Antipatterns
Event-time-ի խառնուրդը և processing-time-ը առանց գիտակցված քաղաքականության։
Schema governae-ի բացակայությունը բացատրում է «կոտրող» օրինակները։
Անտեսել late-ը և «տաք բջիջները»։
Replay ռազմավարության և տոպիկների տարբերակման բացակայությունը։
Տոկոսադրույքներ/վճարումներ առանց idempotency և EOS։
Արդյունքները
Real-time striming-ը ոչ թե «մեկ այլ տեղափոխություն» է, այլ մտածողության մեթոդը 'հիբրիդային իրադարձություններ, հստակ SLO, տվյալների պայմանագրերը, պատուհանները և վիճակը, անվտանգությունը և դիտարկումը։ iGaming-ի համար կայուն հավաքածու 'Kafka + Flink/ksqlDB + Debez.ru + Materialized Views + Feature Store։ Այն տալիս է միլիոնավոր արձագանքներ, առցանց/օֆլայնային վերլուծաբաններ և վերահսկվող բարդություն բեռի աճի ժամանակ։