免费注册 查看新帖 |

Chinaunix

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

银行存钱悖论探讨!!(慎入,逻辑混乱,请看完所有楼再回帖以免越弄越乱) [复制链接]

论坛徽章:
0
51 [报告]
发表于 2010-01-13 12:32 |只看该作者
原帖由 冬瓜头 于 2010-1-11 23:22 发表
以下纯属虚构如有雷同请对号入座。


某日我去银行存捡来的5块钱,操作员拿着我的卡和现金,鄙视的看着我,我没什么感觉,习惯了。当他刷卡之后,点击输入金额5,点击存入之后,数据发送到应用服务器,应用服 ...



我到,明显的概念混乱。

我想问一下:TCP的ack跟数据库的commit之间有什么关系呢?TCP的ack只表示客户端的TCP包传输到了服务器而已,跟数据库是否commit成功根本没有任何关系。怎么能说收到TCP ack就表明commit成功了呢?

你在客户端所谓的commit只是个commit请求,请求发送之后,他要在这里等待server端的相应结果的,成功与否并不在这里。随后的TCP sent及ack过程只表明你的commit请求已经发送到了服务器端。需要server端进行真正的commit操作。如果成功,server端才会回送成功反馈,这次是client的commit需要的“ack”,此“ack”非彼“ack”,是应用层(或者说是业务层)的ack,是放在tcp有效载荷内的数据信息。这个ack开始发送的时候,client端的应用还在等待commit请求的结果信息呢。之哟client端接受到这个相应,你的存折才会打印出那个可怜的余额+5来,所以顺序很重要,不要搞颠倒。如果这个时候DB down机,TCP再怎么ack都没有用处,client就会挂在这里等待。应用做的好的话,会在一定的时间之后超时。

过程:


你交了钱
然后等待
client |
         |
app->|->commit request->wait                                       |
         |                TCP->sent                                             |
         |                                                                 recieve |Server
         |                                                             ack<-TCP |
         |                                                             commit     |
____________________________________________你所讲的步骤只到这里,如果不成功就会挂再在这里,根本你的存折没有+5,这个时间你还在这里等待来。再说如果数据库down机的话,估计你也查不了你的余额了
         |                                                  commit succesful |
         |                                                 sent<-TCP(succ)  |
app<-|recieve                                                                 |
         |TCP->ack                                                              |
         |commit request->commpleted                              |
client|                                                                            |
这个时候,你的余额加那可怜的5块钱才能打印出来,兄弟你现在才能去查余额啊。之前的这段时间让柜台小姐帮你代劳好了。


注:过程中可能还有很多次的TCP ack ,忽略不计了

[ 本帖最后由 sunsroad 于 2010-1-13 12:35 编辑 ]

论坛徽章:
0
52 [报告]
发表于 2010-01-13 13:23 |只看该作者
恢复一个图片,一看就明白了
file:///C:/Documents%20and%20Settings/simple.chen/My%20Documents/%E5%AD%98%E6%AC%BE.jpg
file:///C:/Documents%20and%20Settings/simple.chen/My%20Documents/%E5%AD%98%E6%AC%BE.jpg

存款.jpg (61.49 KB, 下载次数: 82)

存款.jpg

论坛徽章:
0
53 [报告]
发表于 2010-01-13 13:29 |只看该作者
[quote]原帖由 sunsroad 于 2010-1-13 13:23 发表
恢复一个图片,一看就明白了
file:///C:/Documents%20and%20Settings/simple.chen/My%20Documents/%E5%AD%98%E6%AC%BE.jpg
file:///C:/Documents%20and%20Settings/simple.chen/My%20Documents/%E5%AD%98%E6% ... [/quote】

这样让我思路开阔啊。

论坛徽章:
0
54 [报告]
发表于 2010-01-13 14:27 |只看该作者
银行出错不是很常见的吗 ?

论坛徽章:
0
55 [报告]
发表于 2010-01-13 16:40 |只看该作者
我被北京的工商银行黑了2000大洋的
我存了2000大洋的房贷,通过ATM存入的,打印了凭条。2个月之后,我再次去存房贷,发现余额为0!第二天赶紧带存折去打印,存折上没有这笔存钱交易。而我当时从ATM打印的凭条已经找不到了。根本也无从投诉!
这个不是工行的系统有BUG,就是真的被工行的人黑了。把DB中的交易记录都彻底的删除了!

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-02-18 06:20:00
56 [报告]
发表于 2010-01-13 19:11 |只看该作者
原帖由 冬瓜头 于 2010-1-13 08:45 发表
例子中的终端一词就是指这个啊,不管是智能终端还是io终端。


那就不存在你说的问题啊……

只可能 存完了,返回时候中间断了,发现没存上,再提交,一样的流水号,chksum ok  返回成功。

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-02-18 06:20:00
57 [报告]
发表于 2010-01-13 19:13 |只看该作者
楼上很多人 把应用层的数据 拿到 网络层来说……  你们说的是什么啊

论坛徽章:
0
58 [报告]
发表于 2010-01-13 19:18 |只看该作者
对于银行是否每天晚上都会盘点每天的工作。
然后对帐,如果帐帐不服,帐实不服,是会处理的。
以前有一哥们儿,去储蓄所存钱,结果银行就多存了。
你知道银行最后是如何处理的吗。直接没有通知那哥们儿的情况下
在帐上扣了。别忘记还有个中国特色的银行的霸王合同只是针对储户的。

也认为冬瓜头这个说法是有道理的。毕竟系统不能解决所有问题。

论坛徽章:
2
2015年迎新春徽章
日期:2015-03-04 09:49:45IT运维版块每日发帖之星
日期:2016-07-29 06:20:00
59 [报告]
发表于 2010-01-13 22:15 |只看该作者
原帖由 spook 于 2010-1-13 19:11 发表


那就不存在你说的问题啊……

只可能 存完了,返回时候中间断了,发现没存上,再提交,一样的流水号,chksum ok  返回成功。


如果此时操作员并未查看余额情况, 只记得刚才断了,再来一次,可能外面排了几十个人,没心思再去仔细核对了,其实刚才已经存成功了,而此时又存了一遍,这依然有问题啊。

论坛徽章:
33
ChinaUnix元老
日期:2018-07-04 15:10:362015年亚洲杯之阿联酋
日期:2015-02-06 17:15:532015亚冠之武里南联
日期:2015-06-06 15:40:252015亚冠之北京国安
日期:2015-06-17 15:42:412022北京冬奥会纪念版徽章
日期:2015-08-10 16:30:322015亚冠之阿尔纳斯尔
日期:2015-09-20 09:42:1215-16赛季CBA联赛之北京
日期:2016-01-15 10:03:5915-16赛季CBA联赛之青岛
日期:2016-04-26 16:44:4915-16赛季CBA联赛之广夏
日期:2018-07-04 15:33:21C
日期:2016-10-25 16:12:142017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之同曦
日期:2017-02-22 22:41:10
60 [报告]
发表于 2010-01-13 22:20 |只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP