15 điểm bởi GN⁺ 2023-10-05 | 2 bình luận | Chia sẻ qua WhatsApp
  • Bài viết giới thiệu tương tác về Conflict-free Replicated Data Types (CRDTs)
    • Một loại cấu trúc dữ liệu được lưu trên các máy tính khác nhau (peer) và có thể được cập nhật ngay lập tức mà không cần yêu cầu mạng hay xác nhận với các peer khác
  • CRDTs rất phù hợp để xây dựng các ứng dụng cộng tác phong phú như Google Docs và Figma mà không cần máy chủ trung tâm để đồng bộ hóa
  • Có hai loại CRDTs: dựa trên trạng thái và dựa trên thao tác
    • CRDTs dựa trên trạng thái truyền toàn bộ trạng thái giữa các peer, và trạng thái mới được tạo ra bằng cách hợp nhất mọi trạng thái
    • CRDTs dựa trên thao tác chỉ truyền các hành động người dùng thực hiện, và chúng có thể được dùng để tính toán trạng thái mới
  • Bài viết này tập trung vào CRDTs dựa trên trạng thái, giải thích cách xây dựng các CRDT nguyên thủy, cách kết hợp chúng thành các cấu trúc dữ liệu phức tạp hơn, và cách xây dựng một trình chỉnh sửa pixel art cộng tác
  • Giới thiệu khái niệm Last Write Wins Register (LWW Register), một loại CRDT đơn giản giữ một giá trị duy nhất và dùng dấu thời gian để ghi đè giá trị hiện tại bằng giá trị được ghi cuối cùng
  • Đồng thời giới thiệu khái niệm Last Write Wins Map (LWW Map), một loại CRDT phức tạp hơn có thể giữ một hoặc nhiều giá trị
  • Bao gồm sân chơi tương tác giúp hiểu cách LWW Registers và LWW Maps hoạt động
  • Bài viết tiếp theo sẽ tập trung vào việc xây dựng một trình chỉnh sửa pixel art cộng tác bằng các khái niệm được mô tả trong bài này

2 bình luận

 
cosine20 2023-10-06

Nội dung khá thú vị. Trước giờ tôi vẫn thắc mắc những ứng dụng cho phép cộng tác thời gian thực như Google Docs được triển khai như thế nào...

 
GN⁺ 2023-10-05
Ý kiến trên Hacker News
  • Bài viết được khen ngợi là một phần giới thiệu xuất sắc về Conflict-free Replicated Data Types (CRDTs) dành cho lập trình viên, có kèm ví dụ mã thực tế và giải thích rõ ràng
  • CRDTs được dùng trong phát triển sản phẩm; dù có thể khó xử lý, chúng mang lại các lợi ích như độ trễ bằng không và tính nhất quán cuối cùng
  • CRDTs cho phép dùng bộ nhớ đệm phân tán mà không cần logic vô hiệu hóa, nhờ đó đơn giản hóa việc quản lý cache và cải thiện hiệu năng
  • CRDTs cho phép xóa các thao tác ghi cũ, giúp giảm tải hệ thống và hỗ trợ điện toán biên
  • Tuy nhiên, việc sử dụng CRDTs cũng đặt ra các thách thức như khó khăn với phân quyền dựa trên vai trò, cần thay đổi sang mô hình dữ liệu chỉ cộng dồn, và các vấn đề gỡ lỗi
  • Các dịch vụ như Liveblocks đang cố gắng đơn giản hóa việc sử dụng CRDTs, nhưng có thể khá tốn kém đối với nhà phát triển độc lập
  • CRDTs đã được dùng trong nhiều ứng dụng khác nhau như trình quản lý chiến dịch TTRPG, cơ sở dữ liệu tự động đồng bộ và công cụ sổ tay cộng tác
  • CRDTs được xem là rất hữu ích và thú vị cho việc quản lý dữ liệu, nhưng mức độ quan trọng của chúng đối với các ứng dụng lấy người dùng làm trung tâm vẫn còn gây tranh cãi
  • Một số người cho rằng lợi ích chính của CRDTs là cộng tác thời gian thực, và vấn đề này đã được các giải pháp tập trung như Google Docs giải quyết
  • Những người khác cho rằng CRDTs mang lại lợi ích như hỗ trợ nhiều thiết bị và truy cập ngoại tuyến, nhưng cũng chỉ ra rằng các tính năng này cũng có trong các giải pháp tập trung
  • Cũng có lo ngại về tính bền vững lâu dài của dữ liệu và quyền kiểm soát của người dùng khi dùng CRDTs, vì việc cập nhật mô hình dữ liệu không hề dễ và các peer khác có thể thay đổi dữ liệu
  • Bất chấp các tranh luận này, sự quan tâm dành cho CRDTs vẫn tiếp tục, và nghiên cứu cũng như phát triển trong lĩnh vực này vẫn đang diễn ra