一种弱中心化分布式系统组网方法及系统与流程

文档序号:29450290发布日期:2022-03-30 11:44阅读:122来源:国知局
一种弱中心化分布式系统组网方法及系统与流程

1.本发明涉及互联网技术领域,尤其涉及一种弱中心化分布式系统组网方法及系统。


背景技术:

2.弱中心化系统是相对于中心化系统而言的。中心化系统就是整个系统部署在一个节点上,中心化系统的优点是以最大限度地节省资源。但中心化系统存在明显的单点故障问题,且可扩展性较差,一旦中心服务因任何问题不能继续服务后,整个系统将瘫痪。而区块链技术或者一些分布式系统一致性协议,实现都比较复杂,需要各个服务做大量工作。简洁的弱中心化系统很好的解决了中心服务单点故障问题,并且实现比较简单。


技术实现要素:

3.为解决现有技术的不足,本发明提出一种弱中心化分布式系统组网方法及系统,通过让系统中的服务在启动初期,尝试使用redis的set命令加ex、nx参数的形式设置和获取一个分布式锁,获得了此分布式锁的节点就被确定为中心,其它服务启动时,未获得此权限的,并且分布式锁信息非本服务时,自动作为节点服务。当中心服务出现故障后,系统中的其它服务将选出一个服务作为新的中心,由新的中心接管整个系统,对外提供服务。
4.为实现以上目的,本发明所采用的技术方案包括:
5.一种弱中心化分布式系统组网方法,包括:
6.s1、在redis中设置分布式锁,并设置所述分布式锁的存活时间;
7.s2、获取redis的连接信息,所有节点服务无差别启动,抢夺所述分布式锁;
8.s3、根据分布式锁抢夺情况确定中心节点和普通节点,定时更新所述分布式锁的存活时间;
9.s4、所述普通节点连接中心节点;
10.s5、判断所述普通节点与中心节点是否连接成功;
11.若所述普通节点与中心节点连接成功,则向中心节点进行注册;
12.判断是否注册成功,若注册成功,则该普通节点开始进行节点服务;
13.若注册未成功,则重新抢夺所述分布式锁;
14.若所述普通节点与中心节点连接未成功,则重新抢夺所述分布式锁。
15.进一步地,所述根据分布式锁抢夺情况确定中心节点和普通节点包括:
16.判断节点是否成功抢夺到所述分布式锁;
17.若有节点成功抢夺到所述分布式锁,则将成功抢夺到分布式锁的节点设置为中心节点;
18.若所述节点都未成功抢夺到所述分布式锁,则获取所述分布式锁的信息,判断所述信息是否属于本节点的地址和接口;
19.若所述信息属于本节点的地址和接口,将本节点设置为中心节点,将其他节点设
置为普通节点。
20.进一步地,所述中心节点用于接收客户端的连接、注册并处理客户端的请求和普通节点的注册,并为普通节点发送任务请求。
21.进一步地,所述分布式锁采用setnx命令设置。
22.进一步地,当所述普通节点注册未成功或与中心节点连接未成功时,设定重新抢夺所述分布式锁的延时为3秒。
23.本发明还涉及一种弱中心化分布式系统组网系统,包括:
24.分布式锁设置模块,用于设置分布式锁以及存活时间;
25.获取模块,用于获取redis的连接信息、分布式锁的信息和客户端的请求;
26.判断模块,用于判断节点是否成功抢夺到所述分布式锁、所述普通节点与中心节点是否连接和/或注册成功、当若所有节点都未成功抢夺到所述分布式锁,判断分布式锁的信息是否属于本节点的地址和接口;
27.处理模块,用于确定中心节点和普通节点、定时更新所述分布式锁的存活时间、接收客户端的连接和注册,接收并处理客户端的请求;
28.存储模块,用于存储所述分布式锁的信息、节点的地址和接口的信息和客户端的请求。
29.本发明还涉及一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法。
30.本发明还涉及一种电子设备,其特征在于,包括处理器和存储器;
31.所述存储器,用于存储所述分布式锁的信息、节点的地址和接口的信息和客户端的请求;
32.所述处理器,用于执行存储器中存储的计算机程序,执行的方法。
33.本发明的有益效果为:
34.采用本发明所述的弱中心化分布式系统组网方法及系统,通过让系统中的服务在启动初期,尝试使用redis的set命令加ex、nx参数的形式设置和获取一个分布式锁,获得了此分布式锁的节点就被确定为中心,其它服务启动时,未获得此权限的,自动作为节点服务。当中心服务出现故障后,系统中的其它服务将选出一个服务作为新的中心,由新的中心接管整个系统,对外提供服务。解决了中心服务单点故障问题,并且实现比较简单。
附图说明
35.图1为本发明弱中心化分布式系统组网方法流程示意图。
36.图2为本发明弱中心化分布式系统组网系统结构示意图。
具体实施方式
37.为了更清楚的理解本发明的内容,将结合附图和实施例详细说明。
38.本发明第一方面涉及一种步骤流程如图1所示的弱中心化分布式系统组网方法,包括:
39.s1、在redis中设置分布式锁,并设置所述分布式锁的存活时间;
40.具体地,在redis使用set命令设置分布式锁,例如
41.setkeyvalue[exseconds|pxmilliseconds][nx|xx]
[0042]
exsecond:设置分布式锁的过期时间为second秒。setkeyvalueexsecond效果等同于setexkeysecondvalue
[0043]
pxmillisecond:设置分布式锁的过期时间为millisecond毫秒。setkeyvaluepxmillisecond效果等同于psetexkeymillisecondvalue。
[0044]
nx:只在分布式锁不存在时,才进行设置操作。setkeyvaluenx效果等同于setnxkeyvalue。
[0045]
xx:只在分布式锁已经存在时,才进行设置操作。
[0046]
我们只用到了ex和nx参数,
[0047]
例如:setcenter192.168.12.11:8000ex3nx
[0048]
含义是:设置key为center,value为192.168.12.11:8000,当此key不存在时设置成功,存在时设置失败,如果设置成功,则此key将存活3s。
[0049]
s2、获取redis的连接信息,所有节点服务无差别启动,抢夺所述分布式锁;
[0050]
setnx(key,1)当一个线程执行setnx返回1,说明key原本不存在,该线程成功得到了分布式锁,当其他线程执行setnx返回0,说明key已经存在,该线程抢夺失败。
[0051]
s3、根据分布式锁抢夺情况确定中心节点和普通节点,定时更新所述分布式锁的存活时间;如果一个得到锁的线程在执行任务的过程中挂掉,来不及显式地释放锁,这块资源将会永远被锁住,别的线程再也别想进来。所以,setnx的key必须设置一个超时时间,以保证即使没有被显式释放,这把锁也要在一定时间后自动释放。setnx不支持超时参数,所以需要ex参数。
[0052]
具体的,判断节点是否成功抢夺到所述分布式锁;
[0053]
若有节点成功抢夺到所述分布式锁,则将成功抢夺到分布式锁的节点设置为中心节点;
[0054]
若所述节点都未成功抢夺到所述分布式锁,则获取所述分布式锁的信息,判断所述信息是否属于本节点的地址和接口;
[0055]
若所述信息属于本节点的地址和接口,将本节点设置为中心节点,将其他节点设置为普通节点。
[0056]
s4、所述普通节点连接中心节点;
[0057]
s5、判断所述普通节点与中心节点是否连接成功;
[0058]
若所述普通节点与中心节点连接成功,则向中心节点进行注册;
[0059]
判断是否注册成功,若注册成功,则该普通节点开始进行节点服务;
[0060]
若注册未成功,则重新抢夺所述分布式锁;
[0061]
若所述普通节点与中心节点连接未成功,则重新抢夺所述分布式锁。
[0062]
当所述普通节点注册未成功或与中心节点连接未成功时,设定重新抢夺所述分布式锁的延时为3秒。
[0063]
由于分布式锁设置存活时间,必须定时更新剩余存活时间,当中心服务死掉后,经过一个存活时间后,分布式锁也就失效了。中心节点不会主动放弃自己的中心身份,而当普通节点与中心节点连接或者注册失败后,将尝试再次抢夺分布式锁,最终会再次确定其身份。
[0064]
本发明另一方面还涉及一种弱中心化分布式系统组网系统,其结构如图2所示,包括:
[0065]
分布式锁设置模块,用于设置分布式锁以及存活时间;
[0066]
获取模块,用于获取redis的连接信息、分布式锁的信息和客户端的请求;
[0067]
判断模块,用于判断节点是否成功抢夺到所述分布式锁、所述普通节点与中心节点是否连接和/或注册成功、当若所有节点都未成功抢夺到所述分布式锁,判断分布式锁的信息是否属于本节点的地址和接口;
[0068]
处理模块,用于确定中心节点和普通节点、定时更新所述分布式锁的存活时间、接收客户端的连接和注册,接收并处理客户端的请求;
[0069]
存储模块,用于存储所述分布式锁的信息、节点的地址和接口的信息和客户端的请求。
[0070]
通过使用该系统,能够执行上述的运算处理方法并实现对应的技术效果。
[0071]
本发明的实施例还提供能够实现上述实施例中的弱中心化分布式系统组网方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的弱中心化分布式系统组网方法的全部步骤。
[0072]
本发明的实施例还提供一种用于执行上述方法的电子设备,作为该方法的实现装置,所述电子设备至少具备有处理器和存储器,特别是该存储器上存储有执行方法所需的数据和相关的计算机程序,例如分布式锁的信息、节点的地址和接口的信息和客户端的请求等,并通过由处理器调用存储器中的数据、程序执行实现方法的全部步骤,并获得对应的技术效果。
[0073]
优选的,该电子设备可以包含有总线架构,总线可以包括任意数量的互联的总线和桥,总线将包括由一个或多个处理器和存储器的各种电路链接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和接收器和发送器之间提供接口。接收器和发送器可以是同一个元件,即收发机,提供用于在传输介质上与各种其他系统通信的单元。处理器负责管理总线和通常的处理,而存储器可以被用于存储处理器在执行操作时所使用的数据。
[0074]
额外的,所述电子设备还可以进一步包括通信模块、输入单元、音频处理器、显示器、电源等部件。其所采用的处理器(或称为控制器、操作控件)可以包括微处理器或其他处理器装置和/或逻辑装置,该处理器接收输入并控制电子设备的各个部件的操作;存储器可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种,可储存上述有关的数据信息,此外还可存储执行有关信息的程序,并且处理器可执行该存储器存储的该程序,以实现信息存储或处理等;输入单元用于向处理器提供输入,例如可以为按键或触摸输入装置;电源用于向电子设备提供电力;显示器用于进行图像和文字等显示对象的显示,例如可为lcd显示器。通信模块即为经由天线发送和接收信号的发送机/接收机。通信模块(发送机/接收机)耦合到处理器,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块
(发送机/接收机)还经由音频处理器耦合到扬声器和麦克风,以经由扬声器提供音频输出,并接收来自麦克风的音频输入,从而实现通常的电信功能。音频处理器可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器还耦合到中央处理器,从而使得可以通过麦克风能够在本机上录音,且使得可以通过扬声器来播放本机上存储的声音。
[0075]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0076]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的系统。
[0077]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令系统的制造品,该指令系统实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0078]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0079]
以上所述仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换等都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1