"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > تنفيذ مولد معرف ندفة الثلج

تنفيذ مولد معرف ندفة الثلج

تم النشر بتاريخ 2024-11-07
تصفح:348

Implementing Snowflake Id generator

ما هو معرف ندفة الثلج؟

يتم استخدام معرفات Snowflake في البيئات الموزعة لإنشاء معرفات قصيرة وفريدة من نوعها خالية من التصادمات . على عكس الطرق التقليدية، مثل الاعتماد على قاعدة بيانات لإنشاء المعرفات أو استخدام معرف UUID طويل بطول 128 بت، تستخدم معرفات Snowflake الوقت وعمليات البت البسيطة. تسمح هذه التقنية الذكية لكل خدمة صغيرة بإنشاء معرفات فريدة بشكل مستقل، دون الحاجة إلى نظام مركزي لتجنب الاصطدامات.

كيفية توليد واحد

يشبه إنشاء معرف Snowflake بناء لغز مكون من ثلاث قطع رئيسية. دعونا نقسمها:

  1. خذ سلسلة بت طويلة n بت :

    أولاً، نبدأ بسلسلة صغيرة بطول n. سيحتوي هذا على جميع المعلومات اللازمة لإنشاء معرف فريد.

  2. تقسيمها إلى ثلاثة أقسام: ط، ي، ك:

    تنقسم سلسلة البتات إلى ثلاثة أجزاء، بحيث i j k = n.

  • i - مكون الوقت:

    الجزء الأول، أنا، يمثل الوقت الحالي. اختر وقت بدء ثابتًا (المعروف أيضًا باسم العصر)، وسيتم حساب البتات من خلال أخذ الوقت الحالي بالنانو ثانية وطرح وقت البدء. وهذا يضمن أن تكون المعرفات الأحدث دائمًا أكبر من المعرفات الأقدم.

  • j - معرف الجهاز:

    الجزء الثاني، j، هو معرف الجهاز. عندما تبدأ الخدمة الصغيرة الخاصة بك، يتم تعيين معرف فريد لها (معرف الجهاز)، والذي يصبح الجزء j. وهذا يضمن عدم تعارض المعرفات التي تم إنشاؤها بواسطة أجهزة مختلفة، حتى لو تم إنشاؤها في نفس اللحظة بالضبط.

  • k - الرقم التسلسلي:

    الجزء الأخير، k، هو الرقم التسلسلي. إنه يعمل كعداد يتزايد كلما تم إنشاء معرفات متعددة في نفس الوحدة الزمنية. وهذا يبقي المعرفات فريدة، حتى لو تم إنشاؤها بتتابع سريع.

  1. دمج القطع: بمجرد حصولك على قيم i وj وk، قم بتسلسلها لتكوين سلسلة بت واحدة. بعد ذلك، قم بتحويل سلسلة البت هذه إلى الأساس 10 للحصول على معرف Snowflake النهائي.

تشبيه سريع

فكر في معرف Snowflake كعلامة طبق خاصة في مطبخ مزدحم:

  • الوقت (i): هذا يشبه مرور الساعة في المطبخ، مما يضمن أن الأطباق التي يتم إعدادها لاحقًا تحصل على أعداد أكبر من تلك التي تم إعدادها مسبقًا.
  • معرف الجهاز (ي): كل طاهٍ (أو خدمة صغيرة) لديه توقيعه الخاص، مع التأكد من عدم تعارض علامات الطبق الخاصة به مع علامات أي شخص آخر.
  • رقم التسلسل (ك): إذا قام الطاهي بإعداد أطباق متعددة في لحظة واحدة، فإنه يضيف زيادة صغيرة إلى علاماته، بحيث يكون لكل طبق تسمية فريدة.

تم تنفيذ ندفة الثلج في Go

تحقق من مستودع GitHub هذا لتطبيق Go لإنشاء معرف Snowflake

مصادر

  1. https://blog.x.com/engineering/en_us/a/2010/anouncen-snowflake
  2. https://en.wikipedia.org/wiki/Snowflake_ID
بيان الافراج تم نشر هذه المقالة على: https://dev.to/alquama/implementing-snowflake-id-generator-3f8k?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3