1. Baseline Performance.
Đây là những thông số về hiệu suất cơ bản của Amazon S3, bao gồm khả năng tự động mở rộng để xử lý số lượng yêu cầu lớn và thời gian đáp ứng trong khoảng từ 100-200ms. Một ứng dụng của bạn có thể đạt được ít nhất 3.500 yêu cầu PUT/COPY/POST/DELETE hoặc 5.500 yêu cầu GET/HEAD mỗi giây trên mỗi tiền tố (prefix) trong một bucket. Không có giới hạn về số lượng tiền tố trong một bucket.
Ví dụ, nếu bạn có 4 tiền tố là “/folder1/sub1/”, “/folder1/sub2/”, “/1/” và “/2/” và phân bố yêu cầu đọc đều cho cả 4 tiền tố, bạn có thể đạt được 22.000 yêu cầu mỗi giây cho yêu cầu GET và HEAD.
– Multi-Part upload:
Multi-Part Upload là một tính năng trong Amazon S3 cho phép người dùng tải lên các file lớn, chẳng hạn như video hoặc cơ sở dữ liệu, một cách nhanh chóng và hiệu quả hơn. Điều này đặc biệt quan trọng đối với các file có kích thước lớn hơn 100MB, và bắt buộc sử dụng cho các file có kích thước lớn hơn 5GB.
Multi-Part Upload cho phép chia file thành các phần nhỏ hơn, gọi là các phần, rồi tải lên S3. Việc này giúp tối ưu hóa việc tải lên và giúp tăng tốc độ tải lên bằng cách cho phép chúng tôi tải lên các phần đó một cách song song. Nó cũng đảm bảo rằng các phần có thể được tải lên lại một cách độc lập nếu một phần của quá trình tải lên gặp sự cố. Điều này giúp giảm thiểu khả năng mất dữ liệu hoặc thất bại của quá trình tải lên.
Với Multi-Part Upload, Amazon S3 cung cấp khả năng tải lên các file lên đến 5TB.
– S3 Transfer Acceleration.
S3 Transfer Acceleration là một tính năng của Amazon S3 cho phép tăng tốc độ truyền tải dữ liệu lên đến 300% so với cách truyền tải thông thường. Thay vì truyền tải dữ liệu trực tiếp đến Amazon S3 bucket ở khu vực địa lý được chỉ định, S3 Transfer Acceleration sử dụng mạng lưới đường truyền riêng để truyền tải dữ liệu tới địa điểm gần nhất với người dùng (AWS edge location), và sau đó chuyển tiếp dữ liệu đến S3 bucket ở khu vực đích.
S3 Transfer Acceleration hoạt động bằng cách sử dụng các edge location phân tán trên toàn cầu, cho phép dữ liệu được truyền tải với tốc độ nhanh hơn đến các bucket S3 ở bất kỳ đâu trên thế giới. Điều này cải thiện tốc độ truyền tải đặc biệt khi truyền tải dữ liệu qua các khu vực địa lý xa nhau hoặc khi có nhiều người truy cập cùng lúc. S3 Transfer Acceleration cũng hỗ trợ cho phương pháp truyền tải đa phần, giúp cải thiện hiệu suất và tốc độ truyền tải dữ liệu.
Sử dụng S3 Transfer Acceleration không yêu cầu bất kỳ thay đổi nào về ứng dụng hoặc cấu hình của người dùng. Có thể kích hoạt S3 Transfer Acceleration cho các bucket S3 đã có hoặc mới được tạo ra thông qua bảng điều khiển AWS hoặc API.
2. S3 Performance – S3 Byte-Range Fetches.
Đây là các kỹ thuật để tăng tốc độ tải xuống (download) từ Amazon S3.
Để tăng tốc độ tải xuống, có thể sử dụng các byte range requests. Thay vì tải xuống toàn bộ file, ta có thể chỉ yêu cầu tải xuống các phần của file theo các khoảng byte range cụ thể. Việc này có thể giúp tăng tốc độ tải xuống, đặc biệt là đối với các file có kích thước lớn.
Ngoài ra, cũng có thể sử dụng kỹ thuật xử lý lỗi để đảm bảo rằng nếu quá trình tải xuống bị gián đoạn, thì ta có thể tiếp tục quá trình tải xuống từ chỗ đã bị gián đoạn, chứ không cần phải bắt đầu lại quá trình tải xuống từ đầu.
Cả hai kỹ thuật này có thể được sử dụng để tăng tốc độ tải xuống từ Amazon S3.
Range GET là tính năng cho phép người dùng chỉ yêu cầu một phần của đối tượng S3 thay vì toàn bộ đối tượng. Ví dụ, nếu bạn muốn chỉ tải xuống một phần đầu của một tập tin lớn thay vì toàn bộ tập tin, bạn có thể yêu cầu chỉ tải xuống các byte đầu tiên của tập tin. Điều này giúp giảm thời gian tải xuống và băng thông mạng cần thiết, và cũng là một cách để phục vụ dữ liệu nhanh hơn cho người dùng của bạn.
Tính năng Range GET cũng có thể được sử dụng để tải xuống một phần của đối tượng S3 theo từng phần khác nhau. Điều này cũng giúp giảm tải cho máy chủ của bạn khi phục vụ dữ liệu cho nhiều người dùng cùng một lúc.
3. SSE-KMS Limitation.
SSE-KMS (Server-Side Encryption with AWS Key Management Service) là một phương pháp mã hóa dữ liệu trên Amazon S3, trong đó khóa mã hóa được quản lý bởi KMS (AWS Key Management Service). Tuy nhiên, khi sử dụng SSE-KMS, người dùng có thể bị giới hạn bởi một số hạn chế của KMS.
Khi người dùng tải lên dữ liệu, S3 sẽ gọi API GenerateDataKey của KMS để tạo khóa dữ liệu. Khi người dùng tải xuống dữ liệu, S3 sẽ gọi API Decrypt của KMS để giải mã dữ liệu. Việc sử dụng SSE-KMS sẽ đếm vào hạn mức yêu cầu mỗi giây của KMS (5500, 10000 hoặc 30000 yêu cầu/giây tùy thuộc vào khu vực sử dụng). Điều này có thể gây ra hạn chế về tốc độ xử lý khi sử dụng SSE-KMS.
Tuy nhiên, người dùng có thể yêu cầu tăng hạn mức yêu cầu của KMS thông qua Service Quotas Console. Bằng cách tăng hạn mức yêu cầu, người dùng có thể giải quyết được giới hạn về tốc độ xử lý khi sử dụng SSE-KMS trên Amazon S3.