Rocicorp phát hành Zero 1.0, đánh dấu bản phát hành ổn định đầu tiên của engine đồng bộ hóa Web

Phần mềm08 tháng 6, 2026·4 phút đọc

Sau gần hai năm phát triển, Rocicorp đã phát hành Zero 1.0, phiên bản ổn định đầu tiên của engine đồng bộ hóa web. Bản cập nhật này bổ sung hook thay đổi schema cho Supabase và sửa lỗi, nhận được phản hồi tích cực về trải nghiệm người dùng dù vẫn còn lo ngại về độ sẵn sàng cho môi trường sản xuất.

Rocicorp phát hành Zero 1.0, đánh dấu bản phát hành ổn định đầu tiên của engine đồng bộ hóa Web

Rocicorp đã chính thức phát hành Zero 1.0, phiên bản ổn định đầu tiên của engine đồng bộ hóa tổng quát dành cho web. Bản phát hành này đến sau gần hai năm phát triển, với hơn 50 lần phát hành, hàng nghìn lần đóng góp mã nguồn và hàng trăm bản sửa lỗi. Cột mốc này cho thấy Rocicorp hiện đã hỗ trợ đầy đủ API của Zero và cam kết duy trì nó, với các thay đổi phá vỡ cấu trúc (breaking changes) trong tương lai dự kiến sẽ rất ít và ít ảnh hưởng hơn so với giai đoạn alpha.

Về mặt chức năng, ghi chú phát hành mô tả phiên bản 1.0 là một bản cập nhật rất nhỏ so với bản build 0.26.2 trước đó. Việc tăng phiên bản chính mang tính biểu tượng cao và không chứa thay đổi nào gây phá vỡ hệ thống hiện có. Điểm nổi bật nhất là việc bổ sung một hook thay đổi schema (schema change hook), phát hiện các thay đổi về publication trên Supabase thông qua các câu lệnh COMMENT ON PUBLICATION. Tính năng này hoạt động như một giải pháp thay thế cho việc Supabase chưa hỗ trợ sự kiện kích hoạt (event trigger) cho các publication. Bản phát hành cũng bao gồm các bản sửa lỗi cho việc khôi phục litestream bị hỏng, xử lý lỗi khi capture dữ liệu thay đổi (change data capture) gặp sự cố, điều kiện竞 tranh (race condition) IPC_CHANNEL_CLOSED khi tắt, và các tình huống subscriber mồ côi, cũng như tạo SQL cho thời gian và múi giờ.

Zero hoạt động bằng cách kết hợp thư viện client zero-client bên trong ứng dụng với dịch vụ zero-cache, nơi duy trì một bản sao chỉ đọc của cơ sở dữ liệu Postgres. Các truy vấn được viết bằng ZQL, engine truy vấn streaming của Zero, sẽ chạy trên bộ nhớ đệm cục bộ trước tiên và trả về kết quả khớp trong khung hình tiếp theo, trong khi kết quả có thẩm quyền từ máy chủ được đồng bộ hóa ở nền. Aaron Boodman, nhà sáng lập, đã lập luận trên Hacker News rằng phương pháp "tự mang cơ sở dữ liệu của bạn" (bring-your-own-database) này là một điểm mạnh, noting rằng Zero chỉ là "một bộ nhớ cache phức tạp" không thể làm hỏng dữ liệu và cho phép các nhóm áp dụng nó từng bước hoặc dễ dàng chuyển sang giải pháp khác.

Phản hồi của cộng đồng chủ yếu tích cực về trải nghiệm nhà phát triển, nhưng thận trọng hơn về khả năng sẵn sàng cho môi trường sản xuất. Khi đánh giá engine này, Marmelab nhận thấy nó mang lại tốc độ và trải nghiệm tốt, nhưng cũng chỉ ra một số hạn chế đáng kể:

  • Hiện tại chỉ hỗ trợ Postgres.
  • Các khung nhìn (Postgres views) không được đồng bộ.
  • Một số loại cột Postgres không được hỗ trợ, chẳng hạn như mảng (array).
  • API client không cho phép phản hồi với lỗi hoặc các cập nhật bị từ chối.

Các chỉ trích trên Lobsters cũng đã chỉ ra kích thước bundle client lên tới 718 KB khi chưa nén (232 KB khi đã nén gzip) và sự vắng mặt của khả năng kết xuất phía máy chủ (server-side rendering - SSR). Trong khi đó, một luồng thảo luận trên Reddit đặt câu hỏi liệu việc xếp chồng lên nhau một kho lưu trữ cục bộ, một bản sao đồng bộ và cơ sở dữ liệu nguồn có thêm quá nhiều lớp phức tạp hay không.

Zero bước vào một thị trường đang có sự cạnh tranh sôi nổi cùng với ElectricSQL, InstantDB, PowerSync và Convex. Boodman đã gợi ý các nhà phát triển muốn thiết lập end-to-end phi tập trung hoàn toàn nên xem xét Jazz. Tính năng kết xuất phía máy chủ hiện vẫn nằm trong lộ trình phát triển chứ chưa được tích hợp trong bản phát hành này.

Việc nâng cấp rất đơn giản nhờ không có thay đổi phá vỡ:

npm install @rocicorp/[email protected]

Các nhóm chuyển đổi từ các bản build cũ hơn vẫn nên xem xét ghi chú phát hành cho từng phiên bản để nắm bắt các thay đổi API trước đó, chẳng hạn như thay đổi kiểu mutator tùy chỉnh trong phiên bản 0.23, và làm theo hướng dẫn triển khai schema về thứ tự để tránh thời gian chết (downtime) trong quá trình di chuyển dữ liệu.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗