Jika data hanya disimpan beberapa menit sekali untuk mengurangi beban, progres akan hilang saat server mati di antara dua penyimpanan.
Mengapa State karakter disimpan sekali setiap beberapa menit → Akibatnya Di sela waktu itu server crash atau mengalami gangguan → Di layar Setelah login ulang, karakter kembali ke kondisi beberapa menit sebelumnya (rollback)
Penanggung jawab utama Pengembangan server (Tim Pengembang Game) · Turut terlibat Infrastruktur DB (Tim Infrastruktur)
Tugas Tim Pengembang Game
Simpan event penting (trade, perolehan item langka) saat itu juga, catat log perubahan.
Tugas Tim Infrastruktur
Pastikan DB punya sisa kapasitas IOPS dan CPU untuk menanggung penulisan yang bertambah saat interval penyimpanan diperpendek.
Di grafik
Koneksi putus serentak · Jumlah koneksi, jumlah laporan rollback
Yang diperiksa
Bandingkan waktu crash atau gangguan dengan waktu penyimpanan terakhir karakter yang melaporkan rollback (log penyimpanan di server game atau kolom waktu perubahan di DB)
Cocok jika
Titik kembalinya karakter sama dengan waktu penyimpanan terakhir sesaat sebelum crash, dan waktu yang hilang lebih pendek dari interval penyimpanan
Tidak cocok jika
Log server game mencatat penyimpanan sudah selesai tetapi data tetap kembali ke kondisi lama: lebih mungkin data hilang saat failover DB (db-failover) atau nilai lama dibaca dari replika (db-replica-lag)
Sarana pemeriksaan
Log dan metrik server atau klien game
Sumber
Asynchronous Commit (PostgreSQL Documentation)PostgreSQL Mengumpulkan catatan lalu menuliskannya ke disk belakangan menaikkan throughput, dengan konsekuensi transaksi terbaru bisa hilang saat terjadi gangguan (trade-off yang sama)
Redis persistenceRedis Jika snapshot RDB dibuat setiap beberapa menit, kehilangan data beberapa menit terakhir saat terminasi abnormal adalah risiko yang harus diterima