Xây dựng website đáp ứng lượng truy cập lớn ngay từ đầu - Phần 5

Video này sẽ vạch ra cho các bạn những vấn đề cơ bản nhất của viết lãng phí tài nguyên và thời gian khi viết code. Và các bạn sẽ học cách code làm sao để cải thiện và tránh được sự lãng phí đó. Tận dụng được thêm khả năng phần cứng của máy chủ và đáp ứng được các lượt truy cập với tốc độ nhanh nhất có thể.

VIDEO NỘI DUNG

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:

  1. Đọc danh sách sản phẩm cần hiển thị từ database theo điều kiện đầu vào.
  2. Duyệt qua danh sách sản phẩm và tạo các thẻ nội dung html cần thiết.
  3. 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:

  1. 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. 
  2. 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:

  1. 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.
  2. 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

Website nhằm mục đích giúp cho các bạn có thể theo dõi các bài viết và video mới dễ dàng và thuận tiện hơn. Giao diện và các tính năng sẽ dần hoàn thiện, mọi ý kiến đóng góp xin liên hệ thông qua Facebook Page "Thư Viện Lập Trình"

THEO DÕI TRÊN

ĐĂNG KÝ NGAY