إضافة العقد ديناميكيًا والمجموعات العالمية في Erlang

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

  •  03-07-2019
  •  | 
  •  

سؤال

يدعم Erlang تقسيم عقده إلى مجموعات باستخدام global_group وحدة.علاوة على ذلك، يدعم Erlang إضافة العقد بسرعة إلى شبكة العقدة.هل هاتان الميزتان قابلتان للاستخدام مع بعضهما البعض؟
بقدر ما أفهم، يجب عليك تسمية كل عقدة عند بدء التشغيل لاستخدام المجموعات العالمية.

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

المحلول

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

ولكن هناك وظيفة المصدرة global_group:global_groups_changed الذي يتعامل مع تغيير قائمة العقدة.

وهذا ما يسمى من النواة:config_change (يرى الوحدة النمطية:config_change/3) لذا فمن الممكن بالتأكيد إضافة عقد جديدة إلى global_group أثناء ترقية الإصدار (نمط الأنظمة المضمنة OTP) (راجع "تحديث مواصفات التطبيق")

هو - هي قد يكون من الممكن القيام ببساطة بما يلي:

application:set_env( kernel, global_groups, [GroupTuple|GroupTuples] ),
kernel:config_change( [ { global_groups, [GroupTuple|GroupTuples] } ], [], [] )

بافتراض أن لديك بالفعل تكوين global_groups، أو

application:set_env( kernel, global_groups, [GroupTuple|GroupTuples] ),
kernel:config_change( [], [{ global_groups, [GroupTuple|GroupTuples] }], [] )

إذا كنت تقوم بتكوين global_groups في مجموعة لم تكن موجودة بالفعل.

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

ولكن بمجرد أن يتم ذلك لهم جميعا،

global_group:sync()

يجب أن يعمل كل شيء مرة أخرى.

لم أختبر الوصفة المذكورة أعلاه، لكنها تبدو لذيذة بالنسبة لي.^_^

نصائح أخرى

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

وعقدة هو إرلانج وقت تنفيذ   نظام التي أعطيت اسما،   باستخدام العلامة -اسم سطر الأوامر   (أسماء طويلة) أو -sname (أسماء قصيرة).

     

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

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

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

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