00:00
好,今天我们来看一下面试题,今天带来的面2题是请谈谈你对分布人所的理解和要实现。那还是按照我们之前的思路。来看一下本题的。南路指数。啊,本地的难度指数呢,是4星级。然后第2个呢,就是考察的频率。那考拉频率呢,85%左右。如果是到问到分布式,那这道题的可能性非常大。那么开发年限。3~5年。所以说呢,各位小伙伴啊,如果你应聘的是Java中级工程师,高级工程师,这是一道具有。挑战意义的名人题。好,那我们首先来了解一下第一个。就是对这道题的概念的理解。
01:02
好,首先我们看一看什么是分布式锁。分布式锁是这样的。好。是一种。跨进程。跨这个机器节点。互次所。这个大家需要注意。那么可以用来。保证。多台。机器节点。那么对于什么呀,有共享资源。访问的排他性。好这个概念。那我们看到这个概念的时候呢。突然有想到诶。
02:00
像这个县城啊是吧,所以。它现成啊。和县城。本质上。是一样的。那么线程锁它的生命周期。是进程。它的生命周期啊是。单进程。多线程。那我们分布式说它的生命周期。它是多进程。多机器。也点,这大家需要注意。因为我们在前面讲线程锁的时候,是在一个线程是吧,多个一个进程啊,四个线程之间。做的这个锁。好,那么在本质上呢,啊,本质上你这里面啊,实际上给大家说了一个性能水的区别是吧。
03:00
他们都需要满足。锁的。几个特性。那这几个特性呢,就是所谓重要的特性,第一个我们来看啊,叫排他性。那排大性呢,就是同一个时刻。只能有。这个地方呢,是一个节点是吧。啊,访问共享资源,那如果在县城呢。就是一个县城来访问这个资源。好,第二个叫做可重复性。那什么是可重入性呢?所谓可重入性,就是允许一个已经获得。锁的这个进程。在没有释放。所之前。重新。获得资源。重新获得什么资源呢?所得这个资源。3。
04:01
那我们叫做锁呢?或许。还有一些就是。释放。他都有需要这样的方法,因为这个锁呢,我可以上锁,也可以怎么样上锁。好,最后一个我们要具有什么呀,时效。要有相关的私效机制。从而避免。石锁。的情况啊,要避免这样的情况。好,所以说呢,只要满足。上述。这些特性。而这些技术特性的组件。他。主机。都可以。实现。分布之所。这2个需要注意的。那么第二。
05:00
我们来看一看啊。怎么去实现,因为这道题的话呢,他问到了就是一个是理解,另外一个呢就是实现。所以呢,在做分布式锁的时候,你需要对它的压几个条件。开发性、可重复性。获取和释放的这个方法好,那第2个呢,就。实现。OK, 那直线的话呢,来看一下第一个,比如说我们RDBMS。在RDFX上。这个时间所的排查性。那我们。如何?来实现。锁的排他性。然后是怎么了?我们可以使用唯一约束。那如果说我们要针对某个方法。可以创建一个表。
06:01
包含这个方法的。报名可能唯一约束。这个时候我们。往表里面来插入一条数据啊,那我这儿呢。给大家说一下这个逻辑啊。就说我针对某个方法加所。我干嘛呢?我创建一个表。电表。减一个表。这个表呢?方法名,它作为字段。色之七为。唯一约束。好,来看一下啊抢字。强调锁的逻辑。那强调图的逻辑呢?就是往表当中插入一条。
07:01
数据。好,如果有其他线能或者5个,如果有。其他。县城。获得了。某个。方法的锁。那么。哎,那么这个时候。插入。数据怎么样?要失败了吗?是不是?啊,这样的话呢,我从而保证。互持性说的互持性。啊,这种方式呢,比较简单。好,但是呢,我们要实现比较完整的分布制度。
08:00
它实践起来比较简单。考虑。重入性啊,我要重新来进来。而所失效。机制。还有呢,阻塞机制。就比较麻烦。所以呢,咱之前是学过RDBMS,但是呢。这时候呢?不要用这种方式了,去了解啊。那么另外一个呢,我们在前面学过缓存中间液是吧。那么它里面呢,提供了这样一个词。这个时间叫什么呢?S.嗯。嗯。SE.4啊。And charming.那这个命令呢,它可以实现。索的排他性。好,我们重点来说一下它。如果所不存在。
09:02
则返回1。存在。则。返回。0。还有呢?我可以啊。曹玲。可以设置。过期。失效时间。对吧,这个这个所S这个比较直接,那这个指令是什么呢?来看到大家一下,叫做ex per一块。那在他的国际时间。好,那我设置过期时间。它可以避免什么呀,可以。避免。思索问题。因为我到期之后,我这个手。好,那当然了,也有可能会存在这样一个。我锁过期了。但是呢?
10:02
我的业务逻辑。还没有结束对吧,这就是一个问题。在这种情况下。怎么办?我可以写一个定时任务。对吧。对。对,指定这个K。我进行一个。续约。就是续期的调度。好,那我教你啊。好,这个开源组件。它就提供了。分布式锁的封装实现。并且也内置了。一个。
11:00
这,那叫过去。Eight six.握紧多少个进制啊?你听那个名字就是什么意思,看不懂是吧。对,这个K。作续约。这是大家需要注意的。好。注意啊,在这个里面,它99%的。就可以。解决。有问题了。好,当然了,它在。适合用鸡群的时候。可能。由于这样一个场景。那这个场景呢,就是。主从切换。少导致K。失效。那这个情况下怎么办呢?
12:00
这种情况。它可能是由于多个线程。抢占。同一个。所资源。是吧?那这个什么呢?Red这个官方啊,咱需要注意。官方。他提供了一个这样的。Is that look.呃,解决方法。哎,这个方法。10点起来了。有一点麻烦,而且呢它就可以解决。所支援的。问题。好,那除了这个方。那么还有呢?我们可以通过。
13:01
其他的,比如说。来实现。先需要注意啊,接下来看它的本质,它的本质呢,就是分管所本质是一个CP模型。什么是CP呢?我们在。CAD模型里面说过,除非CP的话呢,就是。分区。这里面。分区,这是一个是。C是一致性。是吧,嗯。然后的P。根据容错。我们在前面呢学过这个red red呢是AP模型。那AP模型指的是什么呀?可用性和分区容错性。所以呢,在基金架构下。由于数据。他为什么要?
14:00
由于数据一致性。问题呢,它会导致。出现。多个。县城。想占到所。情况。怎么样,很难避免是吧,嗯。那么这个时候呢,如果说你要。CP模型下。CP名模型一下,你来实现。分布式锁的特性,你这现在用的是什么呀,是不是AP呀,那这个时候呢,那就可以用我们前面说过的一个。分布式啊。
15:01
首,Lukeper.是吧,用如keep就可以了。那如板的话呢,它又可以保证什么呀。属于一致性。好,那卢IE用到了一个特性,叫做。ZP协议。它可以来保证我们的数据。一致性啊。那z ABB呢,我们也来说一下啊。ZB这个协议呢,是这样的。叫做rule keepper啊,Z keepper.ATUMIC.叫什么呢?叫做原子广播。协议。好,那通过这个ZB协议。RAAB协议。我们可以保证集全。
16:07
组中节点。它的数据一次性。不都是这样的解决方案。数据同步啊,就是数据同步,首先是数据同步啊,从而保证。数据的一致性。啊,这是大家需要注意的。好,那么在后市方向。那如per呢?他也可以。基于有序节点。再加上。啊,Watch, 我们说的watch机制是吧。那我觉机制呢,就是等待唤醒机制,它实现互斥和唤醒操作。
17:01
那我来说一下。思考总结。好看一看啊。在这个里面呢,它。投资者对于。分布式系统。和并发安全的。理解。那涉及到什么呢?分布式的概念,实验方式,可靠性的,一次性的。性能性的问题。核心就是还是大家需要来理解一下。技术底层。你理解的技术底层。我们才可以知道。分布式。互斥性。原理。以及它的实现。好,那我们今天的这道题的分析啊,这道。
我来说两句
教程地址:https://cloud.tencent.com/developer/article/1987395