Những gì thường bị hỏng trước tiên dưới tải không phải là thông lượng, mà là thời gian. Khi một mạng trở nên bận rộn, các khối không chỉ đầy lên, mà chúng trở nên khó dự đoán hơn. Các giao dịch đến, phí tăng, các xác nhận lại sắp xếp lại, và con đường từ việc gửi một giao dịch đến việc thấy nó được thực hiện trở nên không chắc chắn. Tôi đã thấy những chiến lược trông có vẻ chính xác trong thử nghiệm thất bại trong sản xuất chỉ đơn giản vì thứ tự thực hiện bị thay đổi chỉ trong một phần của giây. Một vụ thanh lý bị bỏ lỡ vì nó rơi vào một vị trí muộn hơn mong đợi. Một giao dịch chênh lệch nhiều bước hoàn thành bước đầu tiên nhưng bước thứ hai nhìn thấy một trạng thái hơi khác vì một giao dịch khác đã xen vào giữa. Đây không phải là những thất bại kịch tính. Chúng là những thay đổi nhỏ trong thứ tự mà lặng lẽ thay đổi kết quả.
Bên trong Fogo, sự khác biệt hiện lên trong cách mà thứ tự đó được xử lý. Hệ thống đưa ra một lựa chọn có chủ đích quanh việc lập lịch xác định. Các giao dịch không liên tục bị xáo trộn dựa trên những khác biệt phí nhỏ khi chúng vào một cửa sổ lập lịch. Chúng được đặt vào các phân khúc thời gian xác định và được sắp xếp theo cách có thể đoán trước trong những phân khúc đó. Dưới lưu lượng truy cập lớn, lựa chọn đó trở nên rõ ràng. Thay vì xem người xây dựng khối liên tục điều chỉnh vị trí để phản ứng với áp lực phí, bạn thấy một cấu trúc cố định hơn. Nếu một giao dịch vào một ranh giới lập lịch nhất định kịp thời, vị trí tương đối của nó ổn định. Nếu nó đến quá muộn, nó không cạnh tranh bên trong ranh giới đó bằng cách đặt giá cao hơn. Nó di chuyển sang cái tiếp theo.
Tôi đã theo dõi một chiến lược giao dịch đa giao dịch qua các khối liên tiếp trong một bài kiểm tra tắc nghẽn. Trên nhiều hệ thống, ngay cả khi bạn thiết kế các giao dịch để thực hiện tuần tự, luôn có nguy cơ rằng một giao dịch không liên quan sẽ lén lút xen vào giữa chúng vì thứ tự vẫn còn lỏng lẻo cho đến giây phút cuối cùng. Trên Fogo, sự lỏng lẻo đó được giảm thiểu. Khi các giao dịch nằm trong cùng một phân khúc lập lịch, có ít sự xáo trộn giữa các khoảng thời gian hơn. Chuỗi giao dịch hoặc được thực hiện theo mô hình trong ranh giới đó hoặc chuyển sạch sang cái tiếp theo. Sự không thể đoán trước mà thường xuất hiện dưới áp lực được thay thế bởi một hàng đợi rõ ràng hơn.
Điều này tạo ra một loại giới hạn khác. Trên hầu hết các chuỗi có biến thiên cao, nếu bạn thấy rằng bạn sắp mất một vị trí, bạn có thể cố gắng tăng phí của mình và tiến lên trong cùng một khối. Kết quả là không chắc chắn, nhưng tùy chọn đó tồn tại. Trên Fogo, tùy chọn đó bị hạn chế. Bộ lập lịch ưu tiên thứ tự có thể đoán trước hơn là định giá lại vào giây phút cuối cùng. Khi một ranh giới lập lịch được xác định hiệu quả, việc tăng phí của bạn không đảm bảo rằng bạn sẽ nhảy lên phía trước trong phân khúc đó. Nếu bạn bỏ lỡ cửa sổ, bạn chờ đợi. Hệ thống giảm biến thiên thời gian, nhưng nó cũng giảm khả năng phản ứng bên trong cửa sổ thời gian đó.
Lớp lan truyền hỗ trợ cấu trúc này. Các xác thực viên phối hợp xung quanh các khoảng thời gian được xác định, và việc lan truyền giao dịch được điều chỉnh để hội tụ trong thời gian giới hạn trước khi hoàn tất. Thiết kế không nhằm tối đa hóa tính linh hoạt trong việc cấu thành khối vào giây phút cuối cùng. Nó nhằm đảm bảo rằng những gì các xác thực viên thấy nhanh chóng và đồng nhất. Khi lưu lượng tăng, hệ thống bảo vệ những đảm bảo về thời gian đó thay vì kéo dài để hấp thụ thêm các xáo trộn cơ hội. Kết quả là dưới áp lực, bạn thấy hàng đợi có trật tự thay vì định giá hỗn loạn.
Tôi đã kiểm tra một chiến lược chênh lệch nhạy cảm với độ trễ phụ thuộc vào những khoảng cách thời gian nhỏ giữa hai thị trường liên quan. Trên các hệ thống đàn hồi hơn, có những khoảnh khắc khi một cập nhật trạng thái hiển thị trong khi một cái khác bị chậm lại một chút. Khoảng cách đó có thể tạo ra cơ hội. Trên Fogo, những khoảng cách đó hẹp hơn vì các chuyển tiếp trạng thái được lan truyền và hoàn tất trong các khoảng thời gian chặt chẽ hơn. Các xác thực viên quan sát các thay đổi gần gũi hơn. Logic chênh lệch thực hiện chính xác, nhưng lợi thế giảm bớt vì hệ thống giảm thiểu sự mơ hồ mà chiến lược phụ thuộc vào. Không có gì bị hỏng.
Sự phối hợp của các xác thực viên dưới mô hình này mang lại những yêu cầu thực sự. Để duy trì lập lịch xác định và độ trễ giới hạn, các xác thực viên cần hiệu suất và kết nối đáng tin cậy. Trong một bài kiểm tra căng thẳng với độ trễ lan truyền nhỏ giữa các nút địa lý xa nhau, hệ thống thích trì hoãn một chút việc hoàn tất thay vì cho phép các quan điểm giao dịch khác nhau đi qua và hòa giải sau. Tính nhất quán được bảo tồn, nhưng với chi phí của các kỳ vọng cơ sở hạ tầng nghiêm ngặt hơn. Thiết kế chấp nhận ít biến thiên hơn trong hiệu suất của các xác thực viên vì các đảm bảo về thời gian phụ thuộc vào nó.
Một điều kiện ranh giới làm rõ sự đánh đổi. Một nhóm giao dịch nhắm vào cùng một hợp đồng đến gần rìa của một cửa sổ lập lịch. Một số vào phân khúc hiện tại. Những cái khác, chỉ muộn một chút, đã chuyển sang cái tiếp theo. Trên một hệ thống dựa vào phí, những giao dịch đi sau có thể đã cố gắng đặt giá cao hơn và buộc phải sắp xếp lại một phần trong cùng một khối. Trên Fogo, sự tách biệt vẫn sạch sẽ. Bộ lập lịch không mở lại ranh giới để tiếp nhận các giá thầu cao hơn. Đối với một ứng dụng dựa vào sự sắp xếp ổn định, sự đoán trước này là có lợi. Đối với một nhà giao dịch cố gắng chen vào trước các đối thủ vào giây phút cuối cùng, cơ hội đó không tồn tại.
Tính xác định trong thực hiện mở rộng qua việc hoàn tất. Bởi vì thứ tự gắn chặt với các ranh giới lập lịch, sự hoàn tất hoạt động như một sự tiếp diễn của cấu trúc đó thay vì là một giai đoạn thứ hai của việc lọc xác suất. Trong các đợt tăng tải, tôi không quan sát thấy các vi tổ chức cơ hội được sử dụng để thu lợi từ phí cao hơn bằng cách thay đổi thứ tự giao dịch. Cơ chế của hệ thống giảm bớt động lực và không gian cho hành vi đó. Thời gian vẫn được kiểm soát, và thứ tự vẫn được căn chỉnh giữa các xác thực viên.
Các hệ quả phụ thuộc vào những gì bạn đang xây dựng hoặc chạy. Nếu ứng dụng của bạn yêu cầu thực hiện nhiều bước được phối hợp chặt chẽ, nơi mà sự xen kẽ bất ngờ có thể phá vỡ các giả định, sự cứng nhắc của Fogo đơn giản hóa môi trường. Bạn có thể ước lượng thời gian bao gồm với sự không chắc chắn hẹp hơn. Bạn ít bị phơi bày hơn trước sự xáo trộn đột ngột do áp lực phí gây ra. Tuy nhiên, nếu chiến lược của bạn phụ thuộc vào việc khai thác sự mơ hồ trong thứ tự, định giá động, hoặc những sự không khớp thời gian ngắn giữa các bên tham gia, môi trường cung cấp ít tính linh hoạt hơn. Các cơ chế giống nhau giảm biến thiên cũng giảm khả năng điều động chiến lược.
Có một sự ma sát chân thật trong thiết kế này. Lập lịch xác định với độ trễ giới hạn yêu cầu hiệu suất xác thực viên có kỷ luật và làm tăng chi phí cơ sở hạ tầng. Các công cụ được xây dựng xung quanh việc tăng phí đàn hồi phải thích ứng với một hệ thống nơi đặt giá muộn có tác động hạn chế trong một ranh giới lập lịch. Một số chiến lược mất lợi thế không phải vì chúng bị lỗi, mà vì môi trường không còn tạo ra những bất đồng về thời gian mà họ dựa vào.
Điều thường sụp đổ dưới tải là khả năng đoán trước thời gian thực hiện. Trên Fogo, khả năng đó phần lớn được giữ nguyên. Sự đánh đổi là khả năng thay đổi thời gian vào giây phút cuối cùng trở nên bị ràng buộc về mặt cấu trúc.