DBOS Đối Mặt Với Sự Hoài Nghi Của Các Developer Về Tuyên Bố Xử Lý "Exactly-Once" Và Yêu Cầu Idempotency

Nhóm Cộng đồng BigGo
DBOS Đối Mặt Với Sự Hoài Nghi Của Các Developer Về Tuyên Bố Xử Lý "Exactly-Once" Và Yêu Cầu Idempotency

DBOS Transact , một hệ thống điều phối workflow mới được xây dựng trên PostgreSQL , đang tạo ra cuộc thảo luận trong cộng đồng developer về các tuyên bố kỹ thuật và thách thức triển khai thực tế của nó. Trong khi hệ thống hứa hẹn đơn giản hóa việc quản lý workflow bền vững thông qua checkpointing được hỗ trợ bởi cơ sở dữ liệu, các developer đang đặt ra những câu hỏi quan trọng về các đảm bảo cốt lõi và độ phức tạp vận hành của nó.

Hỗ trợ ngôn ngữ của DBOS:

  • Hiện tại được hỗ trợ: Go, Python, TypeScript
  • Đang lên kế hoạch: Java
  • Kiến trúc: Tích hợp dựa trên thư viện (thay vì cụm bên ngoài)
  • Cơ sở dữ liệu: Checkpoint được hỗ trợ bởi PostgreSQL

Đặt Câu Hỏi Về Tuyên Bố Xử Lý Exactly-Once

Cuộc tranh luận kỹ thuật quan trọng nhất tập trung xung quanh tuyên bố của DBOS về xử lý sự kiện exactly-once. Các thành viên cộng đồng đã chỉ ra một thách thức cơ bản trong các hệ thống phân tán: việc không thể thực sự đảm bảo thực thi exactly-once mà không có các cân nhắc thiết kế cẩn thận. Vấn đề cốt lõi nằm ở thời điểm khi các hoạt động được đánh dấu là hoàn thành so với khi chúng thực sự kết thúc việc thực thi.

Điều này nghe có vẻ... không thể? Nếu bạn có một bước nào đó trong workflow của mình, hoặc bạn ghi lại nó là đã hoàn thành khi bạn bắt đầu, nhưng sau đó bạn có thể crash giữa chừng và khi bạn khôi phục workflow thì bây giờ nó không được xử lý, hoặc ghi lại nó là đã hoàn thành sau khi bạn hoàn tất, nhưng sau đó bạn có thể crash ở giữa việc hoàn thành và ghi lại và khi bạn khôi phục thì bạn chạy bước đó hai lần.

Các developer của DBOS đã làm rõ rằng tuyên bố exactly-once của họ áp dụng cụ thể cho việc khởi tạo workflow để phản hồi các sự kiện, không phải việc thực thi từng bước riêng lẻ. Họ thừa nhận rằng các bước riêng lẻ có thể cần được khởi động lại nếu chúng crash giữa chừng trong quá trình thực thi, đòi hỏi các developer phải triển khai các hoạt động idempotent.

Hoạt động idempotent: Các hàm có thể được gọi nhiều lần với cùng một kết quả, đảm bảo tính nhất quán của hệ thống ngay cả khi được thực thi lặp lại.

Những Hạn Chế Kỹ Thuật Chính:

  • Các bước workflow riêng lẻ yêu cầu thiết kế idempotent
  • Xử lý "exactly-once" chỉ áp dụng cho việc khởi tạo workflow, không phải cho việc thực thi từng bước
  • Các bước có thể khởi động lại nếu chúng gặp sự cố giữa chừng quá trình thực thi
  • Trách nhiệm của nhà phát triển trong việc triển khai các bước có khả năng chịu lỗi vẫn được duy trì

Trách Nhiệm Của Developer Đối Với Khả Năng Chịu Lỗi

Một mối quan tâm chính nổi lên từ các cuộc thảo luận cộng đồng là mặc dù DBOS tự động hóa checkpointing và recovery, các developer vẫn chịu trách nhiệm đáng kể trong việc đảm bảo độ tin cậy của hệ thống. Gánh nặng tạo ra các sub-step idempotent vẫn thuộc về lập trình viên, bất kể việc quản lý trạng thái ở cấp độ workflow được cung cấp bởi framework.

Thực tế này thách thức một số lời hứa về tính đơn giản được đưa ra bởi các framework thực thi bền vững. Trong khi DBOS tự động hóa recovery ở cấp độ workflow, mỗi bước riêng lẻ vẫn phải được thiết kế để xử lý các lần khởi động lại tiềm năng một cách duyên dáng.

Lợi Thế Của Mô Hình Vận Hành

Bất chấp các mối quan tâm kỹ thuật, DBOS vẫn cung cấp những lợi ích vận hành đáng chú ý so với các hệ thống đã được thiết lập như Temporal hoặc Airflow . Hệ thống hoạt động như một thư viện tích hợp trực tiếp vào các ứng dụng hiện có, thay vì yêu cầu một cơ sở hạ tầng cluster riêng biệt. Cách tiếp cận này giảm đáng kể độ phức tạp triển khai và chi phí vận hành cho các nhóm phát triển.

Kiến trúc dựa trên PostgreSQL cũng cung cấp các khả năng công cụ và giám sát quen thuộc cho các nhóm đã sử dụng cơ sở dữ liệu quan hệ, có khả năng giảm đường cong học tập cho việc áp dụng.

Vị Thế Thị Trường Và Câu Hỏi Về Tăng Trưởng

Một số thành viên cộng đồng đã lưu ý đến tần suất của các bài đăng liên quan đến DBOS so với cơ sở người dùng rõ ràng của hệ thống, đặt ra câu hỏi về marketing so với việc áp dụng tự nhiên. Tuy nhiên, các đại diện công ty chỉ ra việc sử dụng sản xuất ngày càng tăng và các câu chuyện thành công của khách hàng như bằng chứng về sức hút thị trường thực sự.

Hệ thống hiện tại hỗ trợ Go , Python và TypeScript , với việc hỗ trợ Java được lên kế hoạch. Cách tiếp cận đa ngôn ngữ này cho thấy tham vọng vượt ra ngoài việc áp dụng thích hợp, mặc dù sự tiếp nhận thị trường cuối cùng vẫn còn phải được xác định.

DBOS đại diện cho một cách tiếp cận thú vị để đơn giản hóa việc điều phối workflow bền vững, nhưng cuộc thảo luận cộng đồng cho thấy rằng các thách thức cơ bản của hệ thống phân tán vẫn tồn tại. Trong khi kiến trúc dựa trên PostgreSQL cung cấp các lợi thế vận hành, các developer vẫn phải điều hướng những phức tạp của việc xây dựng các hệ thống thực sự chịu lỗi.

Tham khảo: DBOS Transact: Lightweight Durable Workflow Orchestration with Postgres