免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: stay_sun
打印 上一主题 下一主题

[数据库] 异地多活实际可行性有多强?支付宝故障引热议 [复制链接]

论坛徽章:
0
131 [报告]
发表于 2015-06-10 13:50 |只看该作者
fengzhanhai 发表于 2015-06-08 17:28
回复 111# bbjmmj
你必须要承认一个问题,对于支付宝这个系统是一个实时性的OLTP系统,而非你说的最终一致 ...



消息队列总体上来说是个谎言,你以为它承诺了什么,其实它什么也没承诺。

论坛徽章:
9
技术图书徽章
日期:2014-10-14 15:48:13数据库技术版块每日发帖之星
日期:2015-06-04 22:20:00数据库技术版块每日发帖之星
日期:2015-06-10 22:20:00数据库技术版块每日发帖之星
日期:2015-06-11 22:20:00数据库技术版块每日发帖之星
日期:2015-06-13 22:20:00IT运维版块每日发帖之星
日期:2015-09-22 06:20:00IT运维版块每日发帖之星
日期:2015-12-08 06:20:00综合交流区版块每日发帖之星
日期:2016-02-02 06:20:00IT运维版块每日发帖之星
日期:2016-07-25 06:20:00
132 [报告]
发表于 2015-06-10 13:57 |只看该作者
wwwsq 发表于 2015-06-10 13:18
阿里早就建了自己的骨干网。


但是它还没有胆量用INFINIBAND做骨干。
阿里的网管我们不能太高看他,断网就切数据中心么?有东西未必就能用得好。

论坛徽章:
9
技术图书徽章
日期:2014-10-14 15:48:13数据库技术版块每日发帖之星
日期:2015-06-04 22:20:00数据库技术版块每日发帖之星
日期:2015-06-10 22:20:00数据库技术版块每日发帖之星
日期:2015-06-11 22:20:00数据库技术版块每日发帖之星
日期:2015-06-13 22:20:00IT运维版块每日发帖之星
日期:2015-09-22 06:20:00IT运维版块每日发帖之星
日期:2015-12-08 06:20:00综合交流区版块每日发帖之星
日期:2016-02-02 06:20:00IT运维版块每日发帖之星
日期:2016-07-25 06:20:00
133 [报告]
发表于 2015-06-10 14:00 |只看该作者
wwwsq 发表于 2015-06-10 13:06
我可以很肯定的说,支付宝没有实现强一致性。一定是裁剪过的相对一致性,在可以承受的范围内允许数据 ...


这个绝对可以肯定,淘宝秒杀,都能下单,但是最早付款成功的那个人才能买走那唯一一件商品。可以允许一定的不一致。
银行也不是强一致的,要不怎么有“冲账”这个活儿呢。
要看业务流程了。

论坛徽章:
9
技术图书徽章
日期:2014-10-14 15:48:13数据库技术版块每日发帖之星
日期:2015-06-04 22:20:00数据库技术版块每日发帖之星
日期:2015-06-10 22:20:00数据库技术版块每日发帖之星
日期:2015-06-11 22:20:00数据库技术版块每日发帖之星
日期:2015-06-13 22:20:00IT运维版块每日发帖之星
日期:2015-09-22 06:20:00IT运维版块每日发帖之星
日期:2015-12-08 06:20:00综合交流区版块每日发帖之星
日期:2016-02-02 06:20:00IT运维版块每日发帖之星
日期:2016-07-25 06:20:00
134 [报告]
发表于 2015-06-10 14:08 |只看该作者
回复 130# wwwsq


    一致性不难实现,每种商品的数量就是个信号锁,下单的时候这个值减一再读出,如果大于等于零就可以提交订单,如果小于零就加一,等待若干毫秒再减一读出进行尝试,尝试三遍不成就放弃下单。好像可以不用任何锁。

论坛徽章:
18
2015亚冠之阿尔希拉尔
日期:2015-06-02 09:56:10数据库技术版块每日发帖之星
日期:2016-08-13 06:20:00数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00数据库技术版块每日发帖之星
日期:2016-03-19 06:20:00数据库技术版块每日发帖之星
日期:2015-12-25 06:20:35数据库技术版块每日发帖之星
日期:2015-12-25 06:20:35数据库技术版块每日发帖之星
日期:2015-12-25 06:20:35数据库技术版块每日发帖之星
日期:2015-09-12 06:20:00数据库技术版块每日发帖之星
日期:2015-09-11 06:20:00ChinaUnix专家徽章
日期:2015-06-30 16:29:48ChinaUnix专家徽章
日期:2015-06-30 16:29:342015年中国系统架构师大会
日期:2015-06-29 16:11:28
135 [报告]
发表于 2015-06-10 15:41 |只看该作者
回复 126# bbjmmj


    阿里的团队 哪里都有  杭州 只是一部分  马上阿里在 望京建了 一个大楼

论坛徽章:
0
136 [报告]
发表于 2015-06-10 17:53 |只看该作者
bbjmmj 发表于 2015-06-10 14:08
回复 130# wwwsq



http://en.wikipedia.org/wiki/Consistency_model

取决于你说的是哪种一致性。如果是strict consistency那有点难吧?

论坛徽章:
9
技术图书徽章
日期:2014-10-14 15:48:13数据库技术版块每日发帖之星
日期:2015-06-04 22:20:00数据库技术版块每日发帖之星
日期:2015-06-10 22:20:00数据库技术版块每日发帖之星
日期:2015-06-11 22:20:00数据库技术版块每日发帖之星
日期:2015-06-13 22:20:00IT运维版块每日发帖之星
日期:2015-09-22 06:20:00IT运维版块每日发帖之星
日期:2015-12-08 06:20:00综合交流区版块每日发帖之星
日期:2016-02-02 06:20:00IT运维版块每日发帖之星
日期:2016-07-25 06:20:00
137 [报告]
发表于 2015-06-10 19:03 |只看该作者
wwwsq 发表于 2015-06-10 17:53
http://en.wikipedia.org/wiki/Consistency_model

取决于你说的是哪种一致性。如果是strict consi ...


电子交易跟一致性没有必然联系,电子交易需要的是数据不丢不错,要求一致的是你,你没办法保证不丢不错,只能拿几份相同的数据糊弄,就像三人成虎。
理论是可以向现实妥协的,比如人们常说:理论上讲如何如何如何,其实理论上描述的场景在现实中根本就是不会存在的。
银行灾备都会丢数据,过度吹嘘理论是主因。

论坛徽章:
9
技术图书徽章
日期:2014-10-14 15:48:13数据库技术版块每日发帖之星
日期:2015-06-04 22:20:00数据库技术版块每日发帖之星
日期:2015-06-10 22:20:00数据库技术版块每日发帖之星
日期:2015-06-11 22:20:00数据库技术版块每日发帖之星
日期:2015-06-13 22:20:00IT运维版块每日发帖之星
日期:2015-09-22 06:20:00IT运维版块每日发帖之星
日期:2015-12-08 06:20:00综合交流区版块每日发帖之星
日期:2016-02-02 06:20:00IT运维版块每日发帖之星
日期:2016-07-25 06:20:00
138 [报告]
发表于 2015-06-10 19:04 |只看该作者
wwwsq 发表于 2015-06-10 17:53
http://en.wikipedia.org/wiki/Consistency_model

取决于你说的是哪种一致性。如果是strict consi ...


其实根本不需要让技术去附庸理论,做过网站,就会明白电子交易原理。

论坛徽章:
9
技术图书徽章
日期:2014-10-14 15:48:13数据库技术版块每日发帖之星
日期:2015-06-04 22:20:00数据库技术版块每日发帖之星
日期:2015-06-10 22:20:00数据库技术版块每日发帖之星
日期:2015-06-11 22:20:00数据库技术版块每日发帖之星
日期:2015-06-13 22:20:00IT运维版块每日发帖之星
日期:2015-09-22 06:20:00IT运维版块每日发帖之星
日期:2015-12-08 06:20:00综合交流区版块每日发帖之星
日期:2016-02-02 06:20:00IT运维版块每日发帖之星
日期:2016-07-25 06:20:00
139 [报告]
发表于 2015-06-11 16:33 |只看该作者
本帖最后由 bbjmmj 于 2015-06-11 16:39 编辑

继续聊多活。
前面提到一个MYSQL半同步,半同步状态下,有一路SLAVE跟上了,MASTER就会继续后面的步骤,也就是去执行事务。我琢磨这么做不够完美,因为没有冗余,中间可能会出错,比如这个抢先同步的SLAVE出了故障,而其它SALVE却还没有来得及同步,这个时候就可能会丢数据,所以我翻了翻源码,觉得可以对半同步流程做点小改动。
我用的是MARIADB,CENTOS7上带的是5.5.41,我看的也是5.5.41源码。
用int ReplSemiSyncMaster::reportReplyBinlog函数里的can_release_threads做计数器,布尔型,改成初值为零的整形,后面if (cmp >= 0) can_release_threads = true改成if (cmp >= 0) can_release_threads++,然后判断can_release_threads 是不是大于等于2,是则wait_file_name_inited_ = false,再往后if (can_release_threads)改成if (can_release_threads >=2),这个2就是达到同步的SLAVE数量,我觉得2路就够了,觉得不够可以改成3,或者更多。
我自己没试,只是说了一个想法。

涉及到的代码在mariadb-5.5.41/plugin/semisync/semisync_master.cc文件里。前面回帖说到一致性,来了点灵感,两份一样的数据比较让人放心。

论坛徽章:
9
技术图书徽章
日期:2014-10-14 15:48:13数据库技术版块每日发帖之星
日期:2015-06-04 22:20:00数据库技术版块每日发帖之星
日期:2015-06-10 22:20:00数据库技术版块每日发帖之星
日期:2015-06-11 22:20:00数据库技术版块每日发帖之星
日期:2015-06-13 22:20:00IT运维版块每日发帖之星
日期:2015-09-22 06:20:00IT运维版块每日发帖之星
日期:2015-12-08 06:20:00综合交流区版块每日发帖之星
日期:2016-02-02 06:20:00IT运维版块每日发帖之星
日期:2016-07-25 06:20:00
140 [报告]
发表于 2015-06-12 13:52 |只看该作者
如果能保证至少两个SLAVE达到同步,MASTER上的数据就不用落地了,可以整个数据库放在内存盘上跑。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP