ข้าม​ไป​ยัง​เนื้อหา

Distributed Systems บน kaen-kvstore — Rust Systems III

ต่อ​จาก Rust Systems II (#22): คราว​นี้​เรา​ไม่​ได้​สร้าง node เดียว​อีก​ต่อ​ไป — เรา​เลื่อน kaen-kvstore ขึ้น​เป็น "cluster" ที่​หลาย replica เก็บ​สำเนา key เดียวกัน แล้ว​ยัง​ลู่​เข้าหา​ค่า​เดียวกัน​ได้​แม้​เครือข่าย​จะ​ขาด ด้วย​ภาษา​แกน + std เท่านั้น ไม่มี serde ไม่มี tokio ไม่มี proptest (เรา​เขียน splitmix64 เอง​เป็น​แหล่ง​สุ่ม​ที่ seed ซ้ำ​ได้ 100% และ​ใช้ std SipHash) เริ่ม​จาก​เวลา​เชิง​ตรรกะ (Lamport → vector clock) → วางข้อมูล​ด้วย consistent hashing + virtual node → รับประกัน​การ​ทับ​กัน​ด้วย quorum W+R>N + read-repair → ทำให้ replica ลู่​เข้า​เอง​ด้วย CRDT (semilattice, G-Counter, LWW-Register, OR-Set) → ซ่อม divergence เบื้องหลัง​ด้วย Merkle tree + gossip → พิสูจน์​สมบัติ​แบบ​กระจาย​ด้วย harness ที่ "ฉีด partition" แบบ deterministic (seed คงที่ + hard timeout) → ปิด​ท้าย​ด้วย capstone ที่​ประกอบ N replica จริง​บน std::net เรา​สอน​เฉพาะ​ส่วน​ที่ property-test ได้​จริง ส่วน consensus/Raft คง​ไว้​เป็น "กล่อง​ไดอะแกรม" อย่าง​ซื่อสัตย์ ทุก​โปรแกรม compile และ​รัน​ได้​จริง เป็น​คอร์ส​ที่​สาม​ของ​เสา Systems (#21→#22→#23) ก่อน​ที่ #24 จะ​เปิด async ecosystem ต่อ 8 บท​ลงมือ​จริง
ความคืบหน้า0 / 8 บทเรียน