15 คะแนน โดย GN⁺ 2023-10-05 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • บทความแนะนำแบบโต้ตอบเกี่ยวกับ Conflict-free Replicated Data Types (CRDTs)
    • ประเภทของโครงสร้างข้อมูลที่สามารถเก็บไว้บนคอมพิวเตอร์หลายเครื่อง (peer) และอัปเดตได้ทันทีโดยไม่ต้องมีคำขอผ่านเครือข่ายหรือยืนยันกับ peer อื่น
  • CRDTs เหมาะอย่างยิ่งสำหรับการสร้างแอปทำงานร่วมกันที่มีความสามารถสูงอย่าง Google Docs และ Figma โดยไม่ต้องพึ่งข้อกำหนดการซิงก์ผ่านเซิร์ฟเวอร์กลาง
  • CRDTs มีอยู่ 2 ประเภท คือ แบบอิงสถานะและแบบอิงการปฏิบัติการ
    • CRDTs แบบอิงสถานะจะส่งสถานะทั้งหมดระหว่าง peer และได้สถานะใหม่โดยการรวมทุกสถานะเข้าด้วยกัน
    • CRDTs แบบอิงการปฏิบัติการจะส่งเฉพาะการกระทำที่ผู้ใช้ทำ ซึ่งสามารถนำไปใช้คำนวณสถานะใหม่ได้
  • บทความนี้เน้นที่ CRDTs แบบอิงสถานะ และอธิบายวิธีสร้าง CRDT พื้นฐาน วิธีประกอบให้เป็นโครงสร้างข้อมูลที่ซับซ้อนขึ้น และวิธีสร้างตัวแก้ไขพิกเซลอาร์ตแบบทำงานร่วมกัน
  • แนะนำแนวคิด Last Write Wins Register (LWW Register) ซึ่งเป็น CRDT แบบง่ายที่เก็บค่าเดียวและใช้ timestamp เพื่อเขียนทับค่าปัจจุบันด้วยค่าที่ถูกเขียนล่าสุด
  • นอกจากนี้ยังแนะนำแนวคิด Last Write Wins Map (LWW Map) ซึ่งเป็น CRDT ที่ซับซ้อนขึ้นและสามารถเก็บค่าได้มากกว่าหนึ่งค่า
  • มี interactive playground เพื่อช่วยให้เข้าใจการทำงานของ LWW Registers และ LWW Maps
  • บทความถัดไปจะมุ่งเน้นไปที่การสร้างตัวแก้ไขพิกเซลอาร์ตแบบทำงานร่วมกันโดยใช้แนวคิดที่อธิบายไว้ในบทความนี้

2 ความคิดเห็น

 
cosine20 2023-10-06

เนื้อหาน่าสนใจมากเลยครับ ก่อนหน้านี้ก็สงสัยอยู่ว่าแอปที่ทำงานร่วมกันแบบเรียลไทม์ได้อย่าง Google Docs เขาสร้างกันอย่างไร...

 
GN⁺ 2023-10-05
ความคิดเห็นจาก Hacker News
  • บทความนี้ได้รับคำชมว่าเป็นบทนำเกี่ยวกับ Conflict-free Replicated Data Types (CRDTs) สำหรับนักพัฒนาที่เยี่ยมยอด โดยมีตัวอย่างโค้ดจริงและคำอธิบายที่ชัดเจน
  • CRDTs ถูกใช้ในการพัฒนาผลิตภัณฑ์ และแม้อาจจัดการได้ยาก แต่ก็มอบข้อดีอย่างเวลาแฝงเป็นศูนย์และความสอดคล้องกันในท้ายที่สุด
  • CRDTs ช่วยให้ใช้ distributed cache ได้โดยไม่ต้องมีตรรกะการทำให้ใช้ไม่ได้ ซึ่งทำให้การจัดการแคชง่ายขึ้นและปรับปรุงประสิทธิภาพ
  • CRDTs ทำให้สามารถลบงานเขียนเก่าได้ ซึ่งช่วยลดภาระของระบบและทำให้ edge computing เป็นไปได้
  • อย่างไรก็ตาม การใช้ CRDTs ก็มาพร้อมความท้าทาย เช่น ความยากของการยืนยันสิทธิ์ตามบทบาท ความจำเป็นในการเปลี่ยนไปใช้ additive data model และปัญหาด้านการดีบัก
  • บริการอย่าง Liveblocks พยายามทำให้การใช้ CRDTs ง่ายขึ้น แต่สำหรับนักพัฒนาอิสระอาจมีค่าใช้จ่ายสูง
  • CRDTs ถูกนำไปใช้ในแอปพลิเคชันหลากหลาย เช่น ตัวจัดการแคมเปญ TTRPG ฐานข้อมูลที่ซิงก์อัตโนมัติ และเครื่องมือโน้ตบุ๊กแบบทำงานร่วมกัน
  • CRDTs ถูกมองว่ามีประโยชน์และน่าสนใจมากสำหรับการจัดการข้อมูล แต่ความสำคัญต่อแอปพลิเคชันที่ยึดผู้ใช้เป็นศูนย์กลางยังเป็นประเด็นถกเถียง
  • บางคนแย้งว่าข้อดีหลักของ CRDTs คือการทำงานร่วมกันแบบเรียลไทม์ ซึ่งปัญหานี้ถูกแก้ไปแล้วด้วยโซลูชันแบบรวมศูนย์อย่าง Google Docs
  • คนอื่น ๆ เห็นว่า CRDTs ให้ประโยชน์อย่างการรองรับหลายอุปกรณ์และการเข้าถึงแบบออฟไลน์ แต่ก็ชี้ว่าความสามารถเหล่านี้มีอยู่ในโซลูชันแบบรวมศูนย์เช่นกัน
  • ยังมีความกังวลเกี่ยวกับความคงทนของข้อมูลและการควบคุมโดยผู้ใช้เมื่อใช้ CRDTs เพราะการอัปเดต data model ไม่ใช่เรื่องง่าย และเพียร์อื่น ๆ สามารถเปลี่ยนข้อมูลได้
  • แม้จะมีข้อถกเถียงเหล่านี้ ความสนใจต่อ CRDTs ก็ยังคงมีอยู่ และการวิจัยกับการพัฒนาในด้านนี้ก็ยังดำเนินต่อไป