مساحة الصف
مساحة الصفوف هي تطبيق لنموذج الذاكرة الترابطية للحوسبة المتوازية/الموزعة. توفر هذه المساحة مستودعًا للصفوف التي يمكن الوصول إليها بشكل متزامن. على سبيل المثال، لنفترض وجود مجموعة من المعالجات تُنتج أجزاءً من البيانات، ومجموعة أخرى تستخدم هذه البيانات. تُرسل المعالجات المُنتجة بياناتها على شكل صفوف في هذه المساحة، ثم تسترجع المعالجات المُستهلكة البيانات التي تُطابق نمطًا مُحددًا. يُعرف هذا أيضًا باسم استعارة السبورة . يُمكن اعتبار مساحة الصفوف شكلًا من أشكال الذاكرة المشتركة الموزعة .
كانت فضاءات المجموعات هي الأساس النظري للغة ليندا التي طورها ديفيد جيلرنتر ونيكولاس كاريرو في جامعة ييل عام 1986.
تم أيضًا تطوير تطبيقات لمساحات الصفوف للغات Java ( JavaSpaces ) و Lisp و Lua و Prolog و Python و Ruby و Smalltalk و Tcl و .NET Framework .
مساحات الكائنات
مساحات الكائنات هي نموذج لتطوير تطبيقات الحوسبة الموزعة . تتميز بوجود كيانات منطقية تُسمى مساحات الكائنات . يتشارك جميع المشاركين في التطبيق الموزع مساحة كائن واحدة . يقوم مُقدّم الخدمة بتغليف الخدمة ككائن ، ويضعه في مساحة الكائنات . بعد ذلك، يصل عملاء الخدمة إلى مساحة الكائنات ، ويكتشفون الكائن الذي يُقدّم الخدمة المطلوبة، ويتلقّون طلبهم من خلاله.
تم طرح مفهوم فضاءات الكائنات ، كنموذج حاسوبي، في ثمانينيات القرن العشرين من قبل ديفيد جيلرنتر في جامعة ييل . وقد طور جيلرنتر لغة تسمى ليندا لدعم مفهوم التنسيق العالمي للكائنات.
يمكن اعتبار مساحة الكائنات بمثابة مستودع افتراضي، مشترك بين مزودي خدمات الشبكة ومستخدميها، والذين يتم تجريدهم بدورهم ككائنات. تتواصل العمليات فيما بينها باستخدام هذه الكائنات المشتركة - عن طريق تحديث حالة الكائنات حسب الحاجة.
عند إيداع أي عنصر في مساحة التخزين، يجب تسجيله في دليل العناصر ضمن مساحة العناصر . بعد ذلك، يمكن لأي عملية تحديد العنصر من دليل العناصر باستخدام خاصية البحث، حيث تكون الخاصية التي تحدد معايير البحث هي اسم العنصر أو أي خاصية أخرى تميزه بشكل فريد. قد تختار العملية الانتظار حتى يتم وضع عنصر في مساحة العناصر ، إذا لم يكن العنصر المطلوب موجودًا بالفعل.
تكون الكائنات، عند إيداعها في مساحة الكائنات، غير نشطة، أي لا يمكن استدعاء وظائفها أثناء وجودها في مساحة الكائنات . بدلاً من ذلك، يجب على العملية التي تصل إليها استرجاعها من مساحة الكائنات إلى ذاكرتها المحلية، واستخدام الخدمة التي يوفرها الكائن، وتحديث حالة الكائن، ثم إعادته إلى مساحة الكائنات .
يُوفر هذا النموذج بطبيعته خاصية الاستبعاد المتبادل . فبمجرد الوصول إلى كائن ما، يجب إزالته من مساحة الكائنات ، ولا يُعاد إلى مكانه إلا بعد تحريره. وهذا يعني أنه لا يمكن لأي عملية أخرى الوصول إلى كائن ما أثناء استخدامه من قِبل عملية أخرى، مما يضمن الاستبعاد المتبادل.
جافا سبيسز
JavaSpaces هي مواصفات خدمة توفر آلية لتبادل وتنسيق الكائنات الموزعة (قد تكون دائمة أو مؤقتة) لكائنات جافا . تُستخدم لتخزين حالة النظام الموزع وتنفيذ الخوارزميات الموزعة . في JavaSpace، يتواصل جميع الشركاء (الأقران) وينسقون من خلال مشاركة الحالة.
يمكن استخدام JavaSpaces لتحقيق قابلية التوسع من خلال المعالجة المتوازية، كما يمكن استخدامها لتوفير تخزين موثوق للكائنات عبر النسخ الموزع، مع العلم أن هذا لا يصمد أمام انقطاع التيار الكهربائي الكامل كما هو الحال مع الأقراص الصلبة؛ إلا أن الكثيرين يعتبرونه موثوقًا طالما أن التيار الكهربائي مستقر. ويمكن أيضًا توزيع البيانات إلى مواقع بعيدة؛ إلا أن هذا نادر الحدوث لأن JavaSpaces تُستخدم عادةً للتطبيقات التي تتطلب زمن استجابة منخفضًا وأداءً عاليًا، بدلاً من التخزين المؤقت الموثوق للكائنات.
يُعدّ نمط السيد-العامل النمط البرمجي الأكثر شيوعًا في JavaSpaces. يُسلّم السيد وحدات العمل إلى "المساحة"، ويقوم العمال بقراءتها ومعالجتها وكتابتها مرة أخرى إلى المساحة. في بيئة نموذجية، توجد عدة "مساحات"، وعدة سادة، والعديد من العمال؛ وعادةً ما يُصمّم العمال ليكونوا عامين، أي بإمكانهم استلام أي وحدة عمل من المساحة ومعالجة المهمة.
يُعدّ JavaSpaces جزءًا من تقنية Java Jini ، التي لم تحقق نجاحًا تجاريًا كبيرًا بمفردها. [ 1 ] وقد استقطبت هذه التقنية مستخدمين جددًا على مرّ السنين، ويُقدّم بعض المورّدين منتجاتٍ مبنية على JavaSpaces. ولا تزال JavaSpaces تقنيةً متخصصةً تُستخدم في الغالب في قطاعي الخدمات المالية والاتصالات، حيث لا تزال تحظى بشعبيةٍ واسعة. وقد أثار الإعلان عن Jini/JavaSpaces ضجةً كبيرة، على الرغم من أن بيل جوي، المؤسس المشارك لشركة Sun وكبير مهندسي Jini ، أوضح أن هذا الحلم بالأنظمة الموزّعة سيتطلّب " قفزةً نوعيةً في التفكير ". [ 2 ]
مثال على الاستخدام
يوضح المثال التالي تطبيقًا تم إنشاؤه باستخدام JavaSpaces. أولًا، يتم إنشاء كائن للمشاركة في مساحة الكائنات . يُسمى هذا الكائن " إدخالًا " في مصطلحات JavaSpace. يُستخدم الإدخال هنا لتغليف خدمة تُعيد سلسلة نصية " Hello World!" ، ويتتبع عدد مرات استخدامها. يقوم الخادم الذي يُقدم هذه الخدمة بإنشاء مساحة كائنات ، أو JavaSpace . ثم يُكتب الإدخال في JavaSpace . يقرأ العميل الإدخال من JavaSpace ويستدعي دالته للوصول إلى الخدمة، مُحدثًا بذلك عدد مرات استخدامها. يُعاد كتابة الإدخال المُحدث إلى JavaSpace .
// فئة Entry العامة فئة SpaceEntry التي تُنفذ واجهة Entry { public final String message = "Hello World!" ; public Integer count = 0 ; public String service () { ++ count ; return message ; } public String toString () { return "Count: " + count ; } }// خادم Hello World! public class Server { public static void main ( String [] args ) throws Exception { SpaceEntry entry = new SpaceEntry (); // إنشاء كائن Entry JavaSpace space = ( JavaSpace ) space (); // إنشاء كائن Space // تسجيل وكتابة Entry في Space space . write ( entry , null , Lease . FOREVER ); // التوقف لمدة 10 ثوانٍ ثم استرداد Entry والتحقق من حالته. Thread . sleep ( 10 * 1000 ); SpaceEntry e = space . read ( entry , null , Long . MAX_VALUE ); System . out . println ( e ); } }// فئة العميل العامة Client { public static void main ( String [] args ) throws Exception { JavaSpace space = ( JavaSpace ) space (); SpaceEntry e = space . take ( new SpaceEntry (), null , Long . MAX_VALUE ); System . out . println ( e . service ()); space . write ( e , null , Lease . FOREVER ); } }الكتب
- إريك فريمان ، سوزان هوبفر ، كين أرنولد : مبادئ وأنماط وتطبيقات جافا سبيسز. دار نشر أديسون-ويسلي بروفيشنال، 1 يونيو 1999، رقم ISBN 0-201-30955-6
- فيل بيشوب، نايجل وارين: جافا سبيسز في الممارسة العملية. أديسون ويسلي، 2002، رقم ISBN 0-321-11231-8
- ماكس ك. جوف: الحوسبة الموزعة عبر الشبكات: رؤى ومغالطات ، 2004، برنتيس هول، رقم ISBN 0-13-100152-3
- سينغ لي وآخرون: برمجة خادم جافا الاحترافية ، 1999، دار نشر وروكس، رقم ISBN 1-86100-277-7
- ستيفن هالتر: أمثلة عملية لـ JavaSpaces ، 2002، برنتيس هول بي تي آر، رقم ISBN 0-13-061916-7
المقابلات
- جيلرنتر، ديفيد (2009). "سيد السحابة" . جون بروكمان، محرر وناشر. راسل واينبرغر، ناشر مشارك، مؤسسة إيدج.
- هيس، جانيس ج. (2003). "رؤى الكمبيوتر: محادثة مع ديفيد جيليرنتر" . شبكة مطوري صن (SDN).
- فينرز، بيل (2003). "التصميم كما لو كان المبرمجون بشرًا (مقابلة مع كين أرنولد)" . java.net.
مقالات
- بروغدن، ويليام (2007). "كيف يمكن لخدمات الويب استخدام JavaSpaces" . SearchWebServices.com . تاريخ الاسترجاع: 18 أبريل 2007 .
- بروغدن، ويليام (2007). "الحوسبة الشبكية وخدمات الويب (بيوولف، بوينك، جافاسبيسز)" . SearchWebServices.com . تاريخ الاسترجاع: 20 مارس 2007 .
- وايت، توم (2005). "كيفية إنشاء مزرعة حوسبة" . java.net . تم الاسترجاع في 21-05-2005 .
- أوتينجر، جوزيف (2007). "فهم مساحات جافا" . ذا سيرفر سايد . تم الاسترجاع في 31 يناير 2007 .
- أنغيرر، برنارد؛ إرلاخر، أندرياس (2005). "التواصل والتنسيق غير المترابطين في برمجيات جافا الوسيطة من الجيل التالي" . java.net . تم الاسترجاع في 3 يونيو 2006 .
- أنغيرر، برنارد (2003). "البرمجة القائمة على الفضاء" . onjava.com . تم الاسترجاع في 19-03-2003 .
- سينغ، لي (2003). "تجميع طبقات الويب عالية التأثير، الجزء 2: بناء حلول قابلة للتكيف والتوسع باستخدام JavaSpaces" . IBM developerworks.
- محمود، قصي ح. (2005). "البدء باستخدام تقنية JavaSpaces: ما وراء نماذج البرمجة الموزعة التقليدية" . شبكة مطوري صن (SDN).
- فريمان، إريك؛ هوبفر، سوزان (20 نوفمبر 1999). "أفسحوا المجال لـ Javaspaces، الجزء 1 (من 5)" . JavaWorld . تم الاسترجاع في 17 يوليو 2020 .
- لوفلر، دكتور جيرالد (2004). "JavaSpaces وihr Platz في Enterprise Java Universum، Das Modell zum Objektaustausch: JavaSpaces vorgestellt" . Entwickler.com . تم الاسترجاع 2004-02-01 .
- أرانجو، ماوريسيو (2009). "التنسيق في الأنظمة المتوازية القائمة على الأحداث" . blogs.sun.com.
- نيمليكار، ميليند (2001). "مساحات الصفوف الموزعة القابلة للتوسع" . جامعة ولاية كارولينا الشمالية، قسم الهندسة الكهربائية وهندسة الحاسبات.
انظر أيضاً
- الهندسة المعمارية الفضائية
- ليندا (لغة التنسيق)
- كين أرنولد ، كبير مهندسي قسم JavaSpaces في شركة صن مايكروسيستمز
مراجع
- ↑ لي غوميز: " توقعات شركة صن مايكروسيستمز لنظام Jxta تبدو مألوفة ". صحيفة وول ستريت جورنال ، 4 يونيو 2001
- ↑ روب غوث: " أكثر من مجرد اسم جميل آخر: جيني من صن يفتح عالماً جديداً لأنظمة الحوسبة الموزعة ". صن وورلد ، أغسطس 1998 [15 يناير 2006]
مصادر
- جيليرنتر، ديفيد . "التواصل التوليدي في ليندا" . معاملات ACM في لغات البرمجة والأنظمة ، المجلد 7، العدد 1، يناير 1985
- الحوسبة الموزعة (الطبعة الهندية الأولى، 2004)، إم إل ليو
روابط خارجية
- "TupleSpace" على موقع c2.com
- "مواصفات جافا سبيس" على موقع jini.org
- الحوسبة المتوازية
- بنية الحوسبة الموزعة
- لغات البرمجة
- جافا (منصة برمجية)
