数据传输方法及服务器系统的制作方法

xiaoxiao2020-10-23  10

数据传输方法及服务器系统的制作方法
【技术领域】
[0001]本发明涉及一种数据传输方法及服务器系统。
【背景技术】
[0002]目前,互联网、数据传输、数据同步等技术领域当中,缓存服务器的使用十分重要。以带有查询功能的大型旅游网站为例,建立缓存服务器的目的是为了减轻数据库压力和加快查询服务器建立本地缓存的速度。缓存服务器负责从数据库中同步数据,作为查询服务器本地缓存建立的数据来源。
[0003]在查询服务器建立本地缓存时,需要从缓存服务器获取大量的数据,在查询服务器集群数量增长过快时,为了使查询服务器缓存建立时间不明显下降,需要增加大量缓存服务器来扩充服务能力,这对于缓存服务器集群的增长以及网络容量扩充压力较大,同时增加了对缓存服务器的维护成本。
[0004]而且,如果查询服务器集群发生集体当机,在灾难恢复时,所有的查询服务器(38台以上)向缓存服务器发送数据请求用以重建缓存。每台缓存服务器都需要传输大量的数据,网络带宽将成为瓶颈,使得查询服务器在恢复数据时极为缓慢。

【发明内容】

[0005]本发明要解决的技术问题是为了克服现有技术中缓存服务器集群的增长以及网络容量扩充压力较大,缓存服务器的维护成本高,缓存服务器为查询服务器传输数据时耗较长的缺陷,提供一种提高服务器数据传输速度并减少缓存服务器的使用数量以及维护成本的数据传输方法及服务器系统。
[0006]本发明是通过下述技术方案来解决上述技术问题:一种数据传输方法,所述数据传输方法利用一第一服务器向若干第二服务器传输若干数据,其特点在于,每一数据对应一 ID (身份标识号码),所述数据传输方法包括:
[0007]S1、对于每一数据,所述第一服务器将所述数据划分为若干份数据包,每一份数据包设有编号且大小不超过多播传输的报文大小的上限;
[0008]S2、所述第一服务器通过多播的方式向所述若干第二服务器传输所述若干数据的全部数据包;
[0009]S3、每一第二服务器根据ID以及编号合并数据包为数据。
[0010]其中,第一服务器可以为缓存服务器,第二服务器可以为查询服务器。现有技术中,缓存服务器向查询服务器传输数据是通过TCP (传输控制协议)协议以一对一的方式。利用这种方式为全部查询服务器提供数据时,数据传输缓慢,即使增加一定数量的缓存服务器依然不能有效地缩短数据传输时间,而且增加缓存服务器还会增加运营成本。
[0011]本发明利用多播技术,第一服务器只需将数据发送一次,所有的第二服务器均能够得到数据,从而达到节约带宽、提高传输速度的作用。本发明可以将所有的第二服务器加入多播组,并向第一服务器请求数据同步,由于多播传输报文的大小限制,本发明在利用多播的方式传输数据时需要对数据进行划分处理以满足多播传输报文对大小的规定。
[0012]现有的数据传输中,通常将数据按照不同的参数进行划分,并对划分后的参数进行压缩以满足多播传输报文对大小的限定,但是这种方式常会出现数据压缩后也无法满足大小的限定,且数据传输报文到达顺序不一致所产生的数据传输不稳定,即数据传输过程中容易引起第一服务器和第二服务器两端逻辑复杂化。
[0013]本发明将数据按照小于多播传输的报文大小的上限进行划分,并对数据包编号,使得数据能够利用多播技术进行传输,且第二服务器利用ID以及编号能够准确的拼接出数据。本发明的编号可以是连续的正整数,但并不局限于此,只要第二服务器能够利用编号及ID拼接出数据的编号方式,均落入本发明所保护的范围。
[0014]较佳地,所述编号为全局顺序编号,步骤S2包括:
[0015]S21、所述第一服务器通过多播的方式按照全局顺序编号,顺序地向所述若干第二服务器传输所述若干数据的全部数据包;
[0016]S22、对于每一第二服务器,所述第二服务器根据所述全局顺序编号判断是否有缺失的数据包,若是则执行步骤S23,若否则执行步骤S3 ;
[0017]S23、对于有缺失数据包的第二服务器,设所述第二服务器缺失的数据包的全局顺序编号为a,若第二服务器在接收到全局顺序编号为a+b的数据包时仍未收到全局顺序编号为a的数据包,则向所述第一服务器请求全局顺序编号为a的数据包;
[0018]S24、所述第一服务器根据第二服务器的请求向第二服务器传输数据包。
[0019]为了提高数据传输的稳定性,所述编号为全局顺序编号,即任意两个数据包具有不同的全局顺序编号,而且利用所述全局顺序编号第二服务器可以分辨出第一服务器传输数据包的次序,方便查找缺失的数据包。例如,全局顺序编号分别为01、02、03、04的四个数据包被第一服务器传输出来,当第二服务器接收到全局顺序编号为01、03、04的数据包时,就可以判断出编号为02的数据包为缺失的数据包,本发明的全局顺序编号可以是连续的正整数,但并不局限于此,只要第二服务器能够利用全局顺序编号判断出缺失数据包的编号方式,均落入本发明所保护的范围。
[0020]第一服务器顺序地向第二服务器传输数据包,可以更方便地查找缺失的数据包,并提高数据传输的效率。例如全局顺序编号分别为99、98、…、01、00的100个数据包被第一服务器传输出来,当第二服务器判断缺少编号为98的数据包时,a为98,设a+b为01,当第二服务器在收到编号为01的数据包时仍未收到编号为98的数据包时,向第一服务器请求编号为98的数据包,可以看出由于第一服务器是顺序地传输数据包,因此全局顺序编号并不局限于连续的正整数。利用全局顺序编号以及顺序地传输数据,可以有效解决多播传输报文传输稳定性差,报文到达顺序不一致的问题。
[0021]其中第二服务器向第一服务器请求数据包的请求命令以及第一服务器向第二服务器传输请求的数据包均可以通过TCP协议以一对一的方式在第二服务器和第一服务器之间进行传输。
[0022]较佳地,步骤S24后包括:
[0023]S25、对于有缺失数据包的第二服务器,若第二服务器在接收到全局顺序编号为a+c的数据包时仍未收到全局顺序编号为a的数据包,则向所述第一服务器请求与全局顺序编号为a的数据包ID相同的全部数据包,其中全局顺序编号为a+b的数据包比全局顺序编号为a+c的数据包领先传输η个数据包,η大于500小于15000 ;
[0024]S26、所述第一服务器根据第二服务器的请求向第二服务器传输与全局顺序编号为a的数据包ID相同的全部数据包。
[0025]若第二服务器在接收到全局顺序编号为a+c的数据包时仍未收到全局顺序编号为a的数据包,则第二服务器不会再等待接收单独的数据包,而是向第一服务器请求与全局顺序编号为a的数据包ID相同的全部数据包,也就是重新请求包括全局顺序编号为a的数据包的数据。从而进一步的提高数据传输的稳定性。
[0026]较佳地,所述第一服务器为一缓存服务器,所述缓存服务器用于将一数据库的数据通过多播的方式向所述若干第二服务器传输,所述第二服务器为查询服务器。
[0027]本发明可以应用于大型旅游网站的服务器系统当中,例如携程网站的服务器系统。
[0028]较佳地,所述数据传输方法包括:
[0029]Stl 、判断所述数据库是否添加数据,若是则将每一添加的数据对应一 ID后执行步骤S1,若否则结束流程。
[0030]本发明判断所述数据库是否添加数据可以由缓存服务器完成,缓存服务器在发现数据有变化时可以主动发起数据传输,数据更新更及时。
[0031]本发明还提供一种服务器系统,其特点在于,所述服务器系统包括一第一服务器以及若干第二服务器,所述第一服务器向若干第二服务器传输若干数据,每一数据对应一ID,所述第一服务器包括一划分模块以及一传输模块,每一第二服务器包括一合并模块,
[0032]对于每一数据,所述划分模块用于将所述数据划分为若干份数据包,每一份数据包设有编号且大小不超过多播传输的报文大小的上限;
[0033]所述传输模块用于通过多播的方式向所述若干第二服务器传输所述若干数据的全部数据包;
[0034]所述合并模块用于根据ID以及编号合并数据包为数据。
[0035]较佳地,所述编号为全局顺序编号,每一第二服务器包括一判断模块以及一请求模块,
[0036]所述传输模块用于通过多播的方式按照全局顺序编号,顺序地向所述若干第二服务器传输所述若干数据的全部数据包;
[0037]所述判断模块用于根据所述全局顺序编号判断是否有缺失的数据包,若有缺失的数据包,设所述第二服务器缺失的数据包的全局顺序编号为a,则判断第二服务器在接收到全局顺序编号为a+b的数据包时是否仍未收到全局顺序编号为a的数据包,若仍未收到全局顺序编号为a的数据包则调用所述请求模块向所述第一服务器请求全局顺序编号为a的数据包;
[0038]所述传输模块还用于根据所述请求模块的请求向第二服务器传输数据包。
[0039]较佳地,所述判断模块还用于判断第二服务器在接收到全局顺序编号为a+c的数据包时是否仍未收到全局顺序编号为a的数据包,若是则调用所述请求模块向所述第一服务器请求与全局顺序编号为a的数据包ID相同的全部数据包,其中全局顺序编号为a+b的数据包比全局顺序编号为a+c的数据包领先传输η个数据包,η大于500小于15000 ;
[0040]所述传输模块还用于根据所述请求模块的请求向第二服务器传输与全局顺序编号为a的数据包ID相同的全部数据包。
[0041]较佳地,所述第一服务器为一缓存服务器,所述缓存服务器用于将一数据库的数据通过多播的方式向所述若干第二服务器传输,所述第二服务器为查询服务器。
[0042]较佳地,所述第一服务器包括一检测模块,用于判断所述数据库是否添加数据,若是则将每一添加的数据对应一 ID后调用所述划分模块。
[0043]上述服务器系统能够有效提高缓存服务器的服务能力以及传输速度,减少缓存服务器的使用数量以及维护成本,而且本发明使得数据能够更稳定的传输。
[0044]在符合本领域常识的基础上,上述各优选条件,可任意组合,即得本发明各较佳实例。
[0045]本发明的积极进步效果在于:本发明能够有效提高缓存服务器的服务能力以及传输速度,减少缓存服务器的使用数量以及维护成本,而且本发明使得数据能够更稳定的传输。
【附图说明】
[0046]图1为本发明数据传输方法的实施例1的流程图。
[0047]图2为本发明服务器系统的实施例1的结构示意图。
【具体实施方式】
[0048]下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
[0049]实施例1
[0050]本实施例提供一种数据传输方法,所述数据传输方法利用一缓存服务器将一数据库的3条数据向38个查询服务器传输,3条数据分别对应ID001、ID002、ID003的ID,所述数据传输方法包括:
[0051]步骤100、对于每一数据,所述缓存服务器将所述数据划分为15000份数据包,每一份数据包设有编号且大小不超过32*1024字节。
[0052]其中,32*1024字节是目前多播传输报文的大小限定。这里3条数据的数据包的编号为全局顺序编号,3条数据共被划分为45000份数据包,数据报的全局顺序编号依次是00001,00002,…、44999、45000。
[0053]步骤101、所述缓存服务器通过多播的方式按照全局顺序编号,顺序地向38个查询服务器传输45000份数据包。
[0054]步骤102、对于每一查询服务器,所述查询服务器根据所述全局顺序编号判断是否有缺失的数据包,若是则执行步骤103,若否则执行步骤107 ;
[0055]步骤103、对于有缺失数据包的查询服务器,设所述查询服务器缺失的数据包的全局顺序编号为a,若查询服务器在接收到全局顺序编号为a+1000的数据包时仍未收到全局顺序编号为a的数据包,则向所述缓存服务器请求全局顺序编号为a的数据包。
[0056]本实施例中,如果全局顺序编号为00021的数据包并未被查询服务器接收,则编号为00021的数据包为缺失的数据包,如果查询服务器在接收到全局顺序编号为01021的数据包时仍未收到全局顺序编号为00021的数据包,则向所述缓存服务器请求全局顺序编号为00021的数据包。
[0057]步骤104、所述缓存服务器根据查询服务器的请求向查询服务器传输数据包。
[0058]步骤105、对于有缺失数据包的查询服务器,若查询服务器在接收到全局顺序编号为a+10000的数据包时仍未收到全局顺序编号为a的数据包,则向缓存服务器请求与全局顺序编号为a的数据包ID相同的全部数据包。
[0059]其中全局顺序编号为a+b的数据包比全局顺序编号为a+c的数据包领先传输9000个数据包,9000是η的一种优选。如果全局顺序编号为00021的数据包并未被查询服务器接收,则编号为00021的数据包为缺失的数据包,编号为00021的数据包是由ID为ID001的数据划分得到的,如果查询服务器在接收到全局顺序编号为10021的数据包时仍未收到全局顺序编号为00021的数据包,则向缓存服务器请求ID为ID001的全部数据包。
[0060]步骤106、所述缓存服务器根据查询服务器的请求向查询服务器传输与全局顺序编号为a的数据包ID相同的全部数据包。
[0061]步骤107、每一查询服务器根据ID以及全局顺序编号合并数据包为数据。
[0062]本实施例的数据传输方法还包括:Stl、判断所述数据库是否添加数据,若是则将每一添加的数据对应一 ID后执行步骤100,若否则结束流程。
[0063]步骤Stl可以在步骤107之后执行,也可以在步骤100之前执行。
[0064]本实施例还提供一种服务器系统,所述服务器系统包括一缓存服务器以及若干查询服务器,所述缓存服务器向若干查询服务器传输若干数据,每一数据对应一 ID,所述缓存服务器包括一划分模块11、一传输模块12以及一检测模块13,每一查询服务器包括一合并模块21、一判断模块22以及一请求模块23。
[0065]所述检测模块,用于判断所述数据库是否添加数据,若是则将每一添加的数据对应一 ID后调用所述划分模块。
[0066]对于每一数据,所述划分模块用于将所述数据划分 为若干份数据包,每一份数据包设有全局编号且大小不超过32*1024字节。
[0067]所述传输模块用于通过多播的方式按照全局顺序编号,顺序地向所述若干查询服务器传输所述若干数据的全部数据包。
[0068]所述判断模块用于根据所述全局顺序编号判断是否有缺失的数据包,若有缺失的数据包,设所述查询服务器缺失的数据包的全局顺序编号为a,则判断查询服务器在接收到全局顺序编号为a+1000的数据包时是否仍未收到全局顺序编号为a的数据包,则调用所述请求模块向所述缓存服务器请求全局顺序编号为a的数据包。
[0069]所述传输模块还用于根据所述请求模块的请求向查询服务器传输数据包。
[0070]所述判断模块还用于判断查询服务器在接收到全局顺序编号为a+10000的数据包时是否仍未收到全局顺序编号为a的数据包,若是则调用所述请求模块向所述缓存服务器请求与全局顺序编号为a的数据包ID相同的全部数据包。
[0071]所述传输模块还用于根据所述请求模块的请求向查询服务器传输与全局顺序编号为a的数据包ID相同的全部数据包。
[0072]本实施例的数据传输方法及服务器系统能够有效提高缓存服务器的服务能力以及传输速度,减少缓存服务器的使用数量以及维护成本,而且本实施例的数据传输方法及服务器系统使得数据能够更稳定的传输。
[0073] 虽然以上描述了本发明的【具体实施方式】,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
【主权项】
1.一种数据传输方法,所述数据传输方法利用一第一服务器向若干第二服务器传输若干数据,其特征在于,每一数据对应一 ID,所述数据传输方法包括: 51、对于每一数据,所述第一服务器将所述数据划分为若干份数据包,每一份数据包设有编号且大小不超过多播传输的报文大小的上限; 52、所述第一服务器通过多播的方式向所述若干第二服务器传输所述若干数据的全部数据包; 53、每一第二服务器根据ID以及编号合并数据包为数据。2.如权利要求1所述的数据传输方法,其特征在于,所述编号为全局顺序编号,步骤S2包括: 521、所述第一服务器通过多播的方式按照全局顺序编号,顺序地向所述若干第二服务器传输所述若干数据的全部数据包; 522、对于每一第二服务器,所述第二服务器根据所述全局顺序编号判断是否有缺失的数据包,若是则执行步骤S23,若否则执行步骤S3 ; 523、对于有缺失数据包的第二服务器,设所述第二服务器缺失的数据包的全局顺序编号为a,若第二服务器在接收到全局顺序编号为a+b的数据包时仍未收到全局顺序编号为a的数据包,则向所述第一服务器请求全局顺序编号为a的数据包; 524、所述第一服务器根据第二服务器的请求向第二服务器传输数据包。3.如权利要求2所述的数据传输方法,其特征在于,步骤S24后包括: 525、对于有缺失数据包的第二服务器,若第二服务器在接收到全局顺序编号为a+c的数据包时仍未收到全局顺序编号为a的数据包,则向所述第一服务器请求与全局顺序编号为a的数据包ID相同的全部数据包,其中全局顺序编号为a+b的数据包比全局顺序编号为a+c的数据包领先传输η个数据包,η大于500小于15000 ; 526、所述第一服务器根据第二服务器的请求向第二服务器传输与全局顺序编号为a的数据包ID相同的全部数据包。4.如权利要求1所述的数据传输方法,其特征在于,所述第一服务器为一缓存服务器,所述缓存服务器用于将一数据库的数据通过多播的方式向所述若干第二服务器传输,所述第二服务器为查询服务器。5.如权利要求4所述的数据传输方法,其特征在于,所述数据传输方法包括: Stl、判断所述数据库是否添加数据,若是则将每一添加的数据对应一 ID后执行步骤S1,若否则结束流程。6.一种服务器系统,其特征在于,所述服务器系统包括一第一服务器以及若干第二服务器,所述第一服务器向若干第二服务器传输若干数据,每一数据对应一 ID,所述第一服务器包括一划分模块以及一传输模块,每一第二服务器包括一合并模块, 对于每一数据,所述划分模块用于将所述数据划分为若干份数据包,每一份数据包设有编号且大小不超过多播传输的报文大小的上限; 所述传输模块用于通过多播的方式向所述若干第二服务器传输所述若干数据的全部数据包; 所述合并模块用于根据ID以及编号合并数据包为数据。7.如权利要求6所述的服务器系统,其特征在于,所述编号为全局顺序编号,每一第二服务器包括一判断模块以及一请求模块, 所述传输模块用于通过多播的方式按照全局顺序编号,顺序地向所述若干第二服务器传输所述若干数据的全部数据包; 所述判断模块用于根据所述全局顺序编号判断是否有缺失的数据包,若有缺失的数据包,设所述第二服务器缺失的数据包的全局顺序编号为a,则判断第二服务器在接收到全局顺序编号为a+b的数据包时是否仍未收到全局顺序编号为a的数据包,若仍未收到全局顺序编号为a的数据包则调用所述请求模块向所述第一服务器请求全局顺序编号为a的数据包; 所述传输模块还用于根据所述请求模块的请求向第二服务器传输数据包。8.如权利要求7所述的服务器系统,其特征在于,所述判断模块还用于判断第二服务器在接收到全局顺序编号为a+c的数据包时是否仍未收到全局顺序编号为a的数据包,若是则调用所述请求模块向所述第一服务器请求与全局顺序编号为a的数据包ID相同的全部数据包,其中全局顺序编号为a+b的数据包比全局顺序编号为a+c的数据包领先传输η个数据包,η大于500小于15000 ;所述传输模块还用于根据所述请求模块的请求向第二服务器传输与全局顺序编号为a的数据包ID相同的全部数据包。9.如权利要求6所述的服务器系统,其特征在于,所述第一服务器为一缓存服务器,所述缓存服务器用于将一数据库的数据通过多播的方式向所述若干第二服务器传输,所述第二服务器为查询服务器。10.如权利要求9所述的服务器系统,其特征在于,所述第一服务器包括一检测模块,用于判断所述数据库是否添加数据,若是则将每一添加的数据对应一 ID后调用所述划分模块。
【专利摘要】本发明公开了一种数据传输方法及服务器系统,所述数据传输方法利用一第一服务器向若干第二服务器传输若干数据,每一数据对应一ID,所述数据传输方法包括:S1、对于每一数据,所述第一服务器将所述数据划分为若干份数据包,每一份数据包设有编号且大小不超过多播传输的报文大小的上限;S2、所述第一服务器通过多播的方式向所述若干第二服务器传输所述若干数据的全部数据包;S3、每一第二服务器根据ID以及编号合并数据包为数据。本发明能够有效提高缓存服务器的服务能力以及传输速度,减少缓存服务器的使用数量以及维护成本,而且本发明使得数据能够更稳定的传输。
【IPC分类】H04L1/16, H04L29/08
【公开号】CN104901783
【申请号】CN201410080435
【发明人】张炜权, 刘锋, 王长春, 叶亚明
【申请人】携程计算机技术(上海)有限公司
【公开日】2015年9月9日
【申请日】2014年3月6日

最新回复(0)