อ่าน 4 นาที
โปรแอคทีฟ
ProActive Parallel Suite เป็น ซอฟต์แวร์ โอเพนซอร์ส สำหรับ การจัดการ ภาระงาน ระดับองค์กร ซึ่งเป็นส่วนหนึ่งของชุมชน OW2 โมเดล เวิร์กโฟลว์ ช่วยให้สามารถกำหนดชุด ไฟล์ปฏิบัติการ หรือ...
โปรแอคทีฟ
| ชุดโปรแกรม ProActive Parallel Suite | |
|---|---|
| นักพัฒนา | ActiveEon, อินเดีย , OW2 Consortium |
| เวอร์ชันเสถียร | 10.0 (F-Zero) / 12 กรกฎาคม 2019 |
| เขียนเป็น | ชวา |
| ระบบปฏิบัติการ | ข้ามแพลตฟอร์ม |
| พิมพ์ | ตัวกำหนดตารางงาน |
| ใบอนุญาต | เอจีพีแอล |
| เว็บไซต์ | www.activeeon.com |
ProActive Parallel Suiteเป็น ซอฟต์แวร์ โอเพนซอร์สสำหรับ การจัดการ ภาระงาน ระดับองค์กร ซึ่งเป็นส่วนหนึ่งของชุมชนOW2 โมเดล เวิร์กโฟลว์ช่วยให้สามารถกำหนดชุดไฟล์ปฏิบัติการหรือสคริปต์ที่เขียนด้วยภาษาใดก็ได้ พร้อมทั้งกำหนดความสัมพันธ์ระหว่างไฟล์เหล่านั้น ดังนั้น ProActive Parallel Suite จึงสามารถกำหนดตารางเวลาและจัดการการเรียกใช้งาน พร้อมทั้งเพิ่มประสิทธิภาพการใช้ทรัพยากรการคำนวณได้
ProActive Parallel Suite ใช้รูปแบบการออกแบบ " วัตถุแอคทีฟ " (ดูวัตถุแอคทีฟ ) เพื่อเพิ่มประสิทธิภาพการกระจายงานและการทนต่อข้อผิดพลาด
คุณสมบัติหลักของ ProActive Parallel Suite
- เวิร์กโฟลว์ช่วยให้สามารถทำงานแบบขนานได้ง่ายขึ้น (เช่น Java, สคริปต์ หรือไฟล์ปฏิบัติการแบบเนทีฟ) โดยเรียกใช้บนทรัพยากรที่ตรงกับข้อจำกัดต่างๆ (เช่น การเร่งความเร็ว GPU, ตำแหน่งที่ตั้งของไลบรารีหรือข้อมูล)
- มีอินเทอร์เฟซบนเว็บสำหรับออกแบบและดำเนินการเวิร์กโฟลว์งาน และจัดการทรัพยากรการประมวลผล API แบบ RESTful ช่วยให้สามารถทำงานร่วมกับแอปพลิเคชันระดับองค์กรได้
- ทรัพยากรการคำนวณ (คลาวด์ คลัสเตอร์ โครงสร้างพื้นฐานเสมือนจริง เครื่องคอมพิวเตอร์ตั้งโต๊ะ) สามารถรวมเข้าไว้ในโครงสร้างพื้นฐานเสมือนจริงเดียวได้ ซึ่งจะช่วยให้สามารถปรับขนาดได้โดยอัตโนมัติและทำให้กลยุทธ์การจัดการทรัพยากรง่ายขึ้น
- การทำงานร่วมกันได้เกิดขึ้นได้จากเวิร์กโฟลว์ที่หลากหลาย ซึ่งช่วยให้สามารถเรียกใช้งานงานต่างๆ บนแพลตฟอร์มที่หลากหลาย รวมถึง Windows, Mac และ Linux ได้
เฟรมเวิร์กและโมเดลการเขียนโปรแกรม ProActive Java
แบบจำลองนี้สร้างขึ้นโดย Denis Caromel ศาสตราจารย์ที่มหาวิทยาลัย Nice Sophia Antipolis [ 1 ] ต่อ มาได้มีการขยายแบบจำลองนี้เพิ่มเติมโดยสมาชิกทีม OASIS ที่INRIA [ 2 ] หนังสือA Theory of Distributed Objects นำเสนอแคลคูลัส ASP ที่กำหนดรูปแบบคุณสมบัติ ของProActive และให้ความหมายเชิงรูปธรรมแก่แคลคูลัส พร้อมกับคุณสมบัติของการดำเนินการโปรแกรม ProActive [ 3 ]
วัตถุที่ใช้งานอยู่
อ็อบเจ็กต์แอคทีฟเป็นหน่วยพื้นฐานของการทำงานและการกระจายงานที่ใช้ในการสร้าง แอปพลิเคชัน แบบขนาน โดย ใช้ ProActive อ็อบเจ็กต์แอคทีฟจะทำงานด้วยเธรด ของตัวเอง เธรดนี้จะเรียกใช้เฉพาะเมธอดที่ถูกเรียกใช้โดยอ็อบเจ็กต์แอคทีฟอื่น ๆ และเมธอดของอ็อบเจ็กต์พาสซีฟของระบบย่อยที่เป็นของอ็อบเจ็กต์แอคทีฟนั้น ด้วย ProActive โปรแกรมเมอร์ไม่จำเป็นต้องจัดการกับอ็อบเจ็กต์เธรดอย่างชัดเจน ซึ่งแตกต่างจากใน Java มาตรฐาน
สามารถสร้างอ็อบเจ็กต์แอคทีฟได้บนโฮสต์ใดก็ได้ที่เกี่ยวข้องกับการคำนวณ เมื่อสร้างอ็อบเจ็กต์แอคทีฟแล้ว กิจกรรมของมัน (ข้อเท็จจริงที่ว่ามันทำงานด้วยเธรดของตัวเอง) และตำแหน่งที่ตั้งของมัน (ภายในเครื่องหรือระยะไกล) จะโปร่งใสอย่างสมบูรณ์ อ็อบเจ็กต์แอคทีฟใดๆ ก็สามารถจัดการได้ราวกับว่าเป็นอินสแตนซ์แบบพาสซีฟของคลาสเดียวกัน
อ็อบเจ็กต์แอคทีฟประกอบด้วยอ็อบเจ็กต์สองส่วน คือส่วนเนื้อหา (body ) และอ็อบเจ็กต์มาตรฐานของ Java โดยส่วนเนื้อหาจะไม่สามารถมองเห็นได้จากภายนอกของอ็อบเจ็กต์แอคทีฟ
ฟังก์ชันนี้มีหน้าที่รับการเรียก (หรือคำขอ ) จากวัตถุที่ใช้งานอยู่ และจัดเก็บคำขอเหล่านั้นไว้ในคิวของการเรียกที่รอการดำเนินการ โดยจะดำเนินการตามคำขอเหล่านั้นตามลำดับที่กำหนดโดยนโยบายการซิงโครไนซ์ หากไม่ได้ระบุนโยบายการซิงโครไนซ์ การเรียกจะถูกจัดการในลักษณะ " เข้าก่อนออกก่อน " (FIFO)
จากนั้นเธรดของอ็อบเจ็กต์ที่ทำงานอยู่จะเลือกเมธอดในคิวของคำขอที่รอการดำเนินการและเรียกใช้เมธอดนั้น ไม่มีการประมวลผลแบบขนานภายในอ็อบเจ็กต์ที่ทำงานอยู่ นี่เป็นการตัดสินใจที่สำคัญในการออกแบบของ ProActive ซึ่งช่วยให้สามารถใช้เงื่อนไข "ก่อน-หลัง" และความคงที่ของคลาสได้
ในส่วนของระบบย่อยที่ส่งการเรียกไปยังอ็อบเจ็กต์ที่ทำงานอยู่ อ็อบเจ็กต์ที่ทำงานอยู่นั้นจะถูกแทนด้วยพร็อกซีพร็อกซีจะสร้างอ็อบเจ็กต์ในอนาคตเพื่อแสดงค่าในอนาคต แปลงการเรียกเป็นอ็อบเจ็กต์คำขอ (ในแง่ของเมตาอ็อบเจ็กต์ นี่คือการทำให้เป็นรูปธรรม ) และทำการคัดลอกแบบลึกของอ็อบเจ็กต์แบบพาสซีฟที่ส่งผ่านเป็นพารามิเตอร์
ฐานวัตถุที่ใช้งานอยู่
ProActive เป็นไลบรารีที่ออกแบบมาเพื่อพัฒนาแอปพลิเคชันในรูปแบบที่นำเสนอโดย Eiffel// ซึ่งเป็นส่วนขยายแบบขนานของภาษาโปรแกรม Eiffel
ในโมเดลนี้ แอปพลิเคชันมีโครงสร้างเป็นระบบย่อยโดยแต่ละระบบย่อยจะมีวัตถุที่ทำงานอยู่หนึ่งตัว (และดังนั้นจึงมีเธรดหนึ่งตัว) และแต่ละระบบย่อยจะมีหนึ่งระบบย่อยต่อวัตถุที่ทำงานอยู่หนึ่งตัว (หรือเธรดหนึ่งตัว) ดังนั้นแต่ละระบบย่อยจึงประกอบด้วยวัตถุที่ทำงานอยู่หนึ่งตัวและวัตถุที่ไม่ทำงานจำนวนเท่าใดก็ได้—หรืออาจไม่มีวัตถุที่ไม่ทำงานเลยก็ได้ เธรดของระบบย่อยหนึ่งจะเรียกใช้เมธอดในวัตถุของระบบย่อยนั้นเท่านั้น ไม่มี "วัตถุที่ไม่ทำงานที่ใช้ร่วมกัน" ระหว่างระบบย่อยต่างๆ
คุณสมบัติเหล่านี้ส่งผลต่อโครงสร้างของแอปพลิเคชัน ในบรรดาวัตถุทั้งหมดที่ประกอบขึ้นเป็นระบบย่อย ไม่ว่าจะเป็นวัตถุที่ทำงานอยู่หรือวัตถุที่ไม่ได้ทำงาน มีเพียงวัตถุที่ทำงานอยู่เท่านั้นที่วัตถุภายนอกระบบย่อยรู้จัก วัตถุทั้งหมด ทั้งที่ทำงานอยู่และที่ไม่ได้ทำงาน อาจมีการอ้างอิงถึงวัตถุที่ทำงานอยู่ หากวัตถุo1มีการอ้างอิงถึงวัตถุที่ไม่ได้ทำงานo2แสดงว่าo1และo2เป็นส่วนหนึ่งของระบบย่อยเดียวกัน

สิ่งนี้มีผลกระทบต่อความหมายของการส่งข้อความระหว่างระบบย่อยด้วยเช่นกัน เมื่อวัตถุในระบบย่อยเรียกเมธอดบนวัตถุที่ทำงานอยู่ พารามิเตอร์ของการเรียกอาจเป็นการอ้างอิงถึงวัตถุที่ไม่ทำงานในระบบย่อย ซึ่งจะนำไปสู่การใช้วัตถุที่ไม่ทำงานร่วมกัน นี่คือเหตุผลที่วัตถุที่ไม่ทำงานที่ส่งผ่านเป็นพารามิเตอร์ของการเรียกบนวัตถุที่ทำงานอยู่จะถูกส่งผ่านโดยการคัดลอกแบบลึก เสมอ ในทางกลับกัน วัตถุที่ทำงานอยู่จะถูกส่งผ่านโดยการอ้างอิง เสมอ ในทำนองเดียวกัน หลักการนี้ยังใช้กับวัตถุที่ส่งคืนจากเมธอดที่เรียกบนวัตถุที่ทำงานอยู่ด้วย
ด้วยแนวคิดของการเรียกแบบอะซิงโครนัส ฟิวเจอร์ และการไม่แบ่งปันข้อมูล แอปพลิเคชันที่เขียนด้วย ProActive จึงไม่จำเป็นต้องเปลี่ยนแปลงโครงสร้างใดๆ เลย ไม่ว่าแอปพลิเคชันนั้นจะทำงานในสภาพแวดล้อม แบบลำดับ แบบมัลติเธรดหรือแบบกระจาย ก็ตาม
การเรียกแบบอะซิงโครนัสและฟิวเจอร์ส
เมื่อใดก็ตามที่เป็นไปได้ การเรียกใช้เมธอดบนอ็อบเจ็กต์ที่ใช้งานอยู่จะถูกแปลงเป็นคำขอแบบอะซิงโครนัส หากไม่สามารถทำได้ การเรียกใช้จะเป็นแบบซิงโครนัสและจะบล็อกจนกว่าจะได้รับคำตอบ หากคำขอเป็นแบบอะซิงโครนัส ระบบจะส่งคืนอ็อบเจ็กต์ฟิ วเจอร์ ทันที
อ็อบเจ็กต์ในอนาคตทำหน้าที่เป็นตัวแทนสำหรับผลลัพธ์ของการเรียกใช้เมธอดที่ยังไม่ได้ดำเนินการ ดังนั้นเธรดที่เรียกใช้จึงสามารถดำเนินการโค้ดต่อไปได้ตราบใดที่ไม่จำเป็นต้องเรียกใช้เมธอดบนอ็อบเจ็กต์ที่ส่งคืนมา หากจำเป็น เธรดที่เรียกใช้จะถูกบล็อกโดยอัตโนมัติหากผลลัพธ์ของการเรียกใช้เมธอดนั้นยังไม่พร้อมใช้งาน แม้ว่าอ็อบเจ็กต์ในอนาคตจะมีโครงสร้างคล้ายกับอ็อบเจ็กต์ที่ใช้งานอยู่ แต่จริงๆ แล้วอ็อบเจ็กต์ในอนาคตไม่ได้ทำงาน มันมีเพียงแค่ Stub และ Proxy เท่านั้น
ตัวอย่างโค้ด
โค้ดตัวอย่างด้านล่างนี้แสดงให้เห็นถึงแนวคิดของอ็อบเจ็กต์ในอนาคต สมมติว่าผู้ใช้เรียกเมธอดหนึ่งfooจากbarอ็อบเจ็กต์ที่ใช้งานอยู่aเมธอดแรกfooจะส่งคืนค่าว่าง (void) และbarเมธอดที่สองจะส่งคืนอ็อบเจ็กต์ของคลาสV:
// การสื่อสารแบบอะซิงโครนัสทางเดียวที่มีประเภทข้อมูลไปยัง AO (ระยะไกล) a // คำขอจะถูกส่งไปยัง a a . foo ( param );// การสื่อสารแบบอะซิงโครนัสที่มีประเภทพร้อมผลลัพธ์// v เป็น Future ที่รออยู่ก่อน ซึ่งจะถูกเติมเต็มอย่างโปร่งใสหลังจาก// การให้บริการคำขอและการตอบกลับV v = a.bar ( param ); ... // การใช้ผลลัพธ์ของการเรียกแบบอะซิงโครนัส// ถ้า v ยังคงเป็น Future ที่รออยู่ มัน จะเรียกใช้การรอ อัตโนมัติ// รอตามความจำเป็นv.gee ( param ) ;เมื่อfooมีการเรียกใช้เมธอดบนอ็อบเจ็กต์ที่ทำงานอยู่ เมธอดaนั้นจะส่งคืนค่าทันที (เนื่องจากเธรดปัจจุบันไม่สามารถเรียกใช้เมธอดในระบบย่อยอื่นได้) ในทำนองเดียวกัน เมื่อbarมีการเรียกใช้เมธอดบนอ็อบเจ็กต์ที่ ไม่ได้ทำงาน aเมธอดนั้นจะส่งคืนค่าทันที แต่ยังไม่สามารถคำนวณผลลัพธ์vได้ จะมีการส่งคืนอ็อบเจ็กต์ในอนาคต ซึ่งเป็นตัวแทนสำหรับผลลัพธ์ของการเรียกใช้เมธอด จากมุมมองของระบบย่อยที่เรียกใช้ เมธอดในอนาคตจะไม่มีความแตกต่างจากอ็อบเจ็กต์ที่จะได้รับคืนหากเรียกใช้เมธอดเดียวกันบนอ็อบเจ็กต์ที่ไม่ได้ทำงาน
หลังจากที่ทั้งสองเมธอดส่งค่ากลับแล้ว เธรดที่เรียกจะดำเนินการโค้ดต่อไปราวกับว่าการเรียกนั้นเสร็จสมบูรณ์แล้ว บทบาทของกลไก future คือการบล็อกเธรดที่เรียกเมื่อgeeมีการเรียกเมธอดvและผลลัพธ์ยังไม่ได้รับการกำหนด: นโยบายการซิงโครไนซ์ระหว่างออบเจ็กต์นี้เรียกว่าwait-by- necessity
ดูเพิ่มเติม
อ่านเพิ่มเติม
- Ranaldo, N.; Tretola, G.; Zimeo, E. (14–18 เมษายน 2551). "การจัดตารางกิจกรรม ProActive ด้วยเครื่องมือเวิร์กโฟลว์ที่ใช้ XPDL". การประชุมวิชาการนานาชาติ IEEE ว่าด้วยการประมวลผลแบบขนานและแบบกระจาย ประจำปี 2008.ไมอามี: IEEE . หน้า 1–8 . doi : 10.1109/IPDPS.2008.4536336 . ISBN 978-1-4244-1693-6ISSN 1530-2075 S2CID 10082749
- Sun, Hailong; Zhu, Yanmin; Hu, Chunming; Huai, Jinpeng; Liu, Yunhao; Li, Jianxin (2005). "ประสบการณ์เบื้องต้นของการใช้งานบริการระยะไกลและบริการร้อนด้วยความน่าเชื่อถือใน CROWN Grid" ใน Cao, Jiannong; Nejdl, Wolfgang; Xu, Ming (บรรณาธิการ). เทคโนโลยีการประมวลผลแบบขนานขั้นสูง . บันทึกการบรรยายในวิทยาการคอมพิวเตอร์. เล่มที่ 3756. เบอร์ลิน: Springer. หน้า 301–312 . doi : 10.1007/11573937_33 . ISBN 978-3-540-29639-3.
- Quéma, Vivien; Balter, Roland; Bellissard, Luc; Féliot, David; Freyssinet, André; Lacourte, Serge (2004). "การปรับใช้แอปพลิเคชันแบบส่วนประกอบแบบอะซิงโครนัส ลำดับชั้น และปรับขนาดได้" ใน Emmerich, Wolfgang; Wolf, Alexander L. (บรรณาธิการ). การปรับใช้ส่วนประกอบ . บันทึกการบรรยายในวิทยาการคอมพิวเตอร์. เล่มที่ 3083. เบอร์ลิน: Springer. หน้า 50–64 . doi : 10.1007/978-3-540-24848-4_4 . ISBN 978-3-540-22059-6.
- ProActive-CLIF-Fractal ได้รับรางวัล OW2 ประจำปี 2012
- ซอฟต์แวร์เพื่อปลดล็อกศักยภาพของระบบโครงข่ายไฟฟ้า (ICT Results)
- ActiveEon และ MetaQuant renforcent leur partenariat sur le Cloud ProActive (ภาษาฝรั่งเศส)
ลิงก์ภายนอก
- เว็บไซต์อย่างเป็นทางการ
- ข้อกำหนดโมเดลส่วนประกอบกริด
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ โปรแอคทีฟ
ProActive Parallel Suite เป็น ซอฟต์แวร์ โอเพนซอร์ส สำหรับ การจัดการ ภาระงาน ระดับองค์กร ซึ่งเป็นส่วนหนึ่งของชุมชน OW2 โมเดล เวิร์กโฟลว์ ช่วยให้สามารถกำหนดชุด ไฟล์ปฏิบัติการ หรือ...
คุณสมบัติหลักของ ProActive Parallel Suite
เวิร์กโฟลว์ช่วยให้สามารถทำงานแบบขนานได้ง่ายขึ้น (เช่น Java, สคริปต์ หรือไฟล์ปฏิบัติการแบบเนทีฟ) โดยเรียกใช้บนทรัพยากรที่ตรงกับข้อจำกัดต่างๆ (เช่น การเร่งความเร็ว GPU, ตำแหน่งที่ตั้งของไลบรารีหรือข้อมูล)...
เฟรมเวิร์กและโมเดลการเขียนโปรแกรม ProActive Java
แบบจำลองนี้สร้างขึ้นโดย Denis Caromel ศาสตราจารย์ที่ มหาวิทยาลัย Nice Sophia Antipolis [ 1 ] ต่อ มาได้มีการขยายแบบจำลองนี้เพิ่มเติมโดยสมาชิกทีม OASIS ที่ INRIA [ 2 ] หนังสือ A Theory of Distributed Objects นำเสนอแคลคูลัส ASP ที่กำหนดรูปแบบคุณสมบัติ...
วัตถุที่ใช้งานอยู่
อ็อบเจ็กต์แอคทีฟเป็นหน่วยพื้นฐานของการทำงานและการกระจายงานที่ใช้ในการสร้าง แอปพลิเคชัน แบบขนาน โดย ใช้ ProActive อ็อบเจ็กต์แอคทีฟจะทำงานด้วย เธรด ของตัวเอง เธรดนี้จะเรียกใช้เฉพาะเมธอดที่ถูกเรียกใช้โดยอ็อบเจ็กต์แอคทีฟอื่น ๆ...