Sharding Discord: Cara Bot Besar Membagi Server Mereka
Sharding adalah cara bot Discord besar membagi servernya ke beberapa koneksi gateway, yang disebut shard, sehingga tidak ada satu koneksi yang memikul terlalu banyak. Discord mewajibkannya saat bot berada di 2.500 server, dan setiap server selalu termasuk tepat satu shard.
Apa itu shard
Koneksi langsung bot ke Discord, gateway, hanya bisa menangani sejumlah lalu lintas. Setelah titik tertentu, satu koneksi tidak sanggup mengikuti peristiwa dari ribuan server. Discord mengatasinya dengan membiarkan bot membuka beberapa koneksi dan memberi tahu setiap koneksi server mana yang dimilikinya. Setiap koneksi adalah shard.
Bagaimana server ditugaskan
Shard untuk sebuah server berasal dari ID-nya, menggunakan rumus yang membagi ID guild (setelah menggeser bagian timestamp dari snowflake) dengan jumlah shard dan menyimpan sisanya. Jadi server tertentu selalu jatuh ke shard yang sama kecuali jumlah shard berubah. Pesan langsung selalu menuju shard 0.
Bot mengirim sepasang angka saat terhubung: nomor shard-nya dan total jumlah shard. Discord kemudian hanya mengirim peristiwa untuk server yang cocok.
Kapan menjadi wajib
- Di bawah 2.500 server: satu koneksi sudah cukup.
- Di 2.500 server: Discord menolak koneksi tunggal dan bot harus melakukan sharding.
- Bot besar biasanya menambah shard jauh sebelum batas, untuk menyebarkan beban dan memori.
Shard dapat berjalan dalam satu proses atau di mesin terpisah. Pilihan kedua membiarkan satu shard dimulai ulang tanpa mematikan yang lain.
Apa artinya bagi Anda
Sebagian besar tidak ada artinya. Anggota tidak akan melihat perbedaan. Dampak praktisnya muncul saat gangguan: jika satu shard offline, hanya server di shard itu yang kehilangan bot, sementara yang lain tetap bekerja. Jika bot Anda offline hanya di server Anda sementara yang lain baik-baik saja, itu petunjuk masalah shard, bukan sesuatu yang Anda ubah.
Sharding juga berinteraksi dengan rate limit. Memulai banyak shard sekaligus dibatasi, jadi bot besar memulai ulangnya dalam kelompok.
Sharding dan Noxyr
Anda tidak perlu mengatur apa pun untuk Noxyr. Halaman status dan ping menunjukkan apakah bot merespons, dan panduan bot offline mencantumkan apa yang harus diperiksa lebih dulu. Jika Anda lebih suka menjalankan aplikasi sendiri dengan koneksi sendiri, bot kustom menjalankan fitur Noxyr dengan nama Anda, dan artikel tentang node hosting dan uptime menjelaskan cara bot tersebut dijaga tetap berjalan.
Pertanyaan umum
Pada jumlah server berapa bot harus melakukan sharding?
Discord mewajibkan sharding pada 2.500 server. Banyak bot besar melakukan sharding lebih awal untuk menyebarkan beban.
Bisakah satu server berada di dua shard?
Tidak. Sebuah server selalu termasuk tepat satu shard, yang dipilih dari ID-nya dan jumlah shard.
Apakah sharding mengubah sesuatu bagi anggota saya?
Tidak. Ini detail internal. Hanya berarti saat gangguan, ketika satu shard bisa gagal tanpa memengaruhi yang lain.