سؤال

ما هي إيجابيات وسلبيات استخدام ملف interprocess?اسمحوا لي أن أقدم بعض المعلومات من سياق أنا أسأل هذا السؤال.

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

هذا النظام كان يعمل على إنتاج لسنوات حتى الآن دعم الآلاف من المستخدمين الناس understandbly تخوف جدا حول إضافة المزيد من التبعية إلى هذا لإضافة دعم استمرار.مسار اخترنا أن تفرخ موضوع جديد في العملية الحالية أن يكتب المحلية حركة المرور إلى ملف عن الملفات التي يتم بعد ذلك قراءة من خلال عملية جديدة( دعونا نسميها المستهلك) ولا تزال مستمرة.مزايا نرى مع هذا النهج هي:

  1. نحصل على استمرار مجانا.أكان عملية جديدة القضايا ونحن لا تفقد أي حركة المرور المحلية ونحن الكتابة إلى ملف نظام.طالما أن يعرف المستهلك من حيث توقفت عندما يأتي فإنه يمكن البدء في معالجة البيانات.
  2. ليس هناك منحنى التعلم باستخدام الطابور المكتبات عادي القديمة يونيكس ملفات IO.
  3. أكبر برو هو أننا لا تؤثر الحالي منتج العملية في كل شيء ، ما عدا موضوع جديد عن ملف يكتب.

بعض الشواغل مع هذا النهج هي:

  1. قفل ملف و الخلاف و يؤثر على الأداء.
  2. التأكد من كتابة مخازن يتم مسح والمنتج فقط بتحرير الملف قفل مرة واحدة كاملة الحدث قد كتب إلى الملف.المستهلك يجب قراءة غير مكتملة الوثائق.

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

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

المحلول

واجهت أنا مع هذا الاختيار مؤخرا ويعتبر تعلم ما يكفي عن بيركلي DB لاستخدام طابور آلية.ولكن في النهاية قررت بدلا من ذلك إلى استخدام يونكس نظام الملفات ، اكتب بلدي الذرية طابور الأوليات باستخدام Posix الإشارات.إن جميع العمليات على جهاز واحد هذا من السهل جدا.الذرية وضع وظيفة عن عشرة أسطر من التعليمات البرمجية ؛ الذرية على أن الانتظار إذا كانت قائمة الانتظار فارغة حوالي ثلاثة أضعاف حجم.

نصيحتي هي أنك تصميم الذرية-طابور API التي سوف إخفاء هذه التفاصيل.(مثال كلاسيكي التالية Parnas نصيحة من استخدام واجهة لإخفاء تفاصيل التصميم التي من المرجح أن تتغير.) يمكنك أن تفعل النسخة الأولى من API باستخدام عادي Unix ملف I/O.ثم يمكنك محاولة الاختلافات مثل قفل ، بيركلي DB أو الإشارات---مع كل "الحد الأدنى من التأثير على العملية الجارية".

لن تعرف تأثيرات الأداء حتى محاولة شيء.تأمين الملفات على نظام الملفات جدا جيد ؛ قفل ملف على NFS هو دب.

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