การทำ Distributed Lock
- ผู้เขียนค้นพบอัลกอริทึม Redlock บนเว็บไซต์ Redis ซึ่งอ้างว่าสามารถทำ distributed lock ที่ทนทานต่อความขัดข้องบน Redis ได้
- มี implementation อิสระของ Redlock อยู่แล้วหลายตัว และอาจมีคนที่พึ่งพาอัลกอริทึมนี้อยู่ จึงตัดสินใจแบ่งปันบันทึกของผู้เขียน
- Redis มีประโยชน์เมื่อใช้แชร์ข้อมูลชั่วคราวและเปลี่ยนแปลงอย่างรวดเร็วระหว่างเซิร์ฟเวอร์ แต่การขยายไปสู่ขอบเขตการจัดการข้อมูลที่ต้องการความสอดคล้องเข้มงวดและความทนทานน่าเป็นกังวล
จุดประสงค์ของการล็อก
- การล็อกมีหน้าที่รับประกันว่าในหลายโหนดจะมีเพียงโหนดเดียวเท่านั้นที่ทำงานบางอย่าง
- หากใช้การล็อกเพื่อประสิทธิภาพ การใช้ Redis instance เดียวอาจดีกว่า
- หากใช้การล็อกเพื่อความถูกต้อง Redlock ไม่เหมาะสม
การปกป้องทรัพยากรด้วยการล็อก
- การล็อกในระบบกระจายแตกต่างจาก mutex ในแอปพลิเคชันแบบมัลติเธรด
- ช่วยป้องกันไม่ให้ไคลเอนต์อื่นทำงานแบบเดียวกันกับไคลเอนต์หนึ่ง ระหว่างที่ไคลเอนต์นั้นกำลังอ่านไฟล์ แก้ไข แล้วเขียนกลับ
การทำ Safe Lock ด้วย Fencing
- สามารถทำ safe lock ได้โดยใช้ fencing token และใส่มันไปกับคำขอเขียน
- Redlock ไม่มีความสามารถในการสร้าง fencing token จึงไม่ปลอดภัย
การใช้เวลาเพื่อฉันทามติ
- Redlock ตั้งสมมติฐานเกี่ยวกับเวลาไว้มาก ต่างจากอัลกอริทึมในโมเดล asynchronous
- หากนาฬิการะบบทำงานผิดปกติ การหมดอายุของคีย์อาจเร็วหรือช้ากว่าที่คาด
การทำลายสมมติฐานเรื่องเวลาของ Redlock
- Redlock ตั้งอยู่บนสมมติฐานของโมเดลระบบแบบ synchronous และทำงานถูกต้องได้ก็ต่อเมื่อความหน่วงเครือข่าย การหยุดชั่วคราวของโปรเซส และความผิดพลาดของนาฬิกาอยู่ในขอบเขตจำกัด
- กรณีอย่างเหตุการณ์ packet delay 90 วินาทีบน GitHub สามารถคุกคามความปลอดภัยของ Redlock ได้
บทสรุป
- Redlock หนักเกินความจำเป็นสำหรับการล็อกเพื่อเพิ่มประสิทธิภาพ และยังไม่ปลอดภัยเพียงพอสำหรับสถานการณ์ที่ต้องการความถูกต้อง
- หากต้องการการล็อกเพื่อความถูกต้อง ควรใช้ระบบฉันทามติที่เหมาะสม เช่น ZooKeeper
สรุปของ GN⁺
- อัลกอริทึม Redlock มอบประเด็นถกเถียงสำคัญเกี่ยวกับการทำ locking ในระบบกระจาย
- บทความนี้เน้นปัญหาเรื่องสมมติฐานเวลาและความปลอดภัยในระบบกระจาย พร้อมอธิบายความสำคัญของการทำ locking ให้ถูกต้อง
- แนะนำระบบทางเลือกอย่าง ZooKeeper และช่วยให้เข้าใจความซับซ้อนของระบบกระจายได้ดีขึ้น
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News