DAX с DynamoDB по требованию - PullRequest
0 голосов
/ 22 марта 2019

Приложение:

У меня есть приложение Java, у которого на входе всплески / всплески, которые представляют события.Для каждого события всегда есть чтение, принятое решение (логика), а затем возможная запись (вставка или обновление) на основе этого решения.Большинство операций чтения не приводят к записи (вставке / обновлению) изо дня в день.Теоретически, это хороший сценарий для DAX и DynamoDB с биллингом / настройкой по требованию.

Сценарий / проблема:

Когда происходит всплеск, состоящий извсплеск записей, тогда мы иногда (но не всегда) видели всплеск общих экземпляров AmazonClientException.Исключения имеют retry (т. Е. isRetry()) false, а основной причиной является экземпляр InternalServerException с общим значением сообщения / строкой, включающим текст, на который был получен ответ 500 (без дополнительных подробностей или ясности).

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

Дополнительная информация:

  • Я использую последний доступный экземпляр клиента Java DAX.
  • За пределами пакетов, чтение / записьпостоянно успешны.Это включает в себя создание медленной подачи с событиями / данными в контролируемом тестовом примере, которые были захвачены при создании исключений в пакете ранее.
  • При использовании Provisioned (не по запросу) мы не видимэти расплывчатые клиентские исключения.Мы видим, что пропускная способность достигла исключений из DAX, как и ожидалось для тех же сценариев пакетной передачи / всплеска, и мы используем успешную стратегию повторного отката на основе этих исключений isRetry() (то есть true), указывающих, что мы можем / должны повторить попытку.
...