تجف: على ما يبدو بسيطة ليست بسيطة مولد ID توزيعها

الأول، فإن الطلب على الأصل

تقريبا كل أنظمة العمل، هناك حاجة إلى إنشاء معرف سجل فريد، على سبيل المثال:

  • يحدد الرسالة: رسالة معرف
  • أوامر الهوية: النظام معرف
  • شعار آخر: tiezi معرف

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

هذا الاستعلام على تحديد رقم قياسي، وغالبا ما يكون مقسم إلى صفحات أو نوع من احتياجات العمل، مثل:

  • آخر الأخبار من سحب
  • تحديد رسالة معرف / النظام قبل وقت / حد 100
  • سحب الفصل الأخير في الترتيب
  • حدد أجل معرف / النظام قبل وقت / حد 100
  • سحب الفصل الأخير في المشاركات
  • حدد tiezi معرف / النظام قبل وقت / حد 100

لذلك غالبا ما يكون حقل الوقت، ويضع المؤشر العام (مؤشر غير عنقودية) في العمود الوقت.

المؤشر العام للمؤشرات سجلت في الواقع، سوف كفاءتها يكون أبطأ من الوصول إلى فهرس متفاوت المسافات، إذا كان معرف تسجيل عند بناء يمكن أن الأساس في الترتيب الزمني، ثم وهذا يمكن توفير الوقت الاستعلام الحقل الفهرس:

حدد رسالة معرف / (أمر من رسالة معرف) / حد 100

وأكد أن تفعل ذلك على أساس أن يولد رسالة معرف هو الاتجاه الأساسي لزيادة الوقت.

هذا يؤدي إلى السجل تحديد جيل (أي ثلاثة المذكورة أعلاه XXX-ID) من المتطلبات الأساسية اثنين:

  • فريد عمومي
  • أمر الاتجاهات

وهذا هو أيضا القضايا الجوهرية مناقشتها في هذه المقالة: كيفية توليد بكفاءة ومنظم الاتجاهات العالمية ID فريدة من نوعها.

ثانيا، طريقة شائعة، غير كافية والأمثل

الأسلوب: استخدمت قاعدة بيانات AUTO_INCREMENT لتوليد عالميا يتزايد معرف فريد

المزايا:

  • بسيطة، والاستخدام الوظيفي لقاعدة البيانات الموجودة
  • لضمان التفرد
  • لضمان تدريجي
  • تحديد الخطوة

العيوب:

  • توفر الصعب ضمان: مخطط قاعدة بيانات المشترك هو سيد من عدة قراءة منفصلة والكتابة +، يتم إنشاؤها من طلب الكتابة عن الهوية، معلقا على الخزان الرئيسي لا يمكن أن مقبض
  • التدرجية الفقراء، والحد من أداء: كما هو مكتوب في نقطة واحدة، وأداء الكتابة قاعدة البيانات لتوليد المكتبة الرئيسية تحدد الحد الأعلى للأداء ID، ويصعب توسيع

تحسين:

  • المكتبة الرئيسية زائدة عن الحاجة، وتجنب الكتابة نقطة واحدة
  • مستوى البيانات تجزئة، لضمان أن كل المكتبات الرئيسية ولدت ID لن تتكرر

الشكل أعلاه من قبل مكتبة الكتابة الخطية إلى ثلاث مكتبات، كل كتابة قيم مختلفة من مجموعة مكتبة AUTO_INCREMENT الأولي، ونفس الخطوات الإضافية، لضمان أن قاعدة البيانات التي تم إنشاؤها لكل ID مختلفة (الشكل أعلاه ولدت ... 00،3،6،9 المكتبات، 1،4،7،10 إنشاء مكتبة، وتوليد مكتبة 2،5،8،11 ... 2)

في إطار تحسين لضمان توافر، ولكن العيب هو:

  • فقدت هوية الجيل "تدريجية المطلق": المكتبات الزيارة الأولى إنشاء 0،30، 1 ثم زيارة المكتبة لتوليد 1، قد يؤدي في فترة قصيرة جدا من الزمن، وتوليد ID هو ليس إضافة المطلق (وليس مشكلة، والهدف هو الاتجاهات تدريجي، وليس الزيادات المطلقة)
  • قاعدة بيانات الكتابة لا تزال ضغط كبير، ولها كل ID المولدة للوصول إلى قاعدة بيانات

لحل فوق مشكلتين، ويؤدي إلى الحالات الشائعة الثانية.

أسلوب اثنين: نقطة واحدة السائبة يولد ID الخدمة

السبب في النظم الموزعة صعبة، واحدة سبب مهم جدا هو "ليس على مدار الساعة العالمية، من الصعب ضمان توقيت"، وذلك لضمان توقيت، أو فقط استخدام نقطة واحدة من الخدمة، مع ساعة المحلية لضمان "توقيت المطلق" .

قاعدة بيانات الكتابة الضغط، لأن كل هوية الجيل من الوصول إلى قاعدة البيانات، يمكنك استخدام الجزء الأكبر من وسائل لتخفيف الضغط على قاعدة بيانات الكتابة.

الشكل أعلاه، وذلك باستخدام قاعدة بيانات رئيسية مزدوجة لضمان توافر، ومخازن قاعدة البيانات فقط قيمة الحد الأقصى من ID الحالي، على سبيل المثال، 0.

توليد يفترض معرف الخدمة أن كل سحب ست دفعات ID، وصول الخدمة إلى قاعدة البيانات، تعديل قيمة الحد الأقصى من ID الحالي هو 5، حتى أن خدمة التطبيق ID طلب الوصول جيل الهوية، لا يحتاج هوية الخدمة لتوليد قاعدة البيانات في كل مرة، يمكن توزيعها بشكل متتالي هذه ID من 0،1،2،3،4،5.

عندما يكون الشعر بعد ID، ثم أقصى ID تعديل 11، معرف يمكن توزيع 6،7،8،9،10،11 مرة أخرى، حتى يتم خفض الضغط على قاعدة البيانات الأصلية من 1/6.

المزايا:

  • ضمان أمرت ID لدت الزيادة المطلقة
  • الحد بشكل كبير من الضغط على قاعدة البيانات، وتوليد ID يمكن القيام به لتوليد عشرات الآلاف إلى مئات الآلاف في الثانية الواحدة

العيوب:

  • الخدمة لا تزال نقطة واحدة
  • إذا ربط الخدمة بعد إعادة تشغيل الخدمة لهم، والاستمرار في أن تتولد سوف ID لا تكون مستمرة، ويظهر تجويف المتوسطة (هو الحفاظ على الذاكرة 0،1،2،3،4،5 الخدمة في قاعدة البيانات يتم تخصيص 5 ماكس-id ل3 عند إعادة تشغيل الخدمة، فإن المهمة التالية تبدأ من 6 و 4 و 5 أصبح فارغا، ولكن المشكلة ليست كبيرة)
  • على الرغم من أنه يمكن أن تولد عشرات المئات من الآلاف من ID في الثانية الواحدة، ولكن بعد كل شيء، هناك حدود الأداء، وليس توسيع أفقيا

تحسين:

تحسين توفر شيوعا هو نقطة واحدة من خدمة "خدمة بديلة"، وتسمى أيضا "خدمة الظل"، حتى نتمكن من استخدام الأساليب التالية لتحسين العيوب المذكورة أعلاه (1):

كما هو مبين أعلاه، والخدمات الرئيسية التي تقدمها الخدمة الخارجية، وقت خدمة الظل في حالة الاستعداد، عند الخدمة الرئيسية عند ظل أعلى خدمة تعليق.

هذه العملية تحويل شفافة للالمتصل، ويمكن أن يكون آليا، بل هو لكبار الشخصيات تقنية مشترك + keepalived، خاصة ليس هنا الموسعة.

وعلاوة على ذلك، يمكن أيضا تنفيذ مستوى ID-جنرال خدمة التوسع من أجل حل العيوب المذكورة أعلاه (3)، ولكن يمكن أن يسبب مشاكل الاتساق، وخاصة لحل "تطبيق توزيع CAS في برنامج توليد ID" برنامج مفصل.

أسلوب ثلاثة: UUID / ارشد

سواء من خلال قاعدة البيانات لتوليد ID أو من خلال الخدمة، على ضرورة تطبيق الجانب التجاري لتكون مكالمة عن بعد، وقتا طويلا.

لا توجد طريقة لمعرف المولدة محليا، وهذا هو الأداء العالي، والكمون المنخفض ذلك؟

UUID هو السيناريو الشائع:

سلسلة ID = GenUUID ()؛

المزايا:

  • ID المولدة محليا، لا حاجة للمكالمات لمسافات طويلة، الكمون المنخفض
  • والتدرجية، والأداء أساسا أنه لا يوجد حد أقصى

العيوب:

  • الاتجاه لا يمكن أن تضمن زيادة
  • UUID فترة طويلة جدا، وغالبا ما يمثله سلسلة، ومؤشر المفتاح الأساسي الاستعلام إنشاء وانخفاض الكفاءة، وتحسين شيوعا هو "إلى قسمين uint64 متجر صحيح" أو "الذاكرة ثنائية" (تفرد ثنائي لا يمكن ضمان بعد)

طريقة أربعة: أخذ العدد الحالي من ميلي ثانية

UUID هو خوارزمية المحلية على توليد عالية الأداء، ولكن لا نستطيع ان نضمن زيادة الاتجاه، ونتيجة لID سلسلة كفاءة الاسترجاع هي منخفضة، هناك ضمان خوارزمية المحلية زيادته؟

لقطة الحالي عدة ميلي ثانية هو مخطط مشترك:

uint64 ID = GenTimeMS ()؛

المزايا:

  • ID المولدة محليا، لا حاجة للمكالمات لمسافات طويلة، الكمون المنخفض
  • ID التي تم إنشاؤها اتجاه متزايد
  • المعرف الذي تم إنشاؤه هو عدد صحيح، ومؤشر كفاءة عالية الاستعلام

العيوب:

  • إذا كان التزامن من 1000، سوف تولد ID مكررة

العيب في الحياة، ولا يمكن ضمان تفرد ID. بطبيعة الحال، فإن استخدام ميكروثانية يمكن أن تقلل من احتمال الصراع، ولكن يمكن أن تولد ما يصل إلى واحد مليون دينار في الثانية الواحدة، أي قدر من الكلمات ستكون بالتأكيد الصراع، وبالتالي فإن استخدام ميكروثانية لا تحل المشكلة جذريا.

طريقة خمس: الفئة ندفة الثلج خوارزمية

ندفة الثلج تويتر هو مفتوح المصدر الجيل ID توزيع الخوارزمية، والفكرة الأساسية هي نوع طويل من ID:

  • أمثلة من ميلي ثانية 41bit
  • لا 10bit حيث وصل عدد الآلة
  • كما 12bit ميلي ثانية ID SEQ

ضمن خوارزمية واحدة يمكن أن تولد نظريا تصل إلى 1000 في * الثاني (2 ^ 12)، وهو 400W من الهوية، وقادرة على تلبية احتياجات قطاع الأعمال.

تعلم ندفة الثلج الأفكار، والجمع بين منطق الأعمال ويمكن للشركات التزامن يدرك بها توزيع خوارزمية توليد ID.

على سبيل المثال، افترض أن متطلبات الخدمة شركة ID مولد هي كما يلي:

  • ومن المتوقع خلال السنوات الخمس المقبلة ذروة التزامن واحد من أقل من 1W إلى الذروة مبلغ واحد المتزامنة أقل من 10W
  • هناك نوعان من الغرف، وخلال السنوات الخمس المقبلة، وعدد من الغرفة آلة أقل من أربعة
  • كل غرفة هو أقل من عدد آلة 100
  • هناك خمسة خطوط جديدة للعمل هناك الطلب على توليد ID، أي أقل من العدد المتوقع للمستقبل خط الأعمال 10
  • ...

عملية التحليل على النحو التالي:

  • اتخذت عالية من 1 يناير 2017 إلى عدد من ميلي ثانية (على افتراض نظام الخدمة ID بناء على السطر بعد هذا الوقت)، ومن المفترض أن يتم تشغيل النظام لا يقل عن 10 سنة، وأن لا يقل عن 10 سنوات * 365 يوما * 24 ساعة * 3600 ثانية * 1000 مللي ثانية = 320 * 10 ^ 9، على غرار عدد المحجوزة من ميلي ثانية 39bit
  • ذروة التزامن واحد في الثانية أقل من 10W، أي في ذروة واحدة مللي المتزامنة أقل من 100، ميلي ثانية واحدة تقريبا كل 7bit محفوظة تسلسل رقم ل
  • 5 عدد أقل من 4 سنوات الغرفة، غرفة محفوظة ل2bit تحديد
  • كل غرفة آلة أقل من 100، 7bit ID التحفظ على كل غرفة الخادم
  • أقل من 10 خطوط الأعمال، إلى خط خدمة معرف محفوظة على 4bit

هذا التصميم 64BIT شعار، يمكن أن تضمن:

  • كل خط الخدمة، كل غرفة، كل ID المولدة آليا مختلفة
  • نفس الجهاز، كل ميلي ثانية واحدة ولدت ID مختلف
  • نفس الجهاز، نفس ميلي ثانية واحدة، للتمييز بين أرقام التسلسل التأكد من أن ID المنطقة التي تم إنشاؤها مختلفة
  • والبت الأكثر أهمية في أجزاء من الثانية، لضمان الاتجاهات التي المعرف الذي تم إنشاؤه يتزايد

العيوب:

  • لأن "ليس هناك على مدار الساعة العالمية"، كل ID الخادم المخصصة يتزايد على الاطلاق، ولكن من منظور عالمي، المعرف الذي تم إنشاؤه في ازدياد فقط الاتجاه (الخادم بعض الوقت في وقت سابق، والخادم في وقت لاحق بعض الوقت)

العلامة التجارية السفير راي بان للصين الكبرى نتكاتف صدر تشانغ ييشينغ سلسلة جديدة تسمى التعاون جيل الشباب لاتخاذ حقا الطريق الأكثر تريد أن تذهب، تفعل أفضل من ذلك

تجف: المعاملات الموزعة - وضع التعويض + MQ / TCC

هواوي موضوع سلسلة P30 الافتراضي جميلة جدا، كل EMUI 8.0 فوق نماذج JIEKE تحميل

تشنغدو للسيارات 2018: بكين هيونداي النقاب عن لافيستا

البالغ من العمر 30 عاما انضم الى الوضع مكانة يلعب لاول مرة الكبرى! وأشاد كنجم صاعد توصف فاز TVB

سيارات تشنغدو 2018: ليفان 650EV / شوان لانج / مارفيل بناء

الأخوات TVB للمشاركة في أنشطة نيابة عن أخت شقيقة إحراج الناس الإنقاذ أيضا استيعاب لها الكعب العالي خارج

ايمينيم ردا ايجابيا "التي يرجع تاريخها" القيل والقال، والاستماع إلى الجمهور مباشرة المقلاة؟ !

علاج النبات عن التلوث بالمعادن الثقيلة من التخميل الكيميائي للتربة

تشنغدو للسيارات 2018: فانتوم الأراضي سرية خاصة تتمتع طبعة خاصة صدر

جافا تنفيذ SSO واحد تسجيل الدخول

منتصف ميلاد ابنتك! زوج البالغ من العمر 35 عاما الذي روج أخيرا إلى الأب: رأيت صرختها