Vượt quá giới hạn tỷ lệ: mở rộng quyền truy cập vào Codex và Sora
Bởi Jonah Cohen, Thành viên Ban Kỹ thuật
Trong năm qua, cả Codex và Sora đều được áp dụng nhanh chóng, với việc sử dụng nhanh chóng vượt quá những gì chúng ta mong đợi ban đầu. Chúng tôi đã thấy một mô hình nhất quán: người dùng đi sâu vào, tìm giá trị thực và sau đó gặp phải giới hạn tỷ lệ.
Giới hạn tỷ lệ có thể giúp làm dịu nhu cầu và đảm bảo quyền truy cập công bằng; tuy nhiên, khi người dùng nhận được giá trị, việc dừng lại khó khăn có thể gây khó chịu. Chúng tôi muốn có một cách để người dùng tiếp tục hoạt động, đồng thời bảo vệ hiệu suất hệ thống và sự tin tưởng của người dùng vào cách tiếp cận của chúng tôi.
Để giải quyết vấn đề này, chúng tôi đã xây dựng một công cụ truy cập theo thời gian thực để đếm mức sử dụng. Một trong những chức năng của hệ thống đó là khả năng mua tín dụng. Khi người dùng vượt quá giới hạn tốc độ, credit cho phép họ tiếp tục sử dụng sản phẩm của chúng tôi bằng cách trừ dần vào số dư credit của họ.
Bên dưới đây là một hệ thống phức tạp kết hợp giới hạn, theo dõi sử dụng thời gian thực và số dư tín dụng trong một mô hình truy cập duy nhất. Bài đăng này đề cập đến lý do tại sao việc mở rộng Codex và Sora yêu cầu phải suy nghĩ lại về kiểm soát truy cập, cách một hệ thống thời gian thực, chính xác, kết hợp giới hạn tỷ lệ và tín dụng cho mỗi yêu cầu và cách nền tảng đó mở khóa quyền truy cập bổ sung cho cả hai sản phẩm.
Thu nhỏ, các mô hình truy cập truyền thống có xu hướng buộc phải lựa chọn:
- Giới hạn tỷ lệ có thể hữu ích lúc đầu, nhưng để lại cho người dùng trải nghiệm tồi tệ khi hết: “quay lại sau”
- Thanh toán dựa trên việc sử dụng rất linh hoạt, nhưng khiến người dùng phải trả tiền từ mã thông báo đầu tiên — không lý tưởng để hỗ trợ khám phá sớm
Đối với Codex và Sora, cả hai đều không đủ. Nếu chúng tôi chỉ đơn giản tăng giới hạn tốc độ, chúng tôi sẽ mất các cơ chế kiểm soát quan trọng để làm mượt nhu cầu và đảm bảo công bằng, đồng thời sẽ cạn kiệt năng lực để phục vụ mọi người. Nếu chúng tôi hoàn toàn dựa vào việc tính phí sử dụng không đồng bộ, chúng tôi sẽ gây ra độ trễ, vượt mức hoặc các vấn đề đối soát—đây chính là những kiểu vấn đề mà người dùng nhận ra khi họ đang tương tác nhiều nhất.
Thay vào đó, những gì chúng tôi cần là một hệ thống lai duy nhất kết hợp giới hạn thời gian thực với quyền truy cập trả theo thời gian sử dụng:
Hệ thống này phải:
- Thực thi các giới hạn tỷ lệ cho đến khi đạt được
- Chuyển đổi liền mạch sang tín dụng trong cùng một yêu cầu
- Đưa ra quyết định đó trong thời gian thực
- Đảm bảo độ chính xác và có thể kiểm toán nghiêm ngặt khi theo dõi mức tiêu thụ tín dụng
Một trong những sự thay đổi mang tính khái niệm quan trọng mà chúng tôi đã thực hiện là mô hình hóa quyền truy cập như một thác nước quyết định. Thay vì hỏi “điều này có được phép không?” , chúng tôi hỏi “bao nhiêu là được phép và từ đâu?” Khi đếm mức sử dụng, hệ thống sẽ trải qua trình tự sau:
Mô hình này phản ánh cách người dùng thực sự trải nghiệm sản phẩm. Giới hạn tỷ lệ, các gói miễn phí, tín dụng, chương trình khuyến mãi và quyền lợi doanh nghiệp đều chỉ là các lớp trong cùng một ngăn xếp quyết định. Từ góc nhìn của người dùng, họ không “chuyển hệ thống”—họ chỉ tiếp tục sử dụng Codex và Sora. Đó là lý do tại sao các tín dụng cảm thấy vô hình: chúng chỉ là một yếu tố khác trong thác nước.
Chúng tôi đã đánh giá các nền tảng thanh toán và đo lường sử dụng của bên thứ ba để xử lý mức tiêu thụ tín dụng. Chúng rất phù hợp để lập hóa đơn và báo cáo, nhưng không đáp ứng hai yêu cầu quan trọng:
Khi người dùng chạm đến giới hạn và có tín dụng khả dụng, hệ thống phải biết ngay lập tức. Việc đếm theo kiểu nỗ lực tối đa hoặc bị trễ sẽ xuất hiện dưới dạng các khối bất ngờ, số dư không nhất quán và các khoản phí không chính xác. Đối với các sản phẩm tương tác như Codex và Sora, những thất bại đó trở nên rõ ràng và gây bực bội.
Chúng tôi cũng cần cung cấp sự minh bạch trong mọi kết quả:
- Tại sao một yêu cầu được cho phép hoặc bị chặn
- Đã tiêu thụ bao nhiêu dữ liệu
- Giới hạn hoặc số dư nào đã được áp dụng
Khả năng này cần được tích hợp chặt chẽ vào quy trình ra quyết định theo tầng của chúng tôi thay vì được giải quyết một cách tách biệt trong một nền tảng tính hóa đơn theo mức sử dụng riêng biệt, vốn chỉ nhìn thấy một phần của những gì đang diễn ra. Để cho phép người dùng truy cập các sản phẩm của chúng tôi mà không làm tổn hại đến niềm tin, chúng tôi cần toàn quyền kiểm soát tính đúng đắn, thời điểm và khả năng quan sát. Điều đó đã thúc đẩy chúng tôi hướng tới một giải pháp nội bộ.
Để cung cấp năng lượng cho điều này, chúng tôi đã xây dựng một hệ thống cân bằng và sử dụng phân tán được thiết kế đặc biệt cho các quyết định truy cập đồng bộ.
Ở cấp độ cao, hệ thống:
- Theo dõi việc sử dụng theo từng người dùng, từng tính năng
- Duy trì cửa sổ giới hạn tốc độ
- Duy trì số dư tín dụng theo thời gian thực
- Các khoản ghi nợ được cân bằng một cách hiệu quả thông qua bộ xử lý không đồng bộ phát trực tuyến
Mỗi yêu cầu đều đi qua một đường dẫn đánh giá duy nhất đưa ra quyết định thời gian thực về mức sử dụng được cho phép bằng cách sử dụng đồng bộ từ giới hạn tỷ giá và, nếu cần, xác minh đủ tín dụng; sau đó trả về một kết quả cuối cùng trong khi thanh toán bất kỳ khoản ghi nợ tín dụng không đồng bộ nào. Điều này đảm bảo hành vi nhất quán giữa các sản phẩm và loại bỏ logic trùng lặp giữa các nhóm.
Một trong những nguyên tắc thiết kế chính của hệ thống này là chúng ta phải chứng minh được rằng hóa đơn của mình là chính xác. Điều này phản ánh nguồn gốc của hỗ trợ tín dụng của chúng tôi, bắt nguồn từ khách hàng doanh nghiệp. Trong sơ đồ hệ thống trên, chúng ta có ba bộ dữ liệu riêng biệt mà tất cả đều liên kết với nhau:
- Các sự kiện sử dụng sản phẩm: Những gì người dùng thực sự đã thực hiện
- Sự kiện kiếm tiền: Những gì chúng tôi tính phí người dùng cho việc sử dụng của họ
- Cập nhật số dư: Chúng tôi đã điều chỉnh số dư tín dụng của người dùng bao nhiêu và tại sao
Những bộ dữ liệu này không phải là một sản phẩm phụ thông thường; chúng thực sự điều khiển hệ thống, với mỗi tập dữ liệu kích hoạt dữ liệu tiếp theo. Việc tách riêng những gì đã xảy ra, mọi khoản phí liên quan và những gì chúng tôi đã ghi nợ cho phép chúng tôi kiểm toán, phát lại và đối soát từng lớp một cách độc lập. Đây là một sự đánh đổi có chủ đích, trong đó chúng tôi ưu tiên tính đúng đắn có thể kiểm chứng, đổi lại việc cập nhật số dư tín dụng sẽ bị chậm nhẹ. Chúng tôi đã thực hiện điều này như thế nào:
- Các sự kiện sử dụng sản phẩm được công bố cho tất cả các hoạt động của người dùng, cho dù nó có thúc đẩy tiêu thụ tín dụng hay không. Điều này cung cấp một dấu vết kiểm tra cho hoạt động của người dùng và cho phép chúng tôi giải thích lý do tại sao chúng tôi tính phí hoặc không tính phí tín dụng.
- Mỗi sự kiện đều có khóa idempotence ổn định, vì vậy việc thử lại, phát lại hoặc khởi động lại công nhân không bao giờ có thể ghi nợ gấp đôi số dư, điều này ngăn chặn việc tính phí gấp đôi. Điều này cũng cho phép chúng tôi chạy đối chiếu hàng loạt để xác minh công việc ngoại tuyến.
- Chúng tôi thực hiện cập nhật số dư không đồng bộ (nhưng vẫn gần thời gian thực) thay vì cập nhật đồng bộ để tạo dấu vết kiểm tra. Chúng tôi chấp nhận một độ trễ nhỏ trong việc cập nhật số dư của người dùng để có thể chứng minh rằng hệ thống đang hoạt động và đảm bảo với người dùng rằng chúng tôi không tính phí sai cho họ. Khi độ trễ ngắn đó khiến chúng tôi vượt quá số dư tín dụng của người dùng, chúng tôi tự động hoàn lại; chúng tôi chọn tính đúng đắn có thể kiểm chứng và niềm tin của người dùng hơn là việc thực thi nghiêm ngặt.
- Chúng tôi giảm Số dư Tín dụng và chèn một bản ghi Cập nhật Số dư trong một giao dịch cơ sở dữ liệu nguyên tử duy nhất. Các bản cập nhật số dư được sắp xếp theo từng tài khoản, vì vậy các yêu cầu đồng thời không bao giờ có thể chạy đua để chi tiêu cùng một khoản tín dụng. Bản ghi Cập nhật số dư chứa cả số tiền ghi nợ cũng như phân bổ trở lại sự kiện kiếm tiền đã kích hoạt cập nhật; gói phần này trong một giao dịch cơ sở dữ liệu duy nhất đảm bảo rằng chúng tôi có dấu vết kiểm tra cho mọi điều chỉnh đối với số dư tín dụng.
Tất cả sự nghiêm ngặt này hỗ trợ một mục tiêu: làm cho việc truy cập đơn giản và an toàn. Khi mọi người đang tạo hoặc mã hóa, họ không cần phải tự hỏi liệu yêu cầu có được thực hiện hay không, liệu họ có bị tính phí quá mức hay không hoặc số dư của họ có chính xác hay không. Bằng cách làm cho việc sử dụng, thanh toán và số dư có thể được chứng minh là chính xác, chúng tôi cung cấp cho người dùng một hệ thống không làm mất tập trung vào trải nghiệm của họ. Đó là điều cho phép chúng tôi thay thế các điểm dừng cứng bằng quyền truy cập liên tục - và đó là điều làm cho các khoản tín dụng có thể sử dụng được giữa công việc thực tế, không chỉ trên hóa đơn.
Nguyên tắc hướng dẫn đằng sau cách tiếp cận của chúng tôi là bảo vệ động lực của người dùng. Mọi quyết định kiến trúc đều phản ánh lại kết quả đối với người dùng: cân bằng thời gian thực ngăn chặn sự gián đoạn không cần thiết, tiêu thụ nguyên tử ngăn chặn sạc kép và logic truy cập thống nhất đảm bảo hành vi có thể dự đoán được. Kết quả là mọi người có thể làm việc lâu hơn, khám phá sâu hơn và tiến xa hơn các dự án mà không phải đối mặt với những chặng dừng khó khăn hoặc thay đổi kế hoạch sớm.
Khi người dùng tham gia, hệ thống sẽ giúp họ tiếp tục, không cản trở. Giới hạn và tín dụng biến mất trong nền.
Việc xây dựng trải nghiệm đó đòi hỏi phải xem xét lại quyền truy cập, sử dụng và thanh toán như một hệ thống duy nhất và xây dựng cơ sở hạ tầng coi tính chính xác như một tính năng sản phẩm hạng nhất. Cùng một nền tảng có thể mở rộng sang nhiều sản phẩm hơn theo thời gian; Codex và Sora chỉ là sự khởi đầu.


