Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Построителю данных долго поддерживается кэш в памяти и заголовки 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. Только контейнеры, совместно использующие одну секцию, участвуют в одном распределенном пространстве кэша.
Этот параметр полезен при желании:
- Отдельный рабочий и непроизводный трафик
- Изоляция клиентов или сред
- Запретить несвязанным службам совместное использование кэшированных записей