Temporal¶
Bu makalede
Bilgi
Temporal, güvenilir dağıtık uygulamalar oluşturmak için açık kaynaklı bir platformdur. Modern geliştirmenin temel zorluklarından birini ele alır: kritik süreçlerin kararsız ortamlarda yürütülmesini sağlamak. Geliştiricilerin altyapı hatalarını yönetmek yerine iş mantığına odaklanmasına olanak tanır.
Temporal. Temel Özellikler¶
- Workflow Orchestration: Uzun süreli iş süreçlerinin sağlam bir şekilde yürütülmesini sağlar. Hataları ve yeniden denemeleri otomatik olarak yöneterek görevlerin tamamlanmasını garanti eder.
- Distributed Transactions: Dağıtık kilitler (distributed locks) kullanmadan farklı servisler arasında tutarlı işlem yürütümü sağlar.
- Timeouts and Scheduling: Uzun süreçler için bile zamanlayıcılar ayarlamaya ve görevleri yüksek hassasiyetle planlamaya olanak tanır.
- Scalability: Yüksek yükları karşılamak için yatay ölçeklendirmeyi destekler. Bileşenler bağımsız olarak ölçeklendirilebilir.
- Historical Debugging: Süreç yürütme geçmişini koruyarak iş akışlarının analiz edilmesini ve hata ayıklanmasını sağlar.
- Versioning: Çalışan görevleri kesintiye uğratmadan güvenli iş akışı güncellemelerini destekler.
- Observability: Uygulama kontrolü için izleme ve izleme (tracing) sistemleriyle entegre olur.
- Multi-tenancy: Birden fazla ekip veya uygulama için izolasyon ve kaynak yönetimi sağlar.
Çalıştırma Ö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 |
Temporal Kurulumu Sonrası Başlangıç¶
Ödeme yapıldıktan sonra, sunucunun hazır olduğuna dair bir bildirim kayıtlı e-posta adresinize gönderilecektir. Bu bildirim, erişim için VPS IP adresini ve giriş bilgilerini içerecektir. Şirket müşterileri, donanımı server management panel and API — Invapi üzerinden yönetirler.
webpanel etiketi altındaki bağlantıyı takip ettikten sonra bir yetkilendirme penceresi açılacaktır.
Yetkilendirme verileri, sunucu yönetim panelindeki Configuration >> Tags sekmesinde veya gönderilen e-postada bulunabilir:
- Web arayüzü üzerinden Temporal management panel erişimi için bağlantı: webpanel etiketi içindedir;
- Sunucuyu yönetmek için Login ve Password: sunucu tesliminde e-posta ile sağlanır.
Web arayüzüne sahip ana bileşenler:
| 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 |
Ana Ekran ve Navigasyon¶
webpanel etiketi altındaki bağlantıyı takip ettikten sonra Temporal web arayüzü açılacaktır:

Ana ekran, seçilen namespace içindeki iş akışlarının (Workflows) bir listesini görüntüler. "No Workflows running in this Namespace" mesajı, o anda aktif süreç bulunmadığını belirtir.
Arayüzün ana öğeleri:
- Soldaki Sidebar, sistemin farklı bölümlerine erişim sağlar;
- Top bar, mevcut namespace'i gösterir (varsayılan olarak "default");
- Sağ üst köşede yeni süreçler başlatmak için
Start Workflowdüğmesi; - Status, Workflow ID, Run ID, Type, Start, End sütunlarına sahip Process table.
Fonksiyonel yetenekler
-
Yeni Bir Workflow Süreci Başlatma:
- Sağ üst köşedeki
Start Workflowdüğmesine tıklayın; - Açılan formda gerekli parametreleri doldurun;
- Süreç oluşturmayı onaylayın.
- Sağ üst köşedeki
-
Süreçleri Görüntüleme ve Filtreleme:
- Çeşitli kriterlere göre süreçleri seçmek için
Filterdüğmesini kullanın; - Detaylı bilgi görüntülemek için tablodan herhangi bir süreci seçin.
- Çeşitli kriterlere göre süreçleri 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:
- Zaman dilimi değişiklikleri için sağ üst köşede UTC seçicisi;
(Gear) düğmesi, ek arayüz ayarlarına erişim içindir.
Tipik Kullanım Durumları:
- Süreçleri İzleme: Çalışan görevlerin durumunu düzenli olarak kontrol etme;
- Hata Ayıklama: Hatalar durumunda ayrıntılı analiz yapma;
- İş Yükü Yönetimi: Süreçleri başlatma, duraklatma ve iptal etme;
- Yeni Süreçler Geliştirme: Özel iş akışları oluşturmak için kod örneklerini kullanma.
Not
Temporal kullanımı hakkında ayrıntılı bilgiye resmi geliştirici dokümanlarından ulaşılabilir.
Go ile Temporal Test Etme (Opsiyonel)¶
Bilgi
Aşağıda, gerekli bileşenlerin kurulması ve Go dilinde bir Saga deseni örneği kullanılarak Temporal'ın test edilmesi süreci yer almaktadır. Bu test, platformun uzun süreli iş süreçlerini otomatik hata yönetimi ile güvenilir bir şekilde yürütme yeteneğini göstermektedir. Saga deseni, telafi edici işlemler (compensating actions) mekanizması aracılığıyla dağıtık sistemlerde işlem atomikliği sorununu çözer.
1. Go Kurulumu¶
Testlere başlamadan önce sunucuya Go kurun:
Paket listelerini güncelleyin
Bağımlılıkları kurun Go'nun en son sürümünü indirin (yazıldığı tarih itibarıyla 1.22.1'dir) Arşivi/usr/local dizinine çıkarın Ortam değişkenlerini ayarlayın Değişiklikleri mevcut oturumda aktifleştirin Kurulumu doğrulayın 2. Temporal Örnek Deposunu Klonlayın¶
Ana dizine gidin
Go örnekleri deposunu klonlayın Örnekler dizinine gidin3. Saga Örneği Kullanarak Test Edin¶
Saga deseni, hatalar durumunda geri alma (telafi etme) yeteneği sağlayarak dağıtık işlemleri yönetmek için kullanılır.
Saga örneğinin yapısı
saga/
├── worker/main.go # Görevleri işleyen Worker süreci
├── start/main.go # Worker sürecini başlatır
├── activity.go # Aksiyon tanımları (para çekme/yatırma)
├── workflow.go # Aksiyon dizisi tanımı
└── shared.go # Ortak tanımlar
Testi çalıştırın:
-
Worker'ı başlatın (ilk terminalde çalıştırın):
Worker, Temporal'a kaydolacak ve bir görev bekleyecektir. Görev alma girişimlerine dair log 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 sürecini başlatır.
Beklenen sonuç:
Worker loglarında şunları göreceksiniz:
- 001-001 hesabından para çekilmesi;
- 002-002 hesabına para yatırılması;
StepWithErroraktivitesinde özel olarak oluşturulmuş bir hata;- Hatalı aktiviteyi yürütmek için üç girişim;
- Telafi edici işlemlerin başlatılması:
- Fonların orijinal hesaba iadesi;
- Para çekme işleminin iptali.
4. Sonuçları Temporal Web Arayüzü Üzerinden Doğrulayın¶
- Tarayıcınızda Temporal web arayüzünü açın ( webpanel etiketi aracılığıyla);
- Arayüzde
transfer-money-workflowID'sine sahip iş akışını bulun; - Tüm aktiviteler ve telafi edici işlemler dahil olmak üzere iş akışının tam yürütme geçmişini göreceksiniz:

Bilgi
Temporal web arayüzünde, transfer-money-workflow'un 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 hatayla karşılaşıldığında telafi mekanizmasını göstermek için özel olarak tasarlanmıştır. StepWithError aktivitesi, para çekme ve yatırma işlemlerini gerçekleştirdikten sonra kasıtlı olarak bir hata oluşturarak telafi edici işlemlerin nasıl başlatıldığını gösterir. Bu örnekteki "Failed" durumu, telafi mekanizmasının doğru çalıştığını ve sistemin hatayı tespit ettikten sonra tutarlı bir duruma geri döndüğünü gösterir.
API Aracılığıyla Temporal Sunucusu Sipariş Etme¶
Bu yazılımı API kullanarak kurmak için bu talimatları izleyin.