本文我将和你一起梳理一下面试中分布式事务的高频考点,做到温故知新。
数据一致性和分布式事务是互联网分布式系统设计中必须要考虑的,所以对分布式事务的考察是中高级工程师面试必须跨过的一道门槛。
面试官通常会通过一个实际的系统设计题来展开提问,以考察候选人对分布式基础理论的理解、对各种数据一致性模型的掌握,以及对分布式下事务实现的原理、机制和各种实现手段的熟悉程度。
下面我模拟一个实际的面试场景,面试官可能会对你提出以下一连串的问题,你可以检测一下自己在学习中的掌握程度:
请说说你对分布式系统 CAP 理论的理解,CAP 分别代表什么含义?
为什么分布式系统的一致性和可用性不能同时满足?
你是如何理解数据一致性的?数据一致性有哪几种模型?
你在做系统设计时,如何选择实现强一致性还是弱一致性?
在你的项目里,是如何设计分布式事务,实现最终一致性的?
你了解数据库的 binlog 和 redolog 吗?是如何实现一致性的呢?
需要说明的是,面试并不是应试考试,很多问题并没有标准答案。
在分布式事务的面试中,主要会围绕分布式理论、一致性算法、分布式事务及其应用来展开提问。下面我进行了简单梳理,这里有一张分布式事务的知识点思维导图,你可以对照这张图片,查漏补缺进行分析。
分布式理论部分的主要内容包括 CAP 理论、Base 理论、各种数据一致性模型的应用等。在工作中应用比较多的是 ZooKeeper,需要了解 ZooKeeper 的原理和实现、应用场景等。
一致性算法部分,希望你能够对经典的数据一致性算法,比如 Paxos 算法等有自己的理解,并不是要做到对算法细节倒背如流,而是要能够通过自己的描述,把算法的整体流程讲清楚。
分布式事务的应用是日常开发中打交道最多的部分,如果你在工作中实践过分布式事务的实现是最好的,若没有,可以去了解一些开源的分布式事务中间件。比如我在专栏中多次介绍过的 Alibaba Seata 等组件,通过学习开源组件设计思路,你也可以对这一部分内容有个整体的把握。
使用 Redis 实现分布式锁,需要注意哪些细节呢?不同的实现方式,又存在哪些缺陷呢?