Altyapı
ByNinja Trading Bot altyapısı, kararsız gerçek dünya ortamlarında uzun süreli otonom çalışma için tasarlanmıştır. Kripto trading sistemleri 7/24 çalışır durumda kalmalı, beklenmeyen arızalardan otomatik olarak kurtulmalı ve manuel müdahale gerektirmeden kesinti süresini en aza indirmelidir.
Bunu başarmak için altyapı şunları içerir:
- •Watchdog yürütme döngüleri
- •Otomatik çökme kurtarma
- •Süreç yeniden başlatma orkestrasyonu
- •Düzgün kapanış işleme
- •Kalıcı çalışma zamanı ortamı
- •İzole modül yürütme
Tüm mimari, hata toleransı ve operasyonel süreklilik etrafında inşa edilmiştir.
Watchdog Scriptleri
Sistemin ana yürütme katmanı, özel bir watchdog başlatıcı scripti aracılığıyla kontrol edilir:
./run.sh trading
./run.sh telegramWatchdog scripti, aşağıdakilerden sorumlu hafif bir süreç denetleyicisi görevi görür:
- •Ortam doğrulaması
- •Sanal ortam aktivasyonu
- •Modül başlatma
- •Çökme tespiti
- •Otomatik yeniden başlatma işleme
Bu yaklaşım, geliştirme veya hafif dağıtımlar sırasında harici süreç yöneticilerine ihtiyaç duymaktan kaçınırken yine de üretim tarzı dayanıklılık sağlar.
Ortam Doğrulaması
Herhangi bir modülü başlatmadan önce, script şunları doğrular:
- •Giriş argümanları
- •Sanal ortam varlığı
- •Çalışma zamanı yapılandırması
Örnek:
if [[ "$MODULE" != "trading" && "$MODULE" != "telegram" ]]; then
echo "Invalid argument"
exit 1
fiScript ayrıca Python sanal ortamının var olduğundan emin olur:
if [ ! -f "$VENV_PATH" ]; then
echo "Virtual environment not found"
exit 1
fiBu, bozuk bağımlılıklar veya yanlış yürütme parametreleriyle kazara başlatmayı önler.
İzole Çalışma Zamanı Ortamı
Altyapı, yürütmeden önce özel bir Python sanal ortamını etkinleştirir:
source "./env/bin/activate"Bu şunları garanti eder:
- •Bağımlılık izolasyonu
- •Kararlı paket sürümleri
- •Tekrarlanabilir çalışma zamanı davranışı
- •Temiz dağıtım ayrımı
Başlatıcı ayrıca PYTHONPATH'i açıkça tanımlar:
PYTHONPATH="$(pwd)/src" python3 -c "$CMD"Bu, geçerli kabuk bağlamından veya dağıtım konumundan bağımsız olarak güvenilir içe aktarmalar sağlar.
Otomatik Yeniden Başlatma Sistemi
En önemli altyapı özelliklerinden biri otomatik yeniden başlatma döngüsüdür.
Başlatıcı, bot sürecini sürekli izler:
while true; do
PYTHONPATH="$(pwd)/src" python3 -c "$CMD"
doneSüreç beklenmedik şekilde çıkarsa, watchdog hemen arızayı tespit eder ve modülü otomatik olarak yeniden başlatır.
Çökme tespit mantığı:
EXIT_CODE=$?
if [ $EXIT_CODE -ne 0 ]; then
echo "[CRASH] Restarting..."
sleep $RESTART_DELAY
fiBu, aşağıdakilerden kurtulma kapasitesine sahip kendi kendini iyileştiren bir yürütme modeli oluşturur:
- •Beklenmeyen istisnalar
- •Ağ arızaları
- •API kesintileri
- •Kilitlenmeler
- •Geçici sistem kararsızlığı
- •Harici süreç sonlandırma
Kontrollü Yeniden Başlatma Gecikmesi
Altyapı, kasıtlı olarak bir yeniden başlatma soğutma süresi ekler:
RESTART_DELAY=3Bu şunları önler:
- •Sonsuz hızlı yeniden başlatma döngüleri
- •Tekrarlayan çökmeler sırasında CPU artışları
- •API bombardımanı
- •Günlük taşması
Kısa gecikme, yürütmeyi yeniden denemeden önce harici sistemlere iyileşme süresi verir.
Ayrı Hizmet Mimarisi
Sistem, altyapıyı iki bağımsız yeniden başlatılabilir hizmete ayırır:
| Hizmet | Sorumluluk |
|---|---|
| Trading Modülü | Trading motoru ve strateji yürütme |
| Telegram Modülü | Uzaktan kontrol ve bildirimler |
Bu izolasyon çeşitli avantajlar sağlar:
- •Bir alt sistem bağımsız olarak arızalanabilir
- •Telegram izleme, trading çökmeleri sırasında çevrimiçi kalabilir
- •Telegram başarısız olsa bile trading devam edebilir
- •Daha kolay hata ayıklama ve bakım
Modüller, doğrudan bağlantı yerine dahili TCP katmanı aracılığıyla iletişim kurar.
Düzgün Kapanış İşleme
Altyapı, sinyal işlemeyi kullanarak kontrollü kapanış davranışını destekler.
Örnek:
signal.signal(signal.SIGINT, signal_handler)Kapanışta:
- •Trading güvenli bir şekilde durur
- •Kalıcılık diske temizlenir
- •TCP bağlantıları düzgün kapanır
- •İş parçacıkları düzgün şekilde sonlanır
Örnek kapanış akışı:
🛑 Shutdown signal received...
💾 Forcing save to disk...
✅ PersistentMap stoppedBu, trading sistemlerinde kritiktir çünkü uygun olmayan kapanışlar aksi takdirde aşağıdakilere yol açabilir:
- •Kayıp pozisyon durumu
- •Bozuk kalıcılık
- •Tutarsız kurtarma verileri
- •Kapatılmamış emirler
Çökme Kurtarma Felsefesi
Altyapı basit ama güçlü bir ilkeyi takip eder:
Crash → Detect → Restart → Recover State → Continue TradingBot, uzun süreli dağıtılmış sistemlerde çökmelerin kaçınılmaz olduğu varsayımı altında tasarlanmıştır.
Her olası hatayı önlemeye çalışmak yerine, mimari şunlara odaklanır:
- •Hızlı tespit
- •Güvenilir yeniden başlatma
- •Kalıcı durum kurtarma
- •Operasyonel süreklilik
Bu, uzun vadeli güvenilirliği önemli ölçüde artırır.
Kalıcılık Katmanı ile Entegrasyon
Altyapı, kalıcılık alt sistemiyle yakın çalışır.
Kapanış veya yeniden başlatmadan önce:
- •Çalışma zamanı durumu kaydedilir
- •Pozisyonlar kalıcı hale getirilir
- •Yapılandırma bozulmadan kalır
- •Kurtarma meta verileri saklanır
Yeniden başlatmadan sonra:
- •Durum otomatik olarak yeniden yüklenir
- •Trading güvenli bir şekilde devam eder
- •Mevcut pozisyonlar geri yüklenir
- •Telegram bağlantısı otomatik olarak geri döner
Bu, beklenmeyen çökmeler veya sunucu yeniden başlatmalarından sonra bile dayanıklı bir kurtarma hattı oluşturur.
Telegram Altyapı İzleme
Telegram alt sistemi ayrıca hafif bir operasyonel izleme katmanı görevi görür.
Altyapı olayları doğrudan Telegram'a iletilir:
[CRASH] Module trading exited with code 1
Restarting in 3 seconds...Bu, operatörlere aşağıdakilere anında görünürlük sağlar:
- •Çökmeler
- •Yeniden başlatmalar
- •Kapanışlar
- •Kurtarma olayları
- •TCP bağlantı sorunları
Sonuç, karmaşık izleme panoları gerektirmeyen, uzaktan gözlemlenebilir bir altyapıdır.
Üretime Yönelik Güvenilirlik Tasarımı
ByNinja altyapısı, birkaç üretim sınıfı operasyonel konsepti birleştirir:
- •Watchdog yürütme döngüleri
- •Otomatik çökme kurtarma
- •Düzgün kapanış işleme
- •Kalıcı çalışma zamanı durumu
- •Hizmet izolasyonu
- •Kendi kendini iyileştiren yeniden başlatma davranışı
- •Telegram aracılığıyla uzaktan izleme
- •Bağımsız alt sistem kurtarma
Bu bileşenler birlikte, minimum manuel gözetim ile sürekli otonom trading işlemlerini destekleyebilen bir altyapı oluşturur.