هل يتم تشغيل الأحداث دائمًا في نفس العملية في النيتروجين؟

StackOverflow https://stackoverflow.com/questions/1993164

  •  22-09-2019
  •  | 
  •  

سؤال

أنا آخذ event وظيفة في النيتروجين ، إطار عمل Erlang, ، في وحدة الويب التي يتم تشغيلها عند الحصول على Postback.

يفعل event قم دائمًا بالتشغيل في نفس العملية لنفس عميل الويب (أي نافذة المتصفح أو الإطار).

أتذكر حالة واحدة على الأقل لم يحدث فيها ذلك ، لكن لا يمكنني إعادة إنتاجها.

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

المحلول

لا ، يتم تشغيل أحداث النيتروجين في أي عملية تتعامل حاليًا مع طلب الويب للنيتروجين.

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

نصائح أخرى

مرحبًا يا شباب ، لقد اكتشفت سجل العملية للنيتروجين يسمى: nprocreg.
عندما تقوم بفحص مجلد التطبيقات ( $ nitrogen_install_dir/apps/nprocreg ).

في هذا التطبيق ، يمكن أن تفرخ العمليات عبر أكثر من خوادم تطبيق النيتروجين حتى عبر آلات متعددة. لتجربة هذا ، ابدأ 2 عقد erlang على اثنين من مضيفات مختلفة. ping لهم حتى يتصلوا. ((net_adm:ping(?OTHER_NODE)). الآن ، ابدأ النيتروجين على كل من عقد إرلانج. يمكنك بالفعل بدء النيتروجين أولاً ثم بين العقدتين
تأكد من أن العقدتين النيتروجين يستخدمان أسماء طويلة IE [name] ip_address على LAN.

الآن ، على جهاز ثالث على LAN الخاص بك ، قم بإنشاء DNS (خادم الاسم). ضع نفس الاسم رسم خرائط على اثنين من عوامل IP مختلفة لعقدتنا التي تعمل على تشغيل تطبيقات النيتروجين. قم بتكوين جهاز كمبيوتر Runnind Nitrogen للتأكد من أنه يشير إلى عنوان IP DNS لخدمات DNS (فعل ذلك بالفعل لجميع أجهزة الكمبيوتر في LAN).
سوف تكتشف أنه عندما تطلب صفحة (تقيم في جذر DOC لكل من تطبيقات النيتروجين) من عدة أجهزة كمبيوتر على شبكة الإنترنت الخاصة بك ، باستخدام الاسم المعين في متصفحك ، ترى أن خادم DNS يقوم بمجموعة من موازنة التحميل.
الآن ، تأكد من أن الصفحة التي تطلبها يمكن أن تظهر لك خادم النيتروجين الذي يأتي منه على الواجهة. يجب أن تقول هذه الصفحة زرًا يولد حدثًا wf:flash(wf:f("Some statement on the interface",[]))
الآن ، اطلب هذه الصفحة على جهاز كمبيوتر مختلفان ولاحظ من أين يتم تقديم كل منهما. بعد ذلك ، انتقل إلى خادم النيتروجين واحد وأوقفه.
عندما تنقر الآن على الزر الموجود على المتصفح الذي حصل على صفحته خادم النيتروجين الذي وضعناه للتو ، فهو لا يزال يعمل.
لهذا السبب ، اكتشف Rusty والأصدقاء أنه إذا كان من الممكن تسجيل عمليات النيتروجين عبر المزيد من تطبيقات النيتروجين ، عند تشغيلها خلف موازن الحمل ، يمكن أن تتم ضياع الأحداث لأي تطبيق للنتروجين في المجموعة.
بالطبع هذا يعمل بشكل جيد إذا كنت تتأكد من أن التطبيقين على الأجهزة المختلفة لهما نفس الصفحات والوحدات النمطية وتكوين المسارات. وذلك لأن وظيفة استدعاء الحدث ربما استدعاء تقول واجهة برمجة تطبيقات قاعدة البيانات.
يمكن رؤية مثال على موازنة التحميل باستخدام خادم DNS عندما تقوم "بحفر" Google من المحطة الخاصة بك على Linux أو Solaris مثل هذا:

dig www.google.com
سترى أن خادم الاسم لديه نفس الاسم المعين على العديد من Adresses. هذا يضمن التوافر عبر المجالات ويضمن نوعًا من موازنة التحميل
/joshmuza@gmail.com

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