Một quá trình xử lý đơn giản thường hay gặp
Ví dụ đây là một quá trình cơ bản nhất để tính toán hiển thị danh sách sản phẩm của một trang web bán hàng theo điều kiện đầu vào:
- Đọc danh sách sản phẩm cần hiển thị từ database theo điều kiện đầu vào.
- Duyệt qua danh sách sản phẩm và tạo các thẻ nội dung html cần thiết.
- Trả kết quả về client
Quá trình đơn giản này có vấn đề gì ?
Ở cùng một điều kiện và trong một khoảng thời gian nhất định thì kết quả trả về hoàn toàn giống nhau. Nhưng với nhiều người dùng khác nhau thì quá trình này sẽ được thực hiện lại nhiều lần.
Điều này gây lãng phí tài nguyên cho quá trình đọc database và quá trình xử lý để ra kết quả. Điều này giống như bạn có một số quả cam, khi ai lại hỏi bạn có bao nhiêu quả cam thì bạn đếm số cam rồi trả lời. Vấn đề là lần nào bạn cũng đếm số quả cam cho dù bạn đã đếm rồi. Một sự lãng phí.
Làm sao cải thiện và khắc phục vấn đề này?
Ví dụ vấn đề đếm cam, rõ ràng để không lãng phí ta chỉ cần nhớ kết quả đã đếm lần đầu và không cần đếm lại và nói ngay kết quả cho người hỏi.
Còn vấn đề trong việc tạo kết quả trả về danh sách sản phẩm cũng vậy, chỉ cần ghi nhớ lại kết quả đã xử lý theo điều kiện đó. Khi có một yêu cầu khác mà có cùng điều kiện như vậy thì không cần xử lý nữa mà trả về kết quả trước đó luôn.
Việc ghi nhớ này là một loại CACHE và do đặc tính của nó, ta có thể gọi là Cache Logic hay Cache Business
Lưu CACHE như thế nào?
Thông thường thì có 2 phương pháp lưu giữ CACHE để sử dụng nhiều lần:
- Lưu thành file: kết quả tổng hợp được lưu vào file trên ổ cứng, khi cần thì đọc file rồi trả về client.
- Lưu trong bộ nhớ (RAM): kết quả được lưu giữ trong RAM và khi cần thì lấy ra trả về client.
Ưu điểm và nhược điểm của việc sử dụng CACHE dạng FILE?
Ưu điểm:
- Đảm bảo vẹn toàn dữ liệu do có thể lưu được thời gian dài
- Có thể lưu được nhiều dữ liệu do dung lượng ổ cứng là khá lớn với giá cả rẻ
Nhược điểm:
- Phụ thuộc vào tốc độ đọc file của ổ cứng
- Phải suy nghĩ và tính toán trước cách thức tổ chức thư mục và files
- Nếu không quản lý hiệu quả sẽ dẫn tới rất nhiều files rác
Ưu điểm và nhược điểm của việc sử dụng CACHE dạng RAM?
Ưu điểm:
- Tốc độ truy xuất dữ liệu của RAM là cực nhanh. Việc ghi và đọc CACHE diễn ra gần như ngay lập tức.
Nhược điểm:
- Không đảm bảo vẹn toàn dữ liệu, RAM mất dữ liệu khi máy khởi động lại
- Dung lượng của RAM là khá hạn chế do giá không hề rẻ như ổ cứng
- Nếu lạm dụng có thể dẫn tới làm ảnh hưởng toàn server
Thuật toán đề xuất giải pháp cơ bản tối ưu việc sử dụng CACHE LOGIC
Phương pháp triển khai CACHE
Có 2 cách để điều khiển và triển khai việc vận dụng hệ thống cache để tăng tốc độ xử lý và tiết kiệm tài nguyên:
- Bị động: request đầu tiên sẽ chịu trách nhiệm chạy xử lý thông thường rồi tạo cache cần thiết. Những request sau chỉ việc sử dụng cache mà không xử lý lại.
- Chủ động: có một hệ thống riêng chịu trách nhiệm tạo và quản lý cache. Tất cả request đều sẽ được sử dụng cache, bởi vì cache luôn luôn có sẵn.
Có thể chỉ cần sử dụng bị động không kèm theo chủ động, nhưng nếu có chủ động thì phải có bị động ở dạng kiểm tra. Tại sao?
- Chủ động là một tiến trình khác tác động vào cache nhầm điều khiển cache (tạo, cập nhật, xóa). Quá trình này không thể đảm bảo tại mọi thời điểm có request thì đều có cache.
- Bị động dạng kiểm tra là: nếu có cache thì đọc cache, không có cache thì chạy xử lý bình thường nhưng không được tạo cache.
...
HẾT PHẦN 5
ỦNG HỘ TÁC GIẢ (DONATE) Nếu bạn muốn ủng hộ tài chính cho tác giả, bất kể bao nhiêu, bạn có thể chuyển khoản qua:
TECHCOMBANK, NGUYÊN KIỆM, TP HỒ CHÍ MINH
Chủ tài khoản___ : ĐẶNG VĂN LEL
Số tài khoản____ : 19027982455010