You are on page 1of 2

+ cache: thường có dạng key-value

****
Hashmap trong code
Key-value database (redis, memcache,...)
File (với key là filename)
**** 3 toán tử: set, get và delete: và có thông tin "time to live": time để bỏ
value này khỏi cache
****
Tốn nhiều time / resource
Kết quả dùng lại được nhiều lần
****
client mode: Một phần quyền kiểm soát (do rắc rối khi gặp lỗi)
**
Đặt HTTP header để control cache của request (hên xui)
Configuration cache HTTP request trong lib
Implement cache chủ động vào local storage
**
Proxy / LB: CDN, Reverse proxy, Gateway,...
**
chủ yếu phục vụ content tĩnh cho số lượng lớn người dùng.
Phần lớn quyền kiểm soát:
Đặt HTTP header để control cache của request
Configuration cache HTTP request trên các server trung gian
Mô tả: Phần lớn quyền kiểm soát là do việc tương tác với cache có thể
thực hiện 1 cách tự động, tuy nhiên sẽ tốn công sức và bị phụ thuộc vào bên thứ 3
khi muôn giải quyết các vấn đề xảy ra.
Application: Caching phục vụ content động cho số lượng lớn người dùng.
**
Configuration các addon / plugin có sẵn
Implement cache chủ động
Mô tả: Toàn quyền kiểm soát là việc chúng ta chủ động quyết định cache
cái gì, ở đâu và dễ dàng tương tác, chỉnh sửa,... hệ thống cache do hệ thống này
hoàn toàn vô hình với người dùng và ít bị phụ thuộc vào bên thứ 3.
**
Database: là lớp cache tại database: Caching phục vụ truy xuất dữ liệu.
**
Config query cache
Config memory usage
**
OS / Kernel: là lớp cache của OS/ Kernel xuất hiện tại mọi thành phần của hệ
thống: Caching phục vụ xử lý dữ liệu.
***
Level 1: Monolith webpage with single server
+ query cache: lock database, giảm hiệu suất
+ cache html, css, js template
+ cache page: disk IO nhiều khi > redis
+ Serve media bằng CDN: image, video (upload media ra server riêng: s3) và
CDN(free: cloudfare và service)
Level 2: Monolith webpage with multiple server
**
Chạy trên nhiều server, do đó vấn đề sai khác data giữa các server nếu dùng
file cache cần phải giải quyết.
Lượng traffic cao nên phải focus mạnh vào cache toàn trang để giảm gánh nặng
của application và DB
Lượng data lớn hơn nhưng cấu hình DB thì nhỏ
Có hệ thống proxy / LB đứng phía trước.
**
+ Cache Data Object và HTML Template bằng 3rd storage
+ Cache opcode bằng memory: codebase lớn
+ Cache thêm static asset trên CDN
+ Cache toàn trang trên Reverse Proxy: phần tĩnh(nginx, haproxy, động sử dụng
ajax => tăng CCU (concurent users)
**
Level 3: Web API with SPA

SPA chứa toàn bộ html, js, css của ứng dụng và có thể triển khai dạng tĩnh
Web API chỉ chứa data, do đó application không mất resource để render html
template
Client phải gọi nhiều request tới server hơn
Việc tách biệt các thành phần stateless, stateful giúp ứng dụng dễ dàng triển
khai lên container hơn.
+ Tiếp tục cache data object với 3rd storage
+ Cache static asset trên CDN
+ Cache http response trên client: Vì client phải gọi nhiều request tới server
hơn, do đó lúc này các bạn sẽ cần quan tâm nhiều hơn tới trải nghiệm người dùng và
phải cải thiện nó thông qua việc can thiệp vào client cache thông qua HTTP header.
**
Level 4: Microservices
+ Cache database index và hot data
**
Tối ưu index size
Capacity planning
Optimize DB config
**
+ Cache Data Object: 3rd storage (redis, memcache -- remote) và memory
(hashmap, variable --- app instance).
+ Cache API response trên reverse proxy và CDN
+ Cache chủ động Data Object trên client

You might also like