【CJ nâng cao tiếp nối 14/30 · Bài thứ 42】
Lỗi dễ mắc nhất của chương trình là ép một trạng thái chưa có câu trả lời vào nhóm “thất bại” hoặc “thành công”.
Yêu cầu bị hết thời gian chờ không có nghĩa là lệnh chưa được khớp; giao diện trả về lỗi cũng không có nghĩa là vị thế đã được đóng. Nếu lúc này hệ thống thử lại vì cho rằng giao dịch thất bại, lệnh có thể bị đặt trùng; còn nếu tiếp tục như thể giao dịch đã thành công, hệ thống có thể bỏ sót phần rủi ro còn lại cần xử lý. Trạng thái chưa xác định nguy hiểm vì nó khiến chương trình giả vờ như mình đã nắm rõ sự thật.
Cách làm chắc chắn hơn là xem trạng thái chưa xác định như một trạng thái độc lập: tạm dừng các thao tác liên quan, lưu lại mã định danh và thời điểm của yêu cầu, dùng một truy vấn độc lập để xác minh kết quả thực tế, rồi mới quyết định khôi phục, hủy bỏ hay chuyển cho người xử lý. Thời gian chờ xác nhận cũng cần được giám sát, thay vì để yêu cầu treo mãi.
Ngay cả sau khi tra được kết quả, cũng không thể bỏ qua mã định danh của yêu cầu ban đầu. Trước tiên cần xác nhận kết quả truy vấn tương ứng với lệnh nào, rồi mới xử lý phần còn lại; như vậy mới tránh nhầm một lệnh khác có vẻ tương tự thành câu trả lời. Căn cứ để khôi phục phải là sự thật đã được xác nhận, chứ không phải phỏng đoán sau khi chờ quá lâu.
Hệ thống giao dịch không thể loại bỏ mọi trạng thái chưa xác định, nhưng có thể tránh tiếp tục làm rủi ro tăng lên trong khi mọi thứ vẫn chưa rõ ràng. Thừa nhận “không biết” đôi khi chính là hành động tự động hóa chuyên nghiệp nhất.
Bài tiếp theo: Khớp một phần rất dễ biến một lệnh phòng hộ thành hai loại rủi ro.
#状态机 #ĐộTinCậyHệThống
Lỗi dễ mắc nhất của chương trình là ép một trạng thái chưa có câu trả lời vào nhóm “thất bại” hoặc “thành công”.
Yêu cầu bị hết thời gian chờ không có nghĩa là lệnh chưa được khớp; giao diện trả về lỗi cũng không có nghĩa là vị thế đã được đóng. Nếu lúc này hệ thống thử lại vì cho rằng giao dịch thất bại, lệnh có thể bị đặt trùng; còn nếu tiếp tục như thể giao dịch đã thành công, hệ thống có thể bỏ sót phần rủi ro còn lại cần xử lý. Trạng thái chưa xác định nguy hiểm vì nó khiến chương trình giả vờ như mình đã nắm rõ sự thật.
Cách làm chắc chắn hơn là xem trạng thái chưa xác định như một trạng thái độc lập: tạm dừng các thao tác liên quan, lưu lại mã định danh và thời điểm của yêu cầu, dùng một truy vấn độc lập để xác minh kết quả thực tế, rồi mới quyết định khôi phục, hủy bỏ hay chuyển cho người xử lý. Thời gian chờ xác nhận cũng cần được giám sát, thay vì để yêu cầu treo mãi.
Ngay cả sau khi tra được kết quả, cũng không thể bỏ qua mã định danh của yêu cầu ban đầu. Trước tiên cần xác nhận kết quả truy vấn tương ứng với lệnh nào, rồi mới xử lý phần còn lại; như vậy mới tránh nhầm một lệnh khác có vẻ tương tự thành câu trả lời. Căn cứ để khôi phục phải là sự thật đã được xác nhận, chứ không phải phỏng đoán sau khi chờ quá lâu.
Hệ thống giao dịch không thể loại bỏ mọi trạng thái chưa xác định, nhưng có thể tránh tiếp tục làm rủi ro tăng lên trong khi mọi thứ vẫn chưa rõ ràng. Thừa nhận “không biết” đôi khi chính là hành động tự động hóa chuyên nghiệp nhất.
Bài tiếp theo: Khớp một phần rất dễ biến một lệnh phòng hộ thành hai loại rủi ro.
#状态机 #ĐộTinCậyHệThống