多大厂才能用到分布式事务
好像引战贴 /狗头
好像引战贴 /狗头
最终一致是王道
程序内折腾分布式事务是个大坑,别看阿里开源了各种 tcc,tcc plus 。真实情况没几个用的,玩死团队会。
另外我觉得 nosql DB 的 transaction 都得尊重这个来实现。我记得 DynamoDB transaction 是把所有 event 先记录进 log,然后一条条执行,出错就倒着回滚。
不过 TCC 我确实没见过。
你真要说分布式事务适合哪个厂,还不如说适合哪个业务,比如微博这种,纯文字信息流,没时实要求,天生适合 KV 的就适合。还有就是比如广告统计业务。Social 业务适合,那是可以的。
你要说物流系统,工业生产系统,ERP,CRM,OA,财务系统,电商系统,金融系统 etc… 这些适合不适合。 要作,那也能上。CAP 原则 里看扔掉哪二个呗。
所以这也是为什么到 2020 年了,Microsoft SQLSERVER 和 Oracle 这种公司活的美滋滋的原因。
也就中国 13 亿人口基数折腾的动,放其它国家 TCO 一算,全部走商业数据库了。
我有句名言,天下苦 MYSQL 久矣。
简单地说,就是只要人工处理不一致的能力有富余,你就让他不一致呗。
最终一致性大多用补偿机制来处理,比如发现重复扣费了就加个原路退款处理。不要相信那个肉偿的,肉偿也要成本的,冲突率极小的系统中,才能用肉偿替代系统自动补偿。
因为分布式数据库领域很冷门,所以才觉得用的少,实际上已经用的相当广泛。
大厂基本上都有这样的产品,只不过赚钱能力比不上业务,所以很低调罢了。至于小厂,直接用就可以了。
就第 2 个事务嵌套,postgres 的实现就是私有实现,和你的原则 不改 ORM 底层,不让程序只对应一个数据库的原则 是冲突的。
事务嵌套在任何数据库里都是不大推荐的做法,所以各家实现都有各家实现的不一样的细节方法。