GH GambleHub

Ջրհեղեղի վերամշակում

Ի՞ նչ է հոսքի վերամշակում

Հոսքային բուժումը շարունակական արձագանք է իրադարձությունների անվերջ հաջորդականությունների վրա (գործարքների, տեսահոլովակների, վճարումների, հեռաչափության), նվազագույն ուշացումով և պետությունների ճիշտ ուղղություններով։ Ի տարբերություն մարտից, որտեղ «վերցնում ենք բոլոր կուտակված ժամանակահատվածները», հոսքը մշակում է տվյալները հասանելիությամբ, աջակցում է վիճակը և հաշվի է առնում իրադարձության ժամանակը։

Հիմնական հասկացությունները

Իրադարձությունը (event) անփոփոխ փաստ է '«event _ time» և եզակի «event _ id»։

Իրադարձության ժամանակը (event time) vs-ը (processing Time) առաջինն է գալիս աղբյուրից, երկրորդը 'երբ օպերատորը իսկապես տեսավ իրադարձությունը։

Պատուհանները (windows) ժամանակի իրադարձությունների խումբ են

Tumbling (չբացահայտված), Hopping/Sliding (արգելափակումով), Session (բացթողումներ)։

Հիբրիդային նշանները (watermarks) գնահատում են, որ «իրադարձությունները մինչև T պահը արդեն եկել են», որը թույլ է տալիս փակել պատուհանները և սահմանափակել ուշացած տվյալների սպասումը։

Վճարող տվյալները (lateness) - իրադարձություններ '«event _ time» -ի հետ ավելի քիչ, քան ներկայիս watermark; հաճախ օգտագործվում են վերամշակման կանոնները։

Վիճակը (state) տեղական սեղաններ/ռուսական օպերատորներ (keyed state) ագրեգատների, join's, dedupliation համար։

Backpressure-ը ճնշում է, երբ ավելանում է downstream աշխատանքային կարողությունը։ կառավարվում է ձեռնարկությունների և բուֆերների կողմից։

Ճարտարապետական հիմքերը

1. Աղբյուրը (source) 'իրադարձությունների բրոքեր (Kafka/NATS/Pulsar), CDC-ից BD, գծեր, ֆայլեր/log-կոլեկտորներ։

2. Հոսքի շարժիչը 'հաշվարկում է պատուհանները, ագրեգատները, ջոյները, փամփուշտները (CEP), կառավարում է վիճակը և լուծումը kpoint' ami։

3. Ընդունիչ (sink) ՝ OLTP/OLAP BD, որոնման շարժիչ, քեշը, կացինները, որոնք նախատեսված են վիտրինի համար/2019։

4. Սխեմաների իրականացումը 'payload և international էվոլյուցիայի վերահսկումը։

5. Դիտարկումը 'չափումներ, թրեյսինգ, լոգներ, տախտակամածներ և ստացիոնար նշաններ։

Ժամանակի և կարգի սեմանտիկան

Միշտ նախընտրեք event time: Սա միակ ինվարանտն է հետաձգման և ընդհատումների ժամանակ։

Իրադարձությունները կարող են գալ կարգից դուրս։ կարգը երաշխավորված է միայն կուսակցության ստեղում։

Watermarks թույլ են տալիս

փակել պատուհանները և նվազեցնել արդյունքները։

սահմանափակել «ինչքա՞ ն ենք սպասում» ազդանշանային իրադարձությունները («allowed _ lateness»)։

Ուշացած իրադարձությունների համար օգտագործեք retractions/upser.ru 'միավորների վերահաշվարկ և ուղղիչ իրադարձություններ։

Վիճակը և կայունությունը

Keyed state: ագրեգատների տվյալները (գումարներ, հաշվիչներ, դեդուպի կառուցվածքներ) շարդինգը բաշխվում է բեկորներով։

Nokpoint/Savepoint: Վերականգնման վիճակի պարբերական նկարները։ savepoint-ը կոդի տարբերակի կոդավորման համար կառավարվող նկար է։

Exactly-once-ի էֆեկտը հասնում է

գործարքային «կարդացի-վերամշակել» (commit sink + ընթերցանության դիրք);

idotental sinks (ups.ru/merge) + dedup աղյուսակներ;

ագրեգատների տարբերակը (optimistic concurrency)։

Պատուհաններ, ագրեգացիաներ, join 'a

Պատուհաններ

Tumbling: Պարզ պարբերական հաշվետվություններ (րոպե, ժամ)։

Hopping/Sliding: «սայթաքող» մետրիկները (5 րոպե տևողությամբ 1 րոպե)։

Session 'բնական է օգտագործողների նստաշրջանների և հակաֆրոդի համար։

Aggregations: sum/count/avg/approx-distinct (HyperLogLog), percentiles (TDigest/CKMS).

Stream-Stream join-ը պահանջում է երկու կողմերի բուֆերիզացիա բանալիով և ժամանակով, հարգեք «allowed _ skew»։

Stream-Table Join (KTable) 'գրողի կամ ներկա վիճակի միացումը (օրինակ ՝ «օգտագործողի ակտիվ սահմանները»)։

ազդանշանային և կրկնվող տվյալների հետ աշխատելը

Deduplication: event _ id 'կամ' (wwww.er _ id, sequence); պահեք «տեսանելի» բանալիները TTL-ից նկարի պատուհանները։

Late events: Թույլ տվեք պատուհանների վերամշակումը «X» ընթացքում փակվելուց հետո (retractions/upser.ru)։

Կեղծ կրկնօրինակներ 'ուղղեք ագրեգատները և ամրագրեք «ALREADY _ APIED» լոգարաններում։

Մեծացումը և արտադրողականությունը

Շարդինգը բանալին 'տալիս է զուգահեռ։ հետևեք «տաք» բաներին։

Backpressure: Սահմանափակեք զուգահեռությունը, օգտագործեք մարտեր և ագրեսիա հրապարակելիս։

Հիբրիդային նշաններ, շատ ագրեսիվ, կոշտ watermarks նվազեցնում են սպասումը, բայց բարձրացնում են late-2019 մասնաբաժինը։

Վիճակը 'ընտրեք ձևաչափը (Rocult DB/state store/հիշողության մեջ) հաշվի առնելով հասանելիության չափն ու պաթոգենները։ մաքրեք TTL-ը։

Ավտոմոբիլացումը 'լագա, CPU, state չափսը, GC ժամանակը։

Մոսկվան և վերագործարկումը

Idempotent sink-ը կամ գործարքային համայնքը օֆսետի ամրագրման հետ ճիշտ հիմքն է։

Վերագործարկումից հետո կրկնվող վերամշակում։ էֆեկտը պետք է մնա «հենց մեկ անգամ»։

DLQ/parking lot: ուղարկեք խնդրահարույց գրառումներ առանձին հոսքի պատճառներով։ ապահովեք վերամշակումը։

Դիտարկումը (ինչ չափել)

Lag-ը աղբյուրներով (ժամանակ և հաղորդագրությամբ)։

Watermark/current event Time-ը և late-իրադարձությունների մասը։

Throughput/latency օպերատորներ, p95/p99 end-to-end։

State size/rocksdb I/O, www.kpoint 's/տևողությունը։

DLQ rate, deduplication/retrav տոկոսը։

CPU/GC/heap, դադարի ժամանակը։

Անվտանգություն և ընկերակցություն

Տվյալների դասակարգումը 'PII/PCI փակցրեք սխեմաներում, պահեք նվազագույն, ծածկագրեք state և կճեպներ։

Corporl: անհատական ACL-ը տեղանունների/աղյուսակի վրա և sinks-ում։

Ռենտենցիա. Համաձայն են իրավաբանական ինստիտուտների հետ (GDPR/մոռացման իրավունք)։

Աուդիտ 'լոգո _ event _ id', «trace _ id», արդյունքը ՝ «APPIED/ALREADY _ APPIED/RETRIED»։

Ներդրման արտոնագրեր

1. CDC-ն բացատրում է տիրույթի իրադարձությունների նորմալացումը. Մի հեռարձակել BD-ի հում փոփոխությունները, դիմեք հասկանալի բիզնես փաստերին։

2. Disbox-ը արտադրողների մոտ 'գործարքի փաստը + իրադարձությունը մեկ BD գործարքում է։

3. Divs Enriched: նվազագույն payload կրիտիկական հոսքում, հարստացումը ասինխրոնո է։

4. Replay-բարեկամություն 'պրոյեկցիաները/վիտրինները պետք է վերածվեն հատակին։

5. Idempotency by design: operation/event key, upsoft-սխեմաները, ագրեգատների տարբերակները։

Փորձարկումներ

Unit/Property-based 'ագրեգատների և վերափոխումների ինվարանտներ։

Stream tes.ru: Ֆիքսված իրադարձությունների հոսքը out-of-order-ով և կրկնօրինակիչներով բացատրվում է պատուհանների և պապի ստուգումը։

Golden windows: Ստանդարտ պատուհաններ/ագրեգատներ և ընդունելի ուշ շարժիչներ։

Fox-inject-ը '«գրեց էֆեկտը» և «օֆսեթը»։

Replay tes.ru: վիտրինի փոխանակումը լոգոյի սկզբից = ներկա վիճակ։

Արժեքը և օպտիմիզացումը

Պատուհանները և watermark ազդում են/ռեսուրսների վրա, որքան ավելի երկար է պատուհանը և ավելի շատ «allowed _ lateness», այնքան ավելի շատ state։

Ֆորումը և թեմը 'հավասարակշռեք CPU/ցանցը։

Batching ելքի վրա 'ավելի քիչ ցանցային զանգեր և գործարքներ։

Ֆիլտրը վաղ է («pushdown») 'հեռացրեք ավելիին հնարավորինս մոտ աղբյուրին։

Antipatterny

Processing Time-ում, որտեղ անհրաժեշտ է event Time-ը սխալ վերլուծություն է։

Idempotenty բացակայությունը sink-ում կրկնակի ազդեցություն է ունենում ռեստարտների վրա։

Համաշխարհային «մեգա-բանալիներ» 'մի տաք բաժին կոտրում է զուգահեռականությունը։

Հում CDC-ն որպես հանրային իրադարձություններ 'BD սխեմաների արտահոսք, էվոլյուցիայի ժամանակ փխրունություն։

Ոչ DLQ: «թունավոր» հաղորդագրությունները արգելափակում են ամբողջ փոխակրիչը։

Ֆիքսված կոշտ ուշացում watermark-ի փոխարեն, կամ հավիտենական սպասումը կամ տվյալների կորուստը։

Օրինակների օրինակներ

Վճարումներ/ֆինանսներ

Հոսքը 'pay.ru: «, պատուհանները հակաֆրոդի համար (session + CEP), dedup' operation _ id»։

Exactly-once էֆեկտը հաշվապահական ledger (ups.ru + տարբերակը) բաժանելիս։

Մարքեթինգը/գովազդը

Sliding պատուհանը CTR/կոնվերսիա, Join clics և ցուցադրություններ '«www.Drt», բիդինգի համար։

iGaming/առցանց ծառայություններ

Real-taim հավասարակշռություն/limits, առաքելություններ/aviks (session պատուհան), հակաֆրոդ և նախազգուշացում։

Մինի ձևանմուշ (կեղծ)

Պատուհանը ստացիոնար նշաններով և late-նորարարություններով

pseudo stream
.withEventTime(tsExtractor)
.withWatermark(maxAllowedLag=2m)
.window(TUMBLING, size=1m, allowedLateness=30s)
.keyBy(user_id)
.aggregate(sum, retractions=enable)
.sink (upsert_table )//idempotent upsert by (user_id, window_start)

Գործարքային sink 'օֆսետի ամրագրմամբ

pseudo begin tx upsert target_table using event, key=(k)
update consumer_offsets set pos=:pos where consumer=:c commit

Chek-Lister վաճառվել է

  • Որոշված է event time և ռազմավարություն watermark; ընտրվել են պատուհաններ և «allowed _ lateness»։
  • Idempotent sink կամ գործարքային համայնքը օֆսետի հետ։
  • Սխեմաները և ռեժիմները ներառված են. ադիտիվ էվոլյուցիա։
  • Metriki: lag, watermark, p95/p99, DLQ, state չափսը, տևողությունը - kpoint։
  • Թեստեր ՝ out-of-order, կրկնօրինակներ, վերագործարկումներ, replay։
  • PII/retenties-ի քաղաքականությունը state-ի և դիպուկահարների համար։
  • Մեծացման և ռազմավարության պլանը։
  • Պատուհանների և օպտիմալացման ստանդարտները (late prodates)։

FAQ

Event time-ը պարտական է։

Եթե կարևոր է մետրի ճկունությունը և ներդաշնակությունը, այո։ Processing Time-ը հարմար է տեխնոլոգիական/մոնիտորինգի համար, բայց աղավաղում է վերլուծությունը։

Արդյո՞ ք անհրաժեշտ է exactly-once։

Կետն այն է, որ կրիտիկական էֆեկտների համար։ Հաճախ բավական է at-least-once + idempotent sink։

Ինչպե՞ ս ընտրել պատուհանները։

Հեռացեք բիզնես SLA-ից '«վերջին հինգ րոպեի ընթացքում» www.hopping, «օգտագործողի նստաշրջաններ» www.session, «րոպեանոց հաշվետվություններ» www.tumbling-ից։

Ի՞ նչ անել ուշ տվյալների հետ։

Թույլ տալ սահմանափակ «allowed _ lateness» և մեղմացնել (ups.ru/retract)։ Հաճախորդի վիտրինը պետք է կարողանա նորարարվել։

Արդյունքը

Ջրհեղեղի վերամշակումը ոչ միայն ցածր ձգձգում է, այլև ժամանակի կարգապահություն, վիճակ և կայունություն։ Event Time, պատուհանների և ստացիոնար նշանների ճիշտ ընտրությունը, գումարած idempotent էֆեկտները, դիտարկումը և թեստերը փոխակրիչը դարձնում են հուսալի, վերարտադրված և տնտեսական, և բիզնեսին տալիս են «այստեղ և հիմա» լուծումներ, և ոչ թե «գիշերվա ընթացքում»։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։