Amazon ElastiCache

Amazon ElastiCache là một dịch vụ lưu trữ dữ liệu trong bộ nhớ đệm được quản lý hoàn toàn bởi Amazon Web Services (AWS). Nó cho phép người dùng dễ dàng triển khai và quản lý các cụm có khả năng mở rộng và hiệu suất cao có thể được sử dụng để lưu trữ và truy xuất dữ liệu trong thời gian thực. ElastiCache hỗ trợ hai cơ sở dữ liệu trong bộ nhớ đệm mã nguồn mở phổ biến: Redis và Memcached.

Redis là một cơ sở dữ liệu key-value phổ biến được biết đến vì tính linh hoạt và hỗ trợ cho các loại dữ liệu nâng cao như các tập hợp được sắp xếp và dữ liệu địa lý. Redis cũng hỗ trợ các tính năng như pub/sub (publish/subscribe), pipeline, và Lua scripting. Trong khi đó, Memcached là một cơ sở dữ liệu key-value đơn giản hơn, tập trung vào việc lưu trữ dữ liệu truy cập nhanh và phân phối đồng đều.

Redis (Cluster mode enabled)
Redis (Cluster mode disabled)

Use case

Lazy Loading / Cache-Aside / Lazy Population

  • Query từ RDS lâu có thể cache
  • Chỉ các data được request mới cache
  • Node failure không ảnh hưởng vì chỉ cần get lại từ RDS
  • Khi cache miss có thể bị ảnh hưởng tới trải nghiệm của user do cần check cahce -> query RDS -> save cache
  • Có thể outdate khi data trong db đã update

Write Through – Add or Update cache when database is updated

  • Khi có action thay đổi RDS thì cũng update cache luôn
  • Data trong cache luôn update
  • Giảm thời gian user read do luôn có cache
  • Có thể có lỗi khi DB chưa được update lần nào (cache miss khi user get data) -> cần implement Lazy Loading
  • Cache churn: Nhiều lần update db nhưng data được read ít

Cache Evictions and Time-to-live (TTL)

Action xoá data trong cache sảy ra trong các trường hợp sau

  • Xoá item cụ thể trong cache
  • Memory đầy, item không được dùng gần đây (LRU, Least Recently Used)
  • Set TTL cho 1 item

TTL thường sử dụng trong các trường hợp như bảng điểm, comment, activity stream, TTL có thể set từ vài giây tới vài ngày.

Trường hợp xoá thường xuyên do memory đầy cần cân nhắc scale up hoặc out

Redis

  • Support Read Replica, Shard, Backup/Restore/Multi AZ
  • Support Sets và Sorted Sets
  • Khi enable Encrypt in transit, phải chỉ định Access control
    • Redis AUTH default user access: Sử dụng Token để connect
    • User group access control list

Cluster mode

  • Disabled
    • Có 1 Shard, trong đó có 1 Node chính, 0-5 Replica
    • Node chính R/W, các node khác chỉ Read
    • Asynchronous Replication
    • Khi scale size sẽ tạo node group mới thay thế node group cũ, DNS sẽ được trỏ đến node mới
    • Không support Auto Scaling
  • Enable
    • Sử dụng khi cần Scale Performance khi Write
    • Nhiều Shard, mỗi Shard max 5 Replica, số lượng Replica trong mỗi Shard giống nhau, tổng Shard * Replica <= 500
    • Multi-AZ enable mặc định
    • Support Auto Scaling
      • Target Tracking và Scheduled
      • Nên sử dụng Configuration Endpoint để connect tới toàn bộ Cluster

Endpoint

  • Standalone Node
    • 1 Endpoint cho Read/Write
  • Cluster Mode Disabled
    • Primary Endpoint – Endpoint cho Read/Write cho toàn bộ Cluster
    • Reader Endpoint – Endpoint cho Read cho toàn bộ Cluster
    • Node Endpoint – Endpoint cho Read của 1 Node
  • Cluster Mode Enabled Cluster
    • Configuration Endpoint – Endpoint cho Read/Write cho toàn bộ Cluster
    • Node Endpoint – Endpoint cho Read của 1 node

Memcached

  • Support Multi-threaded
Bài viết này được đăng trong AWS và được gắn thẻ , .

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *