Temporal¶
Bu makalede
Bilgi
Temporal, güvenilir dağıtık uygulamalar oluşturmak için açık kaynaklı bir platformdur. Modern geliştirme sürecindeki ana zorluklarından birini ele alır: istikrarsız ortamlarda kritik işlemlerin yürütülmesini sağlar. Geliştiricilere, altyapı hatalarını yönetmek yerine iş mantığı üzerinde çalışmalarına olanak tanır.
Temporal. Ana Özellikler¶
- İş Akışı Koordinasyonu: Uzun süreli iş akışlarının sağlam yürütülmesini sağlar. Otomatik olarak hataları ve yeniden denemeleri ele alır, görevin tamamlanmasını garanti eder.
- Dağıtık İşlemler: Dağıtılmış kilitleme kullanmadan farklı servislerde işlem yürütümlerini tutarlı hale getirir.
- Zaman Aşımı ve Zamanlama: Uzun süreli işlemler için bile yüksek hassasiyetle zamanlayıcılar ayarlama ve görevleri planlama imkanı sunar.
- Ölçeklenebilirlik: Yüksek trafikleri yönetmek için yatay ölçeklendirme desteği sağlar. Bileşenler bağımsız olarak ölçeklenebilir.
- Tarihsel Hata Ayıklama: İş akışı yürütmesinin geçmişini korur, bu sayede iş akışlarının analizi ve hata ayıklamasına olanak tanır.
- Sürüm Yönetimi: Çalışan görevleri kesintiye uğratmadan güvenli iş akışı güncellemelerini destekler.
- Görünürlük: Uygulama denetimi için izleme ve iz sorgulama sistemleri ile entegrasyon sağlar.
- Çok Kiracılılık: Farklı ekipler veya uygulamalar için kaynak yönetimi ve izolasyon sunar.
Çalıştırma Özellikleri¶
ID | Uyumlu OS | VM | BM | VGPU | GPU | Min CPU (Çekirdekler) | Min RAM (GB) | Min HDD/SSD (GB) | Aktif |
---|---|---|---|---|---|---|---|---|---|
266 | Ubuntu 22.04 | + | + | + | + | 2 | 2 | 30 | Evet |
- Önceden yüklenmiş bağımlılıklar:
- Docker;
- docker-compose;
- Git (repository klonlama için).
- Ek bileşenler:
- Nginx (ters proxy için);
- Postgresql (veritabanı);
- Elasticsearch (iş akışı tarihçesi depolama için);
- Grafana (izleme için);
- Prometheus (metrik toplama için);
- Jaeger (dağıtık izlemek 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 ana bileşenler:
Ad | Yerel adres ve port | Dış 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 Metrikleri | - | https://temporal{server_id_from_invapi}.hostkey.in/prometheus/metrics |
Temporal Dağıttıktan Sonra Başlarken¶
Ödeme sonrasında, sunucunun hazır olduğu hakkında bir bildirim, kayıtlı e-posta adresinize gönderilecektir. Bu bildirimde VPS IP adresi ve erişim için gerekli kimlik bilgileri yer alacaktır. Şirket müşterilerimiz sunucu yönetim paneli ve API — Invapi aracılığıyla donanımı yönetir.
webpanel etiketi ile gelen bağlantıyı takip ettikten sonra, yetkilendirme penceresi açılacaktır.
Yetkilendirme verileri sunucu yönetim panelinin Info >> Tags sekmesinde veya gönderilen e-postada bulunabilir:
- Web arayüzüne erişim için Temporal yönetim paneline bağlantı: webpanel etiketinde;
- Sunucuyu yönetmek için Giriş ve Şifre: Sunucunun teslim edilmesiyle birlikte gönderilen e-postada sağlanmıştır.
Ana Ekran ve Gezinme¶
webpanel etiketi ile gelen bağlantıyı takip ettikten sonra Temporal web arayüzü açılacaktır:
Ana ekran, seçilen ad alanında (namespace) iş akışlarının (Workflows) listesini gösterir. "Bu Ad Alanında Çalışan İş Akışları Yok" mesajı, o anki anda aktif süreçlerin olmadığını belirtir.
Arayüzün ana unsurları:
- Sol taraftaki menü çubuğu, sistem içerisinde farklı bölümlere erişim sağlar;
- Üst çubuk, varsayılan olarak "default" olan mevcut ad alanını gösterir;
Start Workflowüst sağ köşedeki buton ile yeni işlemler başlatılır;- İşlem tablosu ile Durum, İş Akışı Kimliği (Workflow ID), Çalıştırma Kimliği (Run ID), Tür, Başlangıç, Bitiş sütunları bulunur.
İşlevsel olanaklar
-
Yeni Bir İş Akışı Süreci Başlatma:
- Üst sağ köşedeki
Start Workflowbutonuna tıklayın; - Gerekli parametreleri görüntülenen formda doldurun;
- İşlem oluşturmayı onaylayın.
- Üst sağ köşedeki
-
İşlemleri Gösterme ve Filtreleme:
- Çeşitli kriterlere göre işlemleri seçmek için
Filterbutonunu kullanın; - Tablodan herhangi bir sürecin detaylı bilgilerini görüntülemek için seçim yapın.
- Çeşitli kriterlere göre işlemleri seçmek için
-
Kod Örnekleri:
- Entegrasyon örneklerine GitHub deposu bağlantıları aracılığıyla erişilebilir:
- samples-go - Go örnekleri;
- samples-java - Java örnekleri;
- samples-typescript - TypeScript örnekleri;
- samples-python - Python örnekleri;
- samples-dotnet - .NET örnekleri;
- samples-php - PHP örnekleri.
4 Ayarları Değiştirme: - Üst sağ köşedeki UTC seçici ile zaman dilimi değişikliği yapılabilir; - butonu, ek arayüz ayarlarına erişim için tasarlanmıştır.
Tipik Kullanım Durumları:
- İşlemleri İzleme: Çalışan görevlerin durumunu düzenli olarak kontrol etmek;
- Hata Ayıklama: Hatalar meydana geldiğinde hataların detaylı analizi yapmak;
- Yük Yönetimi: Süreçleri başlatma, askıya alma ve iptal etme;
- Yeni İşlemler Geliştirme: Özel iş akışları oluşturmak için kod örneklerini kullanmak.
Not
Temporal kullanımına dair detaylı bilgiler resmi geliştirici dokümantasyonunda bulunabilir.
Temporal ile Test Etme (İsteğe Bağlı)¶
Bilgi
Aşağıda, Go dilindeki Saga deseni örneği kullanarak Temporal'u test etmek için gerekli bileşenleri kurma ve test etme süreci yer almaktadır. Bu test platformun temel yeteneğini; uzun süreli işlem hattı süreçlerinin güvenilir bir şekilde çalıştırılması ve otomatik başarısızlık yönetimi ile göstermektedir. Saga deseni, dağıtık sistemlerde işlem atomitesi sorununu telafi edici eylemlerin mekanizmasıyla çözer.
1. Go'yu Yükleme¶
Teste başlamadan önce sunucuya Go'yu yükleyin:
Paket listelerini güncelle
Bağımlılıkları yükle (Bu yazının yazıldığı tarihte) en son sürüm olan Go 1.22.1'i indir Arşivi/usr/local
dizinine çıkart Ortam değişkenlerini ayarla Değişiklikleri mevcut oturuma aktar Yüklemeyi doğrula 2. Temporal Örnek Deposyonu Klonla¶
Kullanıcı dizinine git
Go örneklerini deposunu klonla Örnekler dizinine git3. Saga Örneği ile Test Etme¶
Saga deseni, hata durumunda geri çekilme (telafi) imkanı 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 ele alan işçi süreci
├── start/main.go # İşçi sürecini başlatan dosya
├── activity.go # Eylemlerin (paraları çekip yatırma) tanımı
├── workflow.go # Eylem dizisinin tanımı
└── shared.go # Ortak tanımlar
Testi çalıştır:
-
İşçiyi başlat (ilk terminalde çalıştırın):
İşçi Temporal'a kayıt olacak ve bir görev bekleyecektir. Görev alma girişimleri hakkında log mesajları görünecektir. -
Başlatıcıyı çalıştır (ikinci terminalde çalıştırın):
Başlatıcı, bir hesaptan diğerine para transferi işlemini başlatacaktır.
Beklenen sonuç:
İşçinin loglarında şunları göreceksiniz:
- Hesap 001-001'den paranın çekilmesi;
- Hesap 002-002'ye para yatırılması;
- Aktivite
StepWithError
de özel olarak oluşturulan bir hata; - Sorunlu aktivitenin üç kez çalıştırılma girişimi;
- Telafi eylemlerinin başlatılması:
- Paraların orijinal hesaba iade edilmesi;
- Paranın çekilmesinin iptal edilmesi.
4. Sonuçları Temporal Web Arayüzü Üzerinden Doğrula¶
- Tarayıcınızda (
`:fontawesome-solid-tags:
webpanel` etiketi aracılığıyla) Temporal web arayüzünü açın; - Arayüzde
transfer-money-workflow
ID'sine sahip işlem hattı ile karşılaşın; - İşlem hattının tam çalıştırma geçmişini, tüm aktiviteleri ve telafi eylemleriyle birlikte göreceksiniz:
Bilgi
Temporal web arayüzünde, transfer-money-workflow
'ün "Failed." durumda olduğunu göreceksiniz. Bu, testin yapılandırması veya çalıştırılmasında bir hata değildir ancak Saga örneği için beklenen davranıştır. Bu örnek, hatayla karşılaştığında telafi mekanizmasını göstermek üzere özel olarak tasarlanmıştır. Aktivite StepWithError
kasıtlı olarak çekme ve yatırma işlemlerini gerçekleştirdikten sonra bir hatayı oluşturur, bu da telafi eylemlerinin nasıl başlatıldığını gösterir. Bu örnekteki "Failed" durumu, hata tespit edildikten sonra sistemin tutarlı bir duruma geri döndüğünü ve telafi mekanizmasının doğru çalıştığını göstermektedir.
API Üzerinden Temporal Sunucusu Siparişi Verme¶
Bu yazılımı API kullanarak kurmak için buraya bakın.
Bu sayfanın bazı içerikleri ya da yazıları AI tarafından oluşturulmuş veya çevrilmiş olabilir.