7 điểm bởi GN⁺ 2023-10-19 | 1 bình luận | Chia sẻ qua WhatsApp
  • Reflect là một framework mới để xây dựng các ứng dụng web nhiều người chơi tương tự Figma, Notion và Google Sheets.
  • Đây là phiên bản phát triển của Replicache, một framework đồng bộ hóa phía client, và đã bổ sung máy chủ được quản lý hoàn toàn để giúp việc phát triển ứng dụng nhiều người chơi dễ dàng hơn.
  • Reflect hiện đã lần đầu tiên được cung cấp công khai.
  • Framework này xử lý vấn đề giải quyết xung đột trong chỉnh sửa cộng tác, bảo đảm mọi người dùng đều nhìn thấy cùng một nội dung và xung đột được giải quyết một cách tự nhiên.
  • Khác với các công cụ phổ biến trong hệ sinh thái web như CRDTs (Conflict-Free Replicated Data Types), Reflect sử dụng kỹ thuật Transactional Conflict Resolution vốn phổ biến trong ngành công nghiệp game.
  • Ưu điểm và điểm khác biệt độc đáo của Reflect bắt nguồn từ những lựa chọn cốt lõi của bộ máy đồng bộ hóa này.
  • Reflect dùng các hàm JavaScript gọi là mutators để áp dụng thay đổi, đồng thời tạo ra mutation record tại thời điểm mutator được gọi.
  • Mutation được áp dụng cục bộ và truyền luồng lên máy chủ; máy chủ sẽ tuyến tính hóa mutation theo thời điểm đến để tạo ra trạng thái có thẩm quyền tiếp theo.
  • Reflect có thể xử lý các ứng dụng thay đổi nhanh, tiếp tục thêm mutation trong khi chờ xác nhận của các mutation trước đó.
  • Framework này cần một kho dữ liệu nhanh có thể tua ngược, fork và tạo nhánh, cùng với một kho lưu trữ phía máy chủ đủ nhanh để bắt kịp các mutation đi vào.
  • Cách tiếp cận của Reflect có tính khái quát hóa tốt, phù hợp với nhiều tác vụ như phép toán số học, thao tác danh sách và áp đặt các bất biến ở mức cao.
  • Máy chủ của Reflect là nguồn có thẩm quyền, tự tính lại kết quả của mutation và cho phép mọi client nhìn thấy kết quả đó.
  • Tính có thẩm quyền của máy chủ này cho phép xác thực chi tiết và thực thi các đoạn mã khác trên máy chủ.
  • Reflect cũng mang lại các lợi ích như xác thực schema và migration.
  • Chiến lược đồng bộ hóa của Reflect, Transactional Conflict Resolution, đơn giản, linh hoạt và mạnh mẽ, là một lựa chọn tốt để xây dựng các ứng dụng nhiều người chơi.

1 bình luận

 
GN⁺ 2023-10-19
Ý kiến trên Hacker News
  • Bài viết này bàn về Reflect, một framework ứng dụng web đa người dùng với khả năng đồng bộ hóa kiểu game.
  • Bản demo Reflect trên trang chủ có tính tương tác cao và có vẻ cho thấy người dùng hào hứng khi hoàn thành tác vụ, nên khá thú vị.
  • Reflect không phải mã nguồn mở, điều này có thể hạn chế việc áp dụng tại các công ty ưu tiên phần mềm mã nguồn mở cho hạ tầng cốt lõi.
  • Reflect trước đây được biết đến với tên Replicache, và hiện nay đã bao gồm một máy chủ đồng bộ hóa nhanh.
  • Framework này cho phép người dùng quyết định cách xử lý xung đột bằng mã đơn giản, tuần tự, và điều này được xem là một lợi thế so với CRDTs.
  • Mô hình dữ liệu và mô hình lập trình của Reflect được khen ngợi vì tính đơn giản của chúng.
  • Có thảo luận về thách thức khi triển khai các thao tác trên danh sách trong Reflect, đặc biệt trong các kịch bản có cập nhật đồng thời từ nhiều người dùng.
  • Một người dùng chỉ ra thuật ngữ gây nhầm lẫn được dùng trong Reflect và đề xuất dùng "đa người dùng" thay cho "multiplayer" đối với phần mềm không phải game.
  • Có câu hỏi về cách Reflect xử lý xác thực, vì các thư viện CRDT thường thiếu một thực thể trung tâm để kiểm tra các thay đổi.
  • Chiến lược của Reflect được so sánh với "đồng bộ hóa quyết định" được dùng trong phát triển game để đồng bộ trạng thái của nhiều thực thể.
  • Có câu hỏi được đặt ra về cách Reflect xử lý việc nâng cấp đối với mutator, cũng như cách nó đối phó với những khác biệt tiềm ẩn giữa thao tác phía client và phía server.
  • Một người dùng cho rằng cần có giao thức UDP trong trình duyệt để xử lý nhắn tin tần suất cao trong các engine multiplayer, đồng thời chỉ trích chi phí phụ trội của TCP và WebSocket.