การซิงค์ข้อมูลผู้ใช้กับคลาวด์ไม่ได้มีแค่อัปโหลดและดาวน์โหลด แต่ต้องปกป้องเนื้อหาส่วนตัวระหว่างส่ง รักษาต้นทุนจัดเก็บให้ต่ำ จัดลำดับการเขียนจากหลายอุปกรณ์ เข้าใจรูปแบบข้อมูลที่แตกต่าง ขอการยืนยันก่อนลบสิ่งที่มีความเสี่ยง และเก็บทางย้อนกลับไว้เมื่อการตัดสินใจผิดพลาด
Orkas มองการซิงค์คลาวด์เป็นขอบเขตความรับผิดชอบของผลิตภัณฑ์ ไม่ใช่ยูทิลิตีเบื้องหลัง บทสนทนา เอเจนต์ สกิล สถานะงาน ไฟล์ความรู้ และการตั้งค่า ล้วนต้องเคลื่อนย้ายข้ามอุปกรณ์ได้โดยมีสายความรับผิดชอบชัดเจน: อุปกรณ์เตรียมเนื้อหา ที่เก็บอ็อบเจ็กต์เก็บไบต์ และเซิร์ฟเวอร์เป็นเจ้าของดัชนีที่ใช้เป็นหลักอ้างอิง
กรอบด้านล่างคือสิ่งที่เราใช้คิดเกี่ยวกับระบบ: การไหลของเนื้อหาที่เข้ารหัส การจัดเก็บที่อ้างอิงด้วยเนื้อหา ล็อกการซิงค์ระดับบัญชี การคอมมิตที่เซิร์ฟเวอร์ควบคุม กฎซิงค์ที่ให้ผลแน่นอน การจัดการข้อขัดแย้งโดยมีโมเดลช่วย การยืนยันการลบ ถังรีไซเคิล และเครื่องหมายสำหรับการกู้คืน
ข้อตกลงการซิงค์
การซิงค์แต่ละรอบตอบคำถามด้านผลิตภัณฑ์สี่ข้อ: เนื้อหาใดมีสิทธิ์เคลื่อนย้าย ได้รับการปกป้องอย่างไร ใครมีสิทธิ์เผยแพร่ดัชนีคลาวด์ใหม่ และผู้ใช้จะกู้คืนอย่างไรหากการซิงค์ตัดสินใจผิด?
เส้นทางเนื้อหาที่เข้ารหัส
ข้อมูลผู้ใช้ถูกเตรียมบนอุปกรณ์ก่อนถึงที่จัดเก็บ กลไกซิงค์ปรับชุดข้อมูลที่จะนำมาพิจารณาให้เป็นรูปแบบมาตรฐาน คำนวณเอกลักษณ์ของเนื้อหา เข้ารหัสข้อมูล อัปโหลดผ่านข้อมูลรับรองที่มีอายุสั้น และตรวจสอบไบต์ที่ดาวน์โหลดก่อนเขียนกลับลงอุปกรณ์
ที่จัดเก็บและดัชนี
Orkas แยกไบต์ที่จัดเก็บออกจากดัชนีคลาวด์ อ็อบเจ็กต์เนื้อหาเก็บข้อมูลที่เข้ารหัส ส่วนดัชนีบันทึกว่ารายการข้อมูลเชิงตรรกะใดควรมีอยู่ พร้อมเอกลักษณ์ของเนื้อหา ตัวนับเวอร์ชัน ขนาดที่จัดเก็บ รุ่นแก้ไขบนคลาวด์ และสถานะกำกับการลบ อุปกรณ์ยังเก็บสถานะอ้างอิงจากรอบล่าสุดที่สำเร็จ เพื่อแยกสถานะเก่าออกจากการแก้ไขใหม่ได้
การซิงค์หนึ่งรอบ
แต่ละรอบเริ่มด้วยขั้นตอนต้นทุนต่ำ และเข้มงวดขึ้นเมื่อมีงานจริงเท่านั้น Orkas ตรวจสอบก่อนว่ามีอะไรเปลี่ยนหรือไม่ จากนั้นขอล็อกการซิงค์ของบัญชี คำนวณการเปลี่ยนแปลงใหม่ขณะถือล็อก ย้ายเนื้อหา ขอให้เซิร์ฟเวอร์คอมมิตการดำเนินการกับดัชนี และสุดท้ายอัปเดตสถานะอ้างอิงบนอุปกรณ์
ล็อกการซิงค์และการคอมมิต
ล็อกการซิงค์และการตรวจสอบการคอมมิตแก้ปัญหาต่างกัน ล็อกการซิงค์ลดการทำงานพร้อมกันข้ามอุปกรณ์ที่สูญเปล่า ล็อกฝั่งเซิร์ฟเวอร์จัดลำดับการเขียนดัชนี การตรวจสอบรุ่นแก้ไขบนคลาวด์ที่คาดไว้ป้องกันไม่ให้ข้อมูลที่อ่านไว้เก่ากลายเป็นสถานะหลักใหม่ การตรวจสอบโควตาและสคีมาทำงานในเส้นทางคอมมิตเดียวกันที่เซิร์ฟเวอร์ควบคุม
ใช้กฎก่อนจัดการข้อขัดแย้ง
การตัดสินใจซิงค์ส่วนใหญ่ไม่ใช่ข้อขัดแย้ง อุปกรณ์เปรียบเทียบสถานะอ้างอิง ข้อมูลบนอุปกรณ์ปัจจุบัน และดัชนีคลาวด์ หากมีเพียงคลาวด์เปลี่ยน ให้ดึงลงมา หากมีเพียงอุปกรณ์เปลี่ยน ให้ส่งขึ้นไป หากทั้งสองฝั่งเปลี่ยน ให้จัดการตามประเภทเนื้อหา หากมีสิ่งใดหายไป ให้เข้าสู่กระบวนการลบอย่างปลอดภัยแทนการลบข้อมูลทันที
การจัดการข้อขัดแย้ง
เมื่อทั้งสองฝั่งเปลี่ยนจริง Orkas ไม่ใช้กฎเขียนทีหลังชนะกับทุกอย่าง บันทึกแบบต่อท้ายผสานกันได้โดยเติมระเบียนที่ขาด รายการผสานกันได้ด้วยตัวระบุระเบียนที่คงที่ JSON แบบมีโครงสร้างใช้ตัวนับเวอร์ชันและเวลาประทับได้ ส่วนไฟล์ Markdown และไบนารีจะใช้ความระมัดระวัง: หากระบบพิสูจน์ไม่ได้ว่าผสานโดยไม่สูญเสียข้อมูลได้ ก็จะเก็บสำเนาเวอร์ชันที่ไม่ถูกเลือกไว้ครบถ้วน
สำหรับข้อขัดแย้งของข้อความหรือเนื้อหามีโครงสร้างที่กำกวม ผลิตภัณฑ์สามารถรวบรวมเวอร์ชันที่เกี่ยวข้องให้โมเดลช่วยจัดการได้ โมเดลอธิบายข้อขัดแย้ง ร่างเวอร์ชันผสาน หรือช่วยผู้ใช้เลือกได้ แต่ไม่ได้เป็นกลไกป้องกันเพียงอย่างเดียว การตรวจสอบตามกฎที่แน่นอน การเก็บต้นฉบับ และการกู้คืนที่ผู้ใช้มองเห็นยังคงเป็นส่วนหนึ่งของกระบวนการ
การยืนยันการลบ
การลบถือเป็นการเปลี่ยนสถานะ การลบจากระยะไกลกลายเป็นระเบียนกำกับการลบ การลบฝั่งอุปกรณ์กลายเป็นการดำเนินการที่รอพิจารณา Orkas ตรวจสอบการเขียนล่าสุด เฝ้าดูการลบจำนวนมาก และพักรอบการซิงค์เพื่อขอการยืนยันเมื่อปริมาณข้อมูลผู้ใช้ที่กำลังหายไปดูมีความเสี่ยง
ถังรีไซเคิลและการกู้คืน
ก่อนที่การลบที่ผ่านการตรวจสอบจะนำสำเนาบนอุปกรณ์ออก Orkas จะย้ายสำเนานั้นไปยังถังรีไซเคิลของการซิงค์ เวอร์ชันที่ไม่ถูกเลือกจากข้อขัดแย้งจะถูกเก็บไว้ให้ตรวจทาน การอัปโหลดที่รอคอมมิตจะยังอยู่แม้คอมมิตล้มเหลว เพื่อให้รอบถัดไปใช้ไบต์เดิมซ้ำได้ หากผู้ใช้ตั้งใจล้างข้อมูลคลาวด์ อุปกรณ์อื่นจะเห็นเครื่องหมายการล้างและหยุดอัปโหลดเนื้อหาเก่าซ้ำ
สิ่งที่เราได้จากแนวทางนี้
ผลลัพธ์คือระบบซิงค์ที่มีขอบเขตชัดเจน อุปกรณ์เตรียมและตรวจสอบเนื้อหา ที่เก็บอ็อบเจ็กต์เก็บไบต์ที่เข้ารหัส เซิร์ฟเวอร์เผยแพร่ดัชนี ล็อกการซิงค์ของบัญชีและล็อกเซิร์ฟเวอร์ช่วยให้แต่ละรอบเป็นระเบียบ กฎจัดการกรณีทั่วไป โมเดลช่วยจัดการข้อขัดแย้งที่กำกวม การยืนยันการลบและถังรีไซเคิลปกป้องผู้ใช้จากความผิดพลาดที่มีราคาสูงที่สุด
นี่คือมาตรฐานการซิงค์คลาวด์ที่ Orkas ต้องการ: ไม่ใช่เวทมนตร์ ไม่ใช่การทำสำเนาตามกันโดยไม่ตรวจสอบ แต่เป็นกลไกที่รอบคอบ ให้ข้อมูลผู้ใช้เคลื่อนย้ายระหว่างอุปกรณ์ได้โดยยังรู้สึกสอดคล้องกัน