Настройка кеша метаданных для Ozone на уровне S3 Gateway
Ozone S3 Gateway (S3G) — это компонент Ozone, который предоставляет интерфейс для доступа к данным Ozone, совместимый с S3. Он получает S3-запросы от клиентов и преобразует их в операции с Ozone Manager (OM) и хранилищем данных Ozone.
S3G представляет собой stateless-компонент и не сохраняет данные локально. Без оптимизации, каждый запрос метаданных требует RPC-вызова к Ozone Manager для получения необходимых метаданных. Поэтому операции HEAD Object, GET Object и LIST Objects могут генерировать большое количество запросов метаданных к OM.
Такое поведение может значительно увеличивать нагрузку на OM в следующих сценариях:
-
Загрузка объектов. Клиенты S3 обычно отправляют запрос
HEAD Objectперед запросомGET Object. В результате выполняется дополнительный запрос метаданных. -
Параллельная загрузка. При запросе многопоточных клиентов загрузка объектов может разделяться на несколько запросов
GET Objectпо диапазону. При этом метаданные одного и того же объекта могут запрашиваться несколько раз, что приводит к нескольким вызовамOM.getKeyInfo.
По мере увеличения числа одновременных S3-запросов увеличивается и число запросов метаданных. В этом случае Ozone Manager может стать узким местом S3-нагрузок с высокой частотой запросов.
Кеш метаданных объектов в S3G
S3 Gateway в ADH может кешировать метаданные Ozone с помощью OM-клиента с поддержкой кеширования метаданных. Кеш представляет собой локальный кеш Caffeine, отдельный для каждого пользователя и экземпляра S3G.
При получении запроса метаданных S3G сначала проверяет локальный кеш в памяти:
-
Если существует актуальная запись кеша и ее возраст не превышает установленный срок действия (TTL), S3G возвращает кешированные метаданные без отправки RPC-запроса к OM.
-
Если запись в кеше отсутствует или истек срок ее действия, S3G запрашивает метаданные у OM.
-
После получения метаданных S3G сохраняет значение в кеше и возвращает ответ клиенту.
Это позволяет сократить количество повторных запросов метаданных к OM и повысить производительность S3-запросов.
Чтобы понизить вероятность того, что запрос в кеш возвращает устаревшие метаданные, S3G удаляет записи из кеша в следующих случаях:
-
Истекает TTL записи кеша.
-
В S3G объект был изменен, например, он был удален или переименован.
ПРИМЕЧАНИЕУдаление записи из кеша происходит только при изменении объекта в S3G. Если объект изменяется другим клиентом, например клиентом Ozone CLI, соответствующая запись в кеше S3G не удаляется. Метаданные, измененные таким образом, становятся доступны S3G только после истечения срока действия записи кеша.
Чтобы включить кеширование метаданных в S3G, присвойте параметру ozone.s3g.object.cache.enabled значение true.
В настоящее время кешируются метаданные следующих объектов:
-
S3-тома (volume).
-
Бакеты (bucket).
-
Ключи, включая обычные и расширенные.
Параметры конфигурации
Кеш метаданных S3G можно настроить с помощью следующих параметров:
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
ozone.s3g.object.cache.enabled |
Включает кеширование объектов на уровне S3G |
false |
ozone.s3g.object.cache.metrics.enabled |
Активирует метрики кеша в S3G |
true |
ozone.s3g.object.cache.volume.size |
Максимальное количество записей в кеше томов S3G |
10 |
ozone.s3g.object.cache.volume.ttl.ms |
Время жизни записей в кеше томов S3G в миллисекундах |
3000 |
ozone.s3g.object.cache.bucket.size |
Максимальное количество записей в кеше бакетов S3G |
100 |
ozone.s3g.object.cache.bucket.ttl.ms |
Время жизни записей в кеше бакетов S3G в миллисекундах |
3000 |
ozone.s3g.object.cache.key.size |
Максимальное количество записей в кеше ключей S3G |
1000 |
ozone.s3g.object.cache.key.ttl.ms |
Время жизни записей в кеше ключей S3G в миллисекундах |
3000 |
Ограничения
При включенном кешировании не гарантирована строгая согласованность метаданных, поскольку объект может быть изменен извне в течение периода действия TTL, в то время как S3G продолжит возвращать устаревшее значение из кеша.
Источник данных для мониторинга ADH
Кеширование метаданных предоставляет метрики, которые можно использовать для мониторинга работы кеша и оценки его влияния на S3G и OM.
Метрики можно визуализировать в системе мониторинга ADH с помощью специальных дашбордов. Для всех кешей объектов S3 (s3VolumeCache, s3BucketCache, s3HeadKeyCache, s3KeyInfoCache) доступны следующие метрики.
| Имя метрики | Описание |
|---|---|
hitCount |
Количество удачных обращений к кешу |
hitRate |
Процент успешных обращений |
missCount |
Количество неудачных обращений к кешу |
loadSuccessCount |
Количество успешных загрузок из кеша |
loadFailureCount |
Количество неудачных загрузок из кеша |
loadFailureRate |
Процент неудачных загрузок из кеша |
evictionCount |
Количество удалений из кеша |
averageLoadPenalty |
Средняя задержка при загрузке в наносекундах |