Tôi có một thói quen có lẽ làm tôi chậm lại nhiều hơn mức cần thiết. Khi tôi đọc một giải thích kỹ thuật về một thứ gì đó mà tôi không thể hiểu rốt cuộc nó đang giải quyết vấn đề gì, tôi sẽ dừng lại và quay về phần đầu. Tôi từ chối tiến lên cho đến khi vấn đề trở nên rõ ràng. Bởi vì nếu tôi không hiểu điều gì đang bị hỏng, tôi sẽ không thể đánh giá liệu bản sửa có thực sự hoạt động hay không.
Vậy để tôi làm điều đó ở đây với thiết kế đồng thuận hai giai đoạn của Newton. Trước hết là vấn đề. Rồi đến giải pháp.
Vấn đề mà không ai nói đến đủ nhiều
Đây là điều mà tôi đã không nghĩ rõ cho đến khi bắt đầu đào sâu xem các mạng chính sách phân tán thực sự hoạt động ra sao. Khi một giao dịch được kiểm tra dựa trên dữ liệu trực tiếp trước khi nó được xác nhận, thì phép kiểm tra đó không xảy ra chỉ trên một “nguồn sự thật” sạch và duy nhất. Nó diễn ra trên một mạng các toán tử, và mỗi toán tử đó có thể đang nhìn vào một thông tin hơi khác nhau tại cùng một thời điểm.
Dữ liệu trực tiếp trong thực tế nghĩa là gì? Danh sách trừng phạt được cập nhật. Một địa chỉ ví bị gắn cờ. Nguồn cấp giá nhích từng bước. Các bản cập nhật này không đến mọi toán tử đúng cùng một lúc. Một toán tử có thể đã có danh sách trừng phạt cập nhật sớm hơn khoảng hai giây so với toán tử khác. Một toán tử có thể đang chạy một nguồn cấp giá bị trễ một chút vì độ trễ định tuyến nào đó trong mạng.
Bây giờ một giao dịch được đưa đến để đánh giá. Toán tử A kiểm tra giao dịch đó dựa trên dữ liệu bao gồm bản cập nhật lệnh trừng phạt mới nhất. Toán tử B kiểm tra đúng cùng một giao dịch dựa trên dữ liệu mà vẫn chưa có bản cập nhật đó. Một bên nói giao dịch được thông qua. Bên còn lại nói phải chặn. Mạng có sự bất đồng, và không ai xây dựng một cách có nguyên tắc để giải quyết nó.
Tôi muốn nói rõ về một điều ở đây, vì tôi nghĩ nó thường bị lướt qua. Đây không phải là tình huống biên hay kịch bản xấu nhất. Đây là điều kiện bình thường của bất kỳ hệ phân tán nào khi làm việc với dữ liệu thời gian thực. Dữ liệu đến ở những thời điểm khác nhau đối với các nút khác nhau. Đó chỉ là cách mạng vận hành. Câu hỏi là hệ thống của bạn được thiết kế để xử lý việc đó một cách trung thực hay nó chỉ lặng lẽ hy vọng rằng thời điểm đó không bao giờ quan trọng.
Vì Sao Dữ Liệu Tài Chính Làm Việc Này Khó Hơn
Lý do tôi thấy vấn đề này đặc biệt khó chịu trong bối cảnh của Newton là vì dữ liệu trực tiếp thực sự là gì. Chúng ta không nói về dữ liệu mà việc lệch hai giây là vô hại. Chúng ta đang nói về danh sách trừng phạt, nguồn cấp giá, và các ngưỡng rủi ro.
Danh sách trừng phạt được cập nhật mà không hề báo trước. Một thực thể mới xuất hiện, và kể từ thời điểm đó trở đi, mọi giao dịch liên quan đến thực thể đó đều phải bị chặn. Nếu một toán tử có bản cập nhật đó còn toán tử kia thì không, thì cùng một giao dịch có thể được thông qua ở một phía của mạng và bị chặn ở phía còn lại. Đây không phải là lỗi kỹ thuật. Đây là sự thất bại về tuân thủ.
Nguồn cấp giá thay đổi rất nhanh. Một giao dịch vượt ngưỡng rủi ro dựa trên giá hiện tại có thể trông ổn nếu đối chiếu với một nguồn cấp bị trễ khoảng ba mươi giây. Các con số khác nhau. Quyết định cũng khác. Và không ai bên ngoài hệ thống có thể biết dữ liệu của toán tử nào là đúng.
Đây là điều tôi liên tục vấp phải khi cố hiểu xem thiết kế hai pha của Newton thực sự đang giải quyết gì. Nó không chỉ là làm cho các toán tử đồng ý với nhau nói chung. Mà là làm cho họ đồng ý một cách cụ thể về dữ liệu mà họ đang dùng khi đưa ra quyết định. Sự khác biệt đó cực kỳ quan trọng.
Thực Sự Giao Thức Đồng Thuận Hai Pha Làm Gì
Khi cuối cùng tôi hiểu được thiết kế, logic lúc đó lại thấy quá hiển nhiên khi nhìn ngược lại. Đây thường là dấu hiệu rằng ai đó đã giải quyết đúng một vấn đề nào đó.
Newton tách quá trình đánh giá thành hai bước riêng biệt thay vì chạy tất cả cùng lúc. Bước đầu tiên được gọi là Pha Prepare. Bước thứ hai là Pha Evaluate.
Đây là điều khiến tôi “bừng ra” khi tìm hiểu. Pha Prepare không hề đánh giá gì cả. Nó chỉ giúp đồng thuận. Trước khi bất kỳ toán tử nào chạm vào các kiểm tra chính sách thực sự, mạng sẽ đạt đồng thuận chính xác về dữ liệu mà mọi toán tử sẽ dùng để đánh giá. Không phải dữ liệu “tương tự gần đúng”. Không phải dữ liệu mà mỗi toán tử hiện có cục bộ vào thời điểm đó. Mà là cùng một ảnh chụp, đã được đồng thuận và khóa lại trước khi bắt đầu đánh giá.
Chỉ một thao tác đó sẽ loại bỏ vấn đề. Sự không nhất quán giữa các toán tử tồn tại vì mỗi bên đang đánh giá dựa trên phiên bản dữ liệu trực tiếp cục bộ riêng của mình. Pha Prepare sẽ thay thế tất cả các góc nhìn dữ liệu cục bộ khác nhau đó bằng một ảnh chụp chung được chia sẻ, mà mọi toán tử trên mạng đều đồng ý.
Sau đó Pha Evaluate được chạy. Mỗi toán tử kiểm tra giao dịch dựa trên ảnh chụp đã được thống nhất. Vì các đầu vào giống hệt nhau, các kết quả có thể so sánh được. Mạng có thể đạt được đồng thuận thực sự về kết quả vì không còn sự bất đồng dữ liệu nằm dưới quyết định đó.
NATS Nằm Trong Bức Tranh Này Ở Chỗ Nào
Sự phối hợp giữa các toán tử trong cả hai pha chạy qua NATS. Lần đầu tôi gặp NATS trong bối cảnh này, tôi phải tra cứu vì tôi liên tưởng nó nhiều hơn đến kỹ thuật hạ tầng hơn là đến các hệ thống trên chuỗi. Sự liên tưởng đó là đúng. NATS là một hệ thống nhắn tin được xây dựng cho các môi trường phân tán hiệu năng cao. Nó đã được dùng trong dịch vụ tài chính và các nền tảng điện toán đám mây trong nhiều năm. Nó nhanh, đáng tin cậy ở quy mô lớn, và được xây dựng đúng cho những tình huống mà nhiều nút cần trao đổi tin nhắn với độ trễ tối thiểu.
Trong thiết kế của Newton, NATS là kênh mà Pha Prepare chạy qua. Các toán tử dùng nó để thiết lập ảnh chụp dữ liệu dùng chung trước khi bắt đầu đánh giá. Việc phối hợp đủ nhanh nên không làm tăng độ trễ đáng kể cho quy trình, nhưng cấu trúc đủ rõ để việc đồng thuận có thể được kiểm chứng, chứ không chỉ là sự “giả định”.
Điều tôi đánh giá cao ở lựa chọn này cũng giống như điều tôi thấy ở việc Newton dùng Rego cho ngôn ngữ chính sách. Đó là hạ tầng đã được chứng minh, có lịch sử hoạt động thực tế trong các hệ thống sản xuất. Không ai bị yêu cầu phải tin một lớp nhắn tin tùy biến mà chưa từng được kiểm thử chịu tải ở quy mô lớn. NATS thì có.
Nhìn Từ Bên Ngoài Nó Trông Như Thế Nào
Nhìn từ bên ngoài, nếu bạn chỉ theo dõi một giao dịch được đem đi đánh giá thì thiết kế hai pha là vô hình. Giao dịch được đưa vào. Một kết quả quay lại. Được thông qua hay bị chặn.
Điều bạn không thấy là: trước khi các kiểm tra chính sách chạy, toàn bộ mạng đã đồng thuận về dữ liệu mà những kiểm tra đó sẽ dựa vào. Danh sách trừng phạt, nguồn cấp giá, các tham số rủi ro—tất cả đều được chốt trên cùng một ảnh chụp cho mọi toán tử tham gia. Kết quả trả về không phải là “cái nhìn” của một toán tử dựa trên những gì họ tình cờ có cục bộ. Đó là kết quả đồng thuận dựa trên các đầu vào mà mạng đã cùng xác minh.
Vì Sao Đây Là Phần Biến Việc Tuân Thủ Trở Thành Thực Tế
Mỗi khi tôi nghĩ về vì sao thiết kế này quan trọng không chỉ vì sự tinh xảo về mặt kỹ thuật của nó, tôi lại quay lại một điều.
Một phép kiểm tra tuân thủ có thể tạo ra các kết quả khác nhau tùy vào việc toán tử nào chạy nó thì thực ra không phải là kiểm tra tuân thủ. Đó giống như một phép phỏng đoán kèm thêm vài bước. Nếu đầu ra thay đổi dựa trên việc nút nào tình cờ có dữ liệu mới nhất, thì đầu ra đó không mang ý nghĩa nhất quán. Bạn không thể đặt cam kết tuân thủ mang tính pháp lý dựa trên một thứ không nhất quán như vậy.
Bằng cách giải quyết bài toán đồng thuận dữ liệu trước khi bắt đầu đánh giá, Newton biến Pha Evaluate thành thứ mà bạn có thể thực sự dựa vào. Kết quả có ý nghĩa như nhau bất kể bạn hỏi toán tử nào, vì tất cả đều làm việc từ cùng một bộ đầu vào. Sự nhất quán đó biến việc kiểm tra chính sách đã được đặt sẵn thành một cơ chế tuân thủ thực sự, chứ không chỉ là màn trình diễn hiệu năng của một bên.
Phiên Bản Đơn Giản
Hai toán tử không nên có khả năng bất đồng về một giao dịch chỉ vì một bên có danh sách trừng phạt mới hơn. Newton giải quyết vấn đề này bằng cách buộc các toán tử đồng ý về chính xác dữ liệu mà họ sẽ dùng trước khi bất kỳ lần đánh giá nào chạy. Pha Prepare sẽ khóa dữ liệu. Pha Evaluate chạy các kiểm tra. NATS xử lý phần phối hợp ở giữa.
Kết quả là một phép kiểm tra tuân thủ nhất quán trên toàn bộ mạng, chứ không chỉ nhất quán với bên nào tình cờ nhận được bản cập nhật mới nhất trước. Trong một hệ thống mà đầu ra cuối cùng là một bằng chứng trên chuỗi chứng minh giao dịch đã được xác minh đúng cách, thì tính nhất quán không phải là thứ “có cũng được”. Nó chính là toàn bộ vấn đề.
#SKHynixSaysFundsEyeUpTo$7BInADRs #AsianPCBStockSlideOnNvidiaAIServerDelay #AsianPCBStockSlideOnNvidiaAIServerDelay #Newt $NEWT
