Чтение неопубликованных разделов Volatile слоя против лучших практик?

Я использую слой OLP Volatile в качестве бэк-энда панели мониторинга в реальном времени (средняя частота обновления составляет около 5 секунд). Данные разделены по идентификаторам источника, и набор идентификаторов источника сильно меняется со временем.

Я понимаю, что в документации рекомендуется publish ваши изменчивые слои слоя; однако, в отличие от upload, publish это дорогая операция, и я считаю, что она не предназначена для выполнения каждые несколько секунд.

Так что я до сих пор делаю, я пропускаю publish при записи данных на слой:

val writeEngine =
    DataEngine().writeEngine("hrn:of:my:catalog", new StableBlobIdGenerator(123L))
writeEngine.put(
  NewPartition(
    partition = "source-id-1",
    layer = "my-volatile-layer",
    data = someData
  )
)

и читать данные, используя тот же blobIdGenerator априори:

readEngine
  .getDataAsBytes(new ReferencePartition(
    version = 123L,
    partition = "source-id-1",
    layer = "my-volatile-layer",
    dataHandle = (new StableBlobIdGenerator(123L)).generateBlobId(NewPartition(
      partition = "source-id-1",
      layer = "my-volatile-layer",
      data = NewPartition.ByteArrayData(Array.emptyByteArray)
    ))
  ))

Я понимаю, что воспринимаю уровень Volatile как хранилище значений ключей в памяти и понимаю, что не смогу увидеть свои данные в интерфейсе консоли OLP; но программно данные все еще загружаются и читаются. Это законное использование API Volatile?

1 ответ

Решение

Допустимо использовать энергозависимый слой в качестве хранилища значений ключей даже без публикации метаданных. Пока дескрипторы данных известны, это нормально. Метаданные полезны, если вам нужен запрос по метке времени или идентификатору раздела (если дескриптор данных неизвестен).

Если вы решите опубликовать метаданные для вашего изменчивого слоя, было бы наиболее эффективно просто инициализировать публикацию и загружать метаданные при добавлении или удалении разделов, просто не отправляйте задание публикации для завершения.

Другие вопросы по тегам