Приложение:
У меня есть приложение Java, у которого на входе всплески / всплески, которые представляют события.Для каждого события всегда есть чтение, принятое решение (логика), а затем возможная запись (вставка или обновление) на основе этого решения.Большинство операций чтения не приводят к записи (вставке / обновлению) изо дня в день.Теоретически, это хороший сценарий для DAX и DynamoDB с биллингом / настройкой по требованию.
Сценарий / проблема:
Когда происходит всплеск, состоящий извсплеск записей, тогда мы иногда (но не всегда) видели всплеск общих экземпляров AmazonClientException.Исключения имеют retry
(т. Е. isRetry()
) false
, а основной причиной является экземпляр InternalServerException с общим значением сообщения / строкой, включающим текст, на который был получен ответ 500 (без дополнительных подробностей или ясности).
Эти исключения DAX и их трассировки стека действительно не дают представления об их истинной причине (например, регулирование, исключение пропускной способности временного предоставления до изменения размера, недоступность хоста и т. Д.).Это выглядит как неожиданное поведение ответа от DAX для того, что мне кажется, что я изменяю размеры по требованию DynamoDB (дополнительные советы см. В дополнительной информации ниже), но я все еще немного теряю ясность в отношении причины, когда они происходятв ответ на этот сценарий.
Дополнительная информация:
- Я использую последний доступный экземпляр клиента Java DAX.
- За пределами пакетов, чтение / записьпостоянно успешны.Это включает в себя создание медленной подачи с событиями / данными в контролируемом тестовом примере, которые были захвачены при создании исключений в пакете ранее.
- При использовании Provisioned (не по запросу) мы не видимэти расплывчатые клиентские исключения.Мы видим, что пропускная способность достигла исключений из DAX, как и ожидалось для тех же сценариев пакетной передачи / всплеска, и мы используем успешную стратегию повторного отката на основе этих исключений
isRetry()
(то есть true
), указывающих, что мы можем / должны повторить попытку.