Ինչպես կառուցել fail-safe մշակում միլիոնավոր գործարքներ օրական
Հոդվածի ամբողջական տեքստը
1) Ի՞ նչ է նշանակում fail-safe գործարքների համար
Fail-safe-ը այն է, երբ ցանկացած խնայողական իրավիճակ հանգեցնում է կամ անվտանգ կանգառին, կամ փոխհատուցվող վիճակին առանց փողի և տվյալների կորստի։ Նպատակները
«Կրկնակի բանավեճեր/վարկեր» = 0։
Կորցրած գործարքներ/իրադարձություններ = 0։
Կանխատեսելի SLO լատենտության/առաքման, դեգրադացիայի հստակ ռեժիմները և DR-ը։
Հիմքը դրամական ինվարանտներն են (հավասարակշռության ճշմարտությունը մեկ վայրում), գաղափարախոսությունը, որը համաձայնեցված է իրադարձությունների առաքման համար։
2) Ճարտարապետական սկզբունքները (կարճ)
1. Single source of truth 'հավասարակշռություն և հաշվապահություն - Ledger/Wallet-ում։ Ծառայությունների շուրջը պահում են գործընթացների վիճակը, ոչ թե փողը։
2. Idempotency everywh.ru: Բոլոր «ձայնագրությունները» ընդունում են «Idempotency-Key»; խոհարարը վերադարձնում է նույն արդյունքը։
3. Առաքման բանակի հետ իրադարձությունը 'www.box/CDC, հերթերը, DLQ, dedup։
4. Սագին և փոխհատուցումը, ոչ թե «ձեռքով»։
5. Back-pressure-ը և գերակայությունները 'համակարգը դանդաղում է, բայց չի փլուզվում։
6. Լռելյայն դիտարկումը կառուցվածքային լոգներն են, թրեյսինգը, մետրիկները։
7. Multi-տարածաշրջանը և DR: 108-104/108-լոկոմոտիվ, ռուսական ուսմունքներ։
3) Հանրաքվե-տեղաբանություն
Edge/API GW ──Command API ──App Service (Sagas)
│           │
│         (Outbox TX)
RateLimit     Outbox Table ──Publisher ──Kafka/Pulsar ──Consumers
│                      │
WAF                     └─DLQ/Replay
│
└─Ledger/Wallet (ACID, idempotent debit/credit)
│
└─CDC/Changefeed ──DWH/BI/ReconՀիմնական տեղերը ՝ Disbox (թիմի ատոմային ձայնագրությունը և «չեռնովիկան»), Publisher (ուղիղ մեկ առաքում), Consumers (idempotent, dedup-բանալին), DLQ/Replay (վերահսկվող կրկնություններ)։
4) Դրամական ինվարանտներ և ներդաշնակություն
Հավասարակշռության ճշմարտությունը Ledger-ն է (ACID, շարադրվող գործարքներ կամ խիստ ճշգրտումներ)։- Դրամական թիմերը ՝ «debit», «credit», «hold», «commit», «rollback» - իդեմենտ։
- Համակցված գործընթացները կառուցվում են սագայի պես
«authorize no settle no credit» (դեպոզիտ/settlment), «request corportled/failed» (վճարում/եզրակացություն), «refund/void» (փոխհատուցում)։
Ոչ մի ուղղակի հավասարակշռություն Ledger-ի շրջանցման մեջ։
5) Idempotenty 'դիզայն 2019
Բանալին պետք է միանշանակ նույնացնի բիզնես վիրահատությունը
`bet_id+amount+currency`, `payment_intent+capture_id`, `payout_id`, `chain_txid`.
Պահել արդյունքը բանալին (response cache)։ Խոհարարը նույն բանալին է նույն body/կարգավիճակը։- Վերահսկեք անհամապատասխանությունը 'նույն բանալին մեկ այլ գումարով' IDEMPOTENCY _ MISMATCH "։
6) Հերթեր, կարգուկանոն և պապուպ
Exactly-once էֆեկտները հասնում են ոչ թե տեղափոխման, այլ idempotent վահանակների + dedup պահեստավորման (LRU/Redis/DB c TTL)։
Պահպանեք կարգը բանալին (partenskey = «account _ id/round _ id/player _ id»)։- «Տարբեր» կոմպոզիցիաների համար 'վիճակի տարբերակումը և ցուցանիշները (state machine per entity)։
- DLQ-ը պարտադիր է 'N-ից հետո փորձարկումներից հետո' մեկուսացված թեմայի մեջ 'մարդկային պատճառի հետ։
7) Dibox/CDC: Ինչու՞ իրադարձությունները «չեն կորցնում»։
Մեկ գործարքի ընթացքում BD-ում գրանցվում ենք նաև բիզնես փոփոխություն, և ձայնագրությունը wwww.box-ում։- Առանձին publisher կարծում է box-ը և հրապարակում է անվադողերով։
- Այլընտրանքային 'CDC (Change You Capture) BD (Debezae/log) մակարդակում։
- Գործարքի շուրջ ոչ մի «իրադարձությունների լոգոն» աղբյուր է։
8) Back-pressure և առաջնահերթությունները
Թոկեն բաքերը և քվոտաները մուտքի վրա (per ten.ru/brand/region)։- Առաջնահերթություն 'դրամական ճանապարհներ պրոմո/հեռաչափությունից վեր։
- Ծանրաբեռնվածության դեպքում, ռեժիմները 'new sessions/requesions ", ստացիոնար ֆիչի սառեցումը, միջուկի պահպանումը։
- Auto-դեգրադացիա 'կրճատել ֆոնային խնդիրների հաճախությունը, դինամիկ ընդլայնել քննադատական գողերը։
9) Բազմաբնույթ կայունություն
API-ի և հերթերի համար, տեղական Ledger (կամ գլոբալ շարդինգի հետ)։- Residency: Փողը/PII/ամսագրերը չեն հավաքվում առանց հստակ կանոնների։
- Իրադարձությունների կրկնապատկումը միջմայրցամաքային է 'ասինխրոն, «region» նշանով։
- RPO/RTO: Համբուրեք RPO 355 րոպե, RTO 3530 րոպե; պարբերաբար ստուգեք։
10) SLO/SLI և dashbords
Ուղեցույցներ (օրինակ)
p95 'authorize/debit/credit' <150-300 ms (ներքին ճանապարհը)։
p95 end-to-end «թիմը անվադողերի իրադարձություն է» <1-2 վրկ։
Webhuks/արտաքին իրադարձություններ p99 <5/
«Կորցրած/կրկնօրինակված գործարքներ» = 0 (պայմանագրային ստուգումներ)։
Մետրիկները ՝ latency p50/p95/p99, error-rate (4xx/5xx/business), consumer/queue lag, retry stor.ru, settle lag, webhook lag, DLQ չափսը, հաճախականությունը 'IDEMPPOTOTENCCENCY Y Y _ MISCENCCY ENCNY Y Y _ MTY CENCY Y _ MCY TY Y _ ME y MATCH "։
11) Դիտողությունն ու աուդիտը
JSON-ի կառուցվածքային լոգները '«trace _ id», «idempotency _ key», բիզնես-ID, սխալների կոդերով։- OpenTelemetry: Tresing HTTP/gRPC/DB/անվադողեր, sag։
- WORM-աուդիտ 'քննադատական փոփոխությունների անփոփոխ ամսագրեր (լիմիտներ, բանալիներ, պրոմո/ջեքպոտներ)։
- PII/գաղտնիքների դիմակավորում, տարածաշրջանային տանկեր, RBAC/ABAC մուտք։
12) Վստահության փորձարկում
Պայմանագրային թեստեր 'խոհարար/կրկնօրինակներ, out-of-order, idempotention, dedup։- Բեռները 'պիկի պրոֆիլը (x10), հերթերի կայունությունը և BD-ը։
- Քաոս Քեյսները 'Ledger/դրամապանակի անկումը, քաշեց հերթերը/տարածաշրջանները, CDC-ի ձգձգումը, գետերի «փոթորիկը»։
- Game Days: DR և ռուսական ուսուցումները, MTTR-ի շրջանակներում։
13) Մոսկվան և տվյալները
OLTP փողի տակ 'գործարքային BD (RPO 240), խիստ ինդեքսներ, սերիզացված մակարդակներ կրիտիկական էակների վրա։
Քեշը (Redis) միայն արագացման համար չէ «ճշմարտության» համար։ TTL + jitter, պաշտպանություն cache stampede-ից։
OLAP/MSH-ը զեկույցների/վերլուծաբանների համար է։ CDC/անվադողերից հոսքերը, առանց OLTP-ի բեռի։- Տվյալների սխեմաները տարբերակվում են. Առանց dountaima (expand/www.ract)։
14) Ռեգրերի նվագախումբը
Էքսպոնենցիալ backoff + jitter, dedline/timeout RPC-ում։- Idempotent-ը յուրաքանչյուր շերտի վրա (հաճախորդը ռուսական սպառողի ծառայությունն է)։
- Ռետրոյի քվոտաները, պաշտպանվել «փոթորիկներից» (circuit breaker, hedged reques.ru, որտեղ տեղին է)։
- Replay-ից DLQ-ից միայն «անվտանգ» պատուհանի մեջ, արագության սահմանափակումով։
15) Տրանսպորտի անվտանգությունը
MTSA-ը ամենուրեք S2S-ն է, կարճ հոսանքները (OAuth2 CC), մարմինների ստորագրությունները (HMAC/EddDSA) webhuks համար։
Գաղտնիքները Vox/HSM-ում, ռոտացիան, per brand/region բանալիները։- Least privilege, «չորս աչքերը» ձեռքով վիրահատությունների վրա։
16) Մոտավոր պայմանագրեր (բեկորներ)
Բանավեճի idempotent թիմը
POST /v1/wallet/debit
Headers: X-Idempotency-Key: debit_pi_001, X-Trace-Id: tr_a1b2
{
"account_id":"acc_42",  "amount":{"minor_units":5000,"currency":"EUR"},  "reason":"payout",  "reference_id":"po_001"
}
→ 200 { "status":"committed", "entry_id":"e_77" }
(կրկնօրինակը նույն պատասխանն է)Իրադարձություն www.box
json
{
"event_id":"uuid",  "event_type":"wallet. debit. committed",  "occurred_at":"2025-10-23T16:21:05Z",  "account_id":"acc_42",  "amount_minor":5000,  "currency":"EUR",  "reference_id":"po_001",  "idempotency_key":"debit_pi_001",  "schema_version":"1. 3. 0"
}17) Չեկ թերթերը
Պլատֆորմ/օպերատոր
- Ճշմարտությունը հավասարակշռությամբ 'մեկ Ledger; շրջանցիկ ճանապարհներ չկան։
- Բոլոր write վիրահատությունները 'Idempotency-Key'; պահում է պատասխանը։
- Dimebox/CDC-ը բոլոր հիբրիդային գրառումների, DLQ-ի և ղեկավարվող replay-ի վրա։
- Առաջնահերթություններ, back-pressure, քայքայման ռեժիմներ։
- Partium-keys-ն ընտրվել է բիզնես բեկորներով; սպառողներն են։
- SLO-dashbords, OpenTelemetry, WORM-աուդիտ։
- WinDR/xaoc-ուսուցումներ, պայմանագրային/բեռնման թեստեր։
- Diresidency, կոդավորումը, Vox/HSM, կոդավորումը։
Պրովայդերներ/2019
- Ես ուղարկում եմ "Trace-Id '/" Idempotency-Key", պատրաստ եմ ռուսական առաքման։
- Webhuks ստորագրվել և կրկնապատկվել են։
- Սխեմաների/կոդերի տարբերակները պահպանվում են (semver, deprecation)։
18) Կարմիր դրոշները (հակատիպեր)
Հավասարակշռությունը փոխվում է առանց թիմի Ledger-ում։- Idempotenty-ի բացակայությունը բացատրում է կրկնակի մարումներ/վարկեր։
- Իրադարձությունների հրապարակումը շրջանցելով www.box/CDC-ն։
- Մոնոլիտ առանց back-pressure: Pick-ը ամեն ինչ։
- OLTP-ի և զեկույցների խառնուրդը 'BI-ն ծեծում է մարտական BD-ում։
- DLQ/repley-ի բացակայությունը։ «Հանգիստ» կուլ տալ սխալները։
- PII/փողի տարածաշրջանային մեկուսացում չկա։ ընդհանուր բանալիները մի քանի բրենդների վրա։
- Հավասարակշռությունների/ստատուսների ձեռքով ուղղությունները BD-ում։
19) Արդյունքը
Fail-safe-ը օրական միլիոնավոր գործարքների վերամշակումն է invariants-ի և կարգապահության մասին 'ճշմարտության մեկ աղբյուր, idempotent թիմեր, sagi և wwww.box/CDC-ներ, հերթերում կարգուկանոն և dedup, դիտարկվող և կառավարվող քայքայումը։ Ավելացրեք հասանելիության մանդատները, DR-պրակտիկան և տեխնոլոգիական ուսմունքները, և կստանաք մի համակարգ, որտեղ փողը արագ շարժվում է և միայն մեկ անգամ, իրադարձությունները չեն կորչում, իսկ միգրանտների աճը և ձախողումները դառնում են կառավարվող ռիսկեր, ոչ թե անակնկալներ։
