跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 多大厂才能用到分布式事务
未分類
3 9 月 2020

多大厂才能用到分布式事务

多大厂才能用到分布式事务

資深大佬 : brucefu 35

好像引战贴 /狗头

大佬有話說 (36)

  • 資深大佬 : tiedan

    看具体业务

  • 資深大佬 : john22eclipse

    面试时用到

  • 資深大佬 : realpg

    一个人的小破玩具项目,正在迁移支持分布式事务的数据库平台

  • 資深大佬 : kidlj

    一个人的小破玩具项目,打算用 CockroachDB 。部署在 K8S 上太方便了,一行命令。

  • 資深大佬 : nozer

    重试、补偿。

  • 資深大佬 : Jooooooooo

    不用

    最终一致是王道

  • 資深大佬 : skypyb

    一个人写想怎么用怎么用

  • 資深大佬 : defage

    要嘛 db 层直接解决了。要嘛就 BASE,最终一致性。

    程序内折腾分布式事务是个大坑,别看阿里开源了各种 tcc,tcc plus 。真实情况没几个用的,玩死团队会。

  • 資深大佬 : Cbdy

    分布式事务可以交给分布式数据库实现,大小厂都可以用这种数据库吧

  • 資深大佬 : shm7

    12306 春节抢票那种

  • 資深大佬 : xuanbg

    多大厂也不会全面使用分布式事务。不是被逼得没办法,谁会去做坑死人的分布式事务。

  • 資深大佬 : limboMu

    ddia 中说过了,分布式事务是个有意思的研究,不过要运用到实际的开发,还需要研究更高效的协议,目前的分布式事务解决方案,运维开销有点大,不如老老实实设计好表结构避免分布式事务

  • 資深大佬 : littlewing

    上正解
    某国内大厂员工表示核心业务并没有使用分布式事物,原因是多方面的吧:做好很难,并不是强需求,并不是高优需求,性能问题(最终业务可能还是会尽可能避免使用)

  • 資深大佬 : littlewing

    @defage 正是因为 mysql 分库分表之后,在 DB/Proxy 上实现分布式事物很难,所以阿里才有了各种在程序内实现的补偿事物,但不管怎样,分布式事物就是个大坑

  • 資深大佬 : chihiro2014

    真正能用好的没几个。基本都不会去大范围使用

  • 資深大佬 : cinlen

    蹲一下大厂的朋友回复。我司用的是肉偿法听说过没有,就是人肉补偿事务。

  • 資深大佬 : maigebaoer

    @cinlen 讲道理,这很实用

  • 資深大佬 : TypeError

    某中厂,涉及钱的核心业务也是 mq 重拾补偿

  • 資深大佬 : cassyfar

    multi-phase commit 用到了很多。

    另外我觉得 nosql DB 的 transaction 都得尊重这个来实现。我记得 DynamoDB transaction 是把所有 event 先记录进 log,然后一条条执行,出错就倒着回滚。

    不过 TCC 我确实没见过。

  • 資深大佬 : 594duck

    对大部份业务来说与其说多大厂,还不如说有多作,对就是有多作。

    你真要说分布式事务适合哪个厂,还不如说适合哪个业务,比如微博这种,纯文字信息流,没时实要求,天生适合 KV 的就适合。还有就是比如广告统计业务。Social 业务适合,那是可以的。

    你要说物流系统,工业生产系统,ERP,CRM,OA,财务系统,电商系统,金融系统 etc… 这些适合不适合。 要作,那也能上。CAP 原则 里看扔掉哪二个呗。

    所以这也是为什么到 2020 年了,Microsoft SQLSERVER 和 Oracle 这种公司活的美滋滋的原因。

    也就中国 13 亿人口基数折腾的动,放其它国家 TCO 一算,全部走商业数据库了。

    我有句名言,天下苦 MYSQL 久矣。

  • 資深大佬 : kusya

    问下各位,如果实际场景中,业务分布在不同的数据库,又需要保证事务一致性,应该怎么办,比如账务系统。
    另外,对于多流程的复杂业务场景,怎么避免分布式事务

  • 資深大佬 : xuanbg

    @cinlen 最终还是要靠肉偿的……只有这个才是终极可靠的兜底方案。

  • 資深大佬 : xuanbg

    @kusya 如果你的肉偿能力不被击穿,就和保证新冠肺炎保证不会击穿医疗能力一样(这就和英国搞全面免疫一个意思),就不需要由系统来保证一致性。

    简单地说,就是只要人工处理不一致的能力有富余,你就让他不一致呗。

  • 資深大佬 : PopRain

    @594duck 最近想把系统迁移到 postgresql,发现 SQL server 和 oracle 比,花里胡哨的功能很多,真正“商用”(不是互联网应用)的功能,有些地方还是欠缺不少。。。。

  • 資深大佬 : Yano

    @cinlen 好评,我认识一个小厂就是人肉补偿法,其实做好日志、行为记录,补偿还是很简单的,或者定时任务补偿法

  • 資深大佬 : snappyone

    @Cbdy 分布式事务跟分布式数据库不是一码事

  • 資深大佬 : 594duck

    @PopRain 举个欠缺的例子呢

  • 資深大佬 : passerbytiny

    @kusya 大多数情况下只需要保证最终一致性即可,不需要保证事务一致性。你举例的账务系统是个典型的只需要最终一致性的系统:一个月就出账那一天需要一致性。

    最终一致性大多用补偿机制来处理,比如发现重复扣费了就加个原路退款处理。不要相信那个肉偿的,肉偿也要成本的,冲突率极小的系统中,才能用肉偿替代系统自动补偿。

  • 資深大佬 : azureus

    一般做业务不直接用分布式事务。分布式事务是分布式关系型数据库的基本能力,要由关系型数据库来保证事务一致性。

    因为分布式数据库领域很冷门,所以才觉得用的少,实际上已经用的相当广泛。

    大厂基本上都有这样的产品,只不过赚钱能力比不上业务,所以很低调罢了。至于小厂,直接用就可以了。

  • 資深大佬 : bitholic

    满足 BASE 就行了

  • 資深大佬 : PopRain

    @594duck 我常用的这 3 个功能不支持,我又不想去改 ORM 的底层,也不想让程序只能对应一个数据库
    1. 不支持大小写不敏感的查询(citext 在参数化查询需要加强制类型转换提示,ORM 不方便,用不确定 collation 也有问题,譬如不支持 like )
    2.不支持事务嵌套(需要用 SavePoints 模拟,没有办法用通用的 ORM )
    3.不支持跨数据库、跨服务器的视图、引用。(用 dblink 效率比较低,ORM 也不方便用)

  • 資深大佬 : janus77

    如果你爱折腾,多小的项目都能用

  • 資深大佬 : 594duck

    @PopRain

    就第 2 个事务嵌套,postgres 的实现就是私有实现,和你的原则 不改 ORM 底层,不让程序只对应一个数据库的原则 是冲突的。

    事务嵌套在任何数据库里都是不大推荐的做法,所以各家实现都有各家实现的不一样的细节方法。

  • 資深大佬 : icerwinter

    @594duck 这意思是说我国人口基数大,一批人耐不住不用产品了 终还是有另一波人使用?
    哈哈

  • 資深大佬 : 594duck

    @icerwinter 人口基数大,所以试错成本低

  • 資深大佬 : CantSee

    只是用了最大努力通知的一个概念,没有用分布式事务!

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具