Правильный способ обработки сеанса QLDB

Я хочу знать, как обрабатывать сеансы qldb в приложении node.js.

Должен ли я создавать один сеанс для всей области действия приложения или я должен создавать новый сеанс перед каждым пакетом транзакций?

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

1 ответ

Решение

Вы должны использовать столько сеансов, сколько необходимо для достижения требуемого уровня пропускной способности. Каждый сеанс может запускать одну транзакцию, и каждая транзакция имеет определенную задержку. Так, например, если ваши транзакции занимают 10 мс, вы можете выполнять 100 транзакций в секунду (1 с = 1000 мс и 1000/10 = 100). Если вам нужно достичь 1000 TPS, вам понадобится 10 сеансов.

У драйвера есть "пул" сессий. Итак, каждая транзакция должна запрашивать сеанс из пула. Пул будет увеличиваться / уменьшаться по мере необходимости.

Каждая сессия может прожить не более ~15 минут (есть некоторый джиттер). Таким образом, вы должны обработать случай, когда использование сеанса вызывает исключение (недопустимый сеанс) и повторить операцию (получить сеанс, запустить транзакцию).

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

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