bởi Chris Gillespie vào16 THÁNG 4 NĂM 2025 trong Amazon ElastiCache , Trung cấp (200) , Hướng dẫn kỹ thuật Liên kết cố định Bình luận Chia sẻ
Amazon ElastiCache là dịch vụ được quản lý hoàn toàn, tương thích với Valkey , Memcached và Redis OSS, cung cấp hiệu suất theo thời gian thực, được tối ưu hóa về chi phí cho các ứng dụng hiện đại với khả năng đáp ứng SLA 99,99%. ElastiCache tăng tốc hiệu suất ứng dụng, mở rộng lên hàng triệu hoạt động mỗi giây với thời gian phản hồi micro giây.
Spring Boot cung cấp một cách nhanh chóng và đơn giản để xây dựng các ứng dụng dựa trên Spring Framework cấp sản xuất . Để thực hiện điều này, Spring Boot được đóng gói sẵn với các mô-đun cấu hình tự động cho hầu hết các thư viện thường được sử dụng với Spring Framework. Spring Boot nguồn mở bổ sung cấu hình tự động trên Spring Framework bằng cách tuân theo quy ước về cấu hình.
Trong bài viết này, chúng ta sẽ khám phá những điều cơ bản về tích hợp ứng dụng Spring Boot với ElastiCache để kích hoạt tính năng lưu trữ đệm.
Tổng quan về giải pháp
Spring Framework hỗ trợ triển khai bộ nhớ đệm một cách minh bạch trong ứng dụng bằng cách cung cấp một lớp trừu tượng. Mã sau đây minh họa một ví dụ đơn giản về việc thêm bộ nhớ đệm vào một phương thức bằng cách bao gồm @Cacheablechú thích. Trước khi gọi getCacheableValuephương thức, Spring Framework tìm kiếm một mục trong bộ nhớ đệm có tên myTestCachekhớp với myKeyđối số. Nếu tìm thấy mục, nội dung trong bộ nhớ đệm sẽ được trả về ngay cho người gọi và phương thức sẽ không được gọi. Nếu không, phương thức sẽ được gọi và bộ nhớ đệm sẽ được cập nhật trước khi trả về giá trị.
import org.springframework.stereotype.Component;
import org.springframework.cache.annotation.Cacheable;
@Component
public class CacheableComponent {
@Cacheable(“myTestCache”)
public String getCacheableValue(String myKey) {
// return a value, likely by performing an expensive operation
}
}
Spring Boot cung cấp các mô-đun để tự động tích hợp với một tập hợp các nhà cung cấp sử dụng quy ước qua cấu hình. Trong ví dụ sau, việc thêm hai phụ thuộc mô-đun vào tệp Maven POM của dự án sẽ triển khai bộ nhớ đệm:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
Sự spring-boot-starter-cachephụ thuộc này bổ sung bộ nhớ đệm cơ bản cho ứng dụng, trong khi spring-boot-starter-data-redisbổ sung tích hợp với Redis OSS hoặc Valkey và tuyên bố rằng theo mặc định, tất cả bộ nhớ đệm sẽ tồn tại ở đây.
Đối với các giá trị có thể cấu hình, tệp Spring Framework application.propertiesđược cập nhật. Trong ví dụ sau, địa chỉ điểm cuối của bộ đệm ElastiCache không có máy chủ được cung cấp, với tất cả các mục được lưu trong bộ đệm được cấu hình để có Thời gian tồn tại (TTL) là 10 phút:
spring.data.redis.host=cache1-XXXXX.serverless.euw2.cache.amazonaws.com
spring.cache.redis.time-to-live=10m
Tất cả các bộ đệm không có máy chủ Valkey hoặc Redis OSS đều có mã hóa trong quá trình chuyển tiếp được bật . Để cấu hình Spring Framework sử dụng mã hóa trong quá trình chuyển tiếp, chúng tôi thêm giá trị cấu hình vào application.propertiestệp:
spring.data.redis.ssl.enabled=true
Mã demo được cung cấp trong bài đăng này triển khai điều này trong một ứng dụng AWS Command Line Interface (AWS CLI) đơn giản. Chúng tôi sẽ trình bày cách xây dựng và chạy ứng dụng này trong các phần tiếp theo.
Điều kiện tiên quyết
Bạn sẽ xây dựng và chạy ứng dụng demo trên phiên bản Amazon Elastic Compute Cloud (Amazon EC2) Linux, chạy Linux từ AWS . Để tạo phiên bản EC2 và kết nối với phiên bản đó bằng Session Manager , một chức năng của AWS Systems Manager , hãy tham khảo mục Kết nối với phiên bản Amazon EC2 bằng Session Manager . Sau khi tạo phiên bản, hãy lưu ý những thông tin sau:
- ID của các mạng con cho đám mây riêng ảo (VPC) mà phiên bản EC2 của bạn đang tồn tại
- ID của nhóm bảo mật được gán cho phiên bản
- ID của phiên bản EC2
Để xây dựng ứng dụng, bạn phải có các điều kiện tiên quyết sau:
- Java 17 – Để cài đặt Java Development Kit (JDK) 17, hãy chạy sudo yum install -y java-17-amazon-corretto-develtrên phiên bản EC2 của bạn
- Maven – Để cài đặt Apache Maven , hãy chạy sudo yum install -y apache-maventrên phiên bản EC2 của bạn
Để chạy ứng dụng demo, bạn cũng cần một bộ đệm ElastiCache. Chúng tôi sẽ tạo bộ đệm này trong phần tiếp theo của bài đăng này.
Tạo bộ nhớ đệm không có máy chủ ElastiCache
Chúng tôi sử dụng tùy chọn ElastiCache Serverless vì nó cho phép bạn tạo bộ nhớ đệm trong vòng chưa đầy một phút và mở rộng dung lượng ngay lập tức dựa trên các mẫu lưu lượng truy cập ứng dụng. Chúng tôi bắt đầu với công cụ Redis OSS, sau đó nâng cấp lên Valkey để chứng minh rằng Valkey là sự thay thế trực tiếp cho Redis OSS mà không cần thay đổi các tham số hoặc mã ứng dụng. Ứng dụng demo sẽ không yêu cầu bất kỳ thay đổi bổ sung nào nếu bạn chọn sử dụng cụm ElastiCache tự thiết kế thay vì không có máy chủ.
Để tạo bộ đệm không máy chủ bằng AWS CLI, hãy chạy lệnh sau trong AWS CloudShell , thay thế <your VPC subnet IDs>bằng danh sách ID mạng con được phân tách bằng dấu phẩy cho VPC chứa phiên bản EC2 của bạn đã tạo trước đó:
aws elasticache create-serverless-cache \
–serverless-cache-name spring-boot-demo \
–engine redis \
–subnet-ids <your VPC subnet IDs>
Lấy và ghi lại địa chỉ điểm cuối cho bộ nhớ đệm:
aws elasticache describe-serverless-caches \
–serverless-cache-name spring-boot-demo \
–query “ServerlessCaches[0].Endpoint.Address”
Bộ nhớ đệm sẽ có một nhóm bảo mật. Lấy và ghi lại ID nhóm bảo mật này:
aws elasticache describe-serverless-caches \
–serverless-cache-name spring-boot-demo \
–query “ServerlessCaches[0].SecurityGroupIds”
Phiên bản EC2 và bộ nhớ đệm ElastiCache của bạn tồn tại trong cùng một VPC. Để cho phép truy cập vào bộ nhớ đệm từ phiên bản EC2, bạn phải cho phép điều này trong nhóm bảo mật ElastiCache được liên kết. Để thực hiện việc này, hãy thêm một quy tắc vào nhóm bảo mật ElastiCache cho phép truy cập vào cổng 6379 từ nhóm bảo mật phiên bản EC2:
aws ec2 authorize-security-group-ingress \
–group-id <elasticache security group> \
–protocol tcp \
–port 6379 \
–source-group <ec2 instance security group>
Tải xuống và chạy ứng dụng demo
Trên phiên bản EC2 của bạn, hãy chạy các lệnh sau:
git clone https://github.com/aws-samples/amazon-elasticache-samples.git
cd blogs/spring-boot-demo
Sử dụng trình soạn thảo ưa thích của bạn trên phiên bản Linux, cập nhật src/main/resources/application.propertiestệp để bao gồm địa chỉ điểm cuối cho bộ spring-boot-demonhớ đệm. Ví dụ:
spring.data.redis.host=spring-boot-demo-XXXXX.serverless.euw2.cache.amazonaws.com
Bây giờ hãy chạy ứng dụng demo bằng lệnh sau:
mvn spring-boot:run
Ứng dụng demo sẽ được xây dựng và chạy. Bạn sẽ thấy đầu ra trên bảng điều khiển. Một ví dụ được hiển thị trong ảnh chụp màn hình sau.
Đầu ra cho thấy trong 100 lần thử gọi getCacheableValuephương thức, lần đầu tiên là lỗi bộ nhớ đệm, khiến phương thức được gọi. 99 lần thử tiếp theo là lỗi bộ nhớ đệm, trả về giá trị từ bộ nhớ đệm mà không gọi phương thức. Bạn có thể chạy lại ứng dụng demo và thấy rằng hiện có 100 lỗi bộ nhớ đệm và 0 lỗi (bộ nhớ đệm vẫn được điền từ lần chạy trước).
Nâng cấp bộ nhớ đệm lên Valkey
Valkey là kho dữ liệu khóa-giá trị mã nguồn mở, trong bộ nhớ, hiệu suất cao, được thiết kế để thay thế ngay cho Redis OSS. Bộ nhớ đệm Elasticache Redis OSS hiện có có thể được nâng cấp tại chỗ để sử dụng công cụ Valkey bằng cách làm theo một quy trình đơn giản.
Bộ nhớ đệm sẽ có phiên bản chính. Lấy và lưu ý giá trị này:
aws elasticache describe-serverless-caches \
–serverless-cache-name spring-boot-demo \
–query “ServerlessCaches[0].MajorEngineVersion”
Bắt đầu nâng cấp lên Valkey:
aws elasticache modify-serverless-cache \
–serverless-cache-name spring-boot-demo \
–engine valkey \
–major-engine-version <major engine version>
Bộ nhớ đệm sẽ tiếp tục hoạt động trong suốt quá trình nâng cấp. Bạn có thể chạy lại ứng dụng demo mvn spring-boot:runbất kỳ lúc nào để thấy kết quả tương tự như khi sử dụng bộ nhớ đệm Redis OSS.
Chúng ta có thể kiểm tra trạng thái nâng cấp bằng lệnh sau:
aws elasticache describe-serverless-caches –serverless-cache-name spring-boot-demo –query “ServerlessCaches[0].Status”
Khi trạng thái thay đổi từ modifyingthành available, quá trình nâng cấp sẽ hoàn tất.
Chạy ứng dụng demo thêm một lần nữa với mvn spring-boot:run. Bạn sẽ thấy kết quả tương tự như khi sử dụng bộ đệm Redis OSS. Valkey là giải pháp thay thế trực tiếp cho Redis OSS—không cần thay đổi mã ứng dụng hoặc thư viện để sử dụng Valkey.
Dọn dẹp
Để tránh phát sinh chi phí trong tương lai, bạn có thể xóa các tài nguyên tính phí được tạo trong bài đăng này.
Xóa bộ nhớ đệm không có máy chủ ElastiCache:
aws elasticache delete-serverless-cache –serverless-cache-name spring-boot-demo
Xóa phiên bản EC2:
aws ec2 terminate-instances –instance-ids <your EC2 instance ID>
Phần kết luận
Trong bài đăng này, chúng tôi đã chỉ cách tích hợp ứng dụng Spring Boot với ElastiCache để bật bộ nhớ đệm. Bạn có thể chọn giữa Redis OSS và Valkey engine mà không cần phải thực hiện bất kỳ thay đổi nào về mã ứng dụng hoặc phụ thuộc vào mô-đun.
Việc thêm bộ nhớ đệm vào ứng dụng của bạn bằng ElastiCache có thể tăng tốc hiệu suất ứng dụng, cho phép mở rộng lên hàng triệu hoạt động mỗi giây với thời gian phản hồi micro giây.
Để bắt đầu sử dụng ElastiCache, hãy xem Hướng dẫn sử dụng Amazon ElastiCache .
Về tác giả
Chris Gillespie là Kiến trúc sư giải pháp cao cấp tại Anh. Anh dành phần lớn thời gian làm việc với những khách hàng “sinh ra trên đám mây” năng động. Ngoài giờ làm việc, anh dành thời gian cho gia đình và cố gắng rèn luyện sức khỏe.