GH GambleHub

Գործարքային մեսեգինգը

Գործարքային մեսեգինգը ճարտարապետական տեխնիկայի մի շարք է, որոնք ապահովում են համաձայնություն կարգավիճակի տեղական փոփոխությունների (BD/kash) և հաղորդագրությունների միջև։ Նպատակը '«վիճակը գրանցվում է ռուսական հաղորդագրությունը չի կորցնում և չի երկարաձգվում» ձախողումների, հոսանքների, մասշտաբների և մուլտֆիլմի-տենանտիզմի ժամանակ։

1) Առաքման սեմանտիկան

At-most-once: արագ և էժան, հնարավոր կորուստներ, դուբլներ չկան։

At-leport-once: չի կորցնում հաղորդագրությունները, հնարավոր են դուբլներ, որոնք պահանջում են կուռք։

(արդյունավետ) Exactly-once: Բիզնես էֆեկտների համար տեսանելի դուբլներ չկան, ձեռք են բերվում տեխնիկայի համադրություն (www.box/inbox, deducemer/consumer, dedup)։

2) Ինչո՞ ւ է «երկու» վտանգավոր

Միամիտ տրամաբանությունը «նախ գրենք BD-ում, ապա կուղարկենք անվադողեր» (կամ հակառակը) փչանում է քայլերի միջև ընկնելիս, տվյալները գրված են, իսկ իրադարձությունը կորած է։ թե՞ իրադարձությունը հեռացավ, բայց տվյալներ չկան։ Գործարքային մեսեգինգը վերացնում է այս բացը։

3) Հիմնական փամփուշտները

3. 1 Nobox (արտադրողը)

Մեկ տեղական գործարքում մենք գրում ենք բիզնես փոփոխություն և տող '«www.box» աղյուսակում։ առանձին pabliker կարդում է wwww.box-ը և հրապարակում է brocker-ը և backoff-ը։ Կորուստները բացառված են. dugus idempotent սպառողների մոտ։

3. 2 Inbox/Idempotent Consumer (սպառողը)

Մինչ էֆեկտը կատարելը, կոնսուումերը դարձնում է "INSSA" 'inbox (consumer, event _ id) "որպես առաջնային բանալին։ Բանալի հակամարտությունը = իրադարձությունը արդեն բուժվել է։ Այսպիսով ստացվում է «արդյունավետ exactly-once»։

3. 3 Read-Process-Write գործարքի հետ

Լոգ-կողմնորոշված անվադողերի համար, կոնսուումերը կարդում է, նույն գործարքում գրանցում է բիզնես փոփոխություն և «անցնող օֆսեթ»։ Կոմունիտից հետո բրոքերը կարծում է, որ հաղորդագրությունները սպառված են։ Սա վերացնում է "կարդացածը" կրկնեց "առանց էֆեկտների։

3. 4 TSS/Sagi 'vervise էֆեկտների համար

Երբ անհրաժեշտ է համակարգված բազմաշերտ գործընթաց, օգտագործում ենք TCC կամ sagi։ հաղորդագրությունները թիմերի/իրադարձությունների տեղափոխումն են, իսկ գործարքը 'քայլերի և փոխհատուցումների մակարդակում։

4) Idempotent Dowsers-ը և վահանակները

Վաճառողը 'կայուն «բանաձև »/« idempoty _ key», նույն բանալին կրկնվող ուղարկումը չի ստեղծում նոր ազդեցություններ բաժանորդների մոտ։ աջակցեք հաջորդականությանը (sequence) բանալին։

Կոնսումեր ՝ «inbox» + բիզնես գաղափարախոսություն (ups.ru/merge, վերջին տարբերակի ստուգում/2019)։

5) Կարգը և պատճառները

Նվագարկեք բիզնես բանալին (օրինակ ՝ «aggregate _ id», «tenrone _ id»), որպեսզի մեկ օբյեկտի իրադարձությունները գան։

Կուսակցության ներսում պահպանեք հաջորդական համարները/ժամանակավոր կոմպոզիցիաները։ DLQ-ի ռեպրեսիայի ժամանակ հետևեք «բանալին և հետևողականորեն»։

Եթե համաշխարհային կարգը կրիտիկական չէ, տրամադրեք տեղական կարգը բանալիով և ամրագրեք տիրույթի ինվարանտները։

6) Օֆսետները և էֆեկտների ամրագրումը

A տարբերակը '«Offset BD»

Գրեք «վերջին մշակված օֆսեթը (part.ru, www.set)» նույն գործարքում, որտեղ փոխում եք հիբրիդային տվյալները։ Վերականգնելիս շարունակեք հաջորդ օֆսեթից 'խուսափելով երկրորդ էֆեկտից։

B տարբերակը '«Բրոքերի գործարքը»

Որոշ բրոկերներ աջակցում են հաղորդագրությունների և օֆսեթների ատոմային ձայնագրմանը մեկ գործարքի ընթացքում։ Օգտագործեք, եթե հասանելի եք, բայց միշտ լրացրեք սպառողի վրա դիմպտոմենտը։

7) Retrai, backoff, DLQ, DLQ

Կրկնել միայն ռետրաբլ սխալները (թայմաուտներ, 5xx), էքսպոնենցիալ backoff և ջիթեր։

Non-retraible (schema/validation) - անմիջապես DLQ-ում մետատվյալների հետ (tenault, key, set, պատճառը)։

Redraiv DLQ-ից տվեք (batch, ratch limit), ստուգեք սխեման խոհարարի առջև, պահեք կարգը։

8) Multi-tenanty-ը և տարածաշրջանները

Միացրեք «tenrone _ id», «plan», «region» -ը մետատվական հաղորդագրությունների և կուսակցության բանալիների մեջ։

Per-tenault fairness: Սահմանափակեք հրապարակումը/վերամշակումը, որպեսզի «աղմկոտ» հաճախորդը չթողնի բյուջեն մյուսներից։

Residency: Պահեք հաղորդագրությունները և www.box-ը նույն տարածաշրջանում, ինչպես հիբրիդային տվյալները։ միջտարածաշրջանային վերարտադրումները ասինխրոն ագրեգատներ են։

9) Դիտողությունն ու աուդիտը

Թրեյսինգը 'հարաբերակցությունը' event _ id '/« aggregate _ id »/« saga _ id »,« read process write/commit »։

Մետրիկները ՝ հրապարակման/մշակման լագը (p95/p99), հաջողության մասը, DLQ-rate-ը, ռեդրեյվի հաջողությունը, «կրկնօրինակները ճնշված են»։

Լոգի 'կարճ հաջողության։ մանրամասն սխալների (պատճառը, փորձը, բանալին, օֆսեթը)։

Աուդիտ 'Ո՞ վ է ռեդվիրա/նետել, թե ինչ բեռ և ինչ արդյունքով։

10) Անվտանգություն և համապատասխանություն

Microsoft PII payload; դիմեք DLQ/logs-ին տեղափոխվելիս։

Ստորագրեք/ծածկագրեք հաղորդագրությունները արտաքին անվադողերի համար։ օգտագործեք mTFC ծառայությունների միջև։

Վերահսկեք պահեստավորման ժամկետը և «մոռացման իրավունքը» per tenault/region-ը։

11) Տիպիկ սխեմաներ

1. Ծառայություն-աղբյուրը (write-side)

Տեղական գործարքը '+ ww.box-ի ստացիոնար ձայնագրությունը։

Պաբլիշեր 'մարտեր, «SKIP SYKED», backoff, per tenae լիմիթներ։

Line 'now www.occurred _ at "։

2. Սպառողի ծառայություն (read-side)

Բատչայի կարդալը բացատրում է «INSULTINBOX (consumer, event _ id)» փորձարկումը, երբ հաջողվում ենք էֆեկտը։

Նույն գործարքում մենք արձանագրում ենք «անցնող օֆսեթ» (A տարբերակը) կամ ապավինում ենք բրոքերի գործարքին (B տարբերակը)։

Սխալների վրա 'retray կամ DLQ քաղաքականությամբ։

3. Պրոյեկտիա/նյութականացված տեսակ

Միայն idempotent apdeyts (ups.ru), dedup կոմպակտ բանալիներ, ժամանակավոր գումարների պարբերական իջեցում։

12) Միգրացիոն ձևանմուշները (օրինակ)

yaml producer:
idempotency_key: event_id partition_key: "{tenant_id}:{aggregate_id}"
retry:
max_attempts: 8 initial_ms: 200 max_ms: 8000 strategy: exponential_full_jitter

consumer:
batch: 500 offset_commit: "with_domain_tx"  # или "broker_tx"
inbox_enabled: true concurrency_per_partition: 4 dlq:
enabled: true batch_redrive: 200 rate_limit_per_sec: 50 order_by_key: true

observability:
metrics:
- processing_lag_ms
- publish_success_ratio
- dlq_rate
- redrive_success_ratio tracing_tags: [event_id, tenant_id, aggregate_id, partition, offset]

13) Չեկ թուղթ մինչև վաճառելը

  • Վերացվել է «երկու գրամոն» ՝ Dibox-ը 'վաճառողի վրա կամ օֆսետի ամրագրումը և մեկ գործարքի էֆեկտը։
  • Idempotent Consumer: «inbox »/dedup ամսագիրը, բիզնեսի գաղափարախոսությունը։
  • Բիզնես բանալիների կուսակցությունը, տեղական կարգը պահպանված է։
  • Retrai backoff + jitter, սխալների դասակարգում, DLQ հարուստ մետատվյալներով։
  • Redraiv դեղորայքային, անվտանգ; պլեյբուսներ կան։
  • Multi-tenant լիմիտներ և գերակայություններ։ թեգերը 'tenrone _ id/plan/region "։
  • Telemetria: lagi, հաջողության մասնաբաժինը, «կրկնօրինակները ճնշված են», p95/p99 ալտերտերը։
  • PII/retenshna/- ի քաղաքական գործիչները պահպանված են։
  • Թեստեր ՝ քայլերի, կրկնօրինակների, բանալիների, զանգվածային ռեդրեյվի միջև ընկած անկում։

14) Տիպիկ սխալներ

Ուղարկեք անվադողեր և ձայնագրեք BD-ում առանձին քայլերով առանց wwww.box/գործարքի offset-ի։

Կոնսյումերը առանց գաղափարախոսության կրկնօրինակում է կողմնակի էֆեկտները։

Համաշխարհային կարգը «ամեն գնով», ճանապարհներ և հազվադեպ արդարացված։ բավականին կարգուկանոն է։

Զանգվածային ռեդրեյվը առանց սահմանների հաստատեց պատահականությունը։

Թրեյսինգի/լագ մետրի բացակայությունը «թաքնված դեգրադացիա» է։

PII-ի խառնուրդը DLQ/լոգարներում։

15) Արագ բաղադրատոմսեր

SaaS-իրադարձություններ ՝ Direbox + idempotent կոնսյումեր (inbox), «tenom _ id: aggregate _ id» խմբակցությունը։

ETL/պրոյեկտներ: Read-process-write-ը մեկ գործարքում օֆսեթների ամրագրմամբ, 500-1000, ups.ru։

Բարձր պաշտպանություն 'pablikers, «SKIP SYKED», WFQ per tenae, ճամբարի վերահսկողություն։

Խիստ կոմպլանսի գոտի 'տարածաշրջանային ֆայլեր, payload, rentenshn և redraiws աուդիտ։

Եզրակացություն

Գործարքային մեսեգինգը տվյալների և հաղորդագրությունների կապի կարգապահությունն է։ Windows box/inbox, idempotenty, օֆսեթների ամրագրումը DLQ-ի հետ, դուք ստանում եք գործնական exactly-once վարքագիծ առանց գլոբալ արգելափակումների և պահպանում եք SLO-ն նույնիսկ ձախողումների, գագաթների և բարդ մուլտֆիլմի-ստենանտային գործողության ժամանակ։

Contact

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

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

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

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

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

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