Không có gì mới S3 S3 Tăng hiệu suất yêu cầu Hiệu suất thông báo


12

Vào ngày 17 tháng 7 năm 2018 đã có một thông báo chính thức của AWS giải thích rằng không còn cần phải chọn ngẫu nhiên các ký tự đầu tiên của mọi khóa đối tượng S3 để đạt được hiệu suất tối đa: https://aws.amazon.com/about-aws/whats-new / 2018/07 / amazon-s3-thông báo-tăng-yêu cầu-tỷ lệ hiệu suất /

Amazon S3 công bố hiệu suất tỷ lệ yêu cầu tăng

Đăng vào ngày 17 tháng 7 năm 2018

Amazon S3 hiện cung cấp hiệu suất tăng để hỗ trợ ít nhất 3.500 yêu cầu mỗi giây để thêm dữ liệu và 5.500 yêu cầu mỗi giây để truy xuất dữ liệu, điều này có thể tiết kiệm thời gian xử lý đáng kể mà không phải trả thêm phí. Mỗi tiền tố S3 có thể hỗ trợ các tỷ lệ yêu cầu này, giúp đơn giản để tăng hiệu suất đáng kể.

Các ứng dụng chạy trên Amazon S3 hôm nay sẽ được cải thiện hiệu suất này mà không có thay đổi và khách hàng xây dựng các ứng dụng mới trên S3 không phải thực hiện bất kỳ tùy chỉnh ứng dụng nào để đạt được hiệu suất này. Sự hỗ trợ của Amazon S3 cho các yêu cầu song song có nghĩa là bạn có thể chia tỷ lệ hiệu suất S3 của mình theo hệ số của cụm tính toán mà không cần thực hiện bất kỳ tùy chỉnh nào cho ứng dụng của bạn. Hiệu suất tỷ lệ trên mỗi tiền tố, do đó bạn có thể sử dụng song song bao nhiêu tiền tố mà bạn cần để đạt được thông lượng cần thiết. Không có giới hạn về số lượng tiền tố.

Việc tăng hiệu suất tốc độ yêu cầu S3 này sẽ loại bỏ mọi hướng dẫn trước đây để ngẫu nhiên hóa các tiền tố đối tượng để đạt được hiệu suất nhanh hơn. Điều đó có nghĩa là bây giờ bạn có thể sử dụng các mẫu đặt tên hợp lý hoặc tuần tự trong đặt tên đối tượng S3 mà không có bất kỳ hàm ý hiệu suất nào. Cải tiến này hiện có sẵn trong tất cả các Khu vực AWS. Để biết thêm thông tin, hãy truy cập Hướng dẫn dành cho nhà phát triển Amazon S3.

Điều đó thật tuyệt, nhưng nó cũng khó hiểu. Nó cho biết Mỗi tiền tố S3 có thể hỗ trợ các tỷ lệ yêu cầu này, giúp đơn giản để tăng hiệu suất đáng kể

Nhưng vì các tiền tố và dấu phân cách chỉ là đối số cho GET Bucket (List Objects)API khi liệt kê nội dung của các nhóm, làm thế nào có thể có ý nghĩa khi nói về hiệu suất truy xuất đối tượng "trên mỗi tiền tố". Mọi cuộc gọi để GET Bucket (List Objects)có thể chọn bất kỳ tiền tố và dấu phân cách nào nó muốn, vì vậy tiền tố không phải là một thực thể được xác định trước.

Ví dụ: nếu xô của tôi có các đối tượng này:

a1/b-2
a1/c-3

Sau đó, tôi có thể chọn sử dụng "/" hoặc "-" làm dấu phân cách của mình bất cứ khi nào tôi liệt kê nội dung nhóm, vì vậy tôi có thể coi tiền tố của mình là

a1/ 

hoặc là

a1/b-
a1/c-

Nhưng vì GET ObjectAPI sử dụng toàn bộ khóa, nên khái niệm về một tiền tố hoặc dấu phân cách cụ thể không tồn tại để truy xuất đối tượng. Vì vậy, tôi có thể mong đợi 5.500 req / giây vào a1/hoặc thay thế 5.500 req / giây vào a1/b-và 5.500 trên a1/c-?

Vì vậy, ai đó có thể giải thích ý nghĩa của thông báo khi nó gợi ý một mức hiệu suất cụ thể (ví dụ +5.500 yêu cầu mỗi giây để truy xuất dữ liệu) cho "mỗi tiền tố s3" không?


Tôi nghĩ rằng tôi có một lời giải thích cho điều này, nhưng đang tìm kiếm để xem liệu tôi có thể tìm thấy một số xác nhận. Tôi nghi ngờ nó phải làm với thuật toán phân chia chỉ mục, là thuật toán tự động và dựa trên tải lưu lượng ... và từ vựng thay vì dựa trên hàm băm.
Michael - sqlbot

Câu trả lời:


9

Những gì thực sự được đề cập ở đây như một tiền tố dường như là một sự đơn giản hóa thực sự đề cập đến từng phân vùng của chỉ số xô. Chỉ mục là từ vựng, do đó việc phân tách xảy ra dựa trên các ký tự hàng đầu trong khóa đối tượng. Do đó, nó được gọi là tiền tố .

S3 quản lý các phân vùng chỉ mục một cách tự động và minh bạch, do đó, định nghĩa chính xác của "tiền tố" ở đây thực sự không chính xác: đó là "bất cứ điều gì S3 quyết định là cần thiết để hỗ trợ khối lượng công việc của nhóm bạn." S3 chia các phân vùng chỉ mục để đáp ứng với khối lượng công việc, vì vậy hai đối tượng có thể có cùng "tiền tố" ngày hôm nay có thể có các tiền tố khác nhau vào ngày mai, tất cả được thực hiện trong nền.

Ngay bây giờ, a1 / a -... và a1 / b -... và a1 / c -... có thể đều là một tiền tố duy nhất. Nhưng ném đủ lưu lượng truy cập vào nhóm và S3 có thể quyết định phân chia phân vùng, để ngày mai, a1 / a- và a1 / b- có thể nằm trong một tiền tố, trong khi a1 / c- có thể nằm trong tiền tố của chính nó. (Nghĩa là, các khóa <a1 / c- nằm trong một phân vùng, trong khi các khóa> = a1 / c- hiện nằm trong một phân vùng khác).

Ở đâu và khi nào và cụ thể ngưỡng nào kích hoạt hành vi phân tách không được ghi lại, nhưng dường như nó chỉ liên quan đến số lượng yêu cầu, chứ không phải số lượng hoặc kích thước của các đối tượng. Trước đây, các phân vùng này được giới hạn ở vài trăm yêu cầu mỗi giây và điều đó đã được tăng lên đáng kể.


1
Rất thú vị và đáng tin cậy. Tuy nhiên, vì các tiền tố là động dựa trên tải, chắc chắn điều đó làm cho việc gán bất kỳ số đo hiệu suất cụ thể nào trên mỗi tiền tố là vô nghĩa. Nếu tiền tố của thùng của bạn thay đổi linh hoạt, thì không có thước đo hiệu suất đáng tin cậy. Hoặc có lẽ tôi có thể suy luận rằng các tiền tố trong lý thuyết nên thay đổi linh hoạt cho đến khi tôi có thể mong đợi 5.500 req / giây trên mỗi Đối tượng S3?
John Rees

1
Thước đo hiệu suất vẫn hữu ích vì tỷ lệ xô chỉ có xu hướng đi theo một hướng - lên, không xuống. Sự vô lý rõ ràng của việc chia tỷ lệ cho một đối tượng trên mỗi phân vùng dường như biến mất khi bạn nhận ra AWS sẽ kiếm được bao nhiêu tiền nếu bạn trả 5k + req / s cho mỗi đối tượng.
Michael - sqlbot

1
Có, tôi đã có một chút phạm vi với một đối tượng trên mỗi phân vùng. :-) Tuy nhiên, nghiêm túc hơn, tôi đoán điều này có nghĩa là tôi có thể mong đợi rằng nếu 10000 đối tượng của tôi chỉ chứa 10 đối tượng phổ biến, thì hy vọng S3 cuối cùng sẽ phân vùng lại cho đến khi mỗi trong số 10 có thể nhận được 5k reqs / giây trong khi các đối tượng khác giảm dần trong một vài phân vùng lớn Có vẻ hợp lý?
John Rees

2
Tôi có niềm tin rằng S3 sẽ thích nghi với khối lượng công việc, vâng. Hướng dẫn chính thức cho lưu lượng truy cập cao ở phía yêu cầu, như trước đây, sử dụng CloudFront kết hợp với S3, vì CloudFront được phân phối một cách chính thức và sẽ lưu trữ các đối tượng ở các cạnh gần nhất mà người xem yêu cầu chúng. Việc định giá sao cho việc thêm CloudFront vào S3 thường không ảnh hưởng đến chi phí chung (vì S3 không lập hóa đơn cho bất kỳ băng thông nào khi yêu cầu đến từ CloudFront để phục vụ lỗi bộ nhớ cache).
Michael - sqlbot

Cảm ơn Michael. Thực sự tốt câu trả lời cẩn thận nhiều đánh giá cao.
John Rees
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.