thắc mắc Lựa chọn giữa local cache và Distributed cache

  • Người tạo chủ đề Người tạo chủ đề gaconkute
  • Ngày bắt đầu Ngày bắt đầu

gaconkute

Senior Member
Như các bác biết, có 2 loại cache là local cache như HashMap và Distributed Cache là Redis. 1 : Khi nào thật sự nên đẩy hết data lên cache. Ví dụ : Thông tin địa chỉ phường quận huyện xã thành phố chắc chả bao giờ thay đổi, thôi để lên cache đi. Vậy tradeoff ở đây so với lưu DB là gì. 2 : Khi nào các bác chọn Local cache, khi nào chọn redis.
 
Downside từng cái phổ biến nhất là (theo ý kiến cá nhân) :
+ In-process cache:
Data inconsistency
Memory issue, dẫn đến ảnh hưởng cả cái application

+ Distributed:
Network latency + object serialization
Pricing
 
Downside từng cái phổ biến nhất là (theo ý kiến cá nhân) :
+ In-process cache:
Data inconsistency
Memory issue, dẫn đến ảnh hưởng cả cái application

+ Distributed:
Network latency + object serialization
Pricing
.
 
Sửa lần cuối:
Như các bác biết, có 2 loại cache là local cache như HashMap và Distributed Cache là Redis. 1 : Khi nào thật sự nên đẩy hết data lên cache. Ví dụ : Thông tin địa chỉ phường quận huyện xã thành phố chắc chả bao giờ thay đổi, thôi để lên cache đi. Vậy tradeoff ở đây so với lưu DB là gì. 2 : Khi nào các bác chọn Local cache, khi nào chọn redis.
1. In memory cache:
Good
- fast
- no hotkey
- easy to cache object (i.e no explicit serialization)
Bad
- purge/update cache
- self-handling race condition
- no data persistence
- cold cache (neu implement khong tot se tang load cho downstream)
- self-handling data eviction (cai nay kho? vl)
- local timestamp is unreliable if data requires timing manners.
- data persistence option

2. Remote cache
Good
- purge/update cache
- native race condition handling
- native data eviction handling
- warm up
Bad
- slower
- hotkey
- serialization

Con 1 cach Hybrid nua, dung ca 2 layers, kho implement + maintain.

Sorry minh dung may cong ty khong co unikey.
 
mình nghĩ microservice thì distributed cache, còn monolithic thì memory cache. chứ ko có lý do gì mà lại đi dùng distributed cache khi triển khai monolithic cả
 
mình nghĩ microservice thì distributed cache, còn monolithic thì memory cache. chứ ko có lý do gì mà lại đi dùng distributed cache khi triển khai monolithic cả
Distributed cache thì reboot app nó ko bị mất. Cache to thì kiểu gì cũng phải distributed thôi fen,

Local cache là mấy cái db connection pool hoặc http client, expensive creation, data cache thì redis mongo ...

Cache là chủ đề ko dễ đâu
 
Mấu chốt của việc chọn local hay distributed, đó là việc data cache có được share giữa các instance ko.
Còn mấy cái như size, hay persistance là thứ phụ.
Thấy bác nói đúng. Hôm bên công ty cũ dùng cả 2. Distribute cache thấy mấy thím trên đây xài redis cho cache aside nhiều. Thật sự Distributed cache phải lm write/read throu thì mới phát huy sức mạnh
 
Mấu chốt của việc chọn local hay distributed, đó là việc data cache có được share giữa các instance ko.
Còn mấy cái như size, hay persistance là thứ phụ.
Đúng rồi, mấy bác cứ thử chạy 1 cái app có 10 instances rồi sẽ hiểu khi nào dùng cái nào, và khi nào dùng cả 2 cái.
 
Downside từng cái phổ biến nhất là (theo ý kiến cá nhân) :
+ In-process cache:
Data inconsistency
Memory issue, dẫn đến ảnh hưởng cả cái application

+ Distributed:
Network latency + object serialization
Pricing
cái 1 ns chuẩn n gọi là cache invalidation. Đây là 1 trong 2 vấn đề khó nhất của khoa học máy tính
 
monolithic h n cho lên k8s cũng scale thành mấy instance thì cũng chả còn là monolithic nữa.
monolith hay microsvc thì nó là architecture style, liên quan gì đến k8s hay multi-instance đâu. microsvc đâu cần k8s, và microsvc cũng ko nhất thiết phải Multi-instance. Ngược lại cũng vậy, monolith đâu có giới hạn gì đâu?
 

Thống kê chủ đề

Ngày tạo
gaconkute,
Người trả lời cuối
Yurisha,
Trả lời
15
Lượt xem
2.469
Quay lại
Lên đầu trang