Temporal¶
Bu makalede
Bilgi
Temporal, güvenilir dağıtık uygulamalar oluşturmak için kullanılan açık kaynaklı bir platformdur. Modern geliştirme süreçlerindeki temel zorluklardan birini çözer: kararsız ortamlarda kritik işlemlerin yürütülmesini garanti altına alır. Geliştiricilerin altyapı hatalarıyla uğraşmak yerine iş mantığına odaklanmalarını sağlar.
Temporal. Temel Özellikler¶
- İş Akışı Orkestrasyonu: Uzun süreli iş süreçlerinin sağlam bir şekilde yürütülmesini sağlar. Hataları ve yeniden denemeleri otomatik olarak yönetir, görevlerin tamamlanmasını garanti eder.
- Dağıtık İşlemler: Dağıtık kilitler kullanmadan farklı servisler arasında tutarlı işlem yürütmesini sağlar.
- Zaman Aşımı ve Zamanlama: Uzun süreli süreçler için bile yüksek hassasiyetle zamanlayıcı ayarlama ve görev zamanlama imkanı sunar.
- Ölçeklenebilirlik: Yüksek yükleri yönetmek için yatay ölçeklendirmeyi destekler. Bileşenler bağımsız olarak ölçeklendirilebilir.
- Tarihsel Hata Ayıklama: İşlem yürütme geçmişini korur, iş akışlarının analizini ve hata ayıklamasını mümkün kılar.
- Sürümleme: Çalışan görevleri kesintiye uğratmadan güvenli iş akışı güncellemelerini destekler.
- Gözlemlenebilirlik: Uygulama kontrolü için izleme ve izleme sistemleriyle entegre çalışır.
- Çok Kiracılık: Birden fazla ekip veya uygulama için izolasyon ve kaynak yönetimi sağlar.
Dağıtım Özellikleri¶
| ID | Yazılım Adı | Uyumlu OS | VM | BM | VGPU | GPU | Min CPU (Çekirdekler) | Min RAM (GB) | Min HDD/SSD (GB) | Özel Alan Adı | Aktif |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 266 | Temporal | Ubuntu 22.04 | + | + | + | + | 2 | 2 | 30 | Hayır | SİPARİŞ VER |
- Önceden yüklü bağımlılıklar:
- Docker;
- Git (depo klonlamak için).
- Ek bileşenler:
- Nginx (ters proxy için);
- Postgresql (veritabanı);
- Elasticsearch (iş akışı geçmişi depolama için);
- Grafana (izleme için);
- Prometheus (metrik toplama için);
- Jaeger (dağıtık izleme için);
- OpenTelemetry Collector (telemetri toplama için).
- Proje dizini:
/root/docker-compose - Özelleştirme dosyası:
/root/docker-compose/docker-compose-multirole_edited.yaml
Web arayüzüne sahip temel bileşenler:
| Ad | Yerel adres ve bağlantı noktası | Harici adres |
|---|---|---|
| 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'in Dağıtılmasından Sonra Başlangıç¶
Ödeme yapıldıktan sonra, sunucunun hazır olduğuna dair bir bildirim kayıtlı e-posta adresinize gönderilecektir. Bu bildirimde VPS IP adresi ve erişim için giriş bilgileri yer alacaktır. Şirketimiz müşterileri donanımı sunucu yönetim paneli ve API — Invapi üzerinden yönetir.
webpanel etiketindeki bağlantıyı takip ettikten sonra bir yetkilendirme penceresi açılacaktır.
Yetkilendirme verileri, sunucu yönetim panelinin Configuration >> Tags sekmesinde veya gönderilen e-postada bulunabilir:
- Web arayüzü üzerinden Temporal yönetim paneline erişim bağlantısı: webpanel etiketinde;
- Login ve Password (sunucu yönetimi için): Sunucu teslimi sırasında gönderilen e-postada sağlanır.
Ana Ekran ve Navigasyon¶
webpanel etiketindeki bağlantıyı takip ettikten sonra Temporal web arayüzü açılacaktır:

Ana ekranda seçilen isim uzayındaki iş akışlarının (Workflows) listesi görüntülenir. "No Workflows running in this Namespace" mesajı, o anda aktif işlemin bulunmadığını gösterir.
Arayüzün temel öğeleri:
- Sol taraftaki Sidebar, sistemin farklı bölümlerine erişim sağlar;
- Top bar, geçerli isim uzayını gösterir (varsayılan olarak "default");
- Sağ üst köşedeki yeni işlemleri başlatmak için
Start Workflowdüğmesi; - Status, Workflow ID, Run ID, Type, Start, End sütunlarına sahip Process table.
İşlevsel yetenekler
-
Yeni Bir İş Akışı İşlemi Başlatma:
- Sağ üst köşedeki
Start Workflowdüğmesine tıklayın; - Açılan formda gerekli parametreleri doldurun;
- İşlem oluşturma işlemini onaylayın.
- Sağ üst köşedeki
-
İşlemleri Görüntüleme ve Filtreleme:
- Farklı kriterlere göre işlemleri seçmek için
Filterdüğmesini kullanın; - Detaylı bilgi görüntülemek için tablodan herhangi bir işlemi seçin.
- Farklı kriterlere göre işlemleri seçmek için
-
Kod Örnekleri:
- GitHub depo bağlantıları aracılığıyla entegrasyon örneklerine erişin:
- samples-go - Go örnekleri;
- samples-java - Java örnekleri;
- samples-typescript - TypeScript örnekleri;
- samples-python - Python örnekleri;
- samples-dotnet - .NET örnekleri;
- samples-php - PHP örnekleri.
-
Ayarları Değiştirme:
- Saat dilimi değişiklikleri için sağ üst köşedeki UTC seçici;
(Gear) düğmesi, ek arayüz ayarlarına erişmek içindir.
Tipik Kullanım Senaryoları:
- İşlemleri İzleme: Çalışan görevlerin durumunu düzenli olarak kontrol etme;
- Hata Ayıklama: Hatalar durumunda hataların detaylı analizi;
- İş Yüklerini Yönetme: İşlemleri başlatma, duraklatma ve iptal etme;
- Yeni İşlemler Geliştirme: Özel iş akışları oluşturmak için kod örneklerini kullanma.
Not
Temporal kullanımı hakkında detaylı bilgi resmi geliştirici dokümantasyonunda bulunabilir.
Go ile Temporal Testi (İsteğe Bağlı)¶
Bilgi
Aşağıda, gerekli bileşenlerin kurulması ve Go'da bir Saga deseni örneği kullanılarak Temporal'in test edilmesi süreci yer almaktadır. Bu test, otomatik hata yönetimi ile uzun ömürlü iş süreçlerinin güvenilir bir şekilde yürütülmesi konusunda platformun temel yeteneğini gösterir. Saga deseni, telafi edici eylemler mekanizması aracılığıyla dağıtık sistemlerdeki işlem atomikliği sorununu çözer.
1. Go'yu Kurun¶
Teste başlamadan önce sunucuya Go'yu kurun:
Paket listelerini güncelleyin
Bağımlılıkları yükleyin Go'nun en son sürümünü indirin (yazım tarihi itibarıyla 1.22.1) Arşivi/usr/local dizinine çıkarın Çevre değişkenlerini ayarlayın Mevcut oturumda değişiklikleri etkinleştirin Kurulumu doğrulayın 2. Temporal Örnekleri Deposunu Klonlayın¶
Ana dizine gidin
Go örnekleri deposunu klonlayın Örnekler dizinine gidin3. Saga Örneği Kullanarak Test Yapın¶
Saga deseni, dağıtık işlemlerin yönetimi için kullanılır ve hata durumunda geri alma (telafi etme) yeteneğini sağlar.
Saga örneğinin yapısı
saga/
├── worker/main.go # Görevleri işleyen worker işlemi
├── start/main.go # Worker işlemini başlatır
├── activity.go # Eylemlerin tanımı (para çekme/yatırma)
├── workflow.go # Eylem dizisinin tanımı
└── shared.go # Ortak tanımlar
Testi çalıştırın:
-
Worker'ı başlatın (birinci terminalde çalıştırın):
Worker, Temporal'e kaydolacak ve bir görevi bekleyecektir. Görev alma girişimleri hakkında günlük mesajları görünecektir. -
Başlatıcıyı başlatın (ikinci terminalde çalıştırın):
Başlatıcı, bir hesaptan diğerine para transferi işlemini başlatır.
Beklenen sonuç:
Worker'ın günlüklerinde şunları göreceksiniz:
- 001-001 hesabından para çekme;
- 002-002 hesabına para yatırma;
StepWithErroraktivitesinde özel olarak oluşturulmuş bir hata;- Hatalı aktivitenin yürütülmesi için üç deneme;
- Telafi edici eylemlerin başlatılması:
- Orijinal hesaba fonların iadesi;
- Para çekme işleminin iptali.
4. Temporal Web Arayüzü Üzerinden Sonuçları Doğrulayın¶
- Tarayıcınızda Temporal web arayüzünü açın ( webpanel etiketi aracılığıyla);
- Arayüzde, ID'si
transfer-money-workflowolan iş akışını bulun; - Tüm aktiviteleri ve telafi edici eylemleri içeren iş akışının tam yürütme geçmişini göreceksiniz:

Bilgi
Temporal web arayüzünde, transfer-money-workflow iş akışının durumunun "Failed" olduğunu göreceksiniz. Bu, testin yapılandırmasında veya yürütülmesinde bir hata değil, Saga örneği için beklenen bir davranıştır. Bu örnek, bir hata ile karşılaşıldığında telafi mekanizmasını göstermek üzere özel olarak tasarlanmıştır. StepWithError aktivitesi, para çekme ve yatırma işlemlerini gerçekleştirdikten sonra kasıtlı olarak bir hata oluşturur ve telafi edici eylemlerin nasıl başlatıldığını gösterir. Bu örnekteki "Failed" durumu, telafi mekanizmasının düzgün çalıştığını ve sistemin hatayı tespit ettikten sonra tutarlı bir duruma döndüğünü gösterir.