Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

อัลกอริทึมของ Berkeley ใน C/C++


อัลกอริทึมของ Berkeley เป็นอัลกอริทึมที่ใช้สำหรับการซิงโครไนซ์นาฬิกาในระบบแบบกระจาย อัลกอริธึมนี้ใช้ในกรณีที่บางระบบหรือทั้งหมดของเครือข่ายแบบกระจายมีปัญหาเหล่านี้ -

  • A. เครื่องไม่มีแหล่งเวลาที่แม่นยำ

  • B. เครือข่ายหรือเครื่องไม่มีเซิร์ฟเวอร์ UTC

ระบบกระจาย มีหลายโหนดที่แยกจากกัน แต่เชื่อมโยงเข้าด้วยกันโดยใช้เครือข่าย

อัลกอริทึมของ Berkeley ใน C/C++

อัลกอริทึมของเบิร์กลีย์

ในอัลกอริธึมนี้ ระบบจะเลือกโหนดเป็นโหนดหลัก/โหนดผู้นำ ทำได้จากโหนดพูลในเซิร์ฟเวอร์

อัลกอริทึมคือ −

  • ขั้นตอนการเลือกตั้งจะเลือกโหนดหลักในเซิร์ฟเวอร์

  • จากนั้นผู้นำจะสำรวจผู้ติดตามที่ให้เวลาในลักษณะที่คล้ายกับอัลกอริธึมของคริสเตียน , สิ่งนี้จะทำเป็นระยะๆ.

  • จากนั้นผู้นำจะคำนวณเวลาสัมพัทธ์ที่โหนดอื่นต้องเปลี่ยนหรือปรับให้ตรงกันกับเวลานาฬิกาทั่วโลกซึ่งเป็นค่าเฉลี่ยของเวลาที่กำหนดให้กับโหนดผู้นำ

มาสรุปขั้นตอนที่ทำตามเพื่อซิงโครไนซ์นาฬิกาโดยใช้อัลกอริทึมของ Berkeley

โหนดในระบบแบบกระจายพร้อมเวลานาฬิกา -

N1 -> 14:00 (master node)
N2 -> 13: 46
N3 -> 14: 15

ขั้นตอนที่ 1 − ผู้นำได้รับเลือก โหนด N1 เป็นมาสเตอร์ในระบบ

ขั้นตอนที่ 2 − ผู้นำร้องขอเวลาจากทุกโหนด

N1 -> time : 14:00
N2 -> time : 13:46
N3 -> time : 14:20

ขั้นตอนที่ 3 − ผู้นำจะเฉลี่ยเวลาและส่งเวลาแก้ไขกลับไปยังโหนด

N1 -> Corrected Time 14:02 (+2)
N2 -> Corrected Time 14:02 (+16)
N3 -> Corrected Time 14:02 (-18)

นี่แสดงให้เห็นว่าการซิงโครไนซ์โหนดของระบบแบบกระจายทำได้โดยใช้อัลกอริทึมของ Berkeley