Skip to main content

การเขียนโปรแกรมแบบกระจายคืออะไร?

การเขียนโปรแกรมแบบกระจายเป็นรูปแบบหนึ่งของการเขียนโปรแกรมแบบขนานหรือการคำนวณแบบขนานการเขียนโปรแกรมแบบขนานเกี่ยวข้องกับคอมพิวเตอร์และหน่วยคอมพิวเตอร์ภายในคอมพิวเตอร์ที่ทำงานพร้อมกับปัญหาเฉพาะเช่นการทำนายสภาพอากาศในวันพรุ่งนี้หน่วยคอมพิวเตอร์สามารถตั้งอยู่อย่างใกล้ชิดและประสานงานหรือสามารถแยกออกได้เมื่อหน่วยคอมพิวเตอร์แยกจากกันมันจะเรียกว่าการเขียนโปรแกรมแบบกระจายในสถานการณ์ดังกล่าวบ่อยครั้งที่หน่วยคอมพิวเตอร์แตกต่างกันไปและระบบปฏิบัติการและการตั้งค่าเครือข่ายแตกต่างกันเช่นกันการเขียนโปรแกรมกิจกรรมการคำนวณโดยเฉพาะอย่างยิ่งความท้าทาย

เมื่อแก้ปัญหาในลักษณะกระจายโปรแกรมจะต้องเป็นแยกออกเพื่อให้ส่วนต่าง ๆ ของโปรแกรมสามารถทำงานบนหน่วยคอมพิวเตอร์ที่แตกต่างกันชิ้นส่วนเหล่านี้มักเรียกว่ากระบวนการกระบวนการทำงานพร้อมกัน แต่จำเป็นต้องสื่อสารอินพุตและผลลัพธ์ซึ่งกันและกันหากกระบวนการทำงานบนฮาร์ดแวร์ที่แตกต่างกันเช่นส่วนหนึ่งที่ทำงานบน Intel และอีกอันหนึ่งที่กำลังทำงานอยู่บนดวงอาทิตย์โปรแกรมจะต้องรวบรวมและปรับให้เหมาะสมแตกต่างกัน

วิธีหนึ่งในการแก้ปัญหาที่ยากพอสมควรและให้หน่วยคอมพิวเตอร์ที่แตกต่างกันทำงานในส่วนต่าง ๆ โดยใช้อัลกอริทึมเดียวกันชุดของกฎหรือขั้นตอนสำหรับการแก้ปัญหาตัวอย่างเช่นในการถอดรหัสจีโนม 10,000 คู่สามารถกำหนด 1,000 คู่แรกให้กับหน่วยคอมพิวเตอร์แรก 1,000 คู่ที่สองที่กำหนดให้กับหน่วยคอมพิวเตอร์ที่สองและอื่น ๆ ทั้งหมดใช้อัลกอริทึมเดียวกันด้วยการเขียนโปรแกรมแบบกระจายความได้เปรียบอย่างหนึ่งคือหน่วยคอมพิวเตอร์ที่แตกต่างกันสามารถเรียกใช้อัลกอริทึมที่แตกต่างกันเพื่อแก้ปัญหาเดียวกันซึ่งนำไปสู่การแก้ปัญหาที่ดีกว่าอย่างมีนัยสำคัญนี่เป็นสิ่งที่คล้ายกับการแก้ปริศนาจิ๊กซอว์กับบางคนประกอบชายแดนเข้าด้วยกันในขณะที่คนอื่น ๆ รวบรวมชิ้นส่วนที่มีสีเฉพาะ

การประสานงานของกระบวนการคำนวณแบบกระจายอาจเป็นงานที่ยากโดยเฉพาะอย่างยิ่งหน่วยคอมพิวเตอร์บางหน่วยอาจล้มเหลวหรืออาจถูกขัดจังหวะเพื่อจัดการงานอื่น ๆข้อความที่มีอินพุตหรือผลลัพธ์ของการคำนวณอาจล้มเหลวในการเข้าถึงจุดหมายปลายทางหากโปรแกรมถูกเขียนในลักษณะ na #239 จากนั้นการสูญเสียของหน่วยคอมพิวเตอร์หรือข้อความบางส่วนอาจทำให้ชุดคอมพิวเตอร์ทั้งหมดถูกแขวน

ในการเขียนโปรแกรมแบบกระจายกระบวนการหนึ่งอาจเป็นกระบวนการควบคุมงานที่ทำโดยกระบวนการอื่น ๆ หรือกระบวนการทั้งหมดสามารถทำงานได้ในลักษณะเพียร์ทูเพียร์โดยไม่มีกระบวนการเป็นผู้เชี่ยวชาญตัวอย่างของปัญหาที่พยายามเขียนโปรแกรมแบบกระจายรวมถึงการวิเคราะห์ข้อมูลทางธรณีวิทยาสำหรับทรัพยากรเช่นปิโตรเลียมการสร้างแบบจำลองของโปรตีนและโมเลกุลชีวภาพการแตกร้าวของข้อความที่เขียนและการจำลองทางทหารโครงการ SETI เพื่อค้นหาชีวิตนอกโลกอัจฉริยะจากข้อความวิทยุที่ได้รับจากโลกอาจเป็นหนึ่งในตัวอย่างที่รู้จักกันดีที่สุด