Tidak ada orang lain yang memiliki pengalaman menjalankan sesuatu seperti ini? Hah.
Ada beberapa alasan yang menjembatani kode dan sistem. Pertama, ingat bahwa sebagian besar mesin MMO 'besar' saat ini diprogram beberapa tahun yang lalu, dan meskipun ada peningkatan grafis dan teknologi sejak itu, masih tergantung pada cara banyak sistem ini ditulis pada tahun 2000 atau lebih. Eve-Online, misalnya, masih berjalan pada satu contoh besar Microsoft SQL Server, itulah sebabnya mereka selalu berusaha menarik lebih banyak darinya dengan memutakhirkan perangkat keras.
Contoh peningkatan sejak WoW dan EVE dimulai adalah pekerjaan yang dilakukan dalam database kunci / nilai terdistribusi seperti Google MapReduce (dan ini adalah implementasi open-source, Hadoop), layanan antrian pemrosesan respons afirmatif yang sangat cepat (Amazon SQS), dan lainnya " cloud "berorientasi teknologi.
Saya memiliki pengalaman paling banyak dengan EVE (saya lebih seperti pria laser daripada pria battleaxes), jadi beberapa contoh ini lebih berorientasi pada EVE.
Sejauh alasan Sistem:
- Node fisik gagal secara konsisten. Ketika sebuah simpul gagal, biasanya aktivitasnya dimigrasi ke tempat lain menggunakan sejumlah cara. Namun, simpul perlu dimasukkan kembali ke layanan secepat mungkin. Dalam kasus EVE, mereka menggunakan bahasa pemrosesan stackless dan server virtual; Saya tidak yakin seperti apa arsitektur Blizzard.
- Konsistensi basis data perlu diperiksa, log harus disiram, dan indeks dan cache data perlu dibangun kembali. Ini sangat penting dalam sistem seperti EVE dengan hanya satu contoh basis data "langsung".
- Tambalan sistem operasi perlu diterapkan pada saat mereka dapat mem-boot ulang node tanpa harus memiliki terlalu banyak aktivitas yang bermigrasi ke tempat lain. Migrasi membutuhkan banyak sumber daya jaringan yang dapat didedikasikan untuk pemrosesan online.
- MMO berbasis RDBMS memiliki masalah besar dengan penguncian data dan integritas referensial. Downtime digunakan untuk membersihkan kunci basi dan jeda integritas dari log aktivitas.
- Sebagian besar game menerapkan cache data yang berlokasi geografis untuk informasi statis atau semi-statis (lihat data ringkasan cache di bawah) di area penggunaan berat, yaitu pantai timur vs pantai barat AS. Tembolok ini diperbarui secara manual selama waktu henti.
Sejauh alasan Perangkat Lunak:
- Game, saat beroperasi, menggunakan banyak OLTP - yaitu On Line Transaction Processing - jenis membaca / menulis ke basis data. Namun, terkadang Anda menginginkan laporan ringkasan ... seperti berapa banyak binatang buas tertentu yang telah Anda bunuh dalam 3 tahun terakhir penggilingan. Itu paling baik ditangani oleh laporan OLAP - yaitu On Line Analytical Processing - yang berisi informasi ringkasan berdasarkan banyak baris dalam dataset raksasa. Pada kenyataannya, gim menerapkan sistem yang menggunakan OLAP untuk membangun cache untuk membatasi jumlah kueri yang perlu dibaca - yaitu, mereka membangun total pada tanggal tertentu, dan kemudian ketika Anda mengajukan pertanyaan mereka hanya membaca baris dari toko OLTP yang merangkum periode waktu sejak tanggal tertentu. Gabungkan keduanya, dan Anda benar-benar dapat menghitung seberapa tidak berharga hidup Anda jadinya.
- Hot-patching yang disebutkan di atas, yang saya lihat sebagai masalah perangkat lunak tetapi pengembang perangkat lunak melihat sebagai masalah sistem. ;)
- Mengisi ulang toko barang - di Eve, sabuk asteroid disegarkan setiap malam dan kompleks tertentu didaur ulang juga. Hal ini dapat dilakukan sampai batas tertentu saat online, tetapi beberapa algoritma terlalu kompleks dan perlu dilakukan dalam mode off-line karena mereka secara singkat membawa database ke lutut sementara mereka merangkum kegiatan ekonomi hari sebelumnya.
Menjalankan ekonomi dengan loop tertutup dan terbuka adalah salah satu masalah bagi operator MMO - jika Anda tidak percaya, baca beberapa makalah akademis yang telah ditulis tentang ekonomi gim dan beberapa studi gim lama seperti Ultima Online yang memiliki ekonomi yang relatif primitif. Analisis yang perlu terjadi untuk mengisi loop terbuka dan untuk mengidentifikasi kecurangan dan kegiatan ekonomi negatif lainnya perlu terjadi secara offline dengan snapshot data, yang kadang-kadang hanya dapat diambil ketika database sepenuhnya terkunci.
Jika Anda perhatikan, pemeliharaan Eve terjadi saat ini siang di Inggris, di mana pusat data utama berada.
Beberapa waktu henti yang diperpanjang baru-baru ini di EvE Online adalah tentang memasang perangkat keras baru seperti SAN yang lebih cepat. Sementara seseorang dapat secara teknis memindahkan sebagian besar data dengan membuat grup grup baru pada drive baru dan kemudian mengosongkan yang utama, itu akan menghasilkan periode yang panjang dari penurunan kinerja karena I / O yang konstan. Jadi mereka memilih untuk melepaskan basis data 1.1TB dan memindahkannya dalam sekali jalan.
Jawaban untuk pertanyaan ini juga bergantung pada aplikasi spesifik. Misalnya, server yang menangani sistem bintang tertentu tidak dapat ditukar secara panas tanpa mengganggu permainan, jadi downtime digunakan untuk menetapkan kembali server yang lebih kuat ke dalam hotspot potensial. Selain itu, perhitungan kepemilikan (kedaulatan) sistem bintang dihitung. Ini tergantung pada puluhan variabel yang berbeda, yang semuanya dapat berubah tergantung pada tindakan pemain. Tak perlu dikatakan, melakukan itu langsung dapat menyebabkan penguncian yang berlebihan dan / atau masalah konkurensi lainnya. Tetapi mengatasi itu sebaiknya diserahkan ke stackoverflow .
sumber
mungkin sesuatu yang tidak bisa Anda tangani melalui pengelompokan / load-balancing seperti perubahan skema DB besar.
sumber
Dalam sebuah topik baru-baru ini Seberapa sering saya harus me-reboot server linux, ada baiknya juga disebutkan, memverifikasi bahwa semuanya berjalan dengan benar pada reboot atau setelah perubahan konfigurasi (utama).
sumber
Upgrade perangkat keras yang sederhana (atau penggantian perangkat keras) juga disajikan sebagai "pemeliharaan server" oleh game MMORPG. Jadi sepele kita sering melupakannya.
sumber
Saya telah mengimplementasikan arsitektur MMO di Erlang yang mendukung peningkatan dan distribusi kode panas. Sebagai contoh, satu "GamePlay Server" dapat berjalan melintasi sejumlah mesin arbiter, jika seseorang memerlukan upgrade perangkat keras, objeknya dapat ditransfer (dalam waktu nyata) ke mesin lain. Ini memungkinkan peningkatan perangkat keras perangkat lunak tanpa downtime.
Anda dapat memeriksa situs saya di http://www.next-gen.cc .
sumber
Saya percaya bahwa jendela perawatan juga memungkinkan penggantian perangkat keras rutin untuk memastikan komponen tidak rusak.
sumber