忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
楼主: 冬瓜头

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

论坛徽章:
0
发表于 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
发表于 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

论坛徽章:
0
发表于 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
发表于 2010-01-13 14:27 |显示全部楼层
银行出错不是很常见的吗 ?

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

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


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

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

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

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

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

论坛徽章:
2
2015年迎新春徽章
日期:2015-03-04 09:49:45IT运维版块每日发帖之星
日期:2016-07-29 06:20:00
发表于 2010-01-13 22:15 |显示全部楼层
原帖由 spook 于 2010-1-13 19:11 发表


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

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


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

论坛徽章:
28
CU大牛徽章
日期:2013-04-17 10:59:39荣誉版主
日期:2015-02-04 10:04:082015年亚洲杯之阿联酋
日期: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:12数据库技术版块每日发帖之星
日期:2015-09-24 06:20:0015-16赛季CBA联赛之北京
日期:2016-01-15 10:03:59IT运维版块每日发帖之星
日期:2016-01-20 06:20:0015-16赛季CBA联赛之青岛
日期:2016-04-26 16:44:49数据库技术版块每日发帖之星
日期:2016-06-21 06:20:00
发表于 2010-01-13 22:20 |显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10张SACC2017门票等你来拿~

在数字化转型时代,云已成为万物智能的数字化大脑。而随着大数据应用、人工智能、移动互联网等技术的飞速发展,“智慧 +” 的概念正在深入到各行各业,提升企业效率,释放商业潜能,创造全新机遇。作为国内顶级技术盛会之一,2017 中国系统架构师大会(SACC2017)将于 10 月 19-21 日在北京新云南皇冠假日酒店震撼来袭。今年,大会以 “云智未来” 为主题,云集国内外顶级专家,围绕云计算、人工智能、大数据、移动互联网、产业应用等热点领域展开技术探讨与交流。本届大会共设置 2 大主会场,18 个技术专场;邀请来自互联网、金融、制造业、电商等多个领域,100 余位技术专家及行业领袖来分享他们的经验;并将吸引 4000 + 人次的系统运维、架构师及 IT 决策人士参会,为他们提供最具价值的交流平台。
----------------------------------------
优惠时间:2017年10月19日前

活动链接>>
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP