您的位置 首页 香港服务器

美团共享单锁是什么原理?

1、锁定状态

  锁定状态下,弹簧1处于放松状态,卡栓顶在锁舌的卡口中,锁舌不能移动。锁舌穿过自行车轮,车轮被锁定,马达模块处于关闭状态。

  弹簧2处于压缩状态,顶着卡栓不动。卡栓松动话,手工就能把锁拉开了。

  2、开锁过程

  手机扫码后,手机把共享单车信息发给服务器,服务器给共享单车下解锁指令。

  首先,马达开始工作,通过齿轮构成的传动装置,把卡栓往上拉,拉离那个卡口。同时卡栓压缩了弹簧2。

 锁舌的卡口上,没有了卡栓的阻拦,弹簧1对锁舌的拉力,会把锁舌快速拉回来。嗖的一声,锁舌就从自行车轮中缩回到车锁内部了,共享单车的车轮得到解放,自由了。解锁成功。

  锁舌上的卡口的位置移动到别的地方,卡栓不能影响锁舌。

  卡栓一端被弹簧2顶着,另一端被锁舌顶着。马达不需要去控制卡栓了,马达关闭。

  3、上锁过程

  手工用力拉动锁舌,这个时候弹簧1被拉伸。锁舌穿过自行车轮,进入锁定位置后,锁舌上的卡口刚好对着卡栓。通过手工给弹簧1蓄能了,这个机械能,在下一次解锁的时候用。

  卡栓一直被弹簧2顶着,很不爽,发现另外一端有个豁口,这下,嗖的一声,被顶入到卡口中了。这时候锁舌就不能动了,锁车完毕。

Redis分布式锁的原理是什么?如何续期?

分布式锁的需求产生分布式锁的需求是伴随着应用分布式部署而来的,在单体应用,且只部署一台服务器的情况下,通过java的同步锁即可实现。同步锁,即是一个原子性的操作。

美团共享单锁是什么原理?

那么当应用进行了分布式部署,应用有多个服务,这个时候应用服务端就没有一个可提供原子性操作的地方了,Redis性能高,且是单线程,因此可提供一个原子性操作的地方,利用它,就可以实现分布式锁。

美团共享单锁是什么原理?

用场景说话,使用Redis分布式锁的场景如下图所示:如下图所示,随后会根据场景说明分布式锁及续期相关问题的来龙去脉。

图中序号1:进来一个请求,这个请求要求我们保存一个“订单A”;图中序号2:2.1 步,请求进来,首先去尝试设置一个Redis 值,他的键就是订单号“订单A”,如果尝试成功,则代表我这个线程是第一次设置,相当于我拿到了这个锁;如果尝试失败,那么,可以抛出异常或者等待一段时候后再次重试,这里可以根据业务场景的不同采取不同的策略。这里的关键是在Redis中的操作是单线程的,因此该操作是原子性的。2.2步,为了防止应用服务意外中断,Redis中的数据一直存活,消耗资源,需要设置一个超时时间。(如果为了严谨,可以将2.1, 2.2 两步封装成一个lua脚本部署在Redis服务器上)图中序号3:情况A,这个时候是当Redis的key还未失效,程序就已经执行完成,且删除了Redis中的数据,一切正常;情况B:就是需要续期的场景,如果要避免这个场景的出现,可以将Redis key的失效时间设置长一点,可以应对大多数业务。如果要彻底解决,可以在应用端添加一个Redis锁的注册中心,然后起一个监听线程去监听这个注册中心,发现有锁还在被持有,但是Redis 已经快过期了,则修改相应key的失效时间,进行续期。

服务器的工作原理是什么?

服务器工作原理:

如果把服务器比作人,处理器就是服务器的大脑,各种总线就像是分布于全身肌肉中的神经。芯片组有点像骨架,I/O设备就像是通过神经系统支配的人的手、眼睛、耳朵和嘴。电源系统相当于血液循环系统,将能量输送到身体的各个地方。

服务器作为软件,有很多形式的服务器:文件服务器、数据库服务器、Web服务器、邮件服务器、网页服务器、FTP服务器、域名服务器、应用程序服务器、代理服务器、游戏服务器等。

服务器系统的硬件构成包括中央处理器、硬盘、内存、芯片组、I/O总线、I/O设备、电源、机箱和相关软件等,和我们平时所接触的电脑有诸多相似之处。但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。

关于作者: 维拓主机

热门文章