CN104079663B - 分布式实时同步网络***及其通告数据的方法 - Google Patents
分布式实时同步网络***及其通告数据的方法 Download PDFInfo
- Publication number
- CN104079663B CN104079663B CN201410334955.0A CN201410334955A CN104079663B CN 104079663 B CN104079663 B CN 104079663B CN 201410334955 A CN201410334955 A CN 201410334955A CN 104079663 B CN104079663 B CN 104079663B
- Authority
- CN
- China
- Prior art keywords
- server
- priority
- message
- servers
- highest
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明公开一种结构简单、能使***内各服务器拥有相同数据并实时同步的分布式实时同步网络***及其通告数据的方法。该***内的所有服务器所存数据相同且对每一个服务器赋予不同的优先级,其中,1)每台服务器均定时通报本服务器的优先级并在收到邻居服务器的优先级通告之后,向除该优先级通告发出服务器之外的其他邻居服务器转发该通告;2)优先级低的服务器将其用户终端提出的请求信息传递给优先级最高的服务器,或者通过相邻服务器依次直到转发给优先级最高的服务器;3)请求信息经所述优先级最高的服务器备案后,将该备案信息经相邻服务器转发至该***的每台服务器中并使所有服务器保持相同的存储数据。
Description
技术领域
本发明涉及一种基于互联网的分布式***,特别涉及一种分布式实时同步网络***及其通告数据的方法。
背景技术
随着互联网技术的快速发展,其已成为人们生活中必不可少的一种工具,数据的共享***已成为各种互联网应用中的一个基础功能。在数据的共享***中,数据不再是独立的分散于各服务器,而是由多台服务器共同维护的统一的数据;任何一台服务器都可以提出修改数据的要求,数据的任何修改,都需要实时反映在***中的每一台服务器上。在这种运行模式下,如何在不会明显影响用户使用体验的情况下,保证多台服务器数据的实时同步,成了分布式***绕不开的技术问题。
目前,应用比较广的分布式算法有Paxos和Viewstamps算法。这两个算法都比较复杂;为了解决一致性问题,算法的逻辑比较难懂。具体实现项目有:以Paxos算法为基础的zookeeper项目等等。
对于***来说,不同的服务器会接收到来自不同的用户的修改数据的请求。每个请求,都是对整个***的数据进行修改。显然,如果不对这些来自于不同的服务器的请求进行排序,是不能响应这些请求的。只有处理经过排序之后的请求,***的数据才不至于出现混乱。
在处理完用户的修改请求之后,如何把处理的结果同步到***中的其他所有的服务器,也是该***需要解决的问题。
同时,该***也允许加入新的服务器,新加入的服务器能够及时的获得***中现有的数据,以便向用户提供服务;该***也允许当中的服务器离开该***(比如出现问题,不能继续工作)。在这些情况下,要求整个***都能持续的为用户提供正常的服务。
而现有技术中的分布式网络***,存在如下不足:
1)***内设备复杂,报文程序繁琐。
2)***中服务器的数量需要事先设定好,当参与到***中服务器的数量动态变化超过设定值时,该***则不能正常工作。
发明内容
本发明要解决的技术问题是提供一种结构简单、能使***内各服务器拥有相同数据并实时同步的分布式实时同步网络***及其通告数据的方法。
为了解决上述技术问题,本发明采用的技术方案为:
本发明的分布式实时同步网络***,包括若干台服务器和连接在各服务器上的用户终端,该***内的所有服务器所存数据相同且对每一个服务器赋予不同的优先级,其中,
1)在该***中每台服务器启动时,均会获取优先级,同时,其内部会自动产生一个定时器,在服务器收到比自己更高的优先级通告的报文之后,会延迟定时器的触发时间;当某个服务器的定时器在T时间被触发后,该服务器自动成为该***中优先级最高的服务器而获得决策权;
2)每台服务器均定时向相邻的服务器通报本服务器的优先级;每台服务器在收到邻居服务器的优先级通告的报文之后,向除该优先级通告的报文发出服务器之外的其他邻居服务器转发该优先级通告的报文;
3)优先级低的服务器将其用户终端提出的请求信息传递给优先级最高的服务器,或者通过相邻服务器依次直到转发给优先级最高的服务器;
4)所述请求信息经所述优先级最高的服务器备案后,将备案后的所述请求信息经相邻服务器转发至该***的每台服务器中并使所有服务器保持相同的存储数据。
对新加入该***的服务器赋予优先级,当赋予其的优先级为最高时,将其服务器中所存的数据转发至其它服务器;当赋予其的优先级低于最高时,该服务器从***内优先级最高的服务器中获取与己不同的数据。
所述最高优先级的服务器退出该***后,该***重新设定优先级最高的服务器。
在每台服务器中设有过滤再次收到的所述备案信息的历史报文信息缓存器。
本发明的分布式实时同步网络***内通告数据的方法,其按以下步骤执行:
1)该***中每台服务器启动时,均会获取优先级,同时,其内部会自动产生一个定时器,在服务器收到比自己更高的优先级通告的报文之后,会延迟定时器的触发时间;当某个服务器的定时器在T时间被触发后,该服务器自动成为该***中优先级最高的服务器而获得决策权;
2)每台服务器均定时向其它服务器通报本服务器的优先级并随时接收其它服务器的优先级通告的报文,之后向邻居服务器转发来自其它服务器的优先级通告的报文;
3)当一台服务器收到其他服务器的优先级通告的报文后,经与本地优先级比较,若本地优先级为***中最高,则忽略该报文;若本地优先级较低且不拥有决策权,则重新设置获取决策权的定时器;若本地优先级较低且拥有决策权,则放弃决策权,同时设置定时器;
4)优先级低的服务器将其用户终端提出的请求信息传递给优先级最高的服务器,或者通过相邻服务器依次直到转发给优先级最高的服务器;
5)所述请求信息经所述优先级最高的服务器备案后,将备案后的所述请求信息经相邻服务器转发至该***的每台服务器中并使所有服务器保持相同的存储数据。
本发明方法中,优先级通告的报文包含以下内容:服务器的唯一标识和每次报文生成的序列号。
本发明方法中,在具有环状路径的网络***中,在每台服务器中设有过滤再次收到的所述优先级通告的报文的历史报文信息缓存器。
本发明方法中,拥有决策权的服务器或用户终端退出该***,***中某服务器内部的定时器超时被触发之后,自动成为优先级最高的服务器并获取决策权。
本发明方法中,对新加入该***的服务器赋予优先级,当赋予其的优先级为最高时,将其服务器中所存的数据转发至其它服务器;当赋予其的优先级低于最高时,该服务器从***内优先级最高的服务器中获取与己不同的数据。
与现有技术相比,本发明通过对***内所有服务器赋予不同的优先级,当某一用户终端提出修改或更改数据的请求后,该请求须经***中优先级最高的服务器审核、批准、备案,之后,由该优先级最高的服务器将备案信息经各服务器传递并转发至其它所有的服务器中,由此,使得该分布式网络***中的所有服务器拥有相同的数据并且实时同步。
附图说明
图1为分布式网络***示意图。
图2为本发明的***中各服务器互通优先级等级的示意图。
图3为本发明的***中服务器接收优先级通告报文处理流程图。
图4为本发明的***中各服务器处理用户终端请求的流程图。
图5为本发明的***中服务器收到重复或自发报文的示意图。
具体实施方式
下面结合附图对本发明作进一步说明。
如图1所示,其描述的是一个由四台服务器组成的分布式***。这四台服务器上的数据是一致的。用户可以向任意一台服务器提交修改数据的请求,也就是对于用户来说,不必区分具体的服务器,认为凡是属于该***的服务器都是没有区别的。
一、本发明的分布式实时同步网络***具备的特点是:
1)***由若干台服务器通过网络连接。
2)在任何时候,都可能有新的服务器加入该***,或者***中的一台服务器退出该***。
3)该***中的任何一台服务器的数据一致并实时同步。
二、如图2、3、4所示,搭建本发明***的关键技术如下:
1、***中所有的服务器都需要事先设定一个优先级,并且所有的服务器的优先级不能出现重复。每台服务器都定时向其他设备通告自己的优先级。那么每台服务器都知道在***中,自己的优先级是否是最高的。
某台服务器优先级高低的设定,可由***管理员根据网络条件、配置程度或网速快慢确定。
2、当一台服务器收到用户请求的时候,如果自己不是优先级最高的服务器,就需要把该请求向邻居转发。直到优先级最高的服务器收到该请求,才能对该请求进行处理。整个***只有一台服务器的优先级最高,那么所有的请求都被提交到该服务器上进行处理,也就完成了对不同服务器所接收到的请求的排序。
3、在最高优先级的服务器处理了一个用户的请求之后,就向所有的邻居发送处理的结果。所有接收到处理结果的邻居,也需要向其他邻居转发该处理结果。这样,一个请求的处理结果就被同步到整个***中的所有服务器上。
4、在新的服务器加入该***的时候,如果该服务器是最高优先级,那么整个***的数据都会以该服务器为准;该服务器在获知自己是最高优先级的服务器的时候,会把自己本地的数据同步到所有的邻居,邻居服务器收到数据之后,会同步到所有的其他邻居。
5、如果新加入的服务器的优先级不是最高,那么最高优先级的服务器感知到有新的服务器加入,就会重新把本地的数据发送到新的服务器。
6、当有服务器不能正常工作,如果该服务器的优先级不是最高,那么不会对该***造成任何影响。如果该服务器的优先级是最高的,那么整个***就需要重新确定一个最高优先级的服务器。
三、本发明的***通告报文的方法如下:
1)服务器在启动的时候,不拥有决策权,会设置一个定时器。如果该定时器在T时间之后顺利触发,该服务器自动获得决策权。
2)服务器会向所有的邻居发送自己的优先级通告,服务器在接受到来自邻居的优先级通告报文之后,也会向其他服务器转发该通告。这样就不会限制整个***的拓扑连接方式。只要任何两台服务器之间有路径可达,彼此的通告就可以发送到对方。
3)一台服务器在收到其他服务器的优先级通告之后,和本地的优先级进行比较。如果本地的优先级更高,忽略该报文。如果本地的优先级更低并且不拥有决策权,则重新设置获取决策权的定时器。如果本地的优先级更低并且拥有决策权,该服务器就放弃决策权,同时设置获取决策权的定时器。
4)分布式***中的某台服务器,在收到用户的请求之后,如果本地拥有决策权,本地就可以处理该请求,把请求的回应发送给用户,同时把处理请求之后的生效内容发送给其他服务器。如果本地没有决策权,就会保留一份该请求,同时转发到其他服务器。按照这种转发的顺序,直到拥有最高的决策权的服务器接收到了请求,完成了处理,再按照请求的路径发送回应,直到用户收到该回应。同时再向其他的服务器发送处理请求之后的生效内容。
用户提交的请求,会最终转发到拥有决策权的服务器。该服务器处理完请求之后,会给出请求的回应(成功或者失败)。请求的回应的发送路径,是按照请求的转发路径逆向发送的。在服务器转发请求报文的时候,会记录该请求来自哪个相连的服务器。该记录会有一定生存周期,超过这个周期就认为是请求处理已经超时。拥有最高优先级在处理了请求之后,把处理的结果发回请求的直接来源服务器。接收到回应的服务器在本地找出该请求的来源,把该回应发送给直接相连的源服务器。重复这样的流程一直到用户接收到请求的回应为止。
决策权服务器在处理完请求,向转发请求的服务器发送了请求回应之后,会向所有的服务器发送请求的生效结果。其他服务器在接收到生效的结果后,更新本地的数据,然后向其他服务器转发。
5)优先级通告以及数据修改请求报文都需要包含以下内容:服务器的唯一标识,报文的序列号。分布式***中,每个服务器都有一个唯一的标识。服务器在产生优先级通告报文,以及接收到用户请求,产生请求报文的时候,都会生成新的报文的序列号。服务器在转发优先级通告报文以及用户请求的时候,不会修改报文中的设备唯一标识以及报文序列号字段。服务器的唯一标识和报文序列号能够唯一确定***中的报文。
6)在存在环状路径的网络***中,一台服务器有可能接收到重复的报文,以及自身发出的报文被转发回自身(如图5所示),该报文包括优先级通告、请求报文以及请求的处理结果等。为了处理这种情况,服务器需要保存最近一段时间内的报文字段(主要是服务器ID和报文序号)。这些历史报文信息以HASH表的方式保存起来,每收到一个新报文,就需要查看HASH表,如果该报文属于重复收到的报文,以及是本服务器曾经发送出去的报文,就会被丢弃。
7)如果拥有决策权的设备退出***,意味着和***中的其他设备断开连接。***中剩下的服务器中的优先级最高的服务器,在定时器超时被触发之后,自动获取了决策权。
8)如果管理员想让一个新服务器加入一个分布式***,并且仍然使用该分布式***正在运行的数据,就可以把该服务器的优先级设置的比较低,再加入该***。和该新服务器建立连接的服务器会发送一份完整的数据给新加入的服务器。该服务器获得了完整的数据之后,覆盖本地的数据,和其他服务器一起,作为分布式***的一个组成部分开始运行。
9)如果管理员希望正在运行的分布式***采用新加入的服务器所带有的数据,就把该新服务器的优先级设置为最高。服务器在加入分布式***之后,会获取决策权,在获取决策权之后,会向***内的其他服务器发送自身的数据。其他服务器得到拥有决策权的服务器的数据之后,会覆盖本地的数据,同时向其他服务器转发。这个过程会一直持续到***内的所有服务器的数据都一致为止。
四、技术要点
1、决策点的选举,该技术要点是以下几个技术的合成:
1)每台服务器都有一个优先级,都要向其他服务器发送优先级报文,以通告自己的优先级;同时收到该报文的服务器需要向自己的邻居转发该报文。
2)每台服务器都需要设置一个历史报文信息缓存,以过滤在转发过程中收到的重复的报文。
3)每台服务器如果得知存在更高的优先级服务器,主动放弃决策权。
4)每台不拥有决策权的服务器都设置一个定时器,超过一定时间没有收到比自己更高优先级的服务器信息,就设置自己为决策点服务器。
2、回应请求的路径的确定,该技术是以下几个技术的合成:
1)每个请求都包含发出请求的服务器标识和该报文的序列号。并且该请求在被其他服务器转发的过程中,是不会被修改的。
2)服务器在转发某个请求的时候,会保存该请求的服务器标识和报文的序列号,以及该请求是从哪个邻居发送过来的。
3)决策点服务器在处理完该请求之后,发送的回应报文中,携带了发起该请求的服务器标识以及请求报文的序列号。
4)一台服务器接收到请求的回应报文之后,根据回应报文中携带的服务器标识和报文的序列号,确定该回应所对应的请求是来自于哪个邻居,然后把回应转发给该邻居。
5)在转发请求的过程中,所缓存的请求信息是有时间限制的,超时之后,就不再生效。
Claims (9)
1.一种分布式实时同步网络***,包括若干台服务器和连接在各服务器上的用户终端,其特征在于:该***内的所有服务器所存数据相同且对每一个服务器赋予不同的优先级,其中,
1)在该***中每台服务器启动时,均会获取优先级,同时,其内部会自动产生一个定时器,在服务器收到比自己更高的优先级通告的报文之后,会延迟定时器的触发时间;当某个服务器的定时器在T时间被触发后,该服务器自动成为该***中优先级最高的服务器而获得决策权;
2)每台服务器均定时向相邻的服务器通报本服务器的优先级;每台服务器在收到邻居服务器的优先级通告的报文之后,向除该优先级通告的报文发出服务器之外的其他邻居服务器转发该优先级通告的报文;
3)优先级低的服务器将其用户终端提出的请求信息传递给优先级最高的服务器,或者通过相邻服务器依次直到转发给优先级最高的服务器;
4)所述请求信息经所述优先级最高的服务器备案后,将备案后的所述请求信息经相邻服务器转发至该***的每台服务器中并使所有服务器保持相同的存储数据。
2.根据权利要求1所述的分布式实时同步网络***,其特征在于:对新加入该***的服务器赋予优先级,当赋予其的优先级为最高时,将其服务器中所存的数据转发至其它服务器;当赋予其的优先级低于最高时,该服务器从***内优先级最高的服务器中获取与己不同的数据。
3.根据权利要求1所述的分布式实时同步网络***,其特征在于:所述最高优先级的服务器退出该***后,该***重新设定优先级最高的服务器。
4.根据权利要求1-3中任一项所述的分布式实时同步网络***,其特征在于:在每台服务器中设有过滤再次收到的所述备案信息的历史报文信息缓存器。
5.一种分布式实时同步网络***内通告数据的方法,其特征在于:按以下步骤执行:
1)该***中每台服务器启动时,均会获取优先级,同时,其内部会自动产生一个定时器,在服务器收到比自己更高的优先级通告的报文之后,会延迟定时器的触发时间;当某个服务器的定时器在T时间被触发后,该服务器自动成为该***中优先级最高的服务器而获得决策权;
2)每台服务器均定时向其它服务器通报本服务器的优先级并随时接收其它服务器的优先级通告的报文,之后向邻居服务器转发来自其它服务器的优先级通告的报文;
3)当一台服务器收到其他服务器的优先级通告的报文后,经与本地优先级比较,若本地优先级为***中最高,则忽略该报文;若本地优先级较低且不拥有决策权,则重新设置获取决策权的定时器;若本地优先级较低且拥有决策权,则放弃决策权,同时设置定时器;
4)优先级低的服务器将其用户终端提出的请求信息传递给优先级最高的服务器,或者通过相邻服务器依次直到转发给优先级最高的服务器;
5)所述请求信息经所述优先级最高的服务器备案后,将备案后的所述请求信息经相邻服务器转发至该***的每台服务器中并使所有服务器保持相同的存储数据。
6.根据权利要求5所述的方法,其特征在于:优先级通告的报文包含以下内容:服务器的唯一标识和每次报文生成的序列号。
7.根据权利要求5所述的方法,其特征在于:在具有环状路径的网络***中,在每台服务器中设有过滤再次收到的所述优先级通告的报文的历史报文信息缓存器。
8.根据权利要求5所述的方法,其特征在于:拥有决策权的服务器或用户终端退出该***,***中某服务器内部的定时器超时被触发之后,自动成为优先级最高的服务器并获取决策权。
9.根据权利要求5所述的方法,其特征在于:对新加入该***的服务器赋予优先级,当赋予其的优先级为最高时,将其服务器中所存的数据转发至其它服务器;当赋予其的优先级低于最高时,该服务器从***内优先级最高的服务器中获取与己不同的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410334955.0A CN104079663B (zh) | 2014-07-15 | 2014-07-15 | 分布式实时同步网络***及其通告数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410334955.0A CN104079663B (zh) | 2014-07-15 | 2014-07-15 | 分布式实时同步网络***及其通告数据的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104079663A CN104079663A (zh) | 2014-10-01 |
CN104079663B true CN104079663B (zh) | 2017-11-17 |
Family
ID=51600703
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410334955.0A Active CN104079663B (zh) | 2014-07-15 | 2014-07-15 | 分布式实时同步网络***及其通告数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104079663B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108170763B (zh) * | 2017-12-25 | 2021-07-27 | 江南大学 | 一种低延迟的分布式计算共识算法 |
CN108366086A (zh) * | 2017-12-25 | 2018-08-03 | 聚好看科技股份有限公司 | 一种控制业务处理的方法及装置 |
CN108650281A (zh) * | 2018-02-28 | 2018-10-12 | 努比亚技术有限公司 | 一种数据管理方法、装置及计算机可读存储介质 |
CN109491715B (zh) * | 2018-11-06 | 2021-10-22 | 深圳市风云实业有限公司 | 基于Windows NT的应用管理方法、装置及终端 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6944788B2 (en) * | 2002-03-12 | 2005-09-13 | Sun Microsystems, Inc. | System and method for enabling failover for an application server cluster |
CN103067206B (zh) * | 2012-12-28 | 2016-07-06 | 无锡博欧节能科技有限公司 | 物联网跨机房分布式全自动热备用服务器切换*** |
-
2014
- 2014-07-15 CN CN201410334955.0A patent/CN104079663B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN104079663A (zh) | 2014-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108847925B (zh) | 一种基于树状结构的分片区块链生成方法 | |
CN104079663B (zh) | 分布式实时同步网络***及其通告数据的方法 | |
JP2019114254A (ja) | 中継チャットボットを用いてインスタントメッセージングサービスを提供するサーバ、端末及び方法{server, device and method for providing instant messeging service by using relay chatbot} | |
KR100462406B1 (ko) | 인터넷 기반 오버레이 멀티캐스트 트리 구성 및 관리 방법 | |
CN104468163B (zh) | 容灾网络组网的方法、装置及容灾网络 | |
US11012356B2 (en) | Method of forwarding a received message in a mesh network comprising a plurality of communicatively interconnected mesh nodes as well as a corresponding mesh node | |
CN107682857B (zh) | Zigbee网络的数据共享方法、网关设备与Zigbee网络*** | |
CN101577722A (zh) | 实现强制mac转发功能的方法和装置 | |
CN106533845A (zh) | 一种长连接状态监控方法和装置 | |
CN103546315B (zh) | 一种dhcp服务器的备份***、方法及设备 | |
CN109040184B (zh) | 一种主节点的选举方法及服务器 | |
CN105208058B (zh) | 基于web会话共享的信息交互*** | |
US9591069B2 (en) | Peer-to-peer assist for live media streaming | |
CN106571973A (zh) | 心跳包超时管理方法及*** | |
CN101989995B (zh) | 一种分布式网络的拓扑信息收集方法 | |
CN102598635A (zh) | 网络地址分配方法 | |
US9325599B2 (en) | Methods for providing a status to devices in a distributed system | |
WO2012159537A1 (zh) | 一种用户信息共享的即时通讯***及方法 | |
WO2012159535A1 (zh) | 一种实现用户信息共享的即时通讯***及方法 | |
CN108234358A (zh) | 一种组播报文传输方法、装置及机器可读存储介质 | |
Chen et al. | Design and implementation of an anycast services discovery in mobile ad hoc networks | |
CN103354567A (zh) | 一种同步媒体访问控制地址的方法和设备 | |
CN107682265B (zh) | 支付***的报文路由方法及装置 | |
CN112104888B (zh) | 一种直播用户分组的方法及*** | |
CN109274783A (zh) | 一种dhcp客户端多接口的实现方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |