Arhn - архитектура программирования

Зачем включать кеши записей в API процессора потоков Kafka, если RocksDB буферизуется в памяти?

Я пытаюсь понять поведение RocksDB в API процессора потоков Kafka. Я настраиваю постоянное хранилище StateStore, используя стандартную базу данных RocksDB, которую предоставляет KStreams.

StoreBuilder countStoreBuilder =
  Stores.keyValueStoreBuilder(
    Stores.persistentKeyValueStore("Counts"),
    Serdes.String(),
    Serdes.Long())

Я не занимаюсь агрегацией, объединением или управлением окнами. Я просто получаю записи и сравниваю некоторые из них с предыдущими элементами в магазине и сохраняю некоторые записи, которые я получаю, в хранилище состояний.

В руководстве разработчика упоминается, что вы можете включить кеширование записей в Processor API, вызвав .withCachingEnabled() в указанном выше построителе.

Кеш "служит кешем чтения для ускорения чтения данных из хранилища состояний" - Записывать кеш-потоки Kafka

Однако я понимаю, что RocksDB в постоянном режиме сначала буферизуется в памяти и будет расширяться на диск только в том случае, если состояние не помещается в ОЗУ.

RocksDB используется просто как внутренняя таблица поиска (которая может сбрасываться на диск, если состояние не помещается в память. Сброс RocksDB требуется только потому, что состояние может быть больше, чем доступная основная память. Управление внутренними данными Kafka Streams

Итак, как кеши записей ускоряют чтение из хранилища состояний, если оба буферизируются в памяти? Мне кажется, что кеши записей частично совпадают с поведением RocksDB.


Ответы:


1

Ваше наблюдение верное, и это зависит от варианта использования, требуется ли кеширование. Одним из больших преимуществ кэширования на уровне приложения (вместо кеширования RocksDB) является то, что оно уменьшает количество записей, записываемых в тему журнала изменений, которая используется для обеспечения отказоустойчивости хранилища. Следовательно, это снизило нагрузку на кластер Kafka, а также может сократить время восстановления.

Для пользователей DSL кеширование также влияет на нагрузку в нисходящем направлении (это может вас не интересовать для вашего приложения, поскольку, похоже, вы используете API процессора):

03.06.2019
  • Спасибо @ matthias-j-sax за ответ. Действительно, я использую API процессора. Я получаю преимущество кешей записей в качестве кеша с обратной записью, который позволяет группировать несколько записей вместо отправки каждой записи по отдельности в хранилище состояний. Это также уменьшает количество запросов, поступающих в государственный магазин. Это приводит к сокращению сетевого ввода-вывода для Kafka и сокращению операций ввода-вывода локального диска для хранилищ состояний, поддерживаемых RocksDB. Однако я не могу понять, как это может сократить время восстановления? 03.06.2019
  • Разделы-разделы делятся на сегменты, и активный сегмент не подлежит уплотнению журнала. Следовательно, если вы очень часто обновляете небольшой набор ключей, вы получаете много дубликатов в теме журнала изменений, которые не сразу уплотняются - следовательно, кэширование записей, которое устраняет дублирование этих обновлений перед записью в журнал изменений, может уменьшить количество дубликатов в теме журнала изменений. 03.06.2019
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..