Orkas Orkas
ดาวน์โหลด GitHub
หน้าแรก บล็อก สถาปัตยกรรม
สถาปัตยกรรม

การซิงค์ผ่านคลาวด์ในทางปฏิบัติ: Orkas ซิงค์ข้อมูลข้ามอุปกรณ์อย่างไร

Orkas ซิงค์ข้อมูลผู้ใช้ข้ามอุปกรณ์อย่างไร ด้วยการถ่ายโอนแบบเข้ารหัส การจัดเก็บเนื้อหา การคอมมิตที่เซิร์ฟเวอร์เป็นผู้ควบคุม การล็อกบัญชี กฎการซิงค์ การใช้โมเดลช่วยจัดการข้อขัดแย้ง การยืนยันการลบ และถังขยะ

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

Orkas มองการซิงค์คลาวด์เป็นขอบเขตความรับผิดชอบของผลิตภัณฑ์ ไม่ใช่ยูทิลิตีเบื้องหลัง บทสนทนา เอเจนต์ สกิล สถานะงาน ไฟล์ความรู้ และการตั้งค่า ล้วนต้องเคลื่อนย้ายข้ามอุปกรณ์ได้โดยมีสายความรับผิดชอบชัดเจน: อุปกรณ์เตรียมเนื้อหา ที่เก็บอ็อบเจ็กต์เก็บไบต์ และเซิร์ฟเวอร์เป็นเจ้าของดัชนีที่ใช้เป็นหลักอ้างอิง

กรอบด้านล่างคือสิ่งที่เราใช้คิดเกี่ยวกับระบบ: การไหลของเนื้อหาที่เข้ารหัส การจัดเก็บที่อ้างอิงด้วยเนื้อหา ล็อกการซิงค์ระดับบัญชี การคอมมิตที่เซิร์ฟเวอร์ควบคุม กฎซิงค์ที่ให้ผลแน่นอน การจัดการข้อขัดแย้งโดยมีโมเดลช่วย การยืนยันการลบ ถังรีไซเคิล และเครื่องหมายสำหรับการกู้คืน

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

ข้อตกลงการซิงค์

การซิงค์แต่ละรอบตอบคำถามด้านผลิตภัณฑ์สี่ข้อ: เนื้อหาใดมีสิทธิ์เคลื่อนย้าย ได้รับการปกป้องอย่างไร ใครมีสิทธิ์เผยแพร่ดัชนีคลาวด์ใหม่ และผู้ใช้จะกู้คืนอย่างไรหากการซิงค์ตัดสินใจผิด?

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

เส้นทางเนื้อหาที่เข้ารหัส

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

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

ที่จัดเก็บและดัชนี

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

สามระเบียน สามหน้าที่
สถานะอ้างอิงบนอุปกรณ์สิ่งที่อุปกรณ์จำไว้เกี่ยวกับการซิงค์ล่าสุดที่เสร็จสมบูรณ์
ดัชนีคลาวด์รายการข้อมูลปัจจุบัน เวอร์ชัน และระเบียนกำกับการลบที่เซิร์ฟเวอร์เป็นเจ้าของ
อ็อบเจ็กต์เนื้อหาไบต์ที่เข้ารหัสและอ้างอิงด้วยเอกลักษณ์ของเนื้อหา
ทำไมต้องแยก? ข้อมูลไบต์ขนาดใหญ่อยู่ในที่เก็บอ็อบเจ็กต์ได้ ขณะที่ดัชนีขนาดเล็กยังเป็นแหล่งอ้างอิงเดียวสำหรับการตัดสินใจซิงค์
ดัชนีบอกอุปกรณ์ว่าสิ่งใดควรมีอยู่ ส่วนอ็อบเจ็กต์เนื้อหาจัดหาไบต์ให้

การซิงค์หนึ่งรอบ

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

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

ล็อกการซิงค์และการคอมมิต

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

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

ใช้กฎก่อนจัดการข้อขัดแย้ง

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

กลไกตัดสินใจ
สถานะอ้างอิงสิ่งที่อุปกรณ์นี้ยืนยันครั้งล่าสุด
ข้อมูลบนอุปกรณ์ขณะนี้สิ่งที่อุปกรณ์นี้มีอยู่ในปัจจุบัน
คลาวด์ขณะนี้สิ่งที่ดัชนีของเซิร์ฟเวอร์ระบุ
การดำเนินการดึง ส่ง ผสาน กำกับการลบ ยืนยัน หรือคืนค่า
สถานะอ้างอิงทำให้ใช้กฎง่าย ๆ ได้: ฝั่งที่ไม่เปลี่ยนแปลงไม่จำเป็นต้องผสาน

การจัดการข้อขัดแย้ง

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

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

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

การยืนยันการลบ

การลบถือเป็นการเปลี่ยนสถานะ การลบจากระยะไกลกลายเป็นระเบียนกำกับการลบ การลบฝั่งอุปกรณ์กลายเป็นการดำเนินการที่รอพิจารณา Orkas ตรวจสอบการเขียนล่าสุด เฝ้าดูการลบจำนวนมาก และพักรอบการซิงค์เพื่อขอการยืนยันเมื่อปริมาณข้อมูลผู้ใช้ที่กำลังหายไปดูมีความเสี่ยง

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

ถังรีไซเคิลและการกู้คืน

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

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

สิ่งที่เราได้จากแนวทางนี้

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

นี่คือมาตรฐานการซิงค์คลาวด์ที่ Orkas ต้องการ: ไม่ใช่เวทมนตร์ ไม่ใช่การทำสำเนาตามกันโดยไม่ตรวจสอบ แต่เป็นกลไกที่รอบคอบ ให้ข้อมูลผู้ใช้เคลื่อนย้ายระหว่างอุปกรณ์ได้โดยยังรู้สึกสอดคล้องกัน