إيم محاولة لتقديم مخطط الجرافيت الذي يحتوي على موفينغافيراج من مجموع عدد المراتب من عدة مقاييس مختلفة. هذا الهدف: أتوقع أن موفينغفيراج من هذا الهدف: سوف تعمل بشكل جيد، أيضا: ومع ذلك، أحصل على اللعين نو داتا إيماج بدلا من ذلك. إخراج تنسيق جسون لا توفر معلومات مفيدة في هذه الحالة إما، لسوء الحظ، والعودة ببساطة. كيف يمكنني حساب المتوسط المتحرك للمبلغ المذكور أعلاه في الجرافيت إيف حاول ما يلي دون حظ كذلك: شكرا ل هلب الخاص بك الحصول على البيانات إلى الجرافيت مع تحبب ساعة. على سبيل المثال الآن، إد ترغب في أن تكون قادرة على الرسم البياني هذا في تطور قيمة كل يوم في الأسبوع حتى القيمة الفعلية المعروضة هو مجموع (أو متوسط) القيم لهذا اليوم معين من الأسبوع على مدى بضعة أسابيع (يتيح ويقول 2 أسابيع على سبيل المثال). يبدو الرسم البياني الخاص بي كما لو أنني أنظر فقط في الأسبوع الماضي: على سبيل المثال، لنقطة الجمعة، فإنه يأخذ قيم اليوم (1112)، وقيمة الجمعة الأخيرة (3)، ويجعل متوسط كل من (( 1112) 3) 2 هل هذا ممكن، كيف تلخيص (your. metric. goes. here، 1week، مجموع) تلخيص البيانات في 1 أسبوع فترات من خلال جمع لهم. يمكنك أيضا استخدام متوسط، ماكس، دقيقة هناك. بقدر ما يذهب الدلالات يذهب - الموقتات، وعادة ما تحتاج إلى أن يكون متوسط وعدادات تحتاج إلى أن تلخص عند تلخيصها. على سبيل المثال: إذا قمت بقياس عدد اللفات وعدد مرات اللفة عندما تقوم بتشغيل كل يوم، وتريد ملخصا أسبوعيا، يمكنك متوسط اللفة من الوقت سبعة أيام وتخصيصه إلى أن واحد مرة واحدة اللفة الأسبوعية. مع اللفة العد. فإنه من المنطقي أن نعرف المجموع، لذلك كنت مجموع ذلك. على ملاحظة مختلفة: يتم استخدام تيمستاك و تيمشيفت في الحالات التي تريد مقارنة بيانات الأشهر الماضية مع هذه الأشهر على نفس المخطط الزمني. أيضا، يمكنك تيمشيفت البيانات تلخيص too. Graphite 1 يؤدي مهمتين بسيطة جدا: تخزين الأرقام التي تتغير مع مرور الوقت والرسوم البيانية لهم. كان هناك الكثير من البرامج المكتوبة على مر السنين للقيام بهذه المهام نفسها. ما يجعل الفريد الجرافيت هو أنه يوفر هذه الوظيفة كخدمة الشبكة التي هي على حد سواء سهلة الاستخدام وقابلة للتطوير للغاية. بروتوكول لتغذية البيانات في الجرافيت هو بسيط بما فيه الكفاية التي يمكن أن تتعلم أن تفعل ذلك باليد في بضع دقائق (لا أن يود تريد فعلا، ولكن لها اختبار لائقة محترم للبساطة). يعد عرض الرسوم البيانية واسترجاع نقاط البيانات أمرا سهلا مثل جلب عنوان ورل. وهذا يجعل من الطبيعي جدا لدمج الجرافيت مع البرامج الأخرى وتمكن المستخدمين من بناء تطبيقات قوية على رأس الجرافيت. واحدة من الاستخدامات الأكثر شيوعا من الجرافيت هو بناء لوحات على شبكة الإنترنت لرصد وتحليل. ولد الجرافيت في بيئة التجارة الإلكترونية عالية الحجم وتصميمه يعكس هذا. إن إمكانية الوصول إلى البيانات في الوقت الحقيقي هي أهداف رئيسية. المكونات التي تسمح الجرافيت لتحقيق هذه الأهداف تشمل مكتبة قاعدة بيانات متخصصة وتنسيق التخزين، وآلية التخزين المؤقت لتحسين عمليات إو، وطريقة بسيطة لكنها فعالة لتجميع خوادم الجرافيت. بدلا من مجرد وصف كيف يعمل الجرافيت اليوم، وسوف أشرح كيف تم تنفيذ الجرافيت في البداية (ساذجة تماما)، ما المشاكل التي واجهت، وكيف وضعت الحلول لهم. 7.1. مكتبة قاعدة البيانات: تخزين الوقت سلسلة البيانات مكتوبة الجرافيت تماما في بايثون ويتألف من ثلاثة مكونات رئيسية هي: مكتبة قاعدة بيانات اسمه الهمس. خفي الخلفية اسمه الكربون. و ويباب الأمامية التي تجعل الرسوم البيانية ويوفر واجهة المستخدم الأساسية. في حين تم كتابة الهمس خصيصا للجرافيت، ويمكن أيضا أن تستخدم بشكل مستقل. وهو مشابه جدا في التصميم لقاعدة بيانات روبن روبن المستخدمة من قبل ردتول، ويخزن فقط البيانات الرقمية سلسلة زمنية. عادة ما نفكر في قواعد البيانات كعمليات الخادم التي تتحدث تطبيقات العميل إلى أكثر من مآخذ. ومع ذلك، الهمس. مثل ردتول، هي مكتبة قاعدة بيانات تستخدمها التطبيقات للتلاعب واسترجاع البيانات المخزنة في ملفات منسقة خصيصا. عمليات الهمس الأساسية هي خلق لجعل ملف الهمس الجديد، تحديث لكتابة نقاط بيانات جديدة في ملف، وجلب لاسترداد نقاط البيانات. الشكل 7.1: التشريح الأساسي لملف الهمس كما هو مبين في الشكل 7.1. تتكون ملفات الهمس من قسم رأس يحتوي على بيانات وصفية مختلفة، يليها قسم أرشيف واحد أو أكثر. كل أرشيف هو سلسلة من نقاط البيانات المتتالية التي هي (الطابع الزمني، قيمة) أزواج. عند تنفيذ عملية تحديث أو جلب، يحدد الهمس الإزاحة في الملف حيث يجب كتابة البيانات إلى أو قراءتها، استنادا إلى الطابع الزمني وتكوين الأرشيف. 7.2. النهاية الخلفية: خدمة التخزين بسيطة الجرافيت نهاية النهاية هي عملية الخفي يسمى الكربون مخبأ. وعادة ما يشار إليها ببساطة باسم الكربون. وهو مبني على الملتوية، إطار إو يحركها الحدث عالية التحرك لبيثون. الملتوية تمكن الكربون على التحدث بكفاءة مع عدد كبير من العملاء والتعامل مع كمية كبيرة من حركة المرور مع النفقات العامة المنخفضة. ويبين الشكل 7.2 تدفق البيانات بين الكربون. الهمس و ويباب: تطبيقات العميل جمع البيانات وإرسالها إلى نهاية الجرافيت، الكربون. الذي يخزن البيانات باستخدام الهمس. ويمكن بعد ذلك أن تستخدم هذه البيانات من قبل ويباب الجرافيت لتوليد الرسوم البيانية. الشكل 7-2: تدفق البيانات تتمثل الوظيفة الأساسية للكربون في تخزين نقاط البيانات للمقاييس التي يقدمها العملاء. في المصطلحات الجرافيتية، المقياس هو أي كمية قابلة للقياس التي يمكن أن تختلف مع مرور الوقت (مثل استخدام وحدة المعالجة المركزية للخادم أو عدد من مبيعات المنتج). نقطة البيانات هي ببساطة (خاتم الوقت، القيمة) الزوج المقابلة للقيمة المقاسة لمقياس معين في نقطة زمنية. يتم تحديد المقاييس بشكل فريد باسمها، ويتم تقديم اسم كل مقياس بالإضافة إلى نقاط البيانات من خلال تطبيقات العميل. وهناك نوع شائع من تطبيقات العميل هو عامل المراقبة الذي يجمع مقاييس النظام أو التطبيق، ويرسل قيمه المجمعة إلى الكربون لسهولة التخزين والتصور. المقاييس في الجرافيت لها أسماء هرمية بسيطة، مماثلة لمسارات نظام الملفات إلا أن يتم استخدام نقطة لتحديد التسلسل الهرمي بدلا من شرطة مائلة أو مائلة للخلف. سوف يحترم الكربون أي اسم قانوني ويخلق ملف الهمس لكل مقياس لتخزين نقاط البيانات الخاصة به. يتم تخزين ملفات الهمس داخل دليل بيانات الكربون في التسلسل الهرمي لنظام الملفات الذي يعكس التسلسل الهرمي لنقاط محددة في كل اسم مقاييس، بحيث (على سبيل المثال) خوادم. www. cpuUsage الخرائط إلى hellipserverswww01cpuUsage. wsp. عندما يرغب تطبيق عميل لإرسال نقاط البيانات إلى الجرافيت يجب إنشاء اتصال تكب إلى الكربون. عادة على ميناء 2003 2. العميل لا كل الكربون الحديث لا يرسل أي شيء على اتصال. يرسل العميل نقاط البيانات بتنسيق نص عادي بسيط بينما قد يتم ترك الاتصال مفتوحا وإعادة استخدامه حسب الحاجة. الشكل هو سطر واحد من النص لكل نقطة بيانات حيث يحتوي كل سطر على اسم المقياس المنقط والقيمة والطابع الزمني لعصر يونكس مفصول بمسافات. على سبيل المثال، قد يرسل عميل: على مستوى عال، كل الكربون يفعل هو الاستماع للبيانات في هذا الشكل ومحاولة تخزينه على القرص في أسرع وقت ممكن باستخدام الهمس. في وقت لاحق سوف نناقش تفاصيل بعض الحيل المستخدمة لضمان قابلية والحصول على أفضل أداء يمكننا الخروج من القرص الصلب النموذجي. 7.3. الواجهة الأمامية: الرسوم البيانية حسب الطلب يتيح تطبيق ويب غرافيت للمستخدمين طلب رسوم بيانية مخصصة باستخدام واجهة برمجة تطبيقات بسيطة تستند إلى عناوين ورل. يتم تحديد معلمات الرسوم البيانية في سلسلة الاستعلام لطلب هتب جيت، ويتم عرض صورة ينغ استجابة. على سبيل المثال، عنوان ورل: يطلب رسم بياني 500times300 لخوادم المقاييس. www.01.cpuUsage وعلى مدار 24 ساعة من البيانات. في الواقع، مطلوب فقط المعلمة الهدف جميع الآخرين اختيارية واستخدام القيم الافتراضية الخاصة بك إذا حذفت. الجرافيت يدعم مجموعة واسعة من خيارات العرض وكذلك وظائف التلاعب البيانات التي تتبع بناء جملة وظيفية بسيطة. على سبيل المثال، يمكننا رسم متوسط متحرك من 10 نقاط للمقياس في مثالنا السابق مثل هذا: يمكن تداخل الدالات، مما يسمح بالتعبيرات المعقدة والحسابات. في ما يلي مثال آخر يعطي إجمالي المبيعات الحالي لليوم باستخدام مقاييس لكل منتج للمبيعات لكل دقيقة: تقوم الدالة سومزيريز بحساب سلسلة زمنية تمثل مجموع كل مقياس يتطابق مع نمط product..salesPerMinute. ثم يحسب لا يتجزأ مجموع تشغيل بدلا من عدد في الدقيقة الواحدة. من هنا ليس من الصعب جدا أن نتصور كيف يمكن للمرء أن بناء واجهة المستخدم على شبكة الإنترنت لعرض والتلاعب الرسوم البيانية. الجرافيت يأتي مع واجهة المستخدم الملحن الخاصة بها، هو مبين في الشكل 7.3. التي تقوم بذلك باستخدام جافا سكريبت لتعديل المعلمات ورل الرسوم البيانية كما ينقر المستخدم من خلال القوائم من الميزات المتاحة. الشكل 7.3: الجرافيت الملحن واجهة 7.4. لوحات التحكم منذ إنشائها تم استخدام الجرافيت كأداة لإنشاء لوحات على شبكة الإنترنت. إن واجهة برمجة تطبيقات عنوان ورل تجعل هذه حالة استخدام طبيعية. جعل لوحة التحكم بسيطة مثل جعل صفحة هتمل كاملة من العلامات مثل هذا: ومع ذلك، ليس الجميع يحب صياغة عناوين ورل باليد، لذلك يوفر غرافيتس كومبوسر أوي طريقة نقطة والنقر لإنشاء رسم بياني يمكنك ببساطة نسخ و الصق عنوان ورل. عندما يقترن مع أداة أخرى تسمح بإنشاء السريع لصفحات الويب (مثل ويكي) هذا يصبح من السهل بما فيه الكفاية أن المستخدمين غير التقنية يمكن بناء لوحات خاصة بهم بسهولة جدا. 7.5. عنق الزجاجة واضح مرة واحدة بدأ المستخدمين بناء لوحات، بدأ الجرافيت بسرعة أن يكون قضايا الأداء. لقد تحققت من سجلات خادم الويب لمعرفة الطلبات التي كانت تعثر عليها. وكان من الواضح جدا أن المشكلة هي العدد الهائل من طلبات الرسوم البيانية. كان ويباب متجهة بو، وتقديم الرسوم البيانية باستمرار. لقد لاحظت أن هناك الكثير من الطلبات المتطابقة، وكانت اللوم على لوحات. تخيل أن لديك لوحة القيادة مع 10 الرسوم البيانية في ويتم تحديث الصفحة مرة واحدة في الدقيقة. في كل مرة يفتح فيها المستخدم لوحة التحكم في متصفحه، يجب على غرافيت التعامل مع 10 طلبات إضافية في الدقيقة الواحدة. هذا يصبح بسرعة مكلفة. الحل البسيط هو تقديم كل رسم بياني مرة واحدة فقط ثم تقديم نسخة منه لكل مستخدم. إطار الويب دجانغو (الذي بنيت الجرافيت على) يوفر آلية التخزين المؤقت ممتازة التي يمكن استخدام نهايات الظهر المختلفة مثل ممكاشيد. ممكاشيد 3 هو في الأساس جدول التجزئة المقدمة كخدمة شبكة. يمكن الحصول على التطبيقات العميل وتعيين أزواج القيمة الرئيسية تماما مثل الجدول التجزئة العادية. الفائدة الرئيسية لاستخدام ممكاشيد هو أن نتيجة لطلب مكلفة (مثل تقديم الرسم البياني) يمكن تخزينها بسرعة كبيرة واسترجاعها في وقت لاحق للتعامل مع الطلبات اللاحقة. لتجنب عودته نفس الرسوم البيانية القديمة إلى الأبد، يمكن تكوين ممكاشيد لإنهاء الرسوم البيانية المخزنة مؤقتا بعد فترة قصيرة. حتى لو كان هذا هو بضع ثوان فقط، والعبء الذي يأخذ قبالة الجرافيت هو هائل بسبب طلبات مكررة شائعة جدا. حالة شائعة أخرى التي تخلق الكثير من تقديم الطلبات هو عندما يقوم المستخدم بتعديل خيارات العرض وتطبيق وظائف في واجهة مستخدم الملحن. في كل مرة يقوم المستخدم بتغيير شيء ما، يجب على الجرافيت إعادة رسم الرسم البياني. يتم تضمين نفس البيانات في كل طلب لذلك فمن المنطقي لوضع البيانات الأساسية في ممكاش كذلك. وهذا يحافظ على واجهة المستخدم استجابة للمستخدم لأنه يتم تخطي خطوة استرداد البيانات. 7.6. تحسين إو تخيل أن لديك 60،000 المقاييس التي ترسلها إلى خادم الجرافيت الخاص بك، ولكل من هذه المقاييس نقطة بيانات واحدة في الدقيقة الواحدة. تذكر أن كل مقياس له ملف الهمس الخاص به على نظام الملفات. وهذا يعني أن الكربون يجب أن تفعل عملية الكتابة واحدة إلى 60،000 ملفات مختلفة في كل دقيقة. طالما أن الكربون يمكن أن يكتب إلى ملف واحد كل ميلي ثانية واحدة، ينبغي أن تكون قادرة على مواكبة. هذا ليس بعيد المنال، ولكن يتيح القول أن لديك 600،000 مقاييس تحديث كل دقيقة، أو المقاييس الخاصة بك يتم تحديث كل ثانية، أو ربما كنت ببساطة لا تستطيع تحمل تخزين سريع بما فيه الكفاية. مهما كانت الحالة، افترض أن معدل نقاط البيانات الواردة يتجاوز معدل عمليات الكتابة التي يمكن تخزينها مواكبة. كيف ينبغي التعامل مع هذا الوضع معظم محركات الأقراص الصلبة هذه الأيام لها وقت بحث بطيء 4. وهذا هو، والتأخير بين القيام عمليات إو في موقعين مختلفين، مقارنة مع كتابة تسلسل متجاورة من البيانات. وهذا يعني أن الكتابة أكثر متجاورة نقوم به، والمزيد من الإنتاجية نحصل عليها. ولكن إذا كان لدينا الآلاف من الملفات التي تحتاج إلى أن تكون مكتوبة بشكل متكرر، ولكل كتابة صغيرة جدا (واحد نقطة البيانات الهمس هو 12 بايت فقط) ثم لدينا أقراص هي بالتأكيد سوف تنفق معظم وقتهم تسعى. العمل تحت افتراض أن معدل عمليات الكتابة لديها سقف منخفض نسبيا، والطريقة الوحيدة لزيادة إنتاجنا نقطة البيانات وراء هذا المعدل هو كتابة نقاط بيانات متعددة في عملية الكتابة واحدة. هذا أمر ممكن لأن الهمس يرتب نقاط بيانات متتالية متلاصقة على القرص. لذلك أضفت وظيفة أوبداتيماني إلى الهمس. الذي يأخذ قائمة من نقاط البيانات لمقياس واحد ويجمع نقاط البيانات المتجاورة في عملية الكتابة واحدة. على الرغم من أن هذا جعل كل الكتابة أكبر، والفرق في الوقت الذي يستغرقه لكتابة عشر نقاط البيانات (120 بايت) مقابل نقطة بيانات واحدة (12 بايت) لا يكاد يذكر. يستغرق الأمر عدد قليل من نقاط البيانات قبل أن يبدأ حجم كل كتابة في التأثير بشكل ملحوظ على زمن الاستجابة. بعد ذلك نفذت آلية التخزين المؤقت في الكربون. يتم تعيين كل نقطة بيانات واردة إلى قائمة انتظار استنادا إلى اسم المقياس ثم يتم إلحاقه بهذه اللائحة. آخر مؤشر ترابط مرارا وتكرار مرارا وتكرارا من خلال كل من قوائم الانتظار ولكل واحد أنه يسحب كل من نقاط البيانات ويكتبها إلى ملف الهمس المناسب مع أوبداتيماني. بالعودة إلى مثالنا، إذا كان لدينا 600،000 مقاييس تحديث كل دقيقة ويمكن تخزين لدينا فقط مواكبة 1 الكتابة لكل ميلي ثانية واحدة، ثم الطوابير سوف ينتهي الأمر عقد حوالي 10 نقاط البيانات كل في المتوسط. المورد الوحيد الذي يكلفنا هو الذاكرة، التي هي وفيرة نسبيا منذ كل نقطة البيانات ليست سوى عدد قليل من وحدات البايت. هذه الاستراتيجية بشكل حيوي مخازن العديد من داتابوانتس حسب الضرورة للحفاظ على معدل داتابوانتس واردة التي قد تتجاوز معدل عمليات إو التخزين الخاص بك يمكن مواكبة. وهناك ميزة لطيفة من هذا النهج هو أنه يضيف درجة من المرونة للتعامل مع التباطؤ إو مؤقت. إذا كان النظام يحتاج إلى القيام بأعمال أخرى إو خارج الجرافيت فمن المرجح أن معدل عمليات الكتابة سوف تنخفض، في هذه الحالة سوف طوابير الكربون سوف تنمو ببساطة. وكلما كانت الطوابير أكبر، كلما كانت الكتابة أكبر. وبما أن الإنتاجية الإجمالية لنقاط البيانات تساوي معدل عمليات الكتابة التي تفوق متوسط حجم كل كتابة، فإن الكربون قادر على مواكبة ما دام هناك ذاكرة كافية للصفوف. ويوضح الشكل 7.4 آلية طابور الكربون s. الشكل 7.4: آلية قائمة انتظار الكربونات 7.7. الحفاظ عليه في الوقت الحقيقي نقاط التخزين المؤقت كانت وسيلة لطيفة لتحسين الكربون إو ولكن لم تستغرق وقتا طويلا للمستخدمين بلدي لاحظ تأثير جانبي مزعج نوعا ما. بعد إعادة النظر في مثالنا مرة أخرى، حصلنا على 600،000 مقاييس يتم تحديثها كل دقيقة، وكان على افتراض أن التخزين لدينا يمكن أن يستمر فقط مع 60،000 عمليات الكتابة في الدقيقة الواحدة. وهذا يعني أننا سوف يكون لدينا ما يقرب من 10 دقيقة من البيانات التي تجلس في طوابير الكربون ق في أي وقت من الأوقات. للمستخدم يعني هذا أن الرسوم البيانية التي يطلبونها من ويباب الجرافيت سوف تكون في عداد المفقودين أحدث 10 دقيقة من البيانات: ليست جيدة لحسن الحظ الحل هو مستقيم إلى الأمام. أنا ببساطة إضافة مستمع مأخذ إلى الكربون الذي يوفر واجهة الاستعلام للوصول إلى نقاط البيانات المخزنة ثم تعديل ويباب الجرافيت لاستخدام هذه الواجهة في كل مرة يحتاج إلى استرداد البيانات. و ويباب ثم يجمع بين نقاط البيانات التي يستردها من الكربون مع نقاط البيانات التي استرجعت من القرص وفويلا، والرسوم البيانية هي في الوقت الحقيقي. منحت، في مثالنا يتم تحديث نقاط البيانات إلى دقيقة وبالتالي ليس بالضبط في الوقت الحقيقي، ولكن حقيقة أن كل نقطة البيانات يمكن الوصول إليها على الفور في الرسم البياني مرة واحدة يتم تلقيها من قبل الكربون هو في الوقت الحقيقي. 7.8. نواة، مخابئ، والفشل الكارثي كما هو واضح ربما من الآن، سمة رئيسية من أداء النظام أن الأداء الجرافيت الخاصة يعتمد على الكمون إو. لقد افترضنا حتى الآن أن نظامنا كان منخفضا باستمرار إو كمون متوسط حوالي 1 ميلي ثانية واحدة في الكتابة، ولكن هذا هو الافتراض الكبير الذي يتطلب تحليلا أعمق قليلا. معظم محركات الأقراص الصلبة ببساطة أرينت أن بسرعة حتى مع العشرات من الأقراص في مجموعة ريد هناك من المرجح جدا أن يكون أكثر من 1 ميلي ثانية واحدة الكمون للوصول العشوائي. ولكن إذا حاولت اختبار مدى سرعة كتابة كمبيوتر محمول قديم بكتابة كيلوبايت كاملة إلى القرص، فستجد أن مكالمة نظام الكتابة تعود في أقل من 1 ميلي ثانية واحدة. لماذا كلما كان البرنامج لديه خصائص أداء غير متناسقة أو غير متوقعة، عادة إما التخزين المؤقت أو التخزين المؤقت هو اللوم. في هذه الحالة، كانت تتعامل مع الاثنين معا. الكتابة نظام الدعوة لا يكتب من الناحية الفنية البيانات الخاصة بك إلى القرص، فإنه ببساطة يضعه في المخزن المؤقت الذي النواة ثم يكتب إلى القرص في وقت لاحق. هذا هو السبب في أن المكالمة الكتابة عادة ما يعود بسرعة. حتى بعد أن يتم كتابة المخزن المؤقت إلى القرص، فإنه غالبا ما تبقى مخبأة للقراءة لاحقة. كل من هذه السلوكيات، التخزين المؤقت والتخزين المؤقت، تتطلب الذاكرة بالطبع. المطورين النواة، كونهم الناس الذكية التي هي، قررت أنه سيكون فكرة جيدة لاستخدام كل الذاكرة مساحة المستخدم خالية حاليا بدلا من تخصيص الذاكرة صراحة. هذا اتضح أن تكون مفيدة للغاية معززة الأداء، وأنه يفسر أيضا لماذا بغض النظر عن مقدار الذاكرة التي تضيفها إلى نظام فإنه عادة ما ينتهي به ما يقرب من الصفر الذاكرة الحرة بعد القيام كمية متواضعة من إو. إذا كانت تطبيقات مساحة المستخدم الخاصة بك تتغاضى باستخدام تلك الذاكرة فإن نواة الخاص بك ربما تكون. الجانب السلبي لهذا النهج هو أن هذه الذاكرة الحرة يمكن أن تؤخذ بعيدا عن النواة لحظة تطبيق مساحة المستخدم يقرر أنه يحتاج إلى تخصيص المزيد من الذاكرة لنفسها. وليس لدى النواة أي خيار سوى التخلي عنها، وفقدان أي مخزونات قد تكون موجودة هناك. لذلك ماذا يعني كل هذا بالنسبة ل غرافيت نحن فقط سلط الضوء على الكربون الاعتماد على منخفضة باستمرار إو الكمون ونحن نعلم أيضا أن المكالمة نظام الكتابة يعود فقط بسرعة لأن البيانات هو مجرد نسخها إلى المخزن المؤقت. ماذا يحدث عندما لا يكون هناك ذاكرة كافية للنواة لمواصلة التخزين المؤقت يكتب تصبح الكتابة متزامنة وبالتالي بطيئة بشكل رهيب وهذا يسبب انخفاض كبير في معدل عمليات الكتابة الكربون، مما يسبب طوابير الكربون في النمو، الذي يأكل أكثر من ذلك الذاكرة، تجويع نواة أبعد من ذلك. في نهاية المطاف، وهذا النوع من الوضع عادة ما يؤدي إلى الكربون نفاد الذاكرة أو قتله من قبل سيسادمين غاضب. لتجنب هذا النوع من الكوارث، أضفت العديد من الميزات إلى الكربون بما في ذلك حدود شكلي على كيفية العديد من نقاط البيانات يمكن أن تكون قائمة الانتظار وحدود معدل على مدى سرعة عمليات الهمس المختلفة يمكن القيام بها. هذه الميزات يمكن أن تحمي الكربون من تصاعد خارج نطاق السيطرة وبدلا من ذلك فرض آثار أقل قاسية مثل إسقاط بعض نقاط البيانات أو رفض قبول المزيد من نقاط البيانات. ومع ذلك، القيم المناسبة لتلك الإعدادات هي نظام معين وتتطلب قدرا لا بأس به من الاختبار لحن. وهي مفيدة ولكنها لا تحل المشكلة بشكل أساسي. لذلك، تحتاج أيضا المزيد من الأجهزة. 7.9. التجميع مما يجعل العديد من ملقمات الجرافيت يبدو أن نظام واحد من وجهة نظر المستخدم ليس صعبا بشكل رهيب، على الأقل لتنفيذ نيوملف. يتكون تفاعل المستخدم ويبابس في المقام الأول من عمليتين: العثور على المقاييس وجلب نقاط البيانات (عادة في شكل رسم بياني). يتم العثور على عمليات البحث والجلب من ويباب بعيدا في مكتبة أن ملخصات تنفيذها من بقية كودباس، وأنها تتعرض أيضا من خلال معالجات طلب هتب للمكالمات عن بعد سهلة. تبحث عملية البحث عن نظام الملفات المحلي لبيانات الهمس للأشياء التي تتطابق مع نمط محدد من قبل المستخدم، تماما كما يتطابق نظام الملفات مثل. txt مع الملفات مع تلك الإضافة. كونها هيكل شجرة، والنتيجة عادت من قبل العثور على مجموعة من الكائنات عقدة، كل مشتق من فرع أو ليف الطبقات الفرعية من العقدة. الدلائل تتوافق مع العقد فرع والملفات الهمس تتوافق مع العقد ورقة. هذه الطبقة من التجريد يجعل من السهل لدعم أنواع مختلفة من التخزين الأساسي بما في ذلك ملفات رد 5 و غزيبد الملفات الهمس. تعرف واجهة ليف طريقة الجلب التي يعتمد تنفيذها على نوع عقدة الورقة. في حالة الملفات الهمس هو مجرد المجمع رقيقة حول مكتبة الهمس جلب وظيفة الخاصة. عندما تم إضافة دعم التجمع، تم تمديد وظيفة البحث لتكون قادرة على إجراء المكالمات عن بعد تجد عبر هتب إلى خوادم الجرافيت الأخرى المحددة في تكوين ويبابس. بيانات العقدة الواردة في نتائج هذه المكالمات هتب يحصل ملفوفة كائنات ريموتينود التي تتفق مع العقدة المعتادة. فرع شجرة. و ليف واجهات. وهذا يجعل التجمع شفافة لبقية كودبابس ويبابس. يتم تنفيذ طريقة الجلب لعقدة ورقة بعيدة كمكالمة هتب أخرى لاسترداد نقاط البيانات من خادم الجرافيت العقد. يتم إجراء كل هذه المكالمات بين ويبابس بنفس الطريقة التي يمكن للعميل استدعاءها، إلا مع معلمة إضافية واحدة تحدد أن العملية يجب أن يتم محليا فقط ولا يمكن إعادة توزيعها في كل مجموعة. عندما يطلب من ويباب لتقديم رسم بياني، فإنه يؤدي عملية العثور على تحديد المقاييس المطلوبة والمكالمات جلب على كل لاسترداد نقاط البيانات الخاصة بهم. هذا يعمل ما إذا كانت البيانات على الملقم المحلي، الملقمات البعيدة، أو كليهما. إذا كان الخادم ينخفض، والمكالمات المكالمات عن بعد بسرعة إلى حد ما والملقم يتم وضع علامة على أنها خارج الخدمة لفترة قصيرة خلالها لا يتم إجراء مزيد من المكالمات إليها. من وجهة نظر المستخدم، أيا كانت البيانات على الملقم المفقود ستكون مفقودة من الرسوم البيانية ما لم يتم تكرار هذه البيانات على ملقم آخر في الكتلة. 7.9.1. تحليل موجز لكفاءة التجميع يعد الجزء الأكبر من طلب الرسوم البيانية هو الرسم البياني. يتم تنفيذ كل تقديم من قبل خادم واحد لذلك إضافة المزيد من الملقمات لا يزيد من فعالية القدرة على تقديم الرسوم البيانية. ومع ذلك، فإن حقيقة أن العديد من الطلبات في نهاية المطاف توزيع تجد المكالمات إلى كل ملقم آخر في الكتلة يعني أن لدينا نظام تجميع تقاسم الكثير من الحمل الأمامية بدلا من تشتيت ذلك. إلا أن ما حققناه في هذه المرحلة هو طريقة فعالة لتوزيع الحمل الخلفي، حيث يعمل كل مثيل من الكربون بشكل مستقل. هذه هي الخطوة الأولى الجيدة منذ معظم الوقت في نهاية الجزء الخلفي هو عنق الزجاجة بعيدة قبل الواجهة الأمامية، ولكن من الواضح أن الواجهة الأمامية لن نطاق أفقيا مع هذا النهج. من أجل جعل مقياس الواجهة الأمامية على نحو أكثر فعالية، يجب تخفيض عدد المكالمات البحث عن بعد التي أدلى بها ويباب. مرة أخرى، الحل الأسهل هو التخزين المؤقت. تماما كما تم استخدام ممكاشيد بالفعل لذاكرة التخزين المؤقت نقاط البيانات والرسوم البيانية المقدمة، ويمكن أيضا أن تستخدم لتخزين نتائج البحث عن طلبات. نظرا لأن موقع المقاييس يقل احتمال تغييره بشكل متكرر، فيجب عادة تخزينه مؤقتا لفترة أطول. ومع ذلك، فإن المفاضلة بين تعيين مهلة ذاكرة التخزين المؤقت للبحث عن نتائج طويلة جدا، هي أن المقاييس الجديدة التي تمت إضافتها إلى التسلسل الهرمي قد لا تظهر بسرعة للمستخدم. 7.9.2. توزيع المقاييس في الكتلة ويباب الجرافيت هو متجانس إلى حد ما في جميع أنحاء مجموعة، في أنه يؤدي نفس الوظيفة بالضبط على كل ملقم. دور الكربون، ومع ذلك، يمكن أن تختلف من خادم إلى خادم اعتمادا على ما هي البيانات التي تختار إرسالها إلى كل مثيل. في كثير من الأحيان هناك العديد من العملاء المختلفة إرسال البيانات إلى الكربون. لذلك سيكون مزعج جدا لزوجين كل تكوين العملاء مع تخطيط مجموعات الجرافيت الخاص بك. قد تذهب مقاييس التطبيق إلى خادم كربون واحد، في حين قد يتم إرسال مقاييس الأعمال إلى خوادم كربون متعددة للتكرار. لتبسيط إدارة سيناريوهات مثل هذا، الجرافيت يأتي مع أداة إضافية تسمى الكربون التتابع. وظيفتها بسيطة جدا أنها تتلقى بيانات متري من العملاء تماما مثل الخفي الكربون القياسية (الذي يسمى في الواقع الكربون مخبأ) ولكن بدلا من تخزين البيانات، فإنه يطبق مجموعة من القواعد لأسماء المقاييس لتحديد أي خوادم الكربون ذاكرة التخزين المؤقت لنقل البيانات إلى. تتكون كل قاعدة من تعبير عادي وقائمة من ملقمات الوجهة. بالنسبة لكل نقطة بيانات يتم تلقيها، يتم تقييم القواعد بالترتيب ويتم استخدام القاعدة الأولى التي يطابق التعبير العادي اسم المقياس. وبهذه الطريقة كل العملاء بحاجة إلى القيام به هو إرسال البيانات الخاصة بهم إلى التتابع الكربون، وسوف ينتهي المطاف على الملقمات المناسبة. وبمعنى ما، فإن التتابع الكهربي يوفر وظيفة النسخ المتماثل، على الرغم من أنه سيسمى على نحو أدق بازدواجية المدخلات نظرا لأنه لا يتناول مسائل التزامن. إذا كان الخادم ينخفض مؤقتا، فإنه سوف يكون في عداد المفقودين نقاط البيانات للفترة الزمنية التي كان أسفل ولكن خلاف ذلك تعمل بشكل طبيعي. هناك نصوص إدارية تترك السيطرة على عملية إعادة المزامنة في يد مسؤول النظام. 7.10. تأملات التصميم لقد أكدت خبرتي في العمل على الجرافيت من جديد اعتقادا بأن قابليتي التدرجية لا تملك سوى القليل جدا من الأداء المنخفض المستوى، بل هي نتاج التصميم العام. لقد واجهت العديد من الاختناقات على طول الطريق ولكن في كل مرة أنا أبحث عن التحسينات في التصميم بدلا من سرعة المنبثقة في الأداء. لقد سألت مرات عديدة لماذا كتبت الجرافيت في بيثون بدلا من جافا أو C، وردتي دائما أنني لم يأت بعد حاجة حقيقية للأداء الذي يمكن أن تقدمه لغة أخرى. في Knu74، قال دونالد نوث الشهير أن التحسين المبكر هو جذر كل الشر. طالما أننا نفترض أن قانوننا سوف تستمر في التطور بطرق غير تافهة ثم كل التحسين 6 هو في بعض معنى سابق لأوانه. واحدة من الجرافيت أكبر نقاط القوة وأكبر نقاط الضعف هو حقيقة أن القليل جدا منه كان في الواقع مصممة بالمعنى التقليدي. بشكل عام تطور الجرافيت تدريجيا، عقبة من قبل عقبة، كما نشأت مشاكل. وفي كثير من الأحيان كانت العقبات متوقعة، ويبدو أن الحلول الوقائية المختلفة كانت طبيعية. ومع ذلك يمكن أن يكون من المفيد تجنب حل المشاكل التي لم يكن لديك حتى الآن، حتى لو كان من المرجح أن كنت قريبا سوف. والسبب هو أنه يمكنك معرفة المزيد من الدراسة عن كثب الفشل الفعلي من النظرية حول استراتيجيات متفوقة. يحل حل المشكلة من قبل كل من البيانات التجريبية لدينا في متناول اليد ومعرفتنا والحدس. وجدت إيف أن التشكيك في حكمة الخاصة بك بما فيه الكفاية يمكن أن يجبر لك أن ننظر إلى البيانات التجريبية الخاصة بك أكثر شمولا. على سبيل المثال، عندما كتبت لأول مرة الهمس كنت مقتنعا أنه يجب أن يعاد كتابة في C للسرعة وأن تنفيذ بيثون بلدي لن يكون إلا بمثابة نموذج أولي. إذا كنت ويرنت تحت وقت أزمة أنا جيدا جدا قد تخطي تنفيذ بايثون تماما. اتضح أن إو هو عنق الزجاجة في وقت سابق من وحدة المعالجة المركزية أن كفاءة أقل من بايثون بالكاد المسائل على الإطلاق في الممارسة العملية. وكما قلت، على الرغم من أن النهج التطوري هو أيضا ضعف كبير من الجرافيت. واجهات، اتضح، لا تصلح بشكل جيد للتطور التدريجي. واجهة جيدة متسقة وتوظف الاتفاقيات لتحقيق أقصى قدر من التنبؤ. من خلال هذا المقياس، واجهة برمجة التطبيقات ورل الجرافيت هو حاليا واجهة شبه قدم المساواة في رأيي. وقد تم تناول الخيارات والوظائف على مر الزمن، وأحيانا تشكل جزر صغيرة من الاتساق، ولكنها تفتقر عموما إلى الشعور العالمي بالاتساق. الطريقة الوحيدة لحل مثل هذه المشكلة هي من خلال إصدار من واجهات، ولكن هذا أيضا له عيوب. مرة واحدة تم تصميم واجهة جديدة، القديم لا يزال من الصعب التخلص من، العالقة حول كما تطوري الأمتعة مثل الملحق البشري. قد يبدو غير ضار بما فيه الكفاية حتى يوم واحد يحصل رمز الخاص بك التهاب الزائدة الدودية (أي علة مرتبطة واجهة القديمة) وكنت اضطر للعمل. إذا كان لي أن أتغير شيئا واحدا عن الجرافيت في وقت مبكر، كان من شأنه أن تأخذ رعاية أكبر بكثير في تصميم واجهات برمجة التطبيقات الخارجية، والتفكير قدما بدلا من تطويرها شيئا فشيئا. جانب آخر من الجرافيت الذي يسبب بعض الإحباط هو المرونة المحدودة لنموذج التسمية التسلسل الهرمي. في حين أنها بسيطة جدا ومريحة للغاية لمعظم حالات الاستخدام، فإنه يجعل بعض الاستفسارات المتطورة صعبة للغاية، حتى من المستحيل، للتعبير عن. عندما فكرت لأول مرة في خلق الجرافيت كنت أعرف من البداية أنني أردت الإنسان أديتابل ورل أبي لخلق الرسوم البيانية 7. في حين ايم لا يزال سعيدا أن الجرافيت يوفر هذا اليوم، يخشى هذا الشرط أعباء أبي مع بناء الجملة المفرطة أن يجعل التعبيرات المعقدة غير عملي. التسلسل الهرمي يجعل مشكلة تحديد المفتاح الأساسي لمقياس بسيط جدا لأن المسار هو في الأساس مفتاح أساسي لعقدة في الشجرة. الجانب السلبي هو أنه يجب تضمين جميع البيانات الوصفية (أي بيانات الأعمدة) مباشرة في المسار. الحل المحتمل هو الحفاظ على النموذج الهرمي وإضافة قاعدة بيانات تعريفية منفصلة لتمكين مزيد من التحديد المتقدم للمقاييس ذات بنية خاصة. 7.11. أن تصبح المصدر المفتوح إذا نظرنا إلى الوراء في تطور الجرافيت، ما زلت مندهشا على حد سواء من حيث أنها قد حان كمشروع وإلى أي مدى اتخذت لي كمبرمج. وبدأت كمشروع الحيوانات الأليفة التي كانت سوى بضع مئات من سطور من التعليمات البرمجية. بدأ محرك تقديم تجربة، ببساطة لمعرفة ما إذا كان يمكن أن يكتب واحد. تم كتابة الهمس على مدار عطلة نهاية الأسبوع من اليأس لحل مشكلة عرض سدادة قبل موعد إطلاق حرجة. وقد أعيد كتابة الكربون مرات أكثر مما يهمني أن أتذكر. مرة واحدة كان مسموحا للافراج عن الجرافيت تحت رخصة مفتوحة المصدر في عام 2008 أنا لم يتوقع حقا الكثير من الاستجابة. بعد بضعة أشهر ذكر في مقال نيت التي حصلت التقطت من قبل سلاشدوت والمشروع أخذت فجأة وكان نشطا منذ ذلك الحين. اليوم هناك العشرات من الشركات الكبيرة والمتوسطة الحجم باستخدام الجرافيت. المجتمع نشط جدا ويستمر في النمو. بعيدا عن كونه المنتج النهائي، وهناك الكثير من العمل التجريبي بارد يجري القيام به، مما يبقيه متعة للعمل على والكامل من الإمكانيات. launchpad. netgraphite هناك منفذ آخر على الكائنات المسلسل التي يمكن إرسالها، والتي هي أكثر كفاءة من تنسيق نص عادي. هذا مطلوب فقط لمستويات عالية جدا من حركة المرور. memcached. org محركات الأقراص الصلبة عادة ما تسعى بسرعة كبيرة مقارنة مع محركات الأقراص الصلبة التقليدية. ملفات رد هي في الواقع العقد فرع لأنها يمكن أن تحتوي على مصادر بيانات متعددة مصدر بيانات رد هو عقدة ورقة. كوث يعني على وجه التحديد تحسين مستوى منخفض المستوى، وليس الأمثل العيانية مثل تحسينات التصميم. هذا يجبر الرسوم البيانية نفسها لتكون مفتوحة المصدر. يمكن لأي شخص أن ينظر ببساطة إلى عنوان ورل الرسوم البيانية لفهمه أو تعديله.
Comments
Post a Comment