Muốn lấy đồ từ XA luôn CHẬM hơn lấy đồ từ GẦN (ngay bên cạnh).
Nghe có vẻ đơn giản, nhưng vô số đại năng hệ thống đều ngộ đạo từ câu nói này. Từ thượng cổ đến hiện đại, chân lý ấy vẫn không hề thay đổi — và nó chính là nền tảng cho toàn bộ Cache Đạo.
Tương truyền, mỗi lần người dùng mở ứng dụng đều sẽ có một đạo thần niệm được gửi đi (gọi là request). Đạo thần niệm ấy phải vượt qua vô số giới vực, xuyên qua Backend môn (xử lý logic), tiến vào Chân Kinh Các — nơi cất giữ toàn bộ chân tướng của tông môn.
Các đại năng gọi nơi đó là Database.
Nhưng vấn đề xuất hiện khi hàng triệu tu sĩ cùng lúc tiến vào Chân Kinh Các. Dù linh khố có lớn tới đâu cũng sẽ xuất hiện tình trạng tắc nghẽn.
Database trở nên quá tải, phản hồi chậm dần, thậm chí sụp đổ hoàn toàn — đó là thiên kiếp mà mọi hệ thống đều phải đối mặt.
Đó là lúc Cache Đạo ra đời. Các trưởng lão không thay đổi chân tướng mà chỉ làm một việc: sao chép những thứ thường dùng nhất đặt ngay bên cạnh mình.
Giống như tu sĩ không mang cả bảo khố theo người, nhưng luôn mang theo vài kiện pháp bảo quan trọng nhất. Đó chính là Cache.
Từ đó, một đạo thần niệm vốn phải vượt ngàn dặm, nay chỉ cần đưa tay là lấy được. Thời gian phản hồi giảm đi 10 lần, 100 lần, thậm chí 1000 lần.
Toàn bộ tiên giới chấn động! Từ đó, Cache được tôn là Thần Khí.
Nhưng thần khí càng mạnh, nhân quả càng lớn. Bởi vì Database chứa chân tướng, còn Cache chỉ là ký ức về chân tướng.
Nếu chân tướng đã thay đổi mà ký ức chưa kịp cập nhật, người dùng sẽ nhìn thấy quá khứ. Các đại năng gọi hiện tượng này là Tẩu hỏa nhập ma dữ liệu.
Stale Cache: Khi Cache trả về dữ liệu cũ trong khi Database đã cập nhật — giống như tu sĩ nhớ sai chân kinh, dẫn đến tẩu hỏa nhập ma.
Ban đầu chỉ là một con số sai, sau đó là một giao dịch sai, và cuối cùng là cả tông môn ngồi truy tìm nhân quả.
- Số dư tài khoản sai → người dùng hoang mang
- Giao dịch trùng lặp → mất tiền, mất uy tín
- Toàn bộ tông môn (đội dev) ngồi debug xuyên đêm
Cho nên các trưởng lão đều hiểu, tu luyện Cache Đạo không khó ở việc tạo ra Cache, mà khó ở việc giữ cho ký ức và chân tướng luôn đồng nhất.
Cache Invalidation — một trong hai bài toán khó nhất của Khoa học Máy tính. Đó cũng là nguyên nhân vì sao các đại tông môn như Facebook, Google, Netflix đều xây dựng vô số tầng Cache.
There are only two hard things in Computer Science: cache invalidation and naming things. — Phil Karlton
Khi sinh linh đạt tới hàng triệu, hàng tỷ, thứ ngăn hệ thống khỏi thiên kiếp rất nhiều khi không phải Database mà là thần khí mang tên Cache.
Cho nên các đại năng kỹ sư phần mềm đều hiểu:
- Database là chân tướng — nguồn sự thật duy nhất.
- Cache là ký ức — bản sao nhanh nhất có thể.
- Mà trên đời này, thứ nhanh hơn việc tìm lại chân tướng chính là nhớ sẵn đáp án.
Database là chân tướng.
Cache là ký ức.
Mà trên đời này, thứ nhanh hơn việc tìm lại chân tướng
chính là nhớ sẵn đáp án.