Cơ chế bị khóaLoadData cần giảm tải trên máy chủ.
Trước đây khi bộ đệm cấu hình được làm sạch trên các trang web được tải cao, tất cả máy khách đã tạo cùng một thông tin làm tăng đáng kể tải cpu / io.
Với lockLoadData, chỉ có một khách hàng sẽ tạo bộ đệm và những người khác sẽ đợi nó.
Thêm chi tiết về cách thức hoạt động.
Hàm đầu tiên gọi lại "lấy dữ liệu" và nếu nó nhận được dữ liệu hơn là chỉ trả về nó (vì vậy nếu dữ liệu trong bộ đệm, mã sẽ hoạt động như trước và không sử dụng bất kỳ khóa nào).
Nếu dữ liệu không có sẵn và khóa bị khóa, thì trong vòng lặp, chúng tôi sẽ cố gắng tải dữ liệu cho đến khi dữ liệu được lấy hoặc khóa bị xóa.
Nếu không có khóa thì chúng ta tạo khóa và tạo dữ liệu lưu trong bộ đệm và xóa khóa và trả lại dữ liệu
PS: Chúng tôi đã gửi những thay đổi này như một bản vá cho một trong những khách hàng có tải lên tới 20kRPM và nó hoạt động ít nhất 3 tháng, không có vấn đề gì. Vì vậy, có thể vấn đề trong tùy chỉnh / mô-đun của bạn (ví dụ: nếu chúng phá vỡ cơ chế bộ đệm)