支付宝面试系统设计真题分享
Hello、早上好
最近阿粉的朋友出去面试了一下蚂蚁金服,一面的时候收到一道系统设计题,今天跟大家分享一下。
ps:偷偷告诉你,这道题星球球友之前面试的时候也碰到了,这次相当于刚好押题了。题目
用户有多种支付方式(余额、红包、优惠券,代金券等),假如每种支付方式需要通过实时调用远程服务获取可用性。在外部资源环境不变情况下,请设计程序以最短响应时间获得尽可能多的可用支付方式列表。
假定支付方式可用性咨询服务接口定义:PaymentRemoteSerivce接口方法:ConsultResultisEnabled(StringpaymentType);publicclassConsultResult{publicConsultResult(booleanisEnable,StringerrorCode){this。isEnableisEnable;this。errorCodeerrorCode;}咨询结果是否可用privatebooleanisEnable;错误码privateStringerrorCode;publicbooleangetIsEnable(){returnisEnable;}publicStringgetErrorCode(){returnerrorCode;}}
题目要求:
尽可能展示你的编码能力(Java语法、编码风格等),java语言肯定比伪代码得分高
看到这里的小伙伴的可以思考一会哦解题
这道题,说难真的不难。
拿到题目之后,我们首先分析一下,切记直接上手写。
在我们的分析过程,梳理设计要点,并且可以向面试官确认这些设计点是否正确,最后我们才开始真正写代码。
我们来看下这道题的关键词:最短实时远程调用另外需要考虑高并发
结合这几个关键点,第一个很容易想到的方案,遍历查询所有支付方式的可用性,然后返回。
这种做法响应时间就是多次调用远程服务的总和。
不过显然不符合设计要求。
第二种,我们可以想象一下,支付方式可用性在一段时间内不怎么会变化的,所以我们可以在第一种的方式基础上,优化一下,增加缓存保存之前的调用结果。
这种方案只在前面查询的时候耗时较长,后面查询直接走缓存,速度较快。
但是引入缓存有一个弊端,就是某一支付方式如果突然不可用了或者不可用支付突然变成可用了,那在缓存还未失效的这段时间,将会获取不准确的结果。
所以我们需要引入刷新进制,定时查询支付方式可用性,然后更新缓存。
当然如果在定时任务还未刷新的间隔,支付方式突然不可用,依然还是会存这个问题。
这个问题,第一种解决方案,加快定时任务刷新频率。
第二种方案,需要其他服务配合。如果某一支付方式突然从可用变成不可用,或者不可用变成可用了,这种情况发送相应的消息,这边服务受到消息及时更新缓存结果。
第二种设计方案,我们已经在一定程度上优化设计,不过还是存在一些问题。
主要问题还是在于第一次查询遍历查询所有支付方式的可用性,速度较慢。
那这个问题,我们其实就可以引入多线程查询,这样的话,响应时间最大值等于单一支付最长调用那一次。
结合以上的分析,我们代码可以如下:
多线程查询代码:
缓存定时刷新的代码如下:
考虑接口会被高并发调用,在缓存为空的时候,可能会有多个线程并发调用asyncQueryALLPaymentTypes查询所有的支付方式的结果。
但是实际上这里只需要一个线程查询即可,其他线程等待结果就可以。
所以接口使用双重查询锁(DCL)的方式,同时只会有一个线程去查询所有支付方式。
上述DCL的方式只是解决同一个应用内多线程的问题,但是多个应用间被并发调用,还是可能会多线程去查询所有支付可用性。
假设现有10个应用,缓存为空,极端情况下,10个应用都使用多线程去查询支付方式可用性。
假设现有5个支付方式,短时间内发起10550次调用,这种调用量还是很少,完全可以接受。
好了,今天分享就到这里了
燃油车保值神话,破灭了?深途(shentucar)原创作者黎明编辑艾小佳马斯克又将矛头对准了燃油车。9月13日,马斯克说,用不了多久,我们就会像今天看待蒸汽机一样看待燃油车。他……
电煤数据快报10。24为你提供不一样的资讯,我是炭沫子,请关注。截止10月24日,秦皇岛煤炭库存环比上行0。02。截止10月24日,秦皇岛库存为435万吨,较上一日环比上行1万吨。……
地球生物中,为何只有人类女性进化出永久乳房?猿进化成人的标志一个问题让科学家们困惑不已,在世界上5000多种哺乳动物中,为什么偏偏只有人类拥有永久乳房?从只有人类拇指长度一半的最小的鼩鼱、蝙蝠或者啮齿类动物,到巨大的蓝鲸,哺乳动物……
英格兰赛浙江名将遭血洗兰州小将轰单杆最高分丁俊晖27日亮相北京时间10月25日晚间,斯诺克2022英格兰公开赛正式拉开战幕,甘肃兰州小将吴宜泽在与乌克兰选手卡扎科的对决中表现出色,期间上演破百高分,最终横扫对手晋级64强。另外,……
大力促进个体工商户发展,现在的你敢创业吗?大力促进个体工商户发展,现在的你敢创业吗?今天国务院发布促进个体工商户发展条例,从2022年11月1日起施行,条例写的很详实,愿意看全文的这是链接。经过多年的基层治……
为什么当初离开我国去越南发展的外企,基本都后悔了?当初离开中国转战越南的外企,现在基本都后悔了。为什么?近年来,许多外国企业正在将其产业链从中国转移到越南。比如我们熟悉的日本的东芝,韩国的三星,美国的阿迪耐克等等。有人看……
活成自己想要的模样不忘初心,方得始终!人生在世,初心就像一个新生儿面对这个世界,永远充满好奇、求知欲和赞叹。初心给了我们积极进取的生活态度。人的生命只有一次,无法重来。初心常在,经常回望一……
袁心玥作为队长,就要在队伍困难时站出来新华社荷兰阿纳姆9月30日电(记者肖亚卓、刘旸)中国女排在2022世界女排锦标赛第一阶段小组赛取得四连胜,袁心玥30日表示,作为队长她要肩负起更大的责任。中国女排当天以3……
国庆想妆容服帖,旅行更出片?看这篇就够了国庆长假在每个人的翘首以盼中即将到来!大家都有什么安排呢?是出门旅游?宅家刷剧?还是跟小伙伴聚会开party?假期的到来,我们出游期间要时刻牢记疫情防控,用安全文明……
9月28号,尝试写读书笔记的13天为什么我们变得如此不包容了我们是从什么时候开始,变得如此不包容的?我曾读过一本书,叫《非暴力沟通》,里面提到给别人下定义是最暴力的沟通方式。观察身边,会发现有很多人正是这么做的。不知道从什么……
公积金贷款对冲后还能提取吗?公积金提取的条件申请公积金贷款或者是组合贷款之后,可以直接申请把公积金里面的钱来还房贷,就是房贷还款日银行从贷款人的公积金账户里面扣款,这种模式叫做公积金对冲还款。公积金贷款对冲后还能提……
国美新模式店亮相,战略落地下的国美缘何再受资本关注?线上零售、新零售、即时零售关于零售行业的业态与模式,历来受到资本市场的关注,因为整个零售行业的市场太大了,只在今年8月份,商品零售规模就达到了3。25万亿元。也因为此,每当有关……