Share

Quay lại
Trang chủ / Kiến thức / Phát triển offshore / Nâng cao hiệu năng của hệ thống với kỹ thuật caching

Nâng cao hiệu năng của hệ thống với kỹ thuật caching

15/12/2023
11/11/2021
Nâng cao hiệu năng của hệ thống với kỹ thuật caching

Caching là kỹ thuật được sử dụng trong hầu hết các hệ thống để tăng tốc độ và giảm tải. Kỹ thuật này rất đơn giản nhưng lại vô cùng hiệu quả, hãy cùng tìm hiểu nhé.

1. Caching là gì?

Theo Wikipedia, cache là nơi để lưu trữ dữ liệu để các yêu cầu về dữ liệu đó trong tương lại được phục vụ nhanh hơn. Caching là kỹ thuật sử dụng cache để tăng tốc độ truy xuất dữ liệu và giảm tải cho hệ thống.

2. Ưu điểm của caching

Sử dụng caching hiệu quả sẽ giải quyết được hầu hết các vấn đề về hiệu năng (performance) và giảm thắt nút cổ chai (bottleneck).

Có thể bạn quan tâm: Cải thiện hiệu năng (performance) ứng dụng React Native 

Giả sử hệ thống, ứng dụng của bạn mỗi phút cần xử lý 1000 yêu cầu (request), mỗi request mất 1s để chờ truy vấn (database query) và trả về dữ liệu. Khả năng xử lý của database là có giới hạn, với lượng request lớn rất dễ bị quá tải. Các request đến sau không được xử lý ngay, khiến cho người dùng phải chờ đợi lâu.

Mặt khác dữ liệu trong cache thường được lưu trữ trong RAM hoặc In-Memory Engines do có ưu điểm nổi trội là khả năng đọc dữ liệu rất nhanh. Khi đó, một số dữ liệu thay vì phải truy vấn (query) vào database, có thể query chúng trong cache với thời gian truy xuất chỉ dưới 100ms. Việc làm này vừa giảm tải cho database, vừa giúp tăng thông lượng đọc IOPS (Input/Output operations per second).

 

Đọc ghi dữ liệu từ cache để giảm tải cho server

3. Những kỹ thuật caching

3.1. Caching trên RAM

Caching trên RAM là kỹ thuật đơn giản nhất, đưa trực tiếp dữ liệu cần cache vào RAM của hệ thống. Không cần đến thư viện, chỉ cần dùng HashMap dạng Key-Value là bạn đã có thể implement caching một cách dễ dàng.

Kỹ thuật này có vài nhược điểm như:

  • Số lượng dữ liệu muốn caching càng nhiều, dung lượng RAM bị chiếm hữu càng tăng, dễ gây ra tràn bộ nhớ (out of memory).
  • Do đặc tính của RAM là tự giải phóng khi dừng hệ thống, do đó mỗi lần khởi động lại server, cần nạp lại cache vào RAM.

Với những bất cập trên, kỹ thuật này thường áp dụng cho các hệ thống nhỏ hoặc ứng dụng có lượng data muốn đưa vào cache ít.

3.2. Sử dụng cache server

Các nhược điểm của kỹ thuật caching trên RAM đều được khắc phục khi hệ thống của bạn sử dụng server cache riêng.

Hầu hết các ngôn ngữ lập trình hiện nay đều có các thư viện hỗ trợ caching. Việc của bạn cần làm là đăng ký một server cache, sử dụng thư viện để thao tác với server cache này. 

Trong các hệ thống lớn, người ta có những cache server riêng như Redis, Memcache. Các server cache này có performance vô cùng mạnh mẽ, hỗ trợ backup,... nên rất dễ tích hợp vào hệ thống.

3.3. Lưu ý khi sử dụng caching

Caching có nhiều ưu điểm là vậy, tuy nhiên khi sử dụng kỹ thuật này cần lưu ý các điều sau để hệ thống vận hành trơn tru: 

Xác định rõ dữ liệu cần đưa vào cache

Thông thường dữ liệu đưa vào cache có đặc điểm là có ít sự thay đổi hoặc các request chủ yếu lấy dữ liệu này để xem mà không thực hiện update.

Ví dụ trong hệ thống quản lý app sẽ có các dữ liệu như điều khoản sử dụng, thông tin cấu hình app,… nên được đưa vào cache.

Cập nhật cache ngay khi dữ liệu thay đổi

Giả sử khi đưa điều khoản sử dụng vào cache, người quản lý tuy đã thay đổi nội dung điều khoản trong database nhưng trong cache chưa được cập nhật. Phía người dùng cuối vẫn chỉ nhìn thấy nội dung cũ, làm cho hệ thống không đáp ứng được yêu cầu đặt ra.

Hiểu rõ business logic của hệ thống

Nắm được nghiệp vụ sẽ giúp bạn biết rõ cần cache những gì, ghi vào và lấy ra từ cache mất bao lâu. Nếu cache để quá lâu thì sẽ bị stale, nếu cache bị làm mới thường xuyên thì cũng trở nên vô nghĩa, cân nhắc lấy trực tiếp dữ liệu từ database thay vì từ cache.

Có thể bạn quan tâm: Cache là gì? Hướng dẫn cách xóa cache trên các loại trình duyệt.

4. Giới thiệu về Redis cache

Như đã nói ở trên, redis là một cache server được rất nhiều hệ thống tích hợp. Vậy Redis cache là gì mà lại sử dụng nhiều như vậy?

Redis (Remote Dictionary Server) là một mã nguồn mở, đây là một kho lưu trữ dữ liệu trên bộ nhớ.

Redis có các đặc điểm: 

  • Là cơ sở dữ liệu NoSQL, lưu trữ dưới dạng key-value.
  • Redis cung cấp thời gian truy xuất dữ liệu rất ngắn, thậm chí chưa tới 1ms.
  • Hỗ trợ xử lý hàng triệu request mỗi giây.
  • Hỗ trợ nhiều cấu trúc dữ liệu như Map, Hash, List, Set,...
  • Hỗ trợ cơ chế Public/Subscribe messaging.

Do có hiệu suất cao, giúp giảm thời gian truy vấn, Redis thường được chọn sử dụng cho cache. Cùng với việc trở thành một trong những công cụ mã nguồn mở phổ biến nhất, Redis cũng được Stack Overflow phong danh hiệu cơ sở dữ liệu "Được yêu thích nhất" trong 5 năm liên tiếp.

5. Tạm kết

Caching là kỹ thuật đơn giản, dễ triển khai nhưng đóng vai trò quan trọng trong việc cải thiện hiệu năng nói chung cho toàn bộ server. Trong thực tế caching xuất hiện ở hầu hết các tầng của một ứng dụng, từ phần cứng, phần mềm đến các thiết bị network và dịch vụ. Nếu hệ thống hay ứng dụng của bạn chưa sử dụng cache, hãy suy nghĩ đến việc dùng nó.

Để đọc thêm nhiều bài viết về chủ đề caching nói riêng và công nghệ nói chung, bạn có thể truy cập vào kênh tri thức của Rabiloo tại đây.

Share


Cập nhật bài viết mới nhất từ chuyên gia

Không được để trống
Không được để trống
Không được để trống
Không được để trống
Tìm kiếm
Tags
Website là gì? Khái niệm, cấu tạo, phân loại các Website hiện nay
24/11/2023
21/12/2023
Website là gì? Khái niệm, cấu tạo, phân loại các Website hiện nay

Gặp gỡ và lắng nghe

Không được để trống
Không được để trống
Không được để trống
Không được để trống