Обработчик каналов изменений Cosmos и параллелизм на одном узле - PullRequest
0 голосов
/ 07 августа 2020

После изучения документации Cosmos db я немного запутался в библиотеке процессора подачи изменений.

  1. Документ аренды существует для каждого физического или логического раздела? иметь один хост с несколькими логическими разделами и одним физическим разделом. Будет ли процессор подачи изменений использовать несколько потоков для каждого логического раздела. У меня есть библиотека процессора подачи изменений космоса, реализованная следующим образом.
        var changeFeedProcessorInstance = new ChangeFeedProcessorBuilder()
          .options(cfOptions)
          .hostName(hostName)
          .feedContainer(container)
          .leaseContainer(leaseContainer)
          .handleChanges((List<JsonNode> docs) -> {
          for (JsonNode document : docs) {
            // Doing some processing
            }
          })
        .buildChangeFeedProcessor();
        changeFeedProcessorInstance.start()
          .subscribeOn(Schedulers.elastic())
          .doOnSuccess(aVoid -> {
           })
          .subscribe();

Мое предположение связано с Scheduler.elasti c новый поток может использоваться на основе логического раздела.

1 Ответ

1 голос
/ 07 августа 2020

Текущая реализация использует 1 документ аренды на физический раздел.

Распараллеливание основано на аренде. Если хранилище аренды имеет 10 аренд, его можно распределить до 10 хостов, потому что 1 аренда может принадлежать только одному хосту в любой заданный момент времени (вы можете использовать меньше хостов, и аренда будет распределена поровну).

Если ваше хранилище аренды содержит 1 аренду (поскольку коллекция имеет 1 физический раздел), то вы можете отслеживать изменения максимум на 1 хосте. Добавление дополнительных хостов просто заставит лишних сидеть без дела. Если коллекция растет из-за использования большего объема хранилища, например, и динамически добавляются новые физические разделы, новые аренды будут добавляться динамически, и дополнительные экземпляры могут начать автоматически забирать их (если доступно больше экземпляров, чем аренды). Библиотека выполняет динамическое c распределение аренды по хостам автоматически при изменении обоих измерений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...