Memcache và cơ chế hoạt động

root

Well-Known Member
1. Caching là gì?
- Caching (Bộ nhớ đệm) được sử dụng vì hai lý do rất quan trọng:
  • để tăng tốc độ trả dữ liệu của các trang và làm giảm bớt tài nguyên hệ thống.
  • Bộ nhớ đệm được sử dụng để tăng tốc độ các trang web động.
- Ví dụ:
  • Bạn hãy hình dung mỗi khi một trang được truy cập, PHP sẽ tạo ra các trang theo yêu cầu trên bay từ cơ sở dữ liệu. Nó cần có thời gian để truy vấn cơ sở dữ liệu để tạo ra các trang. Các truy vấn cơ sở dữ liệu này sẽ sử dụng nhiều các nguồn tài nguyên của máy chủ của bạn.
  • Tuy nhiên, nếu thay vì liên tục tạo ra một trang mới, thì bạn hãy tạo cùng một trang cho mỗi khách truy cập --> như vậy bạn đã biến những trang này vào các tập tin HTML tĩnh?
  • Không có cơ sở dữ liệu truy vấn là cần thiết cho các khách truy cập mới. Một tập tin tĩnh có thể được phục vụ nhanh hơn và tiêu thụ tài nguyên ít hơn đáng kể. Khách truy cập của bạn xem trang được yêu cầu của họ sớm hơn, và bạn tiết kiệm chu kỳ CPU.

2. Memcache là gì ?
- Memcached cũng là cache giống như các bộ cache trên, nó là 1 service độc lập như mysql.
- Memcached cung cấp cho bạn khả năng lưu trữ đối tượng bất kỳ vào trong RAM.
- Memcached là một NoSQL được thiết kế với hiệu năng cao, hoạt động theo phương thức distrubuted memory object caching.
- Memcached được tích hợp để giảm tải database cho ứng dụng, website và tăng tốc độ truy cập của website.

Sơ đồ hoạt động Memcache :





- Request đầu tiên
: Sau khi có memcached thì lần đầu tiên của user thường truy cập vào CSDL thì server sẽ trả lại kết quả cho
  • user như thông thường hiện nay và
  • kèm them một việc là trả dữ liệu vào server memcached.
- Các request lần sau:
  • Lúc đó lần sau user truy cập nó sẽ không yêu cầu server làm việc nữa thay vào đó nó sẻ đưa từ server memcached trả lại cho user .
  • việc đó sẽ giúp giảm thiểu 1 lượng lớn công việc mà server cần làm việc. Giúp website của bạn chạy nhanh hơn khoảng 70%
- Để PHP có thể hoạt động với memcached bạn cần cài 1 phần mở rộng để PHP có thể hoạt động với memcached dựa vào các hàm và class mà phần mở rộng đó cung cấp. (VD: phần mở rộng Memcache)
- Như vậy, muốn dùng memcached bạn phải cài memcached và cài memcache extension.
- Hiện nay hầu hết các mã nguồn mở và thương mại đều hỗ trợ memcache.
- Mình sẽ hướng dẫn các bạn cài đặt memcached trên hệ điều hành CentOS 6. Lưu ý với việc cài đặt memcached trên hệ điều hành CentOS 5, chúng ta phải thực hiện build và được hướng dẫn cài đặt ở một bải viết khác.

3. Một vài ưu và nhược điểm:

- Nhược điểm:
  • Memcached ko có cơ chế thẩm định tính chính xác của dữ liệu lưu trong nó. Điều này có thể thấy quá cấu trúc hệ thống (memcached ko có bất cứ sự liên hệ nào với db, mà nằm độc lập).
  • Người ta giải quyết vấn đề này bằng một vài cách nhưng cách mình thấy khả thi nhất là write trực tiếp vào memcached và sau một thời gian thì write những gì có trong memcached vào db. Tuy nhiên việc này cũng có nguy hiểm, ví dụ như khi chưa kịp write từ memcached vào db mà server memcached tèo chẳng hạn.
=> Vì vậy không nên dùng cho những dữ liệu mang tính critical.
- Ưu điểm:
  • Ở mức nhỏ người ta thường dùng memcached để làm nơi lưu trữ dữ liệu chia sẻ, thường là lưu session. Cái này rất tiện lợi nhất là trong các kiểu loadbalancing đơn giản như nginx hay pound, khỏi phải lo tới vấn đề persistence session.
  • Ở mức lớn hơn một chút, người ta dùng memcached để giảm thiểu read từ db, cho những dữ liệu ít thay đổi và cần tính toán, query phức tạp, tốn tài nguyên.
  • Cao hơn nữa, người ta dùng memcached để shard db (chia nhỏ db theo chiều ngang, tức là theo row). Hiệu năng của nó vẫn còn gây tranh cãi khi so sánh với việc partition db.
 
Top