[DOTNETVN] Chém gió để giải ngố về Caching
Hiện hay hầu hết các hệ thống đều dùng caching để tăng tốc ứng dụng. Hôm nay mình sẽ trình bày ngắn gọn về caching dữ liệu để giải ngố cho anh em nào chưa biết hoặc còn mơ hồ.
Caching dữ liệu là gì? tại sao các hệ thống từ nhỏ đến lớn đều có. Mình nghĩ hầu hết anh em đều đã nghe qua về cache và cũng đã từng làm việc với cache nhưng bạn đã thật sự hiểu rõ về nó? Cache có bao nhiêu loại? cách sử dụng cũng như ưu nhượt điểm thế nào?. Các bạn đọc tiếp phía dưới nhé mình sẽ trình bày hết sức ngắn ngọn nhưng vẫn sẽ đầy đủ kiến thức để giúp các bạn giải ngố về caching, mình thường hay gọi caching là vũ khí hàng đầu trong các loại vũ khí của anh em developers để cải thiện hiệu suất cũng như tăng tốc ứng dụng.
1. Caching là gì?
Caching là một trong những kỹ thuật được sử dụng phổ biến trong việc phát triển ứng dụng. Việc sử dụng caching được cho là đơn giản nhưng lại cực kỳ hiệu quả trong việc cải thiện hiệu suất của ứng dụng. Cách hoạt động là cho phép bạn tái sử dụng lại dữ liệu mà bạn đã tính toán trước đó, chính vì vậy nên ở các lần truy xuất tiếp theo bạn có thể sử dụng lại kết quả đó mà không cần phải tính toán lại.
2. Có bao nhiêu kỹ thuật Caching?
Giờ thì các bạn có thể hiểu sơ lượt caching là gì rồi đúng không nào. Vậy bạn có biết rằng có bao nhiu loại caching và cách sử dụng của các loại này chưa. Caching có 3 loại như bên dưới nhé:
2.1 In-Memmory Cache
In-Memmory Cache có nghĩa là bạn sẽ lưu lại dữ liệu ngay trong bộ nhớ RAM của máy tính / máy chủ. Loại cache này có tốc độ nhanh nhất trong 3 loại vì như các bạn đã biết thì tốc độ truy xuất dữ liệu trên RAM là số 1.
Ưu điểm: Rất là bá đạo về tốc độ luôn và rất là dễ dể code hehe.
Nhượt điểm: Tốn bộ nhớ RAM có thể khiến server của bạn ngủm củ tỏi ngay nếu bạn lạm dụng để cache quá nhiều data. Có thể giải quyết bằng cách bỏ tiền để nâng cấp bộ nhớ cho máy chủ. Một nhượt điểm nữa là dữ liệu của em nó sẽ mất khi máy chủ bị restart.
2.2 Persistent In-Process Cache
Persistent In-Process Cache thực chất cũng là lưu dữ liệu đã tính toán trước đó trên máy chủ nhưng không lưu trực tiếp vào RAM mà nó sẽ được lưu vào một nơi nào đó như file, database...
Ưu điểm: Truy xuất nhanh nhưng không nhanh bằng cache trên RAM nhé. Đặc biệt là nó giải quyết được vấn để mất dữ liệu khi server restart bởi vì dữ liệu của bạn đã được lưu vào một nơi có thể tồn tại trên ổ cứng như là một database hoặc file.
Nhược điểm: Chậm hơn truy xuất trên RAM, code thì khó hơn rồi vì nếu quản lý đọc ghi file không tốt sẽ dẫn tới tình trạng bị lỗi.
2.3 Distributed Cache
Distributed Cache được sử dụng khi bạn muốn chia sẽ dữ liệu được cached cho nhiều nơi khác nhau cùng sử dụng. Thử tưởng tượng xem bạn có một eco system với nhiều ứng dụng nếu không có distributed cache thì làm sau bọn nó có thể dùng chung một cache data được?. Một vấn để nữa là khi bạn Scale hệ thống bằng cách sử dụng load balancing một website có thể host trên nhìu máy khác nhau để đảm bảo hệ thống không bị chết, nếu một máy chết thì vẫn còn máy khác chạy được và Distributed cache sẽ rất hữu dụng vì các máy chủ web có thể lấy được data từ 1 nguồn cache duy nhất.
Ưu điểm: Khắc phục được nhược điểm có 2 loại phía trên. Cache data ở một nơi để nhiều nơi khác có thể truy xuất.
Nhượt điểm: Chậm hơn 2 loại kia vì bạn phải dùng 1 cache server riêng và dụng một số phương thức như http, socket...để load remote data rất may hiện nay có rất nhìu Distributed cached được build sẵn bạn có thể setup và sử dụng dễ dàng or dùng cloud service luôn (Azure, AWS có tất). Bạn có thể tham khảo về Redis cache, SQL Cache, NCache...
Anh Em có thể tham khảo về cách xây dựng cache của NET CORE TẠI ĐÂY nhé.
Xong ngắn gọn thế thôi. Mình sẽ giành thời gian để hướng dẫn các bạn tạo và sử dụng các loại cache trên bằng công nghệ .NET CORE thông qua video sau nhé.