Cache và Balancing ?

skins

New member
Tham gia
6 Tháng bảy 2024
Bài viết
20
Reaction score
0

I. Tìm Hiểu Sơ Lược​

Cache và Load Balancing là hai khái niệm quan trọng trong thiết kế và quản lý hệ thống phần mềm và hạ tầng công nghệ thông tin. Cả hai đều có vai trò quan trọng trong việc tối ưu hóa hiệu suất và khả năng mở rộng của hệ thống, nhưng lại hoạt động ở những mặt khác nhau.

Cache ?​

Cache (bộ đệm) là một vùng nhớ tạm thời được sử dụng để lưu trữ dữ liệu phổ biến hoặc dữ liệu có khả năng truy cập cao để giảm thiểu thời gian truy cập và tải cho các nguồn dữ liệu chính như cơ sở dữ liệu hay hệ thống lưu trữ. Các chiến thuật quản lý cache như LRU (Least Recently Used), LFU (Least Frequently Used), FIFO (First In First Out) hay RR (Random Replacement) giúp quản lý các mục dữ liệu trong cache sao cho hiệu quả nhất, đảm bảo tính nhất quán và tối ưu hóa tài nguyên hệ thống.

Load Balancing ?​

Load Balancing là quá trình phân phối công việc và tải lên các máy chủ hoặc các tài nguyên mạng để đảm bảo rằng không có máy chủ nào bị quá tải trong khi các máy chủ khác lại còn tài nguyên dư thừa. Các thuật toán phân phối tải như Round Robin, Least Connections, và Weighted Round Robin giúp cân bằng tải công việc hiệu quả, tăng khả năng chịu tải và cải thiện tính sẵn sàng của hệ thống.

Tính tương quan và ứng dụng​

Cache và Load Balancing thường được sử dụng cùng nhau trong các hệ thống lớn để cải thiện hiệu suất và độ tin cậy. Ví dụ, một hệ thống web có thể sử dụng cache để lưu trữ các tài nguyên tĩnh như hình ảnh, CSS, JavaScript, từ đó giảm thời gian tải trang cho người dùng cuối. Đồng thời, hệ thống này cũng có thể sử dụng load balancing để phân phối lưu lượng truy cập giữa các máy chủ web để đảm bảo rằng không có máy chủ nào bị quá tải, từ đó giữ cho hệ thống luôn ổn định và có khả năng mở rộng tốt hơn khi có nhu cầu.

II. Nguyên lý cách hoạt động​

1. Load Balancing

Load balancing giúp hệ thống mở rộng theo chiều ngang (horizontal scaling) bằng cách phân phối lưu lượng truy cập hoặc yêu cầu (requests) đến nhiều máy chủ khác nhau. Điều này giúp hệ thống:
  • Tăng khả năng chịu tải: Bằng cách chia sẻ tải công việc giữa nhiều máy chủ, hệ thống có thể xử lý nhiều yêu cầu hơn so với việc sử dụng một máy chủ duy nhất.
  • Cải thiện độ tin cậy và khả năng phục hồi: Nếu một máy chủ bị lỗi, các yêu cầu có thể được chuyển hướng đến các máy chủ khác mà không làm gián đoạn dịch vụ.
  • Tối ưu hóa tài nguyên: Load balancer có thể phân phối tải một cách thông minh, đảm bảo rằng không có máy chủ nào bị quá tải trong khi các máy chủ khác vẫn còn tài nguyên dư thừa.

2. Caching

Caching là một kỹ thuật quan trọng để sử dụng tài nguyên hiệu quả hơn và giảm chi phí hệ thống. Một số ứng dụng của caching trong các thành phần khác nhau của hệ thống bao gồm:

Backend Cache (Application Server Cache)

  • Database Layer Cache: Dữ liệu từ cơ sở dữ liệu được lưu trữ tạm thời trong cache để trả về nhanh hơn mà không cần truy vấn lại cơ sở dữ liệu. Điều này đặc biệt hiệu quả với dữ liệu ít thay đổi nhưng được truy cập nhiều, như thông tin người dùng.
  • Horizontal Scaling Cache: Khi hệ thống sử dụng nhiều node cache, các dữ liệu cache được phân phối giữa các node này. Consistent Hashing giúp giảm số lượng cache miss bằng cách định hướng yêu cầu tới node cache chứa dữ liệu tương ứng.

Frontend Cache (Content Distribution Network - CDN)

  • Static Media Cache: Các tài nguyên tĩnh như JS, CSS, hình ảnh được lưu trữ trên các máy chủ CDN phân bố khắp nơi. Các yêu cầu sẽ được phục vụ từ máy chủ CDN gần nhất, giúp giảm thời gian tải trang và giảm tải cho máy chủ gốc.
  • Third-Party CDN Services: Nếu hệ thống không đủ lớn để xây dựng CDN riêng, có thể sử dụng các dịch vụ CDN có sẵn như Cloudflare, BootstrapCDN, Amazon CloudFront.

3. Lợi Ích của Caching

  • Tăng tốc độ truy cập: Caching giúp giảm thời gian truy cập dữ liệu bằng cách lấy dữ liệu từ bộ nhớ đệm nhanh hơn so với nguồn dữ liệu gốc.
  • Giảm tải hệ thống: Bằng cách giảm số lượng yêu cầu đến nguồn dữ liệu gốc, caching giúp tiết kiệm tài nguyên và tăng hiệu suất hệ thống.
  • Tiết kiệm chi phí: Sử dụng cache giúp giảm nhu cầu về tài nguyên phần cứng và phần mềm, từ đó giảm chi phí vận hành hệ thống.
Caching và load balancing là hai kỹ thuật quan trọng và bổ sung cho nhau, giúp hệ thống hoạt động hiệu quả hơn, chịu tải tốt hơn và cung cấp trải nghiệm người dùng mượt mà hơn.

4. cache invalidation​

Cache invalidation là các phương pháp quản lý việc cập nhật dữ liệu giữa cache và nguồn dữ liệu gốc (thường là cơ sở dữ liệu) để đảm bảo tính nhất quán (consistency) của hệ thống. Dưới đây là các chiến thuật chi tiết:

1. Write-through cache​

1720236279947.png
  • Đặc điểm: Khi dữ liệu được thay đổi, hệ thống sẽ ghi dữ liệu vào cả cache và cơ sở dữ liệu đồng thời.
  • Lợi ích:
    • Đảm bảo tính nhất quán ngay lập tức vì dữ liệu luôn được đồng bộ ngay khi thay đổi.
    • Giảm nguy cơ mất dữ liệu vì dữ liệu đã được ghi vào cả hai nơi.
  • Nhược điểm:
    • Độ trễ cao do phải chờ cả hai thao tác ghi vào cache và cơ sở dữ liệu hoàn thành.
    • Tài nguyên hệ thống được sử dụng nhiều hơn do phải thực hiện cả hai thao tác ghi.

2. Write-around cache​

1720236068484.png
  • Đặc điểm: Khi dữ liệu được thay đổi, hệ thống chỉ ghi vào cơ sở dữ liệu, bỏ qua cache.
  • Lợi ích:
    • Giảm tải cho cache và giảm nguy cơ tràn cache.
    • Phù hợp với các dữ liệu ít thay đổi hoặc không cần đọc thường xuyên.
  • Nhược điểm:
    • Cache miss có thể xảy ra nếu dữ liệu mới được ghi vào không được lấy từ cache mà phải truy cập trực tiếp từ cơ sở dữ liệu, gây độ trễ.
    • Dữ liệu mới được cập nhật vào cache sau một khoảng thời gian, dẫn đến tính nhất quán không cao ngay lập tức.

3. Write-back cache​

1720236097154.png
  • Đặc điểm: Khi dữ liệu được thay đổi, hệ thống chỉ ghi vào cache, bỏ qua cơ sở dữ liệu, và chỉ đồng bộ dữ liệu với cơ sở dữ liệu sau một khoảng thời gian.
  • Lợi ích:
    • Giảm độ trễ vì dữ liệu được ghi vào cache ngay lập tức.
    • Tăng hiệu suất và khả năng chịu tải cho các ứng dụng chuyên ghi.
  • Nhược điểm:
    • Rủi ro mất dữ liệu cao nếu xảy ra sự cố với cache trước khi dữ liệu được đồng bộ lại với cơ sở dữ liệu.
    • Độ trễ trong việc cập nhật tính nhất quán giữa cache và cơ sở dữ liệu.
Các chiến thuật này thường được lựa chọn dựa trên yêu cầu của ứng dụng và tính chất của dữ liệu, nhằm đảm bảo cân bằng giữa hiệu suất và tính nhất quán của hệ thống.

5. CACHE EVICTION POLICIES​

Các chiến thuật xóa dữ liệu không còn cần thiết từ cache (cache eviction policies) là những cách quản lý để quyết định dữ liệu nào sẽ được loại bỏ khi cache đầy. Dưới đây là các chiến thuật phổ biến:

1. First In First Out (FIFO)​

  • Đặc điểm: Các dữ liệu được ghi vào cache đầu tiên sẽ bị loại bỏ trước.
  • Ưu điểm: Đơn giản và dễ hiểu.
  • Nhược điểm: Không quan tâm đến tần suất hay mức độ truy cập của dữ liệu.

2. Last In First Out (LIFO)​

  • Đặc điểm: Các dữ liệu được ghi vào cache gần đây nhất sẽ bị loại bỏ trước.
  • Ưu điểm: Đơn giản, nhưng ít được sử dụng hơn FIFO vì không phản ánh thực tế sử dụng của dữ liệu.

3. Least Recently Used (LRU)​

  • Đặc điểm: Các dữ liệu ít được truy cập gần đây nhất sẽ bị loại bỏ trước.
  • Ưu điểm: Phù hợp với các ứng dụng có mẫu đọc và ghi dữ liệu phân phối không đồng đều.
  • Nhược điểm: Cần theo dõi thời gian truy cập của từng mục dữ liệu để quản lý, có thể phức tạp và tốn tài nguyên.

4. Most Recently Used (MRU)​

  • Đặc điểm: Các dữ liệu được truy cập nhiều nhất gần đây sẽ bị loại bỏ trước.
  • Ưu điểm: Đối lập với LRU, nhưng ít được sử dụng hơn vì không phản ánh thực tế sử dụng của dữ liệu.​

5. Least Frequently Used (LFU)​

  • Đặc điểm: Các dữ liệu ít được truy cập nhất sẽ bị loại bỏ trước.
  • Ưu điểm: Phù hợp với các dữ liệu có mô hình truy cập không đều.
  • Nhược điểm: Cần theo dõi tần suất truy cập của từng mục dữ liệu, có thể phức tạp và tốn tài nguyên.

6. Random Replacement (RR)​

  • Đặc điểm: Chọn ngẫu nhiên một dữ liệu từ cache để loại bỏ khi cần giải phóng không gian.
  • Ưu điểm: Đơn giản và ít tài nguyên.
  • Nhược điểm: Không đảm bảo tính hợp lý về mặt hiệu suất so với các chiến thuật khác.
Mỗi chiến thuật có thế mạnh và yếu khác nhau và phù hợp với các trường hợp sử dụng khác nhau. Việc lựa chọn chiến thuật phù hợp sẽ giúp cải thiện hiệu suất và tính nhất quán của hệ thống cache.

III. Kết Bài​

Cache và Load Balancing đóng vai trò quan trọng trong việc xây dựng các hệ thống phần mềm và cơ sở hạ tầng mạng hiệu quả và có tính sẵn sàng cao. Hiểu rõ và sử dụng chúng một cách chính xác và phù hợp sẽ giúp tối ưu hóa hiệu suất, giảm thiểu độ trễ và nâng cao trải nghiệm người dùng.
 
Sửa lần cuối:
Top Bottom