为什么会产生这个问题?如何保证接口幂等性?
|
必须要先说明的是,我这只是举的面试中的一个小例子,并不是因为这个小问题没有回答上来就否定了他。 只是他从那次面试整体展示出来的技术能力,岗位不匹配不高而已,或许有更适合他的岗位 首先,我为什么会问分布式锁呢? 因为他简历上写了“分布式相关技术”,而且我们的项目真的是在用分布式锁。 然后他只回答了一个几个字:可以用 Redis 来做。 他这个回答,从我的角度看来,是觉得不好的。 给我一种戛然而止的感觉,因为他没有说用 Redis 到底怎么做。 我怕他是知道具体的实现方式,但是属于那种问一句回答一句的人,所以我才追问了一句:能不能稍微具体一点。 他没有回答上来,所以在这个问题上,我也就不再继续聊下去了。 因为我知道了关于这个点他的技术深度,我理解,就限于知道分布式锁这个概念而已。 也许看过几篇相关的文章,但是对于其中的一些细节忘记了。 一个有五年工作经验、具有分布式项目实战的程序猿,说不清楚 Redis 分布式锁。 从我的认知里面,我觉得这个地方有点“浮于表面”。 但是在该平台的文章下面,有几个人觉得这个回答还行,至少说明他知道有这个技术。 于是我开始思考。 也许其他人的认知里面是这样的:我知道 Redis 可以做分布式锁,如果真正要用的时候,我可以很快的把这块知识拾起来。 你能说这个观点是错误的吗? 这没有错呀。
甚至我之前的文章中也出现过类似的观点: 总结 这里从事务的ACID开始,向大家先说了XA是分布式事务处理的规范,之后谈到2PC和3PC,2PC有同步阻塞、单点故障和数据不一致的问题,3PC在一定程度上解决了同步阻塞和单点故障的问题,但是还是没有完全解决数据不一致的问题。 之后说到TCC、SAGA、消息队列的最终一致性的方案,TCC由于实现过于麻烦和复杂,业务很少应用,SAGA了解即可,国内也很少有应用到的,消息队列提供了解耦的实现方式,对于中小公司来说可能是较为低成本的实现方式。
最后再说目前国内的实现框架,云端阿里云的GTS兼容Seata,非云端使用Seata,它提供了XA、TCC、AT、SAGA的解决方案,可以说是目前的主流选择。 (编辑:怀化站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
