Temporal¶
Այս հոդվածում
Տեղեկատվություն
Temporal-ը բաց կոդով հարթակ է՝ նախատեսված հուսալի բաշխված հավելվածներ ստեղծելու համար: Այն լուծում է ժամանակակից մշակման հիմնական մարտահրավերներից մեկը՝ ապահովելով կրիտիկական գործընթացների կատարումը անկայուն միջավայրերում: Այն թույլ է տալիս մշակողներին կենտրոնանալ բիզնես տրամաբանության վրա՝ փոխարենը չխնամելով ենթակառուցվածքային ձախողումները:
Temporal. Հիմնական հնարավորություններ¶
- Workflow Orchestration: Ապահովում է երկարատև բիզնես գործընթացների հուսալի կատարում: Ավտոմատ կերպով կառավարում է ձախողումները և կրկնությունները՝ երաշխավորելով առաջադրանքների ավարտը:
- Distributed Transactions: Ապահովում է գործողությունների հետևողական կատարումը տարբեր ծառայություններում՝ առանց բաշխված բլոկավորման օգտագործման:
- Timeouts and Scheduling: Թույլ է տալիս սահմանել թայմերներ և պլանավորել առաջադրանքներ բարձր ճշգրտությամբ՝ նույնիսկ երկարատև գործընթացների համար:
- Մասշտաբայնություն: Գործնականում աջակցում է հորիզոնական մասշտաբավորմանը՝ բարձր բեռնվածությունը հաղթահարելու համար: Բաղադրիչները կարող են մասշտաբավորվել անկախ:
- Պատմության վերլուծություն: Պահպանում է գործընթացի կատարման պատմությունը՝ հնարավորություն տալով վերլուծել և թեստավորել workflow-ները:
- Վերսիոնավորում: Աջակցում է workflow-ների անվտանգ թարմացումներին՝ առանց աշխատող առաջադրանքների ընդհատման:
- Դիտարկելիություն: Ինտեգրվում է մոնիտորինգի և հետագծման համակարգերի հետ՝ հավելվածի վերահսկողության համար:
- Multi-tenancy: Ապահովում է մեկուսացում և ռեսուրսների կառավարում մի քանի թիմերի կամ հավելվածների համար:
Տեղակայման հնարավորություններ¶
| ID | Ծրագրային ապահովման անվանում | Համատեղելի ՕՀ | VM | BM | VGPU | GPU | Նվազագույն CPU (միջուկներ) | Նվազագույն RAM (ԳԲ) | Նվազագույն HDD/SSD (ԳԲ) | Սեփական դոմեն | Ակտիվ |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 266 | Temporal | Ubuntu 22.04 | + | + | + | + | 2 | 2 | 30 | Ոչ | ՊԱՏՎԻՐԵԼ |
- Նախապես տեղադրված կախվածություններ.
- Docker;
- Git (պահեստի կլոնավորման համար):
- լրացուցիչ բաղադրիչներ.
- Nginx (reverse proxy-ի համար);
- Postgresql (տվյալների բազա);
- Elasticsearch (workflow պատմության պահպանման համար);
- Grafana (մոնիտորինգի համար);
- Prometheus (մետրիկաների հավաքագրման համար);
- Jaeger (բաշխված հետագծման համար);
- OpenTelemetry Collector (տելեմետրիայի հավաքագրման համար):
- Ծրագրի թղթապանակը.
/root/docker-compose - Հարմարեցման ֆայլ.
/root/docker-compose/docker-compose-multirole_edited.yaml
Հիմնական բաղադրիչները՝ վեբ ինտերֆեյսով.
| Անուն | Տեղական հասցե և պորտ | Արտաքին հասցե |
|---|---|---|
| Temporal UI | localhost:8080 | https://temporal{server_id_from_invapi}.hostkey.in |
| Grafana | localhost:8085 | https://temporal{server_id_from_invapi}.hostkey.in/grafana/ |
| Prometheus | localhost:9090 | https://temporal{server_id_from_invapi}.hostkey.in/prometheus/ |
| Prometheus Metrics | - | https://temporal{server_id_from_invapi}.hostkey.in/prometheus/metrics |
Սկսել Temporal-ի տեղակայումից հետո¶
Վճարումից հետո ձեր գրանցված էլ. հասցեին կուղարկվի ծառայողի պատրաստ լինելու մասին ծանուցում: Այն կներառի VPS IP հասցեն և մուտքի համար նախատեսված հավատարմագրերը: Մեր ընկերության հաճախորդները կառավարում են սարքավորումները սերվերի կառավարման վահանակի և API-ի միջոցով — Invapi:
webpanel թեգի հղումից հետո կբացվի լիազորման պատուհան:
Լիազորման տվյալները կարելի է գտնել սերվերի կառավարման վահանակի Configuration >> Tags-ում կամ ուղարկված էլ. հասցեում.
- Հղում Temporal կառավարման վահանակին մուտք գործելու համար վեբ ինտերֆեյսի միջոցով. webpanel թեգում;
- Login և Password սերվերի կառավարման համար. տրվում է սերվերի հանձնման ժամանակ ուղարկված էլ. հասցեում:
Տնային էջ և նավիգացիա¶
webpanel թեգի հղումից հետո կբացվի Temporal-ի վեբ ինտերֆեյսը.

Հիմնական էջում ցուցադրվում է Workflow-ների ցանկը (Workflows) ընտրված Namespace-ում: "No Workflows running in this Namespace" հաղորդագրությունը ցույց է տալիս, որ այդ պահին ակտիվ գործընթացներ չկան:
Ինտերֆեյսի հիմնական տարրերը.
- Sidebar ձախ կողմում ապահովում է համակարգի տարբեր բաժիններին մուտք;
- Top bar ցույց է տալիս ընթացիկ Namespace-ը (ներկայում՝ "default");
- Start Workflow կոճակը վերին աջ անկյունում նոր գործընթացներ սկսելու համար;
- Գործընթացների աղյուսակ Status, Workflow ID, Run ID, Type, Start, End սյունակներով:
Ֆունկցիոնալ հնարավորություններ
-
Նոր Workflow գործընթացի սկսելը.
- Սեղմեք վերին աջ անկյունում գտնվող Start Workflow կոճակը;
- լրացրեք անհրաժեշտ պարամետրերը հայտնվող ձևաթղթում;
- Հաստատեք գործընթացի ստեղծումը:
-
Գործընթացների դիտում և ֆիլտրում.
- Օգտագործեք Filter կոճակը՝ գործընթացները ընտրելու համար տարբեր չափանիշներով;
- Ընտրեք աղյուսակից ցանկացած գործընթաց՝ մանրամասն տեղեկատվություն դիտելու համար:
-
Կոդի օրինակներ.
- Մուտք գործեք ինտեգրման օրինակներին GitHub պահեստների հղումների միջոցով.
- samples-go - Go օրինակներ;
- samples-java - Java օրինակներ;
- samples-typescript - TypeScript օրինակներ;
- samples-python - Python օրինակներ;
- samples-dotnet - .NET օրինակներ;
- samples-php - PHP օրինակներ:
-
Կարգավորումների փոփոխություն.
- UTC ընտրիչը վերին աջ անկյունում՝ ժամային գոտի փոխելու համար;
- (Gear) կոճակը նախատեսված է լրացուցիչ ինտերֆեյսի կարգավորումներին մուտք գործելու համար:
Տիպիկ օգտագործման դեպքեր.
- Գործընթացների մոնիտորինգ. Աշխատող առաջադրանքների կարգավիճակի կանոնավոր ստուգում;
- Թեստավորում. Ձախողումների դեպքում սխալների մանրամասն վերլուծություն;
- Բեռնվածության կառավարում. Գործընթացների սկսել, դադարեցնել և չեղարկել;
- Նոր գործընթացների մշակում. Կոդի օրինակների օգտագործում՝ անհատական workflow-ներ ստեղծելու համար:
Նշում
Temporal-ի օգտագործման մանրամասն տեղեկատվությունը կարելի է գտնել պաշտոնական մշակողների փաստաթղթերում:
Temporal-ի թեստավորում Go-ով (ըստ ցանկության)¶
Տեղեկատվություն
Ստորև ներկայացված է անհրաժեշտ բաղադրիչների տեղադրման և Temporal-ի թեստավորման գործընթացը՝ Go-ում Saga pattern օրինակի միջոցով: Այս թեստը ցուցադրում է հարթակի հիմնական հնարավորությունը՝ երկարատև բիզնես գործընթացների հուսալի կատարումը՝ ավտոմատ ձախողումների կառավարմամբ: Saga pattern-ը լուծում է բաշխված համակարգերում փոխանցման ատոմայնության խնդիրը՝ փոխհատուցող գործողությունների մեխանիզմի միջոցով:
1. Go-ի տեղադրում¶
Թեստավորումը սկսելուց առաջ տեղադրեք Go սերվերում.
Թարմացրեք փաթեթների ցանկերը
Կախվածությունների տեղադրում Ներբեռնեք Go-ի վերջին տարբերակը (այս պահին այն 1.22.1 է) Բացեք արխիվը/usr/local-ում Սահմանեք միջավայրի փոփոխականները Ակտիվացրեք փոփոխությունները ընթացիկ սեսիայում Ստուգեք տեղադրումը 2. Կլոնավորեք Temporal օրինակների պահեստը¶
Մուտք գործեք տնային թղթապանակ
Կլոնավորեք Go օրինակների պահեստը Մուտք գործեք օրինակների թղթապանակ3. Թեստավորեք Saga օրինակի միջոցով¶
Saga pattern-ը օգտագործվում է բաշխված փոխանցումները կառավարելու համար՝ ապահովելով հետադարձման (փոխհատուցման) հնարավորությունը սխալների դեպքում:
Saga օրինակի կառուցվածքը
saga/
├── worker/main.go # Worker գործընթացը, որը կատարում է առաջադրանքներ
├── start/main.go # Worker գործընթացի նախապատրաստում
├── activity.go # Activity-ների սահմանում (փողերի հանում/կրեդիտում)
├── workflow.go # Activity-ների հաջորդականության սահմանում
└── shared.go # Ընդհանուր սահմանումներ
Կատարեք թեստը.
-
Սկսեք worker-ը (կատարեք առաջին տերմինալում).
Worker-ը կգրանցվի Temporal-ում և սպասելու է առաջադրանքի: Կհայտնվեն առաջադրանքներ ստանալու փորձերի մասին լոգային հաղորդագրություններ: -
Սկսեք starter-ը (կատարեք երկրորդ տերմինալում).
Starter-ը սկսում է փողերի փոխանցման գործընթացը մեկ հաշվից մյուսը:
Սպասվող արդյունք.
Worker-ի լոգերում կտեսնեք.
- Փողերի հանում 001-001 հաշվից;
- Փողերի մուտք 002-002 հաշվին;
StepWithErrorActivity-ում հատուկ ստեղծված սխալ;- Սխալ Activity-ի կատարման երեք փորձ;
- Փոխհատուցող գործողությունների իրականացում.
- Փողերի վերադարձ սկզբնական հաշիվ;
- Փողերի հանման չեղարկում:
4. Ստուգեք արդյունքները Temporal վեբ ինտերֆեյսի միջոցով¶
- Բացեք Temporal վեբ ինտերֆեյսը ձեր բրաուզերում ( webpanel թեգի միջոցով);
- Ինտերֆեյսում գտեք Workflow-ը՝ ID
transfer-money-workflow; - Կտեսնեք Workflow-ի կատարման ամբողջական պատմությունը, ներառյալ բոլոր Activity-ները և փոխհատուցող գործողությունները.

Տեղեկատվություն
Temporal վեբ ինտերֆեյսում կտեսնեք, որ transfer-money-workflow-ը ունի "Failed" կարգավիճակ: Սա սխալ չէ կոնֆիգուրացիայի կամ թեստի կատարման մեջ, այլ սպասվող վարքագիծ է Saga օրինակի համար: Այս օրինակը հատուկ նախագծված է՝ ցուցադրելու փոխհատուցման մեխանիզմը սխալ հայտնաբերելիս: StepWithError Activity-ը ինտենցիոնալ կերպով ստեղծում է սխալ՝ փողերի հանման և մուտքի գործողությունները կատարելուց հետո՝ ցուցադրելով, թե ինչպես են սկսվում փոխհատուցող գործողությունները: Այս օրինակում "Failed" կարգավիճակը ցույց է տալիս, որ փոխհատուցման մեխանիզմը ճիշտ է աշխատել, և համակարգը վերադարձել է հետևողական վիճակի՝ սխալը հայտնաբերելուց հետո: