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

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-ը.

Temporal UI

Գլխավոր էկրանը ցուցադրում է 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 սյունակներով:

Օգտագործման տիպիկ դեպքեր

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

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

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

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

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

Օգտագործման տիպիկ դեպքեր:

  • Գործընթացների մոնիթորինգ: Ընթացիկ առաջադրանքների կարգավիճակի պարբերական ստուգում:
  • Debugging: Սխալների մանրամասն վերլուծություն ձախողումների դեպքում:
  • Workloads-ի կառավարում: Գործընթացների սկիզբ, դադարեցում և չեղարկում:
  • Նոր գործընթացների մշակում: Code examples-ների օգտագործում՝ ստեղծման համար ստեղծվող workflow-ներ:

Նշում

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

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

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

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

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 Examples ռեպոզիտորիան

Անցնել home դիրքին

cd ~
Կլոնոնելել Go օրինակների ռեպոզիտորիան

git clone https://github.com/temporalio/samples-go.git
Անցնել examples թղթապանակ

cd samples-go

3. Թեստավորում Saga օրինակի օգտագործմամբ

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

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

saga/
├── worker/main.go     # Worker գործընթացը, որը մշակում է առաջադրանքները
├── start/main.go      # Ինիցիալիզացնում է worker գործընթացը
├── activity.go        # Գործողությունների սահմանում (արտահանում/վերադարձում գումարներ)
├── workflow.go        # Գործողությունների հաջորդականության սահմանում
└── shared.go          # Common սահմանումներ

Գործարկել թեստը.

  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. Երեք փորձ՝ սխալ գործողությունը կատարելու համար.
  5. Փոխհատուցող գործողությունների գործարկում.
    • Գումարի վերադարձ սկզբնական հաշվին.
    • Գումարի արտահանման չեղարկում:

4. Վերջնական արդյունքների ստուգում Temporal Web Interface-ի միջոցով

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

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

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

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

Այս ծրագրը API-ի միջոցով տեղադրելու համար հետևեք այս հրահանգներին.

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