Bütün Ping yazıları

Teknik · Oyun altyapısı

Aktif oyunları Redis ile hızlandırıp MongoDB'de arşivlemek

Canlı tavla durumunu Redis'te yönetirken tamamlanan oyunları MongoDB arşivine güvenli biçimde aktaran iki katmanlı mimari.

Yol hikâyesi2 dk
Aktif oyunları Redis ile hızlandırıp MongoDB'de arşivlemek için Ping kapak görseli

Aktif oyun ile arşiv aynı iş yükü değil

Aktif oyunda küçük durum değişiklikleri düşük gecikmeyle ve atomik biçimde uygulanmalıdır. Tamamlanan oyunda ise kalıcılık, sorgulanabilirlik ve replay geçmişi önem kazanır. Bu iki ihtiyacı tek veri katmanına zorlamak hem maliyeti hem karmaşıklığı artırıyordu.

Redis'i çalışan oyunun authoritative runtime katmanı, MongoDB'yi kalıcı arşiv ve ürün verisi katmanı olarak ayırdık. İstemci hamle niyetini yollar; sunucu Redis'teki güncel durum üzerinde doğrular ve uygular.

Oyun bittiğinde veri kaybolmamalı

Final action sonrasında arşiv işi kuyruğa alınır. Worker canonical geçmişi MongoDB belgesine dönüştürür, replay için gerekli alanları doğrular ve başarılı arşivden sonra aktif runtime verisini temizler.

Aynı iş tekrar çalışabilir; idempotent arşivleme aynı oyunu iki farklı sonuç gibi yazmamalıdır. Hata halinde aktif kayıt hemen silinmez ve bakım süreci işi yeniden deneyebilir.

Hız kadar maliyet de izlenmeli

Kullandığımız ücretsiz Upstash paketi aylık 500 bin komutla sınırlıydı. İlk gerçek kullanımda 770 bin komuta ulaşıp limiti aştığımızı gördük; bu da sistemi yalnız hız için değil kaynak tüketimi için de optimize etmemiz gerektiğini açık biçimde gösterdi.

Presence ve bakım cronlarının gereksiz taramalarını azaltmak, okumaları toplamak ve yalnız değişen veriyi yazmak bu süreçte öne çıktı. Ücretsiz ve limitli paketlerle başlayıp sistemi izlemek, fazla kaynak tüketen kısımları erken keşfetmemize olanak sağlıyor. Performansı artık komut tüketimi ve archive gecikmesiyle birlikte değerlendiriyoruz.

RE-PING

Bu yazıyı paylaş

Bağlantıyı kopyalayabilir veya kullandığın sosyal platformda yeniden paylaşabilirsin.

XLinkedInFacebookWhatsApp

PONG

Pong sende

Yorum eklemek için bu yazının ilişkili X gönderisine cevap ver.