GH GambleHub

Event-Driven միջուկը

Ի՞ նչ է Event-Driven միջուկը

Event-Driven միջուկը (EDC) ճարտարապետության «ողնաշարավորն» է, որտեղ բիզնես փաստերը նկարագրվում և տարածվում են որպես անփոփոխ իրադարձություններ, իսկ մնացած ֆունկցիոնալությունը (կարդալը, կարդալը, վերլուծությունը, քեշը, նոտացիան) կառուցվում է այս իրադարձությունների հոսքի վրա։ Միջուկը տալիս է իրադարձությունների պայմանագիր, առաքման կանոնները և արագության ինվարանտները, ապահովելով թույլ կապը և մեծացումը։

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

Նպատակներն ու հատկությունները EDC

Փաստերի ճշմարտությունը 'յուրաքանչյուր իրադարձություն անփոփոխ գրառում է «ինչ է պատահել»։

Թույլ կապը 'արտադրողները չգիտեն սպառողներին։ համակարգի ընդլայնումը բաժանորդների ավելացումն է։

Մեծացումը 'հորիզոնական աճը կուսակցության/տոպիկների, անկախ սպառողների վրա։

Դիտարկումը և աուդիտը 'ցուցիչների, վերարտադրողականության, վերարտադրման և վերարտադրման միջոցով։

Կառավարվող էվոլյուցիան 'սխեմաների տարբերակներ, համատեղելիություն, deprecation։

Ճարտարապետական բաղադրիչներ

1. Շինա/բրոքեր իրադարձությունների ՝ Kafka/NATS/Pulsar/SNS + MSS - ալիքներ, կուսակցություններ, վերականգնումներ։

2. Հիմնական սխեմաները ՝ JSON Schema/Avro/Eurobuf-ը ռուսական և էվոլյուցիայի համար։

3. Windobox/CDC-2019 'փաստի ատոմային ամրագրումը + հրապարակումը առանց «կրկնակի գրելու»։

4. Պրոյեկտներ/ընթերցանություն (CQRS) 'արագ հարցումների համար նյութականացված ներկայացումներ։

5. Սագին/նվագախումբը 'երկար գործընթացների համակարգումը իրադարձությունների/թիմի միջոցով։

6. Հարստացումը 'առանձին տեղանուններ' «.enriched »/' derived 'առանց կրիտիկական ուղու վրա ազդելու։

7. Աստղադիտարան 'ուղի, լոգիստիկա, չափումներ իրադարձությունների և ճամբարների վերաբերյալ։

Իրադարձությունների մոդել

Իրադարձությունների տեսակները

Domain Events: Բիզնես փաստեր ("pay.ru. authorized`, `kyc. approved`).

Integration Events: ուղղված են արտաքին համակարգերին (կայուն, դանդաղ փոխվում են)։

Change Windows Capture (CDC) 'ձայնագրման տեխնոլոգիական փոփոխություններ (օգտագործեք ինտեգրման/ինտեգրման համար)։

Audit/Telemetry: ակտորների, անվտանգության, SLA գործողությունները։

Պարտադիր ատրիբուտներ (միջուկ)

json
{
"event_id": "uuid",
"event_type": "payment. authorized. v1",
"occurred_at": "2025-10-31T11:34:52Z",
"producer": "payments-service",
"subject": { "type": "payment", "id": "pay_123" },
"payload": { "amount": 1000, "currency": "EUR", "method": "card" },
"schema_version": 1,
"trace_id": "abc123",
"partition_key": "pay_123"
}

Առաջարկությունները ՝ «event _ id» գլոբալ միավորված, «partection _ key» -ը կարգավորում է էության համար, «trace _ id» -ը տալիս է հարաբերակցություն։

Առաքման սեմանտիկան և գաղափարախոսությունը

At-leport-once (լռելյայն շատ բրոկերների մոտ), սպառողները պետք է լինեն հակամարմնային։

At-most-once: ընդունելի է միայն երկրորդական հեռուստացույցի համար։

Exactly-once-ը ձեռք է բերվում հոսքի մակարդակում և իրականացվում է գործարքների միջոցով/idempotent բանալիներ/պիտակներ (ավելի թանկ, անհրաժեշտ է լավ պատճառ)։

Սպառողի կրկնօրինակումը

"Event _ id '/" (event _ id, consumer _ id)" TTL-ից տոպիկի վերականգնումը։

Ups.ru փոխարենը ins.ru; «sequence »/« occurred _ at» պրոյեկտների տարբերակն է։

Վիրահատությունները գործարքի շրջանակներում 'նշանը «տեսավ» + պետության փոփոխությունը։

Կարգը և կուսակցությունը

Երաշխավորված կարգը կուսակցության սահմաններում։

Ընտրեք 'partrone _ key', որպեսզի մեկ միավորի բոլոր իրադարձությունները մտնեն մեկ կուսակցության մեջ («user _ id», «payment _ id»)։

Խուսափեք «տաք դեղամիջոցներից» 'հեշ աղով/անիվներով, եթե անհրաժեշտ է բեռ բաժանել։

Սխեմաներ և էվոլյուցիա

Meditive-first: Նոր օպոզացիոնալ դաշտեր, տեսակների/սեմանտիկայի փոփոխության արգելք առանց major տարբերակների։

Համատեղելիությունը 'BACKWARD/FORWARD ռուսական սխեմաներում։ CI-ն արգելափակում է անհամատեղելի փոփոխությունները։

Անունը '"domain. action. v{major}` (`payment. authorized. v1`).

Տե՛ ս 'հրապարակեք «v1» և «v2» զույգերը զուգահեռ, ապահովեք կրկնակի ճառագայթումը (dance-write box), նկարահանեք «v1» անցումից հետո։

Outbox и CDC

Winbox (առաջարկվում է գործարքային ծառայությունների համար)

1. Մեկ BD գործարքում, մենք պահպանում ենք հիբրիդային ձայնագրումը և իրադարձությունը www.box-ում։

2. Ֆոնային պաբլիշերը կարդում է www.box, հրապարակում է բրոքեր, նշում է «ուղարկվել»։

3. Երաշխիքներ ՝ անկման դեպքում չկա «կորուստ», ոչ էլ ռասինխրոնիզացիա։

CDC (Change Data Capture)

Հարմար է գոյություն ունեցող համակարգերի/խմբակցությունների համար։ աղբյուրը ԲԴ-ի վերարտադրման լոգ է։

Պահանջում է ֆիլտրել/թարգմանել հիբրիդային իրադարձություններին (մի հեռարձակել «հում» աղյուսակները ժամանակին)։

CQRS և պրոյեկցիաներ

Թիմերը փոխում են վիճակը (հաճախ սինխրոն), իրադարձությունները 'պրոյեկտներ (ասինխրոն)։

Պրոյեկտները հաշվարկված են հարցումների համար (որոնում, ցուցակներ, հաշվետվություններ), նորարարվում են ստորագրողների կողմից։

Ժամանակավոր ռասինխրոնիզացիան նորմ է 'ցույց տվեք կայուն UX («տվյալները նորարարվում են մի քանի վայրկյանում»)։

Սագի 'գործընթացների համակարգումը

Օրկեստրացիան 'մի ֆուտբոլիստ ուղարկում է թիմերին և սպասում է իրադարձություններին։

Խորեոգրաֆիա 'մասնակիցները արձագանքում են միմյանց իրադարձություններին (ավելի հեշտ, բայց պահանջում է կարգապահություն պայմանագրերում)։

Կանոնները 'հստակ փոխհատուցում և թայմ-աուտներ, կրկնվող քայլեր, կուռքեր։

Դիտարկումը

Trace/Windows: Անցեք «trace _ id» -ը իրադարձությունների ստեղծման վերնագրերի միջոցով։

Մետրիկները ՝ սպառողների լագը, հրապարակման/սպառման արագությունը, dead-letter rate, dedeplication մասը։

DLQ/parking lot: անհաջող հաղորդագրությունները 'առանձին կացինով' ալերտով; ապահովեք վերամշակումը։

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

Տվյալների դասակարգումը 'միջուկը պարունակում է միայն անհրաժեշտ PII/findians (հետադարձ բուրգի մոդել), մանրամասները հարստության մեջ։

Ստորագրություն/հեշ կրիտիկական ատրիբուտներ, ամբողջականության վերահսկում։

In-flight-ի և at-rest-ի գաղտնագրումը, ինտեգրման/կոնսումերների իրավունքների համադրումը (IAM/ACL)։

Վերափոխման քաղաքականությունները և մոռացության իրավունքները, որոնք հստակ սահմանված են յուրաքանչյուր կացինի համար։

Արտադրողականություն և կայունություն

Backpressure: սպառողների մոտ մրցունակության սահմանափակում է, բրոքեր 'քվոտաներ/լիմիտներ։

Batch-վերամշակումը և ագրեսիան 'խմբավորում եք գրառումներ, որպեսզի նվազեցնեն ծախսերը։

Retray-ը ջիթերի և DLQ-ի հետ 'անվերջ փորձերի փոխարեն։

Rebal.ru-դիմացկունություն 'պահեք օֆսեթները գործարքային/արտաքին, արագացրեք սառը մեկնարկը կեղևներով։

Իրադարձությունների տիպային ձևանմուշները

Վճարման միջուկը

`payment. initiated. v1` → `payment. authorized. v1` → `payment. captured. v1` → `payment. settled. v1`

Մերժումներ ՝ "pay.ru. declined. v1`, `payment. refunded. v1`

Կուսակցությունը '«payment _ id»

SLA 'միջուկի lag 242s p95; սպառողների դիմադրությունը պարտադիր է։

KUS/հավատարմագրում

`kyc. started. v1` → `kyc. document. received. v1` → `kyc. approved. v1`/`kyc. rejected. v1`

PII-ը նվազագույն է։ փաստաթղթի մանրամասները '«kyc» -ում։ enriched. v1 'սահմանափակ հասանելիությամբ։

Աուդիտ/անվտանգություն

`audit. recorded. v1 'ալգորիթմներով' actor ', «www.ject», «action», «occurred _ at», «trace _ id»։

Շարունակական վերականգնումը/արխիվացումը; բարձրացված ամբողջականությունը (WORM-2019)։

Antipatterny

Fat Event: ծանրաբեռնված payload 'a առանց կարիքների, PII արտահոսքը։

Hidden RPC-ն իրադարձությունների միջոցով 'սինխրոն պատասխանների սպասումը «այստեղ և հիմա»։

Հում CDC-ն դուրս է գալիս 'սերտ կապվածություն BD-ի սխեմայի հետ։

Սպառողների մոտ ոչ մի դիմպոտենտ չկա. Դուբլին հանգեցնում է երկակի կողմնակի էֆեկտների։

«Ամեն ինչի համար» ընդհանուր կացիններից մեկը 'շահերի բախումը, խնդրահարույց կարգը, բարդ էվոլյուցիան։

EDC գայթակղիչ ներդրումը

1. Տիրույթի քարտ 'ընտրեք հիմնական ագրեգատները և կյանքի ցիկլերը։

2. Իրադարձությունների կատալոգը 'անուններ, իմաստներ, ինվարանտներ, պարտադիր դաշտեր։

3. Սխեմաներ և կանոններ. Ընտրեք ձևաչափը, միացրեք կանոններին։

4. Systebox/CDC։ Յուրաքանչյուր արտադրողի համար բացատրվում է փաստերի հրապարակման մեխանիզմը։

5. Կուսակցությունը 'ընտրեք բանալիներ և գնահատեք տաք բանալիները/վերափոխումը։

6. Idempotenty: Dedup + սպառողների գործարքը։

7. Պրոյեկտներ ՝ ռուսական նյութականացված մոդելներ և SLA նորարարություններ։

8. Աստղադիտակներ ՝ ուղիներ, ճամբարներ, DLQ, ալերտներ։

9. System/PII 'տվյալների դասակարգում, կոդավորում, ACL։

10. Էվոլյուցիայի պատճառը տարբերակների քաղաքականությունն է, դեպրեսեյթը, dult-write-ը միգրացիայի համար։

Chek-թերթ վաճառվել

  • Յուրաքանչյուր իրադարձություն ունի «event _ id», «trace _ id», «occurred _ at», «partection _ key»։
  • Սխեմաները խմբագրության մեջ, ներառում են կոդավորման ստուգումներ։
  • Սպառողների Idempotention-ը իրականացվել և փորձարկվել է։
  • DLQ/parking lot և ալտերտերը հրապարակման/սպառման սխալների վրա։
  • Պրոյեկտները վերածվում են լոգարանի (replay) ընդունելի ժամանակի։
  • Սահմանափակված է հասանելիությունը PII; նվազագույն payload 'a միջուկի մեջ։
  • SLA ճամբարներում/առաքումները չափվում են և տեսանելի են dashbords-ում։
  • Գոյություն ունի իրադարձությունների և դեպրեսիտի պատուհանների վերջնական տարբերակների ծրագիր։

FAQ

Ինչպե՞ ս է EDC-ն տարբերվում «անվադողից»։

Միջուկը ոչ միայն բրոքեր է, այլ նաև իրադարձությունների պայմանագիր, կարգուկանոնի/իդեմպոտենտության կանոնները, էվոլյուցիայի գործընթացները և դիտարկումը։

Կարո՞ ղ եք կառուցել միայն CDC-ի վրա։

CDC-ն հարմար է ինտեգրման/միգրացիայի համար, բայց հիբրիդային իրադարձությունները ավելի պարզ են արտահայտում իմաստը և ավելի կայուն են զգում BD-ի փոփոխությունները։

Ինչպե՞ ս կարող ենք ներդաշնակ լինել։

Մենք ընդունում ենք eventium consistency-ը և նախագծում UX/գործընթացները դրա տակ (նորարարությունների, ռեակտորների, փոխհատուցման)։

Ե՞ րբ է անհրաժեշտ exactly-once-ը։

Հազվադեպ, երբ կրկնապատկումը խիստ անընդունելի է և անհնար է փոխհատուցել։ Հաճախ բավական է at-least-once + idempotention։

Արդյունքը

Event-Driven միջուկը վերածում է բիզնեսի փաստերի հոսքը համակարգի հուսալի հիմքի։ Իրադարձությունների հստակ պայմանագրերը, առաքման կարգապահությունը և դիտարկումը տալիս են մասշտաբի, կայունության և էվոլյուցիայի արագության, առանց փխրուն սինխրոն կապերի և փոփոխությունների ռեգրեսիայի։

Contact

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

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

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

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

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

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