Pra-priming: Mempertahankan hasil nyata secepat mungkin adalah sebuah tantangan
Selamat pagi
TrueAchievements mengalami peningkatan pendaftaran dari tahun ke tahun pada bulan Desember ketika kami meluncurkan Tahun Saya di Xbox, dan tentu saja dengan setiap pendaftaran, semakin banyak lalu lintas serta lebih banyak data gameplay untuk diproses!
TrueAchievements berbeda dari sebagian besar situs game, karena kami menawarkan versi khusus dari banyak halaman kami yang menampilkan kemajuan pengguna dalam game tersebut, pencapaian atau penelusurannya, ditambah tentu saja halaman profil pengguna yang tidak hanya mengumpulkan data mereka, tetapi juga juga semua teman mereka. Artinya kita tidak bisa “cache” Halaman-halaman ini, yang terletak di CDN kami, harus dibuat dengan cepat setiap kali seseorang (atau perayap web atau bot) mengunjungi suatu halaman.
Yang lebih rumit lagi, karena “ide sederhana” saya yang awalnya menyatakan bahwa skor TA harus mencerminkan kelangkaan pencapaian di setiap permainan, kami harus menghitung ulang skor pencapaian, permainan, dan pemain hampir setiap hari.
Selain itu, kami mungkin memiliki sistem papan peringkat Xbox yang paling rumit di dunia, karena Anda dapat menemukan skor Anda di hingga 17.000 papan peringkat yang berbeda, yang sebagian besar harus dibuat terlebih dahulu setiap hari agar skor tersebut cukup cepat untuk ditampilkan di situs tersebut.
Jadi, kita mempunyai lalu lintas dalam jumlah besar (sekitar satu juta tampilan halaman per hari dari manusia saja) yang melihat banyak halaman yang tidak dapat kita cache, bersama dengan sejumlah besar penghitungan angka yang dilakukan terhadap data yang dilihat pada halaman tersebut. halaman (saat ini kami punya 3,287,979,385 pencapaian dilacak di 232,541,069 permainan dalam basis data).
Hal ini menyebabkan perlambatan situs secara signifikan selama bulan Desember, dan Anda mungkin memperhatikan waktu halaman habis, pemindaian memakan waktu lama, atau kelesuan umum saat menelusuri situs.
Tentu saja, tantangan ini bukanlah hal baru – saya sudah cukup banyak menulis ulang atau memfaktorkan ulang kode tersebut sejak pertama kali diluncurkan. Basis data yang dirancang untuk 5.000 pengguna tidak akan berfungsi dengan baik jika terdapat 1,2 juta pengguna. Ini juga merupakan pekerjaan yang menyenangkan karena Anda benar-benar dapat mengukur perubahan Anda dan langsung melihat seberapa besar dampaknya. Ini memberi saya perasaan sejahtera yang luar biasa, dan kemudian saya merasa bahagia sepanjang hari (Parklife!).
Perubahan performa telah kami lakukan sejak bulan Desember
Agar semuanya berjalan lancar kembali, saya telah melakukan banyak perubahan sejak pertengahan Desember:
Skor TrueAchievement sekarang menjadi bilangan bulat dalam database
Ini mungkin perubahan paling sederhana dari perspektif backend, tapi mungkin ini yang pertama kali Anda sadari. Skor pencapaian TA selalu disimpan hingga 4 desimal, namun kemudian dibulatkan sebelum ditampilkan di mana pun di situs web. Jadi pencapaiannya mungkin tampak sebagai skor TA 17, tetapi di database disimpan sebagai 17,3862. Sekarang disimpan sebagai 17.
Meskipun Anda tidak akan melihat perubahan ini pada tingkat pencapaian, Anda mungkin mengetahui total TA Anda versus penurunan game, karena setiap bagian TA Anda dihapus dari skor total Anda untuk game tersebut. Kami sedang memproses game tersebut selama sekitar satu minggu ke depan, dan selama waktu tersebut Anda mungkin melihat perbedaan dalam TA maksimal untuk sebuah game dan TA pribadi Anda dalam game tersebut meskipun Anda telah menyelesaikannya – semua ini harus diurutkan pada akhir pekan saat kami menjalani permainan dan memprosesnya.
Ada banyak manfaat yang didapat dari perubahan ini:
- Tidak lagi membingungkan pengguna. Salah satu pertanyaan pertama yang kami tanyakan adalah “Bagaimana cara membuka pencapaian senilai 16 TA dan pencapaian senilai 7 TA tetapi skor saya dalam game adalah 24?”. Hal ini disebabkan oleh pembulatan di bagian belakang, tetapi harus terus-menerus menjelaskan hal itu menyusahkan
- Ruang penyimpanan telah dikurangi – penyimpanan bilangan bulat berukuran sekitar sepertiga dari ukuran desimal yang kami gunakan sebelumnya, dan kami biasanya memiliki 3 set skor TA (karena pengaturan DLC) untuk setiap game, game pemain, papan peringkat, dan kontes Dan Pemainnya, serta prestasinya
- Pemrosesan lebih cepat bila kami menjumlahkan semua hasil setiap kali seseorang disaring
- Kami tidak lagi harus memperbarui log semua pemain untuk game tersebut ketika skor penyelesaian berubah kurang dari 1 – ini mungkin peningkatan performa terbesar dari penyesuaian ini
- Kami tidak lagi harus membulatkan nilai di mana pun di situs web
Penghitungan ulang jika setiap permainan berlangsung dalam beberapa hari mendatang, selama waktu tersebut Anda mungkin melihat perbedaan antara skor permainan Anda dan skor Anda jika Anda menyelesaikannya. Hasil ini akan kembali normal selama minggu ini.
Beberapa papan peringkat situs kini memiliki persyaratan Gamerscore minimum
Pembuatan papan peringkat harian untuk situs telah meningkat seiring berjalannya waktu, mencapai sekitar 3 jam setiap hari, dan 5 jam per hari untuk membuat papan mingguan. Situs melambat secara signifikan saat membuat papan ini, jadi saya mencari cara berbeda untuk meningkatkan proses ini.
Hal pertama yang saya lakukan adalah hanya memasukkan pemain pada papan peringkat genre/platform yang memiliki Gamerscore minimal 20.000. Sebelumnya, kami menyertakan sekitar 350.000 pemain yang berada di bawah ambang batas tersebut. Ini merupakan proses yang sangat besar bagi para pemain yang, mengingat skor Gamerscore mereka yang rendah, mungkin tidak peduli bahwa mereka berada di peringkat 207.976 pada papan peringkat First Person Shooter di Xbox One. Bahkan, mereka mungkin lebih memilih untuk tidak mengetahuinya sama sekali 🙂 Dan jika mereka ingin disertakan lagi dalam papan peringkat tersebut, saat ini sangat cepat dan mudah untuk mendapatkan lebih dari 20 ribu GS.
Setiap pemain yang terdaftar masih terdaftar di semua papan peringkat di situs utama.
Saya juga telah menulis ulang banyak panggilan pembuatan dan pembuatan papan peringkat untuk membuat tabel ringkasan lebih kecil dan lebih cepat, dan membuat berbagai penyesuaian pada cara pembuatan papan peringkat didistribusikan ke seluruh inti server.
Setelah semua penyesuaian ini, papan peringkat harian kini dibuat dalam waktu kurang dari 45 menit, naik dari lebih dari 3 jam pada bulan Desember.
Blog pemain sekarang di-cache
Kami memiliki beberapa blogger TA yang sangat populer, dan blogger kami sering memposting daftar besar link ke halaman TA di blog mereka. Saat melihat blog ini, kami akan menganalisis tautan ini dan kemudian memeriksa kemajuan pemirsa pada game apa pun yang dianggap sebagai pencapaian sebelum menampilkannya. Hal ini menambahkan sejumlah besar panggilan database (beberapa blog memiliki sekitar 1000 link!) agar satu blog dapat muncul. Jadi kami memutuskan untuk menyimpan blog-blog ini dalam cache dan tidak menampilkan kemajuan pemirsa lagi. Ini adalah kehilangan fungsionalitas yang kecil, namun secara efektif melindungi situs dari serangan DDOS ketika postingan blog populer berisi ratusan tautan.
Beberapa lukisan sekarang hanya tersedia untuk dilihat saat login
Lalu lintas kami dari robot dan scraper telah meningkat secara dramatis selama beberapa tahun terakhir. Menurut perusahaan hosting kami Cloudflare, Dalam 24 jam terakhir kami telah menerima sekitar 3,5 juta permintaan TrueAchievements dari bot yang terverifikasi atau dicurigai.. Kami memblokir beberapa yang jelas-jelas berbahaya, tetapi ada pula yang benar-benar berguna untuk kami biarkan masuk (mesin pencari, kartu pratinjau Discord, Twitter, dll.). Namun, bot yang membantu ini tidak perlu melihat panel yang sangat rumit (seperti feed teman Anda), jadi kami telah menetapkan beberapa panel yang sangat berat ini agar hanya dapat dilihat jika Anda masuk ke situs. Ini berarti bot masih dapat membaca halaman tetapi tidak memberikan banyak tekanan pada server.
Mungkin ada lebih banyak modifikasi di masa depan
Tim pengembangan TGN mendedikasikan seluruh bulan Januari untuk pekerjaan kinerja guna mencoba mempercepat situs sebanyak mungkin. Sebagian besar pekerjaan ini tidak akan menghasilkan perubahan nyata apa pun dari sudut pandang pengguna, selain diharapkan peningkatan kecepatan. Jika kami melakukan perubahan lebih lanjut pada fungsi, Anda dapat membacanya terlebih dahulu Server perselisihan TAJadi silakan bergabung jika Anda belum dan ingin terus mengikuti perkembangan karya terbaru kami.
ungkapan selamat Tahun Baru!
“Communication. Music lover. Certified bacon pioneer. Travel supporter. Charming social media fanatic.”
More Stories
“Akumulasi daging dalam jumlah besar” dan frasa meresahkan lainnya dari inspeksi USDA terhadap pabrik kepala babi
Bocoran rencana pengumuman PS5 Pro dan desain perangkat
Rilis fisik Castlevania Dominus Collection dikonfirmasi, pre-order dibuka bulan depan