ID Snowflake digunakan dalam persekitaran yang diedarkan untuk menjana tanpa perlanggaran, ID yang pendek dan unik. Tidak seperti kaedah tradisional, seperti bergantung pada pangkalan data untuk penjanaan ID atau menggunakan UUID 128-bit yang panjang, ID Snowflake menggunakan masa dan operasi bitwise yang mudah. Teknik pintar ini membolehkan setiap perkhidmatan mikro menjana ID unik secara bebas, tanpa memerlukan sistem pusat untuk mengelakkan perlanggaran.
Menjana ID Snowflake adalah seperti membina teka-teki dengan tiga kepingan utama. Mari pecahkan:
Ambil rentetan bit panjang n-bit:
Pertama, kita mulakan dengan sedikit rentetan panjang n. Ini akan menyimpan semua maklumat yang diperlukan untuk menjana ID unik.
Bahagikan ia kepada tiga bahagian: i, j dan k:
Rentetan bit dibahagikan kepada tiga bahagian, supaya i + j + k = n.
i - Komponen Masa:
Bahagian pertama, i, mewakili masa semasa. Pilih masa mula tetap (juga dikenali sebagai zaman), dan bit i akan dikira dengan mengambil masa semasa dalam nanosaat dan menolak masa mula. Ini memastikan bahawa ID yang lebih baharu sentiasa lebih besar daripada yang lebih lama.
j - ID Mesin:
Bahagian kedua, j, ialah pengecam mesin. Apabila perkhidmatan mikro anda bermula, ia diberikan ID unik (ID mesin), yang menjadi bahagian j. Ini memastikan bahawa ID yang dijana oleh mesin yang berbeza tidak akan bertembung, walaupun ia dibuat pada saat yang sama.
k - Nombor Jujukan:
Bahagian terakhir, k, ialah nombor urutan. Ia bertindak seperti pembilang yang bertambah apabila berbilang ID dijana dalam unit masa yang sama. Ini mengekalkan ID unik, walaupun ia dijana secara berturut-turut.
Fikirkan ID Snowflake sebagai tag hidangan istimewa di dapur yang sibuk:
Semak repo GitHub ini untuk pelaksanaan Go bagi penjanaan ID Snowflake
Atas ialah kandungan terperinci Melaksanakan penjana Id Snowflake. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!