分布式系统共享网络资源的方法、终端及系统的制作方法_4

文档序号:9238201阅读:来源:国知局
dis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了 master-slave (主从)同步。
[0125]本实施例利用redis的原子操作实现分布式锁(以下简称锁)的获取方案,其核心思想是利用redis的setnx操作进行获取锁的动作,利用redis的GetSet操作判断锁是否超时,并根据判断结果进行相应操作,直至获取到锁。
[0126]具体地,首先,终端在访问共享资源时,终端向服务器触发第一原子操作,用以获取共享网络资源的分布式锁;其中,第一原子操作以redis的setnx操作进行举例,但不限于此种情形。
[0127]在第一原子操作的触发指令中携带有以分布式锁的锁名为key,以该key对应的第一时间戳为value的key-value参数;其中:锁名为与终端共享资源相关的字符串,第一时间戳为终端的当前时间与终端设定的超时时间之和。
[0128]在服务器侧,服务器在接收不同终端发来的各种操作触发指令,并获取不同终端上报的时间戳。
[0129]具体地,服务器在接收到终端发来的第一原子操作的触发指令后,执行第一原子操作,以获取该终端共享网络资源的锁。
[0130]服务器在执行第一原子操作时,会根据是否获取到锁反馈不同的操作结果,比如,设定获取到锁的操作结果为1,设定未获取到锁的操作结果为I之外的其他值,比如O。最后,服务器会将操作结果反馈给终端。
[0131]终端在获取到服务器反馈的操作结果后,根据操作结果进行相应操作,当操作结果表明成功获取到锁时,终端通过获取的锁共享网络资源。
[0132]当操作结果表明未成功获取到锁时,终端向服务器发送第二原子操作的触发指令,以避免其它拿到锁的进程死掉没有释放锁而造成死锁。
[0133]终端在发给服务器的第二原子操作的触发指令中携带有由该终端的当前时间与设定的超时时间之和构成的第二时间戳。其中,第二原子操作以redis的GetSet操作进行举例,但不限于此种情形。
[0134]服务器根据接收的上述第二原子操作的触发指令,执行第二原子操作,并向终端返回第三时间戳;所述第三时间戳为:所述终端触发所述第二原子操作之前,所述服务器获取到的时间戳,该时间戳可能是异于当前终端的其它终端改写并上报给服务器的时间戳。
[0135]终端在接收到服务器返回的第三时间戳后,判断该第三时间戳是否小于终端的当前时间,若是,则判定锁超时,从而成功获取到锁;否则,返回执行向服务器触发第一原子操作,直至获取到所述分布式锁。
[0136]本实施例通过上述方案,终端向服务器触发第一原子操作,用以获取共享网络资源的分布式锁;服务器根据接收的第一原子操作的触发指令,执行第一原子操作,并向终端返回操作结果;当操作结果为未成功获取到分布式锁时,终端向服务器触发第二原子操作,以判断分布式锁是否超时,若超时,则成功获取到锁,否则,返回执行终端向服务器触发第一原子操作步骤,直至获取到分布式锁,由此,基于原子操作实现分布式锁的获取,可以快速解决分布式计算中对共享资源的安全访问问题,比如可以保证某个进程持有锁时意外终止之后,其他进程能够正常获得锁,具有设计简单、可扩展性好的技术效果。
[0137]更为具体地,如图7所示,所述第二原子操作触发模块403包括:发送单元4031、接收单元4032及判断操作单元4033,其中:
[0138]发送单元4031,用于当操作结果为未成功获取到分布式锁时,向所述服务器发送第二原子操作的触发指令,在所述第二原子操作的触发指令中携带所述终端的当前时间与设定的超时时间之和构成的第二时间戳;
[0139]接收单元4032,用于接收所述服务器执行所述第二原子操作返回的第三时间戳;所述第三时间戳为:所述终端触发所述第二原子操作之前,所述服务器获取到的时间戳;
[0140]判断操作单元4033,用于判断所述第三时间戳是否小于终端的当前时间,若是,则判定所述分布式锁超时,成功获取到分布式锁;否则,由所述第一原子操作触发模块向服务器触发第一原子操作,直至获取到所述分布式锁。
[0141]如图8所示,本发明第二实施例提出一种分布式系统共享网络资源的终端,在上述图6所示的第一实施例的基础上,还包括:
[0142]判断操作模块404,用于当所述操作结果为未成功获取到分布式锁时,从所述服务器获取当前记录的第四时间戳;判断所述第四时间戳是否小于终端的当前时间,若是,则判定所述分布式锁超时,由所述第二原子操作触发模块403向服务器触发第二原子操作;否贝U,由所述第一原子操作触发模块401向服务器触发第一原子操作,直至获取到所述分布式锁。
[0143]本实施例与上述图6所示的第三实施例的区别在于,在本实施例中,终端在通过发送第一原子操作未成功获取到分布式锁时,不是直接向服务器触发第二原子操作,而是先判断分布式锁是否超时,若超时则向服务器触发第二原子操作,若不超时,则直接由第一原子操作触发模块401向服务器触发第一原子操作,由此可以简化分布式锁的获取流程,提高操作效率和准确性。
[0144]具体地,终端在通过发送第一原子操作未成功获取到分布式锁时,终端从服务器获取该服务器当前记录的第四时间戳,终端判断该第四时间戳是否小于终端的当前时间,若是,则判定分布式锁超时,向服务器触发第二原子操作;否则,终端向服务器触发第一原子操作,直至获取到分布式锁。
[0145]本实施例通过上述方案,终端向服务器触发第一原子操作,用以获取共享网络资源的分布式锁;服务器根据接收的第一原子操作的触发指令,执行第一原子操作,并向终端返回操作结果;当操作结果为未成功获取到分布式锁时,终端从服务器获取该服务器当前记录的时间戳,终端判断该时间戳是否小于终端的当前时间,若是,则判定分布式锁超时,向服务器触发第二原子操作,否则,终端向服务器触发第一原子操作,直至获取到分布式锁,由此,基于原子操作实现分布式锁的获取,可以快速解决分布式计算中对共享资源的安全访问问题,比如可以保证某个进程持有锁时意外终止之后,其他进程能够正常获得锁,具有设计简单、可扩展性好的技术效果;同时可以简化分布式锁的获取流程,提高操作效率和准确性。
[0146]如图9所示,本发明第三实施例提出一种分布式系统共享网络资源的终端,在上述图8所示的第二实施例的基础上,还包括:
[0147]资源共享模块405,用于当成功获取到分布式锁时,通过获取的分布式锁共享网络资源。
[0148]本实施例与上述图8所示的第二实施例的区别在于,本实施例还包括终端在成功获取到分布式锁后,通过获取的分布式锁共享网络资源,由此实现了分布式系统中网络资源的共享,保证了分布式计算能够正常稳定运行,同时也保证了多个终端对同一共享资源的安全访问,避免数据的一致性遭到破坏。
[0149]如图10所示,图10是本发明实施例提出的分布式系统共享网络资源的终端的一种结构示意图。
[0150]如图10所示,该终端可以包括:处理器1001,例如CPU,网络接口 1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口 1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口 1003还可以包括标准的有线接口、无线接口。网络接口 1004可选的可以包括标准的有线接口、无线接口(如W1-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如个磁盘存储器。存储器1005可选的还可以是个位于远离前述处理器1001的存储装置。如图10所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及共享网络资源应用程序。
[0151]在图10所示的终端中,网络接口 1004主要用于连接服务器,与服务器进行数据通信;用户接口 1003主要用于连接用户端,与用户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的共享网络资源应用程序,并执行以下操作:
[0152]通过用户接口 1003获取用户的操作指令,通过网络接口 1004向服务器触发第一原子操作,用以获取共享网络资源的分布式锁;所述服务器根据接收的所述第一原子操作的触发指令,执行所述第一原子操作,并向所述终端返回操作结果;当所述操作结果为未成功获取到分布式锁时,所述终端向所述服务器触发第二原子操作,以判断所述分布式锁是否超时,并根据判断结果进行相应操作,直至获取到所述分布式锁。
[0153]在一个实施例中,处理器1001调用存储器1005中存储的共享网络资源应用程序可以执行以下操作:
[0154]当操作结果为未成功获取到分布式锁时,所述终端通过网络接口 1004向所述服务器发送第二原子操作的触发指令,在所述第二原子操作的触发指令中携带所述终端的当前时间与设定的超时时间之和构成的第二时间戳;所述服务器根据接收的所述第二原子操作的触发指令,执行所述第二原子操作,并向所述终端返回第三时间戳;所述第三时间戳为:所述终端触发所述第二原子操作之前,所述服务器获取到的时间戳;终端判断所述第三时间戳是否小于终端的当前时间,若是,则判定所述分布式锁超时,成功获取到分布式锁;否则,返回执行步骤:向服务器触发第一原子操作,直至获取到所述分布式锁。
[0155]在一个实施例中,处理器1001调用存储器1005中存储的共享网络资源应用程序可以执行以下操作:
[0156]所述终端向所述服务器发送第二原子操作的触发指令的步骤之前还包括:
[0157]当所述操作结果为未成功获取到分布式锁时,所述终端从所述服务器获取当前记录的第四时间戳;
[0158]所述终端判断所述第四时间戳是否小于终端的当前时间,若是,则判定所述分布式锁超时,执行步骤:向服务器触发第二原子操作;否则,返回执行步骤:终端向服务器触发第一原子操作,直至获取到所述分布式锁。
[0159]进一步地,在一个实施例中,处理器1001调用存储器1005中存储的共享网络资源应用程序可以执行以下操作:
[0160]当成功获取到分布式锁时,所述终端通过获取的分布式锁共享网络资源。
[0161]本实施例通过上述方案,终端向服务器触发第一原子操作,用以获取共享网络资源的分布式锁;服务器根据接收的第一原子操作的触发指令,执行第一原子操作,并向终端返回操作结果;当操作结果为未成功获取到分布式锁时,终端从服务器获取该服务器当前记录的时间戳,终端判断该时间戳是否小于终端的当前时间,若是,则判定分布式锁超时,向服务器触发第二原子操作,否则,终端向服务器触发第一原子操作,直至获取到分布式锁,由此,基于原子操作实现
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1