GH GambleHub

Հետադարձ բուրգի մոդել

Ի՞ նչ է «հետադարձ բուրգի մոդելը» ճարտարապետության մեջ

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

Ինտուիտիվ նկարը 'վերևի նեղ գագաթը «նվազագույն երաշխիքային պայմանագիր» է (MGC), ներքևում' ընդարձակումը, օպտիմիզացումը և հարուստ գործառույթները, որոնք համակարգը օգտագործում է, եթե կան ռեսուրսներ/համատեղելիություն։


Որտե՞ ղ է այն օգտագործվում

Ցանցային արձանագրություններ և API: REST/gRPC/GraphQL, webhuks, բրոքերներ։

Հոսքային ջրանցքները ՝ WindSocket, SSE, Kafka/NATS, RTC։

Ծառայությունների ճարտարապետությունը 'կրիտիկական ուղի vs. կողմնակի էֆեկտներ (աուդիտ, վերլուծություն, քեշ-տաքացում)։

Altail/վեբ հաճախորդները 'սկզբում UI-ի «կմախքը» և հիմնական տվյալները, ապա ծույլ են լրատվամիջոցների և գործընկերների բեռնումը։

Հիբրիդային և ռիսկային շղթաներ 'հեղինակային իրավունքի/պահեստավորման, առաջնահերթության մեջ։ հակաֆրոդ/վերլուծություն - ասինխրոն, dedlines։

Դիտարկումը 'միշտ լոգ/մետրիկ աշխատանքային մակարդակ; Թրեյս/ավելացում - սեմպլինգով։


Մոդելի սկզբունքները

1. Նվազագույն երաշխիքային պայմանագիր (MGC)

Դաշտերի և վիրահատությունների մի շարք, առանց որի սցենարը իմաստ չունի։ Այն ֆոսֆիլեն է, միասին և անցնում է առաջինը։

2. Առաջադիմական հարստացում

Ավելացված դաշտերը/գործառույթները տեղադրվում են որպես oporaties (capabilities/feature flags/Negotiation)։

3. Քայքայումը առանց մերժման

Բեռնման կամ մասնակի անհասանելիության դեպքում համակարգը արտանետվում է ալյումինե շերտերով 'պահպանելով MGC հզորությունը։

4. Ակնհայտ գերակայություն և SLA

Յուրաքանչյուր շերտի համար 'իր SLO (լատենտ, հասանելիություն), հերթեր և ծառայության դասարաններ (QoS)։

5. Սխեմաների ադիտիվ էվոլյուցիան

Նոր դաշտերը ավելացվում են որպես nullable/optional, չեն կոտրում հաճախորդներին։ կոշտ փոփոխությունները միայն նոր տարբերակի միջոցով են։

6. Դիտարկումը շերտերի վրա

Պիտակներն ու լոգները նշվում են քննադատությամբ '<<, <<, <, "batch!>, որպեսզի տեսնեն, թե ինչպես է համակարգը զոհաբերում բեռի տակ։


Համեմատություն «դասական» բուրգերի հետ

Դասական ճարտարապետությունը (ցածր - հիմքը, գագաթները - UI) շեշտում է կախվածությունը։

Հակառակ բուրգը շեշտում է առաքման կարևորությունը և կարգը 'սկզբում «ստանդարտ», ապա «nice-to-have»։


Մոդելի վրա կոդավորման նախագծումը

1) REST/HTTP

MGC 'նվազագույն ռեսուրս/endpoint և պարտադիր դաշտեր։

Ընդլայնումներ

Բովանդակություն-նեգացիացիա («Accept», «Corfer»),

Պարամետրեր ', include = '/'? fields =' ընտրովի մանրամասների համար,

Հղում «ծանր» ներդրումներին (pre-signed SNS) փոխարենը։

Դեգրադացիա: Թայմաուտում MGC-ին տալ առանց ներդրված հավաքածուների։ 206 Partial Content մեծ հեռուստացույցի համար։

Տարբերակումը 'ադիդիտիվ դաշտերը առանց հին մետաղների փոփոխության; մաժորի տարբերակը միայն կոտրող փոփոխությունների համար է։

2) gRPC

ww.o: նոր «optional» դաշտեր, որոնք ունեն թեգերի անվտանգ համարակալում։ չօգտագործել հեռավոր թեգերը։

Server-side deadlines և per-method QoS (կրիտիկական RPC գերակայությունից բարձր)։

Streaming: առաջին հաղորդագրությունները վերնագրեր/արդյունքներ են, ապա մանրամասները չաններով։

3) Իրադարձական անվադողերը (Kafka/NATS)

Իրադարձություն '«event _ type», «id», «occurred _ at», նվազագույն բիզնես դաշտեր։

Հարստացում 'վերցնենք box/CDC և առանձին թեմաներ' -enriched "։

Առաջին հերթին, մանրամասները, սպառողները կարող են ավարտել բիզնես գործընթացը միջուկի վրա, իսկ մանրամասները ասինխրոն են։


Patterns, որոնք լավ համակցված են հետադարձ բուրգի հետ

Critical Path First: Առանձնացրեք սինխրոն «պարտադիր» ասինխրոն կողմնակի ազդեցություններից։

Write-ahead/Disbox: Մենք արձանագրում ենք իրադարձության փաստը, մնացած 'ֆոնային առաքումը։

Lazy & Incremental Fetch: պագինացիա, կուրսորներ, «If-Modified-Since »/ETag։

Capabilities Discovery: սերվերը/հաճախորդը հստակ ասում են, թե ինչ ընդլայնումներ են աջակցում։

Backpressure & Budgets: dedlines, CPU/IO լիմիտներ շերտի վրա։ բեռի տակ գտնվող երկրորդական խնդիրների վերացումը։

SLO-Scoped Caching: Մենք ավելի ագրեսիվ ենք, հարստացումն ավելի կարճ է/բարակ։


Իրականացման ալգորիթմ

1. Գրեք User Journey-ը և հատկացրեք «արժեքի պահը»։

2. MGC-ի իրականացումը 'նվազագույն դաշտեր/վիրահատություններ արժեքին հասնելու համար։

3. Բաժանեք շերտերին '«www.ru», «extended», «anational t.ru/batch»։

4. տվեք SLO/SLA և QoS-ը յուրաքանչյուր շերտի համար։

5. Նախագծեք դեգրադացիա 'ի՞ նչ ենք նետում մերժումների N% -ով/p95 աճով։

6. Սխեմաների էվոլյուցիան 'տարբերակների քաղաքականությունը, diitive-first։

7. Դիտարկումը 'շերտերի թեստեր մետրերում/logs/treiss, alerts-ում։

8. Թեստավորում 'քաոս-ինժեներինգ և fox-inject շերտերով։

9. Գործարկումը և հակադարձ կապը 'միացնելով ֆիչեֆլագների ընդարձակումը և փակցնում կանարեյքի վրա։


Մետրիկները և SLO շերտերը

Տե՛ ս ՝ p95/p99 լատենտ, հաջողակ կրիտիկական վիրահատությունների մասը, դեգրադացիայի ժամանակ ձախողումը։

Extended 'հարստացված պատասխանների տոկոսը, միջին ժամանակը։

Batch/Analyt.ru: Լագը իրական ժամանակից, պատուհանի համար մշակված իրադարձությունների մասը։

Բիզնես-մետրիկները 'փոխարկումը մինչև «արժեքի պահը», երբ փոխակերպվում է vs. նորմալ։


Antipatterns

«Ամեն ինչ ռուսական է», ընդլայնումը դառնում է պարտադիր, դեգրադացիան դառնում է անհնար։

MGC-ի կոտրող փոփոխությունները առանց նոր մաժորային տարբերակի։

Թաքնված փխրունություն 'կրիտիկական ճանապարհը հիմնված է արտաքին «երկրորդական» կախվածության վրա (օրինակ, հակաֆրոդի սինխրոն զանգը)։

Անսովոր ընդարձակումներ, հաճախորդները չգիտեն, որ կարելի է միացնել/անջատել։

Observability: «Լռության» համակարգը քայքայվում է, իսկ դուք չեք տեսնում, թե որտեղ։


Օրինակներ

A. Օգտագործողի պրոֆիլը (REST)

Ընդլայնումներ ՝ "badges []", "social _ links []", "recent _ activity [" ըստ "։

MGC: `id`, `display_name`, `avatar_url`, `tier`.

Դեգրադացիա. Թայմաուտում MGC-ին տալ և աքսորել ազգային ռեսուրսներին (HATEOAS/MSs)։

Բ.Արբիտրաժային հեղինակային իրավունքը

MGC 'հեղինակային իրավունքի արդյունքը (approved/declined), "transaction _ id'," amount "," currency "։

Ընդարձակումներ ՝ 3DS հեռաչափություն, ռիսկի-սկոր, գեո, ավստրիական ուրվագիծ, ասինխրոն իրադարձությամբ։ authorized`.

Դեգրադացիա 'ձախողումների դեպքում վերլուծաբանները գնում են, իսկ աուդիտը/սկորինգը բռնում է։

Վ. Ջրհեղեղի գնանշումներ

MGC: Վերջին «նկարը» գինը։

Ընդարձակումը 'մի բաժակի խորությունը, որը համախմբված է անջատիչներով, կեղտոտումից հետո սթրիմն է։

Քայքայումը 'բեռի տակ նվազում է ավելացման հաճախությունը, բայց կեղևը կայուն է։


Տարբերակումը և էվոլյուցիան

Meditive-first: նոր դաշտերը «optional/nullable», ծերերը մնում են։

Semantic Versions: 'v1' միջուկի համար; 'v1։ x 'ընդլայնումներ; «v2», երբ MGC-ն փոխվում է։

Կոդի պայմանագրերը ՝ JSON Schema/Medobuf + CI-validation «չփչացող» ածխաջրածիններ։


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

MGC-ն ստորագրվել է/վավերացված. Դաշտերի նվազագույն հավաքածուն ունի կրիպտոգրաֆիկ ամբողջականություն։

Leance Privilege: Հարստության հասանելիությունը առանձին կատակներով։

PII/findance 'դուրս բերել ընդարձակման, բաժանման և TTL-ի։


Դիտարկումը և կարգաբերումը

Պրեֆեկտները մետտրիկ են '<108։ request. duration`, `enh. attach. load_time`, `batch. lag`.

Sampling: 100 տոկոսը սխալների համար։ ընդլայնում։

Feature flags telemetry-ը ցույց է տալիս, թե ինչ ընդարձակումներ են ներառված հաճախորդներից։


Ներդրման թուղթ (կարճ)

  • Մոսկվան և MGC-ը։
  • Ընդլայնումները հայտարարված են capabilities/flags միջոցով։
  • SLO/QoS/տողերը շերտերով։
  • Դեգրադացիան ստուգված է քաոս թեստերով։
  • Սխեմաների էվոլյուցիան միայն ադիտիվ է առանց «կոտրվածքների»։
  • Metriki/treiss/logs բաժանված են շերտերով։
  • Հաճախորդների համար հաճախորդների համար ավելացման մասին։

FAQ

Արդյո՞ ք հակառակ բուրգը փոխարինում է շերտավոր ճարտարապետությանը։

Ոչ։ Սա օրգոնալ սկզբունք է, թե ինչպես կարելի է հասցնել և գերակայել ֆունկցիոնալությունը սովորական շերտերի վերևում։

Ե՞ րբ չօգտագործել։

Օֆլինի փաթեթներում, որտեղ մասնակի առաքումը անիմաստ է (կրիպտոպրոտոկոլներ ատոմայնությամբ), կամ երբ բոլոր դաշտերը հավասարապես կրիտիկական են։

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

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


Արդյունքը

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

Contact

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

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

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

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

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

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