Cộng đồng công nghệ đang tích cực thảo luận về Rivet Actors, một hệ thống mới mang mô hình lập trình actor đến với các nhà phát triển phổ thông, với sự quan tâm đặc biệt về việc so sánh nó với Durable Objects của Cloudflare và các hệ thống actor truyền thống như Erlang.
Kiến trúc và Quản lý Trạng thái
Rivet Actors triển khai một hệ thống quản lý trạng thái tiên tiến được hỗ trợ bởi FoundationDB, cung cấp khả năng lưu trữ trạng thái tự động sau các lệnh gọi RPC. Hệ thống cung cấp cho các nhà phát triển cách tiếp cận đơn giản hóa để xử lý trạng thái thông qua thuộc tính _state
, cho phép thực hiện các thao tác JavaScript đơn giản mà không cần mã quản lý trạng thái rõ ràng. Việc triển khai này đã khơi mào các cuộc thảo luận về đảm bảo tính nhất quán và xử lý giao dịch trong quá trình giao tiếp giữa các actor.
Nếu bạn đang sử dụng KV API trực tiếp, điều này là chính xác. Actors cũng có thuộc tính
this._state
, được tự động ghi vào FDB sau mỗi lệnh gọi RPC nếu có sự thay đổi. Điều này cho phép các nhà phát triển nhanh chóng tạo mẫu bằng cách viết mã JS thuần nhưthis._state.count += 1
mà không cần lo lắng về việc ghi trạng thái và các trường hợp đặc biệt liên quan.
Các Công nghệ Cốt lõi:
- Runtime: V8 và Deno
- Lưu trữ Trạng thái: FoundationDB
- OLTP: CockroachDB
- Giám sát: ClickHouse
- Bộ nhớ đệm: Valkey
- Message Bus: NATS
- Cân bằng tải: Traefik
Trường hợp Sử dụng và Hiệu suất
Các thành viên trong cộng đồng đã nhấn mạnh một số ứng dụng thực tế cho Rivet Actors, đặc biệt trong các tình huống đòi hỏi độ tranh chấp cao và tính nhất quán mạnh. Bao gồm chỉnh sửa tài liệu cộng tác, ứng dụng local-first với đồng bộ CRDT, trò chơi nhiều người chơi có trạng thái và hệ thống chat. Một khía cạnh đáng chú ý được thảo luận là khả năng tự động thu nhỏ về không khi không sử dụng của hệ thống, giải quyết những lo ngại về chi phí vận hành đã từng gây khó khăn cho các hệ thống tương tự như backend metaverse của Improbable.
Các Trường Hợp Sử Dụng Chính:
- Các ứng dụng cộng tác
- Ứng dụng ưu tiên cục bộ
- Các tác nhân AI
- Máy chủ trò chơi
- Các ứng dụng trò chuyện
- Đồng bộ hóa và lưu trữ CRDT
- Giới hạn tốc độ
- Hệ thống lập lịch
Trình bày kho lưu trữ GitHub của Rivet Actors làm nổi bật khả năng cộng tác trong các ứng dụng thời gian thực |
Trải nghiệm Nhà phát triển và Hỗ trợ Ngôn ngữ
Một điểm thảo luận quan trọng tập trung vào cách tiếp cận của Rivet trong việc làm cho lập trình mô hình actor dễ tiếp cận hơn với các nhà phát triển phổ thông. Trong khi một số thành viên cộng đồng chỉ ra rằng các chức năng tương tự đã tồn tại trong Erlang/Elixir, những người khác đánh giá cao việc Rivet tập trung hỗ trợ các ngôn ngữ phổ biến như TypeScript. Điều này đã tạo ra một cuộc thảo luận rộng hơn về sự đánh đổi giữa các hệ thống actor truyền thống và các triển khai hiện đại.
Phát triển Kỹ thuật
Kể từ lần thảo luận trước trên Hacker News vào năm 2023, Rivet đã trải qua những thay đổi đáng kể, bao gồm việc viết lại hoàn toàn lớp điều phối, ra mắt runtime isolate và cải thiện khả năng tự hosting. Cộng đồng đặc biệt quan tâm đến những phát triển này, nhất là việc thay thế các công cụ điều phối truyền thống như Nomad bằng một công cụ workflow nội bộ.
Các cuộc thảo luận cho thấy sự quan tâm ngày càng tăng đối với các hệ thống mô hình actor có thể thu hẹp khoảng cách giữa các mô hình tính toán phân tán truyền thống và nhu cầu phát triển hiện đại, đồng thời duy trì chi phí vận hành hợp lý và khả năng tiếp cận cho nhà phát triển.
Tham khảo: Rivet: Chạy và mở rộng các ứng dụng thời gian thực với Rivet Actors