同事去阿里面试,遇到这么一个题目,v 友帮看看如何回答是最好的。

2017-03-01 11:51:49 +08:00
 a1310747
编程写出一个银行转账案例,如 A 账号向 B 账户转账,尽可能包含转账账户、转账金额、接收账号、银行流水号、汇率等信息,要求考虑百万以上并发,保证事务的流畅性和安全性。
6980 次点击
所在节点    问与答
33 条回复
a1310747
2017-03-01 11:54:38 +08:00
同事说了一些关于数据库的锁机制和事务隔离级别 并发这块就不知道怎么解决了
vingz
2017-03-01 12:39:25 +08:00
什么岗位?
swulling
2017-03-01 12:40:12 +08:00
这应该是一个 P8 面试题
vingz
2017-03-01 12:42:24 +08:00
@swulling 架构师吧?
a1310747
2017-03-01 13:43:19 +08:00
@swulling 我也不清楚...反正我是没答上来。。
YouXia
2017-03-01 13:45:49 +08:00
@swulling

应届生想拿 Special 的话,这个题答的也不能太差才行。 P8 ?你想多了。。。
YouXia
2017-03-01 13:49:34 +08:00
这个问题,第一点先需要答出两个账户是在同一个数据库里还是不同的数据库里,之后再解题,答出第一点其实就可以加分了。

当然我不搞业务,答不太好,就不详细说了。
qieqie
2017-03-01 14:03:39 +08:00
关键词应该是分布式事务,最终一致性
a1310747
2017-03-01 14:03:45 +08:00
@YouXia 这点真的没想到 感谢提醒
YouXia
2017-03-01 14:07:36 +08:00
@qieqie

涉及到钱的,可以认为只能是强制一致性了。
swulling
2017-03-01 14:31:39 +08:00
@YouXia 如果说应届生就能答出百万并发的架构。而且是百万交易并发。

我只能说你们那里不是地球。

其实说 P8 都是说的低太多了,支付宝双十一每秒交易笔数峰值也就十万规模。这个直接百万
swulling
2017-03-01 14:32:12 +08:00
一人秒杀阿里全公司,一个 P8 怎么够,得 P80 吧
qieqie
2017-03-01 14:33:29 +08:00
@YouXia 题主也说了,在高并发下保证事物的流畅性
http://www.infoq.com/cn/articles/solution-of-distributed-system-transaction-consistency
正如这篇文章里所说:
在互联网领域的绝大多数的场景,都需要牺牲强一致性来换取系统的高可用性,系统往往只需要保证“最终一致性”,只要这个最终时间是在用户可以接受的范围内即可。
ebony0319
2017-03-01 14:35:56 +08:00

银行的做法就是你给我坐着给我等几分钟,取钱至少要几分钟把。
YouXia
2017-03-01 14:37:42 +08:00
@swulling

并发这个面试官基本就是就是瞎扯,不用管。支付宝去年 12W 吧。

这个问题基本上就是让你试着用单机数据库事务实现分布式 /夸库事务。
YouXia
2017-03-01 14:54:32 +08:00
@qieqie

其实文章里提到的,比如本地消息表里的“最终一致性”,其实我是当成强一致性的,通过单机强一致性事务,避免了分布式事务。
benbenlang
2017-03-01 14:59:12 +08:00
不懂技术,但这个题肯定是在考思路,面试官出发点没错的
mickeyandkaka
2017-03-01 15:07:29 +08:00
银行转账 -> 强一致性
尽可能包含转账账户、转账金额、接收账号、银行流水号、汇率等信息 -> 业务设计可能需要拆可能细的表?
要求考虑百万以上并发 -> 高可用
保证事务的流畅性和安全性 -> 高可用与一致性。

看起来分布式事务 + 分布式一致性算法。为了保证可用性,只能堆尽可能多的机器?
不知道应该怎么回答。

我也想知道什么级别会问这种题。。。?
rason
2017-03-01 15:18:57 +08:00
面试让你造飞机,工作让你拧螺丝。
a1310747
2017-03-01 15:19:30 +08:00
@rason 哈哈哈哈哈哈哈哈哈 特别形象!!!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/344024

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX