知识卡片
主主复制只适合可丢失、可覆盖的数据
内容
主主复制表面最简单——两台都是主机,无需状态判断和切换决策——但有隐藏前提:数据必须能安全双向复制。自增ID、库存、余额这类有严格计数要求的数据一旦双向复制就会冲突或覆盖丢失。因此主主复制只适合临时性、可丢失、可覆盖的数据,如登录session、行为日志。发散:”架构简单”和”数据模型对冲突宽容”是两个独立条件——拓扑越简单,往往对数据类型要求越苛刻,评估优雅架构要反查它把复杂度转嫁到了哪。
参考来源
- 位置:《从0开始学架构》第29章《25|高可用存储架构:双机架构》"主主复制"一节(源文件:_epub-src/OEBPS/Text/part0028_split_005.html)
- 结论依据:原文以库存为例说明"库存不能双向复制。例如,一件商品库存100件,主机A上减了1件变成99,主机B上减了2件变成98,然后主机A将库存99复制到主机B,主机B原有的库存98被覆盖,变成了99,而实际上此时真正的库存是97",并总结"主主复制架构对数据的设计有严格的要求,一般适合于那些临时性、可丢失、可覆盖的数据场景。例如,用户登录产生的session数据……用户行为的日志数据"。
- 原始内容:库存不能双向复制。例如,一件商品库存100件,主机A上减了1件变成99,主机B上减了2件变成98……而实际上此时真正的库存是97……主主复制架构对数据的设计有严格的要求,一般适合于那些临时性、可丢失、可覆盖的数据场景。例如,用户登录产生的session数据(可以重新登录生成)、用户行为的日志数据(可以丢失)。