17 июля 2018 года было опубликовано официальное объявление AWS, объясняющее, что больше нет необходимости рандомизировать первые символы каждого ключа объекта S3 для достижения максимальной производительности: https://aws.amazon.com/about-aws/whats-new / 2018/07 / амазонка-s3-объявляет-запрос увеличенной скорости производительность /
Amazon S3 объявляет об увеличении производительности запросов
Опубликовано: 17 июля 2018
Amazon S3 теперь обеспечивает повышенную производительность для поддержки не менее 3500 запросов в секунду для добавления данных и 5500 запросов в секунду для извлечения данных, что может сэкономить значительное время обработки без дополнительной оплаты. Каждый префикс S3 может поддерживать эти скорости запросов, что позволяет значительно повысить производительность.
Приложения, работающие на Amazon S3 сегодня, получат это повышение производительности без изменений, и пользователям, создающим новые приложения на S3, не нужно настраивать приложения для достижения этой производительности. Поддержка Amazon S3 для параллельных запросов означает, что вы можете масштабировать производительность S3 в соответствии с вашим вычислительным кластером, не внося никаких изменений в свое приложение. Производительность зависит от префикса, поэтому вы можете использовать столько префиксов, сколько вам нужно параллельно для достижения требуемой пропускной способности. Нет ограничений на количество префиксов.
Это повышение производительности по частоте запросов S3 устраняет любые предыдущие указания по рандомизации префиксов объектов для достижения более высокой производительности. Это означает, что теперь вы можете использовать логические или последовательные шаблоны именования в именовании объектов S3 без каких-либо последствий для производительности. Это улучшение теперь доступно во всех регионах AWS. Для получения дополнительной информации посетите Руководство разработчика Amazon S3.
Это здорово, но это также сбивает с толку. В нем говорится, что каждый префикс S3 может поддерживать эти частоты запросов, что позволяет значительно повысить производительность
Но поскольку префиксы и разделители являются просто аргументами GET Bucket (List Objects)
API при перечислении содержимого сегментов, как может иметь смысл говорить о производительности поиска объекта «по префиксу». Каждый вызов GET Bucket (List Objects)
может выбрать любой префикс и разделитель, который он хочет, поэтому префиксы не являются предопределенным объектом.
Например, если в моем ведре есть эти объекты:
a1/b-2
a1/c-3
Затем я могу выбрать «/» или «-» в качестве разделителя всякий раз, когда я перечисляю содержимое сегмента, поэтому я могу считать свои префиксы либо
a1/
или
a1/b-
a1/c-
Но поскольку GET Object
API использует весь ключ, концепция конкретного префикса или разделителя не существует для извлечения объекта. Так можно ли ожидать 5500 запросов в секунду a1/
или, наоборот, 5500 запросов в секунду a1/b-
и 5500 вкл a1/c-
?
Так может ли кто-нибудь объяснить, что подразумевается под объявлением, когда оно предлагает определенный уровень производительности (например, +5,500 запросов в секунду для извлечения данных) для «каждого префикса s3»?
источник
Ответы:
То, что на самом деле упоминается здесь как префикс, представляется упрощением, которое действительно относится к каждому разделу индекса сегмента. Индекс является лексическим, поэтому разделение происходит на основе начальных символов в ключе объекта. Следовательно, это упоминается как префикс .
S3 управляет секциями индекса автоматически и прозрачно, поэтому точное определение «префикса» здесь на самом деле несколько неточно: «все, что S3 решит, необходимо для поддержки рабочей нагрузки вашего сегмента». S3 разделяет разделы индекса в ответ на рабочую нагрузку, поэтому два объекта, которые могут иметь один и тот же «префикс» сегодня, могут иметь разные префиксы завтра, и все это будет сделано в фоновом режиме.
Прямо сейчас, a1 / a -... и a1 / b -... и a1 / c -... могут быть все одним префиксом. Но выбросите достаточно памяти в сегмент, и S3 может решить, что раздел должен быть разделен, так что завтра a1 / a- и a1 / b- могут быть в одном префиксе, а a1 / c- - в своем собственном префиксе. (То есть ключи <a1 / c- находятся в одном разделе, а ключи> = a1 / c- теперь находятся в другом разделе).
Где и когда и, в частности, какой порог запускает разделение, документально не задокументирован, но, похоже, он связан только с количеством запросов, а не с количеством или размером объектов. Ранее эти разделы были ограничены несколькими сотнями запросов в секунду каждый, и это было значительно увеличено.
источник