سؤال

بدلا من كتابة مكتبتك الخاصة.

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

أشعر بالفضول بشأن استخدام ZeroMQ للاتصال بين الخوادم وبين العمليات.يفضل شريكي أن يتدحرج بنفسه.أنا أتطلع إلى المجتمع للإجابة على هذا السؤال.

أنا مبرمج مبتدئ إلى حد ما وتعلمت للتو عن قوائم انتظار الرسائل.كما بحثت وقرأت في Google، يبدو أن الجميع يستخدمون قوائم انتظار الرسائل لجميع أنواع الأشياء، ولكن لماذا؟ما الذي يجعلها أفضل من كتابة مكتبتك الخاصة؟لماذا هم شائعون جدا ولماذا هناك الكثير؟

هل كانت مفيدة؟

المحلول

ما الذي يجعلها أفضل من كتابة مكتبتك الخاصة؟

عند طرح الإصدار الأول من تطبيقك، ربما لا شيء:احتياجاتك محددة جيدًا وستقوم بتطوير نظام مراسلة يناسب احتياجاتك:قائمة الميزات الصغيرة، رمز المصدر الصغير وما إلى ذلك.

تلك الأدوات هي جداً مفيد بعد الإصدار الأول، عندما يتعين عليك بالفعل توسيع تطبيقك وإضافة المزيد من الميزات إليه.اسمحوا لي أن أقدم لكم بعض حالات الاستخدام:

  • سيتعين على تطبيقك التحدث إلى جهاز endian كبير (sparc/powerpc) من جهاز endian صغير (x86، intel/amd).كان لنظام المراسلة الخاص بك بعض افتراضات الترتيب النهائي:اذهب وأصلحه
  • لقد صممت تطبيقك بحيث لا يكون بروتوكولًا ثنائيًا/نظام مراسلة، وهو الآن بطيء جدًا لأنك تقضي معظم وقتك في تحليله (زاد عدد الرسائل وأصبح التحليل بمثابة عنق الزجاجة):قم بتكييفه حتى يتمكن من نقل الترميز الثنائي/الثابت
  • في البداية كان لديك 3 أجهزة داخل الشبكة المحلية، ولم يكن هناك تأخير ملحوظ في وصول كل شيء إلى كل جهاز.يظهر عميلك/رئيسك/Pointy-haired-devil-boss ويخبرك أنك ستقوم بتثبيت التطبيق على شبكة WAN التي لا تديرها - وبعد ذلك تبدأ في فشل الاتصال وزمن الوصول السيئ وما إلى ذلك.تحتاج إلى تخزين الرسالة وإعادة محاولة إرسالها لاحقًا:ارجع إلى الكود وقم بتوصيل هذه الأشياء (واستمتع بها)

  • يجب أن تحتوي الرسائل المرسلة على ردود، ولكن ليس جميعها:ترسل بعض المعلمات وتتوقع جدول بيانات كنتيجة بدلاً من مجرد الإرسال والإقرار، ارجع إلى التعليمات البرمجية وقم بتوصيل هذه الأشياء (واستمتع بها.)

  • بعض الرسائل مهمة ويحتاج الاستقبال/الإرسال إلى النسخ الاحتياطي/المثابرة/المناسبة.لماذا تسأل ؟أغراض التدقيق

والعديد من حالات الاستخدام الأخرى التي نسيتها ...

يمكنك تنفيذ ذلك بنفسك، لكن لا تقضي الكثير من الوقت في القيام بذلك:من المحتمل أن تستبدله لاحقًا على أي حال.

نصائح أخرى

وهذا يشبه إلى حد كبير يسأل: لماذا استخدام قاعدة البيانات عند يمكنك إرسال بنفسك

والجواب هو أن استخدام أداة التي كانت موجودة لفترة من الوقت ويفهم جيدا في الكثير من حالات الاستخدام المختلفة، وتؤتي ثمارها أكثر فأكثر مع مرور الوقت وفقا لمتطلبات الخاص بك تتطور. هذا ينطبق بشكل خاص إذا كان الأمر ينطوي المطور أكثر من واحد في المشروع. هل تريد أن تصبح موظفي الدعم لنظام الطابور إذا قمت بتغيير لمشروع جديد؟ باستخدام أداة يمنع ذلك من الحدوث. يصبح مشكلة شخص آخر.

ومثال على ذلك: استمرار. الكتابة أداة لتخزين رسالة واحدة على القرص سيكون أمرا سهلا. كتابة persistor أن المقاييس ويؤدي بشكل جيد <م> و ثابت، في كثير من الحالات استخدام مختلفة، ويمكن التحكم فيها، ورخيصة لدعم، من الصعب. إذا كنت تريد أن ترى شخص يشكو مدى صعوبة وبعد ذلك ننظر في هذا: <لأ href = "http://www.lshift.net/blog/2009/12/07/rabbitmq-at-the-skills-matter- وظيفية البرمجة تبادل "يختلط =" noreferrer "> http://www.lshift.net/blog/2009/12/07/rabbitmq-at-the-skills-matter-functional-programming-exchange

وعلى أي حال، وآمل أن يساعد هذا. بكل الوسائل إرسال أداة الخاصة بك. فعلت الكثير الكثير من الناس لذلك. أيا كان يحل مشكلتك، أمر جيد.

أفكر في استخدام ZeroMQ بنفسي - ومن ثم عثرت على هذا السؤال.

لنفترض في الوقت الحالي أن لديك القدرة على تنفيذ نظام قائمة انتظار الرسائل الذي يلبي جميع متطلباتك.لماذا تعتمد ZeroMQ (أو مكتبة أخرى تابعة لجهات خارجية) بدلاً من النهج الخاص بك؟بسيطة - التكلفة.

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

إذا كنت تدير شركة لتطوير البرمجيات، فأعتقد أنك ستحقق التوازن بين تكلفة/مخاطر استخدام مكتبات الطرف الثالث مقابل إنشاء مكتبات خاصة بك، وفي هذه الحالة، فإن استخدام ZeroMQ سيفوز بالتأكيد.

ربما أنت (أو بالأحرى شريكك) تعاني، كما يعاني العديد من المطورين، من "لم يتم اختراعه هنا" متلازمة؟إذا كان الأمر كذلك، قم بتعديل موقفك وإعادة تقييم استخدام ZeroMQ.أنا شخصياً أفضل فوائد موقف Proudly Found Elsewhere.آمل أن أكون فخورًا بالعثور على ZeroMQ...الوقت سوف اقول.

يحرر:جئت عبر هذا فيديو من مطوري ZeroMQ الذي يتحدث عنه لماذا يجب عليك استخدام ZeroMQ.

<اقتباس فقرة>   

وما يجعلها أفضل من الكتابة مكتبتك الخاصة؟

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

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

وقبل كتابة مكتبتك الخاصة، وقراءة دليل 0MQ هنا: http://zguide.zeromq.org/ الصفحة: كل

وهناك احتمالات بأن سوف يقرر إما لتثبيت RabbitMQ، وإلا سوف تجعل مكتبتك على رأس ZeroMQ منذ ما قاموا به بالفعل جميع الأجزاء الصلبة.

إذا كان لديك الكثير من الوقت في محاولة إعطائها وطرح تنفيذ الخاص بك! فإن تعلمه من هذه العملية اقناع لكم حول الحكمة من استخدام مكتبة سبق اختبارها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top