Անցնել պարունակությանը

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-ի վեբ ինտերֆեյսը.

Temporal UI

Հիմնական էջում ցուցադրվում է Workflow-ների ցանկը (Workflows) ընտրված Namespace-ում: "No Workflows running in this Namespace" հաղորդագրությունը ցույց է տալիս, որ այդ պահին ակտիվ գործընթացներ չկան:

Ինտերֆեյսի հիմնական տարրերը.

  • Sidebar ձախ կողմում ապահովում է համակարգի տարբեր բաժիններին մուտք;
  • Top bar ցույց է տալիս ընթացիկ Namespace-ը (ներկայում՝ "default");
  • Start Workflow կոճակը վերին աջ անկյունում նոր գործընթացներ սկսելու համար;
  • Գործընթացների աղյուսակ Status, Workflow ID, Run ID, Type, Start, End սյունակներով:

Ֆունկցիոնալ հնարավորություններ

  1. Նոր Workflow գործընթացի սկսելը.

    • Սեղմեք վերին աջ անկյունում գտնվող Start Workflow կոճակը;
    • լրացրեք անհրաժեշտ պարամետրերը հայտնվող ձևաթղթում;
    • Հաստատեք գործընթացի ստեղծումը:
  2. Գործընթացների դիտում և ֆիլտրում.

    • Օգտագործեք Filter կոճակը՝ գործընթացները ընտրելու համար տարբեր չափանիշներով;
    • Ընտրեք աղյուսակից ցանկացած գործընթաց՝ մանրամասն տեղեկատվություն դիտելու համար:
  3. Կոդի օրինակներ.

    • Մուտք գործեք ինտեգրման օրինակներին GitHub պահեստների հղումների միջոցով.
    • samples-go - Go օրինակներ;
    • samples-java - Java օրինակներ;
    • samples-typescript - TypeScript օրինակներ;
    • samples-python - Python օրինակներ;
    • samples-dotnet - .NET օրինակներ;
    • samples-php - PHP օրինակներ:
  4. Կարգավորումների փոփոխություն.

    • UTC ընտրիչը վերին աջ անկյունում՝ ժամային գոտի փոխելու համար;
    • (Gear) կոճակը նախատեսված է լրացուցիչ ինտերֆեյսի կարգավորումներին մուտք գործելու համար:

Տիպիկ օգտագործման դեպքեր.

  • Գործընթացների մոնիտորինգ. Աշխատող առաջադրանքների կարգավիճակի կանոնավոր ստուգում;
  • Թեստավորում. Ձախողումների դեպքում սխալների մանրամասն վերլուծություն;
  • Բեռնվածության կառավարում. Գործընթացների սկսել, դադարեցնել և չեղարկել;
  • Նոր գործընթացների մշակում. Կոդի օրինակների օգտագործում՝ անհատական workflow-ներ ստեղծելու համար:

Նշում

Temporal-ի օգտագործման մանրամասն տեղեկատվությունը կարելի է գտնել պաշտոնական մշակողների փաստաթղթերում:

Temporal-ի թեստավորում Go-ով (ըստ ցանկության)

Տեղեկատվություն

Ստորև ներկայացված է անհրաժեշտ բաղադրիչների տեղադրման և Temporal-ի թեստավորման գործընթացը՝ Go-ում Saga pattern օրինակի միջոցով: Այս թեստը ցուցադրում է հարթակի հիմնական հնարավորությունը՝ երկարատև բիզնես գործընթացների հուսալի կատարումը՝ ավտոմատ ձախողումների կառավարմամբ: Saga pattern-ը լուծում է բաշխված համակարգերում փոխանցման ատոմայնության խնդիրը՝ փոխհատուցող գործողությունների մեխանիզմի միջոցով:

1. Go-ի տեղադրում

Թեստավորումը սկսելուց առաջ տեղադրեք Go սերվերում.

Թարմացրեք փաթեթների ցանկերը

apt update
Կախվածությունների տեղադրում

apt install -y wget git curl
Ներբեռնեք Go-ի վերջին տարբերակը (այս պահին այն 1.22.1 է)

wget https://golang.org/dl/go1.22.1.linux-amd64.tar.gz
Բացեք արխիվը /usr/local-ում

tar -C /usr/local -xzf go1.22.1.linux-amd64.tar.gz
Սահմանեք միջավայրի փոփոխականները

echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
echo 'export GOPATH=$HOME/go' >> ~/.bashrc
echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.bashrc
Ակտիվացրեք փոփոխությունները ընթացիկ սեսիայում

source ~/.bashrc
Ստուգեք տեղադրումը

go version

2. Կլոնավորեք Temporal օրինակների պահեստը

Մուտք գործեք տնային թղթապանակ

cd ~
Կլոնավորեք Go օրինակների պահեստը

git clone https://github.com/temporalio/samples-go.git
Մուտք գործեք օրինակների թղթապանակ

cd samples-go

3. Թեստավորեք Saga օրինակի միջոցով

Saga pattern-ը օգտագործվում է բաշխված փոխանցումները կառավարելու համար՝ ապահովելով հետադարձման (փոխհատուցման) հնարավորությունը սխալների դեպքում:

Saga օրինակի կառուցվածքը

saga/
├── worker/main.go     # Worker գործընթացը, որը կատարում է առաջադրանքներ
├── start/main.go      # Worker գործընթացի նախապատրաստում
├── activity.go        # Activity-ների սահմանում (փողերի հանում/կրեդիտում)
├── workflow.go        # Activity-ների հաջորդականության սահմանում
└── shared.go          # Ընդհանուր սահմանումներ

Կատարեք թեստը.

  1. Սկսեք worker-ը (կատարեք առաջին տերմինալում).

    cd ~/samples-go
    go run saga/worker/main.go
    
    Worker-ը կգրանցվի Temporal-ում և սպասելու է առաջադրանքի: Կհայտնվեն առաջադրանքներ ստանալու փորձերի մասին լոգային հաղորդագրություններ:

  2. Սկսեք starter-ը (կատարեք երկրորդ տերմինալում).

    cd ~/samples-go
    go run saga/start/main.go
    
    Starter-ը սկսում է փողերի փոխանցման գործընթացը մեկ հաշվից մյուսը:

Սպասվող արդյունք.

Worker-ի լոգերում կտեսնեք.

  1. Փողերի հանում 001-001 հաշվից;
  2. Փողերի մուտք 002-002 հաշվին;
  3. StepWithError Activity-ում հատուկ ստեղծված սխալ;
  4. Սխալ Activity-ի կատարման երեք փորձ;
  5. Փոխհատուցող գործողությունների իրականացում.
    • Փողերի վերադարձ սկզբնական հաշիվ;
    • Փողերի հանման չեղարկում:

4. Ստուգեք արդյունքները Temporal վեբ ինտերֆեյսի միջոցով

  1. Բացեք Temporal վեբ ինտերֆեյսը ձեր բրաուզերում ( webpanel թեգի միջոցով);
  2. Ինտերֆեյսում գտեք Workflow-ը՝ ID transfer-money-workflow;
  3. Կտեսնեք Workflow-ի կատարման ամբողջական պատմությունը, ներառյալ բոլոր Activity-ները և փոխհատուցող գործողությունները.

Տեղեկատվություն

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

Temporal սերվերի պատվեր API-ի միջոցով

question_mark
Is there anything I can help you with?
question_mark
AI Assistant ×