- vừa được xem lúc

Cache và ElastiCache trên AWS

0 0 20

Người đăng: Pham Hieu

Theo Viblo Asia

Bộ nhớ Cache là gì?

Cache (/ˈkæʃ/ KASH[1]) là bộ nhớ đệm chứa dữ liệu, các dữ liệu được nằm chờ yêu cầu từ ứng dụng hoặc phần cứng. Dữ liệu được chứa trong cache có thể là các thuật toán đã được thực hiện khi được yêu cầu, hoặc các dữ liệu trùng được lưu trữ ở một nơi khác. --- Theo Wikipedia ---

Tổng quan về Amazon ElastiCache

ElastiCache trên AWS hoạt động tương tự như cách mà RDS được sủ dụng để cung cấp dịch vụ CSDL quan hệ. ElastiCache sẽ cho phép người dùng "thuê" các in-memory storage như Redis hay Memcached.

Ở local, Redis hay Memcached cho phép lưu trữ dữ liệu dạng key - value trong bộ nhớ của máy tính. Điều này giúp tăng hiệu suất cũng như giảm độ trễ khi truy cập các giá trị này, tuy nhiên có thể sẽ mất nếu thiết bị bị restart. Chúng thường được dùng để lưu trữ các dữ liệu không quá quan trọng và chỉ cần sử dụng trong thời gian ngắn. Điều này làm giảm áp lực lên các CSDL.

Tương tự như các phiên bản Redis hay Memcached thường được sử dụng, ElastiCache cũng mang lại các lợi ích như giảm áp lực lên CSDL khi phải xử lý nhiều cũng như không cần lưu trữ các giá trị không cần thiết,... Bên cạnh đó, do được triển khai và quản lý bởi AWS nên ta còn thu được các lợi ích nổi bật sau:

  • Giúp ứng dụng trở thành Stateless: Các dịch vụ được quản lý bởi AWS nhìn chung hiếm khi gặp tình trạng bị sập bất ngờ dẫn đến việc mất dữ liệu lưu trong bộ nhớ, ngoài ra nó còn có thể cho phép nhiều thiết bị, instance khác nhau có thể truy cập (điều này khác với các hệ thống thông thường khi Server A dĩ nhiên sẽ không thể truy cập vào dữ liệu trên RAM của server B). Vậy nên khi một instance sập hoặc đơn giản được các requests của 1 user được điều phối thông qua 1 bộ cân bằng tải tới các instances khác nhau, hệ thống vẫn có thể đáp ứng được các requests này.
  • Amazon sẽ lo hết: Như đã nhắc đến ở phía trên, dịch vụ này được quản lý bởi AWS, AWS sẽ lo hết các công việc như OS maintenance / patching, cấu hình, tối ưu hóa, các hoạt động backups hay chuyển đổi dự phòng... Điều này giúp tiết kiệm rất nhiều công sức.
  • Cân nhắc về chi phí và code change: Cần lưu ý rằng dịch vụ này của AWS không miễn phí, vậy nên cần quản lý chặt chẽ cũng như thiết lập các chiến lược lưu trữ hiệu quả để tối ưu chi phí cũng như tránh các chi phí phát sinh không cần thiết. Ngoài ra việc sử dụng ElastiCache có thể sẽ phức tạp hơn các cơ chế Cache trên local.

ElastiCache – Redis vs Memcached

AWS Elasticache cung cấp 2 dịch vụ chạy các ứng dụng khác nhau là Redis và Memcached. Một cách tổng quan, 2 dịch vụ này có các đặc tính như sau:

Redis

elasticache_redis

  • Được triển khai Multi-AZ, có khả năng tự động chuyển đổi dự phòng (Auto-Failover).
  • Cung cấp các Read Replicas cho phép tập trung phục vụ các thao tác đọc (tương tự RDS) và cung cấp khả năng sẵn sàng cao (high availablity).
  • Độ bền của dữ liệu được đảm bảo bằng AOF persistence.
  • Cung cấp đầy đủ các tính năng liên quan đến Backup và Restore.

Memchached

elasticache_memcached

  • Dữ liệu được phân mảnh và lưu trữ ở nhiều node khác nhau (sharding).
  • Dữ liệu không có tính bền (Non persistent).
  • Không cung cấp các tính năng liên quan đến Backup, Restore cũng như không cung cấp các tính năng liên quan đến High Availability (Replication).
  • Được triển khai theo kiến trúc Multi-threaded.

Cache Security

cache_sec

  • Tương tự như các dịch vụ AWS khác, ElastiCache hỗ trợ IAM Authentication for Redis.
  • IAM Policies trên ElastiCache chỉ được sử dụng cho AWS API-level security.
  • Đối với ElastiCache Redis AUTH:
    • Có thể cấu hình password/token khi thiết lập Redis cluster. Lớp bảo mật này được xây dựng trên IAM, không thay thế IAM.
    • Hỗ trợ mẫ hóa dữ liệu trên đường truyền sử dụng SSL.
  • Đối với Memcached:
    • Hỗ trợ SASL-based authentication.

Use cases

Cache nói chung hay ElastiCache nói riêng có thể sử dụng trong nhiều kịch bản, kiến trúc hệ thống khác nhau. Bài viết này sẽ đề cập đến 02 loại kiến trúc phổ biến nhất là DB Cache và User Session Store.

User Session Store

session_store

Một trong số những ứng dụng hay gặp nhất của các bộ nhớ Cache đó là sử dụng làm User Session Store. Trong các hệ thống Microservice hoặc được xây dựng trên các cơ chế cân bằng tải, việc đảm bảo request từ 1 người dùng sẽ luôn được thực thi bởi 1 server nhất định là điều rất phức tạp và tốn kém. Giải pháp khi làm việc với ElastiCache có thể mô tả như sau:

  • Sau khi User login vào hệ thống, ứng dụng sẽ ghi dữ liệu về Session truy cập của user đó lên ElastiCache.
  • Khi các requests tiếp theo của user đó được gửi đến instance nhất định, chúng sẽ truy cập vào ElastiCache để lấy dữ liệu Session của user, từ đó biết được các instances trước đó đã phục vụ user đó những gì và tiếp tục phục vụ tiếp user đó.

DB Cache

db_cache

Tốc độ đọc dữ liệu từ cache sẽ nhanh hơn nhiều so với từ CSDL, vậy nên đối với các nhóm dữ liệu cần đọc thường xuyên, chúng ta có thể thiết lập một ElastiCache thay vì phải cấu hình thêm một Read Replica cồng kềnh.
Kiến trúc này có thể được mô tả như sau:

  • Ứng dụng sẽ lấy dữ liệu từ ElastiCache thay vì Database, trừ khi dữ liệu không có trong ElastiCache, Ứng dụng mới lấy dữ liệu từ Database. Điều này sẽ giảm một lượng lớn tải lên Database.
  • Phương án này dù rất hiệu quả nhưng cũng yêu cầu phải thiết lập các chiến lược Revalidate Cache một cách hợp lý, do dữ liệu trong bộ nhớ Cache có thể đã bị outdate so với dữ liệu trên CSDL, nếu không được update có thể gây ra các lỗi không mong muốn.

Bình luận

Bài viết tương tự

- vừa được xem lúc

PDF Export, cẩn thận với những input có thể truyền vào

Giới thiệu. Dạo gần đây mình tình cờ gặp rất nhiều lỗi XSS, tuy nhiên trang đó lại có sử dụng dữ liệu người dùng input vào để export ra PDF.

0 0 66

- vừa được xem lúc

Giới thiệu về AWS Batch

Khi sử dụng hệ thống cloud service, điều chúng ta thường phải quan tâm đến không chỉ là hiệu suất hoạt động (performance) mà còn phải chú ý đến cả chi phí bỏ ra để duy trì hoạt động của hệ thống. Chắn hẳn là hệ thống lớn hay nhỏ nào cũng đã từng phải dùng đến những instance chuyên để chạy batch thực

0 0 143

- vừa được xem lúc

Tìm hiểu về AWS KMS

1. AWS KMS là gì. Ở KMS bạn có thể lựa chọn tạo symetric key (khóa đối xứng) hoặc asymetric key (khóa bất đối xứng) để làm CMK (Customer Master Key). Sau khi tạo key thì có thể thiết đặt key policy để control quyền access và sử dụng key.

0 0 66

- vừa được xem lúc

AWS VPC cho người mới bắt đầu

Tuần này, tôi trình bày lại những gì tôi đã học được về Virtual Private Cloud (VPC) của Amazon. Nếu bạn muốn xem những gì tôi đã học được về AWS, hãy xem Tổng quan về DynamoDB và Tổng quan về S3. VPC là gì. Những điều cần lưu ý:.

0 0 84

- vừa được xem lúc

AWS Essentials (Phần 6): Guildline SNS Basic trên AWS

Tiếp tục với chuỗi bài viết về Basic AWS Setting, chúng ta tiếp tục tìm hiểu tiếp tới SNS (Simple Notification Service). Đây là một service của AWS cho phép người dùng setting thực hiện gửi email, text message hay push notification tự động tới mobile device dựa trên event người dùng setting phía AWS

0 0 145

- vừa được xem lúc

Sử dụng Amazon CloudFront Content Delivery Network với Private S3 Bucket — Signing URLs

Trong nhiều trường hợp, thì việc sử dụng CDN là bắt buộc. Mình đã trải nghiệm với một số CDN nhưng cuối cùng mình lựa chọn sử dụng AWS CloudFront.

0 0 117