Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Построителю данных долго поддерживается кэш в памяти и заголовки HTTP-запросов, связанных no-storeno-cacheonly-if-cached с кэшем,L1 а также для влияния на поведение кэша.
Кэш уровня 2 (L2) расширяет кэширование за пределами локального процесса путем добавления уровня распределенного кэша. С L2помощью кэшированных результатов можно повторно использовать в нескольких экземплярах DAB и выжить отдельные перезапуски контейнеров, что делает развертывания без отслеживания состояния менее без отслеживания состояния всеми правильными способами.
Преимущества кэша уровня 2
Используйте кэш уровня 2, если вы хотите:
- Совместное использование кэшированных результатов между масштабируемыми экземплярами DAB
- Уменьшение циклического обхода базы данных для повторяющихся операций чтения
- Сохранение тепла контейнеров без отслеживания состояния после перезагрузки или повторного развертывания
- Повышение производительности рабочих нагрузок с большим объемом чтения
- Участие кэша пространства имен с секциями
Настройка параметров кэша среды выполнения
Кэш уровня 2 настраивается глобально.runtime.cache Блок кэша среды выполнения включает кэширование, задает время жизни по умолчанию (TTL) и настраивает поставщик распределенного кэша.
{
"runtime": {
"cache": {
"enabled": true,
"ttl-seconds": 30,
"level-2": {
"enabled": true,
"provider": "redis",
"connection-string": "localhost:6379",
"partition": "prod-api"
}
}
}
}
Свойства среды выполнения
| Недвижимость | Описание |
|---|---|
enabled |
Обеспечивает глобальную поддержку кэша. |
ttl-seconds |
Задает время кэширования по умолчанию в секундах. |
level-2.enabled |
Включает уровень распределенного кэша. |
level-2.provider |
Выбирает поставщика распределенного кэша.
redis Сейчас поддерживается. |
level-2.connection-string |
Строка подключения для экземпляра Redis. |
level-2.partition |
Необязательное пространство имен для ключей Redis и канала backplane. Только контейнеры, использующие один и тот же раздел, используют одно и то же распределенное пространство кэша. |
Настройка поведения кэша для конкретной сущности
Сущности могут переопределить поведение глобального кэша. Используйте блок сущности cache для включения кэширования, задания настраиваемого TTL и выбора уровня кэша.
{
"entities": {
"Products": {
"source": "dbo.Products",
"cache": { "enabled": true, "ttl-seconds": 120, "level": "L1L2" }
},
"Orders": {
"source": "dbo.Orders",
"cache": { "enabled": true, "level": "L1" }
}
}
}
Свойство cache.level
Используется cache.level для управления уровнями кэша, используемыми сущностью.
| Ценность | Описание |
|---|---|
L1 |
Только кэш в памяти. Быстрый и локальный процесс DAB. |
L1L2 |
В памяти плюс распределенный кэш. Этот уровень используется по умолчанию для кэшированных сущностей. |
Если L2 она не включена глобально, сущность, настроенная с L1L2 поведением как L1.
Как работает L1L2
Подсказка
TL; DRL1L2 = запрос → L1 → L2 → базы данных → L2 → L1 → ответ
По умолчанию сущность с включенным кэшированием использует уровень L1L2.
-
L1— это кэш в памяти для каждого процесса. -
L2— это уровень распределенного кэша, в настоящее время Redis, а также серверная планка для согласованности между экземплярами.
При L1L2 первой проверке L1 кэша поиск. Если кэширование L1 уровня 2 глобально включено и настроено, проверяет L2 , включен ли кэширование уровня 2. Если запись не найдена на любом уровне, DAB выполняет запрос базы данных. Затем результат сохраняется в обоих L1 и L2.
Это означает:
- Будущие запросы на том же экземпляре обслуживаются из локального экземпляра
L1 - Запросы на другие экземпляры могут считывать и
L2повышать уровень входа в свои собственныеL1 - Если контейнер перезагружается, за которым следует
L2попадание,L1может по-прежнему избежать обхода базы данных
Это сочетание обеспечивает теплый распределенный кэш между масштабируемыми или переработанными экземплярами.
Поддержка Redis
Redis — это текущий поставщик для кэша уровня 2. Он хорошо подходит для этого сценария, так как он поддерживает:
- Общий доступ между несколькими экземплярами DAB
- Срок действия ключа для кэширования на основе TTL
- Быстрые операции чтения и записи для рабочих нагрузок с высокой пропускной способностью
- Координация обратной планки между экземплярами
Секционированные пространства кэша
Используйте необязательный partition параметр для изоляции действия распределенного кэша. DAB использует значение секции для ключей Redis пространства имен и канала backplane. Только контейнеры, совместно использующие одну секцию, участвуют в одном распределенном пространстве кэша.
Этот параметр полезен при желании:
- Отдельный рабочий и непроизводный трафик
- Изоляция клиентов или сред
- Запретить несвязанным службам совместное использование кэшированных записей