Temporal¶
Այս հոդվածում
Տեղեկատվություն
Temporal-ը բաց կոդով հարթակ է վստահելի տարածված հավելվածների ստեղծման համար: Այն լուծում է ժամանակակից մշակման එක් հիմնական մարտահր招标ներից՝ անկայուն միջավայրերում կարևոր գործընթացների կատարումն ապահովելը: Այն թույլ է տալիս մշակողներին կենտրոնանալ բիզնես տրամաբանության վրա, այլ ոչ թե ենթակառուցվածքային ձախողումների վերամշակման վրա:
Temporal. Հիմնական հնարավորություններ¶
- Workflow Orchestration: Ապահովում է երկարատև բիզնես գործընթացների հուսալի կատարումը: Ավտոմատ կերպով հանդարձարում է ձախողումները և վերարձակումները (retries), երաշխավորելով առաջադրանքների ավտարումը:
- Distributed Transactions: Ապահովում է տարբեր ծառայությունների միջև գործողությունների հետ տեղեկատվական կատարումը՝ առանց տարածված կողպողների (distributed locks) օգտագայման:
- Timeouts and Scheduling: Թույլ է տալիս սահմանել թայմերներ և պլանավորել առաջադրանքներ բարձր ճշտությամբ, նույնիսկ երկարատև գործընթացների համար:
- Scalability: Աջակցում է հորիզոնական մասշտաբավորմանը՝ բարձր ծանրաբեռնվածությունն իջեցնելու համար: Բաղադրիչները կարող են մասշտաբավորվել անկախ:
- Historical Debugging: Պահպանում է գործընթացների կատարման պատմությունը՝ հնարավորություն տալով վերլուծել և ուղղել (debug) workflow-ները:
- Versioning: Աջակցում է workflow-ների անվտանգ թարմացումներին՝ առանց ընթացիկ առաջադրանքների կատարումը ընդհատելու:
- Observability: Ինտեգրվում է մոնիթորինգի և հետքերի (tracing) համակարգերի հետ հավելվածների վերահսկման համար:
- Multi-tenancy: Ապահովում է մեկուսացում և ռեսուրսների կառավարում բազմաթիվ թիմերի կամ հավելվածների համար:
Տեղակայման հնարավորություններ¶
| ID | Ծրագրային ապահովման անվանում | Համատեղելի ՕՀ | VM | BM | VGPU | GPU | Նվազագույն CPU (միջուկներ) | Նվազագույն RAM (ԳԲ) | Նվազագույն HDD/SSD (ԳԲ) | Սեփական դոմեն | Ակտիվ |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 266 | Temporal | Ubuntu 22.04 | + | + | + | + | 2 | 2 | 30 | Ոչ | ՊԱՏՎԻՐԵԼ |
Temporal-ի տեղակայումից հետո սկսել աշխատանքը¶
Վճարումից հետո ձեր գրանցված էլեկտրոնային հասցեին կուղարկվի ծանուցում սերվերի պատրաստ լինելու մասին: Այն կներառի VPS IP հասցեն և մուտքի տվյալները: Մեր ընկերության հաճախորդները կառավարում են սարքավորումները server management panel և API միջոցով՝ Invapi:
Հետևելով webpanel թեգի հղումին՝ կբացվի նույնականացման (authorization) պատուհան:
Արտացույց տվյալները կարող են հայտնվել server management panel-ի Configuration >> Tags թաբում կամ ուղարկված էլեկտրոնային նամակում.
- Temporal management panel-ին մուտք գործելու հղումը web interface-ի միջոցով: հայտնվում է webpanel թեգում:
- Login և Password սերվերի կառավարման համար. տրվում է էլեկտրոնային նամակով սերվերի հանձնման պահին:
Web interface ունեցող հիմնական բաղադրիչները.
| Name | Local address and port | External address |
|---|---|---|
| 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 |
Գլխով էկրանը և նավիգացիան¶
Հետևելով webpanel թeգի հղումին, կբացվի Temporal-ի web interface-ը.

Գլխավոր էկրանը ցուցադրում է workflow-ների (Workflows) ցանկը ընտրված namespace-ում: "No Workflows running in this Namespace" հաղորդագրությունը նշանակում է, որ տվյալ պահին ակտիվ գործընթացներ չկան:
Ինտերֆեյսի հիմնական տարրերը.
- Sidebar-ը ձախ կողմում ապահովում է համակարգի տարբեր բաժիններ հասանելիություն:
- Top bar-ը ցույց է տալիս ընթացիկ namespace-ը (լռելակրորն՝ "default"):
Start Workflowկոճակը վերևի աջ անկյունում՝ նոր գործընթացներ սկսելու համար:- Process table-ը՝ Status, Workflow ID, Run ID, Type, Start, End սյունակներով:
Օգտագործման տիպիկ դեպքեր
-
Նոր Workflow գործընթաց սկսել:
- Սեղմեք
Start Workflowկոճակին վերևի աջ անկյունում. - Լրացրեք անհրաժեշտ պարամետրերը հայտնվող ձևում.
- Հաստատեք գործընթացի ստեղծումը:
- Սեղմեք
-
Գործընթացների դիտում և զտում (Filtering):
- Օգտագործեք
Filterկոճակը՝ տարբեր չափանիշներով գործընթացներ ընտրելու համար. - Ընտրեք ցուցակից ցանկացած գործընթաց՝ մանրամասն տեղեկատվություն տեսնելու համար:
- Օգտագործեք
-
Code Examples:
- Հասանելիություն ստացեք ինտեգրման օրինակներին GitHub ռեպոզիտորիայի հղումների միջոցով.
- samples-go - Go օրինակներ;
- samples-java - Java օրինակներ;
- samples-typescript - TypeScript օրինակներ;
- samples-python - Python օրինակներ;
- samples-dotnet - .NET օրինակներ;
- samples-php - PHP օրինակներ:
-
Կարգավորումների փոփոխում:
- UTC selector վերևի աջ անկյունում՝ ժամային գոտիներ փոխելու համար.
(Gear) կոճակը նախատեսված է ինտերֆեյսի լրացուցիչ կարգավորումներին հասնելու համար:
Օգտագործման տիպիկ դեպքեր:
- Գործընթացների մոնիթորինգ: Ընթացիկ առաջադրանքների կարգավիճակի պարբերական ստուգում:
- Debugging: Սխալների մանրամասն վերլուծություն ձախողումների դեպքում:
- Workloads-ի կառավարում: Գործընթացների սկիզբ, դադարեցում և չեղարկում:
- Նոր գործընթացների մշակում: Code examples-ների օգտագործում՝ ստեղծման համար ստեղծվող workflow-ներ:
Նշում
Temporal-ից օգտվելու մասին մանրամասն տեղեկատվությունը կարելի է գտնել պաշտոնական developer documentation-ում:
Temporal-ի թեստավորում Go-ով (Կամընտիր)¶
Տեղեկատվություն
Ստորև ներկայացված է անհրաժեշտ բաղադրիչների տեղադրման և Go լեզվով Saga pattern օրինակով Temporal-ի թեստավորման գործընթացը: Այս թեստը ցույց է տալիս պլատֆորմի հիմնական հնարավորությունը՝ երկարատև բիզնես գործընթացների հուսալի կատարումը՝ ձախողումների ավտոմատ մշտադրմամբ: Saga pattern-ը լուծում է տարածված համակարգերում տրանզակցիոն ատոմիկության խնդիրը՝ փոխհատուցող գործողությունների (compensating actions) մեխանիզմի միջոցով:
1. Տեղադրել Go¶
Նախքան թեստավորումը սկսելը, տեղադրեք Go-ն սերվերի վրա.
Թարմացնել փաթեթների ցուցակները
Տեղադրել անհրաժեշտությունները Ներբեռնել Go-ի վերջին տարբերակը (այս պահին դա 1.22.1-ն է) Արտահանել արխիվը/usr/local դեպքում Սահմանել շրջակա միջավայրի փոփոխականները Կիրառել փոփոխությունները ընթացիկ սեսիայում Ստուգել տեղադրումը 2. Կլոնոնելելել Temporal Examples ռեպոզիտորիան¶
Անցնել home դիրքին
Կլոնոնելել Go օրինակների ռեպոզիտորիան Անցնել examples թղթապանակ3. Թեստավորում Saga օրինակի օգտագործմամբ¶
Saga pattern-ն օգտագործվում է տարածված տրանզակցիաների կառավարման համար՝ ապահովելով սխալների դեպքում հետադարձ գործողությունների (rollback/compensate) հնարավորությունը:
Saga օրինակի կառուցվածքը
saga/
├── worker/main.go # Worker գործընթացը, որը մշակում է առաջադրանքները
├── start/main.go # Ինիցիալիզացնում է worker գործընթացը
├── activity.go # Գործողությունների սահմանում (արտահանում/վերադարձում գումարներ)
├── workflow.go # Գործողությունների հաջորդականության սահմանում
└── shared.go # Common սահմանումներ
Գործարկել թեստը.
-
Սկսել worker-ը (կատարել առաջին տերմինալում).
Worker-ը կռեգիստրվի Temporal-ում և կսպասի առաջադրանքին: Կհայտնվեն լոգերային հաղորդագրություններ առաջադրանքներ ստանալու փորձերի մասին: -
Սկսել starter-ը (կատարել երկրորդ տերմինալում).
Starter-ը նախաձեռնում է գումարի փոխանցման գործընթացը մի հաշվից մյուսը:
Ակնկալվող արդյունքը.
Worker-ի լոգերներում դուք կտեսնեք.
- Գումարի արտահանում 001-001 հաշվից.
- Գումարի մուտք 002-002 հաշվի մեջ.
- Հատուկ ստեղծված սխալ
StepWithErroractivity-ում. - Երեք փորձ՝ սխալ գործողությունը կատարելու համար.
- Փոխհատուցող գործողությունների գործարկում.
- Գումարի վերադարձ սկզբնական հաշվին.
- Գումարի արտահանման չեղարկում:
4. Վերջնական արդյունքների ստուգում Temporal Web Interface-ի միջոցով¶
- Բացեք Temporal web interface-ը ձեր բրաউզերում (webpanel թեգի միջոցով).
- Ինտերֆեյսում գտեք
transfer-money-workflowID-ով workflow-ը. - Դուք կտեսնեք workflow-ի ամբողջական կատարման պատմությունը, ներառյալ բոլոր activity-ները և փոխհատուցող գործողությունները.

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