【发布时间】:2019-11-06 03:00:36
【问题描述】:
在多主场景中使用 Tarantool 时如何解决冲突?
我正在开发一个应该具有高可用性的服务,因此决定使用 nginx 作为 tarantool 的两个节点的负载平衡器(带有备份指令)(禁用只读选项)。它会重试对其他节点的失败请求,但如果网络问题(例如,tarantool 的节点之间)可能会发生冲突。
如何实现以下场景之一:
- 在每个节点上选择一个更新的元组
- 自定义逻辑(可能是冲突等的另一个空间)
另一个问题是如何定义唯一的可空复合索引(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
【问题讨论】:
-
所以你希望
user_id + type是唯一的,除非type为空? -
@DarkWiiPlayer,非常接近。我在这里问了这个问题:stackoverflow.com/questions/56737313/…
-
这很难实现;如果可能,您应该考虑使用主从设置,或者只是以无冲突的方式构建数据库交互。