Rumah >pembangunan bahagian belakang >Golang >Melaksanakan penjana Id Snowflake

Melaksanakan penjana Id Snowflake

Susan Sarandon
Susan Sarandonasal
2024-09-21 16:18:02361semak imbas

Implementing Snowflake Id generator

Apakah ID Snowflake?

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.

Cara Menjana Satu

Menjana ID Snowflake adalah seperti membina teka-teki dengan tiga kepingan utama. Mari pecahkan:

  1. 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.

  2. 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.

  1. Gabungkan kepingan: Sebaik sahaja anda mempunyai nilai i, j dan k anda, gabungkan nilai tersebut untuk membentuk rentetan bit tunggal. Kemudian, tukar rentetan bit ini kepada asas 10 untuk mendapatkan ID Snowflake terakhir anda.

Analogi Pantas

Fikirkan ID Snowflake sebagai tag hidangan istimewa di dapur yang sibuk:

  • Masa (i): Ini seperti jam yang berdetik di dapur, memastikan hidangan yang disediakan kemudian mendapat bilangan yang lebih besar daripada yang dibuat sebelum ini.
  • ID Mesin (j): Setiap chef (atau perkhidmatan mikro) mempunyai tandatangan mereka sendiri, memastikan tag hidangan mereka tidak bertembung dengan orang lain.
  • Nombor urutan (k): Jika seorang chef membuat berbilang hidangan dalam satu masa, mereka menambah sedikit kenaikan pada tag mereka, jadi setiap hidangan mempunyai label yang unik.

Kepingan salji dilaksanakan dalam Go

Semak repo GitHub ini untuk pelaksanaan Go bagi penjanaan ID Snowflake

Sumber

  1. https://blog.x.com/engineering/en_us/a/2010/announcing-snowflake
  2. https://ms.wikipedia.org/wiki/Snowflake_ID

Atas ialah kandungan terperinci Melaksanakan penjana Id Snowflake. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn