Как я могу реализовать разрешение конфликтов при использовании Tarantool в мультимастерном сценарии?
Я разрабатываю сервис, который должен быть высокодоступным, поэтому решил использовать nginx в качестве балансировщика нагрузки (с директивой резервного копирования) для двух узлов tarantool (с отключенной опцией только для чтения). Он повторяет неудачные запросы к другому узлу, но в случае сетевых проблем (например, между узлами tarantool) могут возникнуть конфликты.
Как мне реализовать один из следующих сценариев:
- Выберите новый кортеж на каждом узле
- Пользовательская логика (может быть другое пространство для конфликтов и т. Д.)
Другой вопрос, как я могу определить уникальный составной индекс, допускающий значение NULL (значение NULL может встречаться несколько раз)
| id | user_id | type | {some data} |
Индексы:
id - PK
user_id + type - unique nullable tree index (type is nullable)
user_id has non unique tree index