CN106534247A - 表单下载的方法和装置 - Google Patents

表单下载的方法和装置 Download PDF

Info

Publication number
CN106534247A
CN106534247A CN201610829451.5A CN201610829451A CN106534247A CN 106534247 A CN106534247 A CN 106534247A CN 201610829451 A CN201610829451 A CN 201610829451A CN 106534247 A CN106534247 A CN 106534247A
Authority
CN
China
Prior art keywords
list
derivation
database
server
mark
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.)
Granted
Application number
CN201610829451.5A
Other languages
English (en)
Other versions
CN106534247B (zh
Inventor
刘作坤
纪勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Neusoft Corp
Original Assignee
Neusoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Neusoft Corp filed Critical Neusoft Corp
Priority to CN201610829451.5A priority Critical patent/CN106534247B/zh
Publication of CN106534247A publication Critical patent/CN106534247A/zh
Application granted granted Critical
Publication of CN106534247B publication Critical patent/CN106534247B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本公开涉及一种表单下载的方法和装置,该方法包括:确定待处理的多个表单,并将多个表单从表单数据库导出至导出数据库;接收客户端发送的用于请求下载多个表单的表单下载请求消息,其中,表单下载请求消息包括多个表单对应的导出标识,导出标识为在从表单数据库导出表单时生成,并在导出完成后发送至客户端的标识;从导出数据库中获取导出标识对应的多个表单,并合并多个表单得到合并文件;将合并文件发送至客户端。本公开能够解决由于合并后的文件过大,服务器无法对该文件进行其他任务处理的问题。

Description

表单下载的方法和装置
技术领域
本公开涉及数据处理领域,具体地,涉及一种表单下载的方法和装置。
背景技术
现在,在进行大量数据采集的过程中,往往需要向用户分发大量的表单供用户填写,并将填写后的表单存储至表单数据库中,用户管理人员通过下载这些表单获取表单数据,从而进行后续的数据处理(如数据的统计或者分类等),用户管理人员在下载该表单之前,服务器需要先将表单从表单数据库中导出,再供用户管理人员进行下载。
由于采集的表单的数量可能会非常大,因此,用户管理人员可能需要一次性导出并下载大量表单,其中,服务器在接收到用于请求导出多个表单的表单导出请求消息后,将该多个表单从表单数据库中导出,并将导出的多个表单进行合并后,存储至导出数据库中。
但是,由于合并后的表单的数据过大,因此造成一些特殊的任务(如存储空间优化和数据安全检查等)无法对合并后的表单进行处理。
发明内容
本公开的目的是提供一种表单下载的方法和装置,能够解决由于合并后的文件过大,服务器无法对该文件进行其他任务处理的问题。
为了实现上述目的,本公开提供一种表格下载的方法,应用于分布式系统中的第一服务器,该方法包括:确定待处理的多个表单,并将所述多个表单从表单数据库导出至导出数据库;接收客户端发送的用于请求下载所述多个表单的表单下载请求消息,其中,所述表单下载请求消息包括所述多个表单对应的导出标识,所述导出标识为在从所述表单数据库导出表单时生成,并在导出完成后发送至所述客户端的标识;从所述导出数据库中获取所述导出标识对应的多个表单,并合并所述多个表单得到合并文件;将所述合并文件发送至所述客户端。
可选地,所述从所述导出数据库中获取所述导出标识对应的多个表单包括:根据所述导出标识获取所述多个表单在所述导出数据库中的存储位置;根据所述存储位置从所述导出数据库中获取所述多个表单。
可选地,所述合并所述多个表单得到合并文件包括:获取所述多个表单在表单数据库中的排列顺序;按照所述排列顺序合并所述多个表单得到所述合并文件。
可选地,所述将所述多个表单从表单数据库导出至导出数据库包括:接收所述客户端发送的用于请求导出所述多个表单的表单导出请求消息,并根据所述表单导出请求消息生成对应所述多个表单的导出标识;获取所述多个表单的数量,并确定所述多个表单的数量是否大于或者等于预设阈值;在确定所述多个表单的数量大于或者等于所述预设阈值时,根据所述多个表单的数量划分所述多个表单得到多个表单集;在所述分布式系统中确定用于导出所述多个表单集中表单的第二服务器,并将所述多个表单集的标识和所述导出标识通过导出指示消息发送至所述第二服务器;其中,所述导出指示消息用于指示所述第二服务器根据所述多个表单集的标识和所述导出标识从所述表单数据库导出所述多个表单集中的表单;在确定所述多个表单全部导出后,向所述客户端发送导出完成消息,其中,所述导出完成消息包括所述导出标识。
可选地,所述根据所述多个表单的数量划分所述多个表单得到多个表单集包括:确定所述分布式系统中所述第二服务器的数量;根据所述第二服务器的数量划分所述多个表单得到多个表单集。
本公开提供一种表格下载的装置,应用于分布式系统中的第一服务器,该装置包括:导出单元,用于待处理的多个表单,并将所述多个表单从表单数据库导出至导出数据库;接收单元,用于接收客户端发送的用于请求下载所述多个表单的下载请求消息,其中,所述表单下载请求消息包括所述多个表单对应的导出标识,所述导出标识为在从所述表单数据库导出表单时生成,并在导出完成后发送至所述客户端的标识;合并单元,用于从所述导出数据库中获取所述导出标识对应的多个表单,并合并所述多个表单得到合并文件;发送单元,用于将所述合并文件发送至所述客户端。
可选地,所述合并单元,用于所述合并单元,用于根据所述导出标识获取所述多个表单在所述导出数据库中的存储位置,并根据所述存储位置从所述导出数据库中获取所述多个表单。
可选地,所述合并单元,用于获取所述多个表单在所述表单数据库中的排列顺序,并按照所述排列顺序合并所述多个表单。
可选地,所述导出单元包括:接收模块,用于接收所述客户端发送的用于请求导出所述多个表单的表单导出请求消息,并根据所述表单导出请求消息生成对应所述多个表单的导出标识;判断模块,用于获取所述多个表单的数量,并确定所述多个表单的数量是否大于或者等于预设阈值;划分模块,用于在确定所述多个表单的数量大于或者等于所述预设阈值时,根据所述多个表单的数量划分所述多个表单得到多个表单集;分配模块,用于在所述分布式系统中确定用于导出所述多个表单集中表单的第二服务器,并将所述多个表单集的标识和所述导出标识通过导出指示消息发送至所述第二服务器;其中,所述导出指示消息用于指示所述第二服务器根据所述多个表单集的标识和所述导出标识从所述表单数据库导出所述多个表单集中的表单;发送模块,用于在确定所述多个表单全部导出后,向所述客户端发送导出完成消息,其中,所述导出完成消息包括所述导出标识。
可选地,所述划分模块,用于确定所述分布式系统中所述第二服务器的数量,并根据所述第二服务器的数量划分所述多个表单得到多个表单集。
通过上述方案,第一服务器接收客户端发送的表单下载请求消息,并根据该表单下载请求消息从导出数据库中获取多个表单,并将该多个表单合并后,传输至客户端。这样,本公开是在请求下载该多个表单时,对多个表单进行合并,而在该多个表单导出至导出数据库时,无需进行合并,从而避免了由于合并后的文件过大,服务器无法对该文件进行其他任务处理的问题。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是本公开一示例性实施例示出的一种分布式系统的结构示意图;
图2是本公开一示例性实施例示出的一种表格下载方法的流程示意图;
图3是本公开一示例性实施例示出的一种表格导出方法的流程示意图;
图4是本公开一示例性实施例示出的另一种表格下载方法的流程示意图;
图5是本公开一示例性实施例示出的一种表格下载装置的结构示意图;
图6是本公开一示例性实施例示出的另一种表格下载装置的结构示意图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
本公开以下实施例可以应用于一种分布式系统中,并基于该分布式系统完成表单的导出和下载,如图1所示,该分布式系统包括用于存储表单的表单数据库,与该表单数据库连接的分布式服务器以及与该分布式服务器连接、用于存储导出表单的导出数据库,其中,该分布式服务器可以包括相互连接的多个服务器,如图1所示的4个服务器(即图1中的服务器1、服务器2、服务器3以及服务器4),在进行表单的导出和下载时,该多个服务器包括一个主服务器和多个子服务器。
为了解决表单数据过大而导致的主服务器的处理负担过重的问题,在进行多个表单导出时,本公开中的主服务器划分该多个表单,并将划分后的多个表单分别分配至子服务器进行导出,在导出完成后,主服务器将子服务器导出的表单进行合并,这样,主服务器可以将多个表单通过多个服务器进行协作导出,减轻了一个服务器的处理负担,提高了表单导出的效率。
但是,由于合并后的表单的数据过大,因此一些特殊的任务处理(如存储空间优化和数据安全检查等)无法对合并后的表单进行处理。为了解决上述问题,本公开通过在请求下载该多个表单时,对多个表单进行合并,而在该多个表单导出至导出数据库时,无需进行合并,从而避免了由于合并后的文件过大,服务器无法对该表单进行其他任务处理的问题。
下面结合具体的实施例对本公开中表单下载的方法进行详细的说明
图2为本公开实施例提供的一种表单下载的方法,如图2所示,该方法的执行主体可以是分布式服务器中的第一服务器,在本公开中,该第一服务器可以为主服务器,该分布式服务器中除该第一服务器之外的其他服务器为子服务器,该主服务器用于接收客户端发送的表单下载请求消息,该方法包括以下步骤:
S201、确定待处理的多个表单,并将该多个表单从表单数据库导出至导出数据库。
在本步骤中,主服务器可以接收客户端发送的查询消息,该查询消息包括查询条件,主服务器根据该查询条件查询表单数据库确定待处理的多个表单。
例如,客户端的操作人员选择查询2016年1月1日至3月31日的订单(如销售订单或者预定订单等),则该2016年1月1日至3月31日的订单即为查询条件,操作人员在选定该查询条件后,客户端通过查询消息将该查询条件发送至主服务器,主服务器根据该查询条件查询表单数据库,从而确定符合该查询条件的多个表单。
在确定多个表单后,主服务器可以导出该多个表单,为了减少主服务器的处理负担,在本公开一种可能的实现方式,可以将该多个表单划分后再导出,如图3所示,图3为本公开实施例提供的一种表单导出的方法,该方法包括:
S2011、接收该客户端发送的用于请求导出该多个表单的表单导出请求消息,并根据该表单导出请求消息生成对应该多个表单的导出标识。
其中,主服务器在接收到表单导出请求消息后,可以建立主任务,并生成主任务标识(相当于导出标识),该主任务用于指示导出该多个表单。
S2012、获取该多个表单的数量,并确定该多个表单的数量是否大于或者等于预设阈值。
其中,主服务器在确定该多个表单后,即可得到该多个表单的数量。
S2013、在确定该多个表单的数量大于或者等于该预设阈值时,根据该多个表单的数量划分该多个表单得到多个表单集。
其中,在确定该多个表单的数量小于该预设阈值时,可以认为当前的表单数量较小,不会占用主服务器过多的内存空间,因此,可以直接将该多个表单从表单数据库中导出。
这里,在得到多个表单集后,主服务器生成对应该多个表单集的子任务,该子任务用于指示导出该多个表单集中的表单,该子任务包括主任务标识。
在本步骤中,可以通过以下方式划分多个表单:确定该分布式系统中该第二服务器的数量,并根据该第二服务器的数量划分该多个表单得到多个表单集。
其中,该表单集可以是对该多个表单划分后得到的表单形成的集合,该第二服务器可以包括主服务器,这样,可以充分利用分布式系统中全部服务器的处理能力进行表单的导出,从而提高表单的导出效率。
在一种可能的实现方式中,可以按照多个表单的数量与第二服务器的数量的比值进行划分,示例地,以图1所示的分布式系统为例进行说明,若多个表单的数量为1000个,服务器1为主服务器,其余3个服务器(服务器2、服务器3和服务器4)为子服务器,则第二服务器的数量为4个(包括1个主服务器和3个子服务器),此时,多个表单的数量与第二服务器的数量的比值为250个,则主服务器,可以将该1000个表单划分为4个分别包括250个表单的表单集。
由于在进行多个表单导出的过程中,子服务器可能本身已经在进行大量数据的处理,导致子服务器的内存空间有限,此时,若在后续为该子服务器分配表单的导出任务,可能由于子服务器的处理效率较低,而影响整个表单导出的效率,因此,为了进一步提高表单的导出效率,在本公开另一实施例中,分布式系统中的各个子服务器可以实时向主服务器上报各自的内存占用情况,主服务器可以根据子服务器上报的内存占用情况划分该多个表单。
在一种可能的实现方式中,主服务器在确定子服务器已占用的内存大于或者等于预设空间阈值时,则认为该子服务器不适合分配表单导出任务,因此,在进行多个表单的划分时不考虑该子服务器。
例如,仍然以表单的数量为1000个为例进行说明,子服务器(服务器2、服务器3和服务器4)实时向主服务器上报各自已占用的内存,若服务器3和服务器4已占用的内存大于或者等于预设空间阈值时,则在划分表单时只考虑主服务器和服务器2(即2个服务器),此时,可以将该1000个表单划分为2个包括500个表单的表单集,并在后续将这两个表单集分配至主服务器和服务器2进行导出。
需要说明的是,当表单的数量与第二服务器的数量的比值为非整数时,则主服务器可以按照四舍五入的原则进行划分,例如,若第二服务器的数量为3个,则1000个表单可以划分为包含333个表单的表单集1、包含333个表单的表单集2以及包含334个表单的表单集3。
在本实施例中,由于主服务器可能接收到多个来自不同客户端的表单导出请求消息,因此,该主服务器还可以建立一个分布导出队列,在接收到一个表单导出请求消息并建立主任务后,若确定该多个表单的数量大于或者等于该预设阈值,则将该主任务加入该分布导出队列中,以便主服务器按照该分布导出队列的顺序,导出主任务指示导出的多个表单。
另外,在将表单划分为多个表单集后,主服务器还记录该多个表单集在表单数据库中的排列顺序,这样,在后续下载该多个表单的过程中,可以按照记录的排列顺序对该多个表单划分的表单集进行合并,从而确保了合并后的表单的排列顺序与该多个表单在表单数据库中的排列顺序一致。
例如,若该多个表单的数量为1000个,在表单数据库中的顺序的编号为1-1000,则将该多个表单划分为4个表单集,分别为:包含编号为1-250的表单的表单集1、包含编号为251-500的表单的表单集2、包含编号为501-750的表单的表单集3以及包含编号为751-1000的表单的表单集4,其中,表单集1中的表单在表单数据库中的顺序为第1位、表单集2中的表单在表单数据库中的顺序为第2位、表单集3中的表单在表单数据库中的顺序为第3位、表单集4中的表单在表单数据库中的顺序为第4位,主服务器记录划分的表单集中表单的排列顺序。
S2014、在该分布式系统中确定用于导出该多个表单集中表单的第二服务器,并将该多个表单集的标识和该导出标识通过导出指示消息发送至该第二服务器。
其中,该导出指示消息用于指示该第二服务器根据该多个表单集的标识和该导出标识从该表单数据库导出该多个表单集中的表单。
在本步骤中,在生成多个子任务后,主服务器可以向确定的第二服务器分配子任务(相当于导出指示消息),以指示分配的服务器导出对应的表单集中的表单,其中,该子任务包括多个表单集的标识和该主任务标识,这样,该第二服务器即可根据该多个表单集的标识获知自己需要导出的表单,并根据该主任务标识确定该表单集是根据上述多个表单划分得到的。
第二服务器在分配到该子任务后,根据该子任务从表单数据库中导出该多个表单集中的表单,并存储至导出数据库,从而将导出的多个表单存储在导出数据库中,第一服务器获取该多个表单在导出数据库中的存储位置,并记录该存储位置,以便在后续下载该多个表单时,根据该存储位置从导出数据库中获取该多个表单。
需要说明的是,该第二服务器可以将表单集中的表单从表单数据库中以预设文档类型导出,示例地,第二服务器在从表单数据库中得到表单后,可以将该表单按照预设的文档模板进行匹配,从而得到符合预设文档类型的表单,例如,该预设文档类型可以是Word文档,该导出数据库可以是存储文档类型数据的文档数据库。
另外,由于第二服务器直接将导出的表单存储至导出数据库,会占用大量的导出数据库的存储空间,为了解决该问题,在本公开另一实施例中,第二服务器可以将导出的表单进行压缩后,再存储至导出数据库中,以减少表单的数据大小,从而减少对导出数据库存储空间的占用。
S2015、在确定该多个表单全部导出后,向该客户端发送导出完成消息,其中,该导出完成消息包括该导出标识。
其中,主服务器可以通过以下两种方式确定该多个表单导出完成:
方式一:第二服务器在将表单存储至导出数据库后,向主服务器发送导出响应消息,以告知主服务器表单的导出已完成。
其中,主服务器可以记录每个分配的子任务的导出状态,在接收到该第二服务器导出响应消息后,将为该第二服务器分配的子任务的导出状态更改为导出已完成状态。
这里,在第二服务器包括主服务器时,则主服务器可以不用向自身发送该导出响应消息,只需要将主服务器负责导出的表单的导出状态更改为导出已完成状态即可。
方式二:第二服务器在接收到导出指示消息时,建立对应的导出状态标志位,该导出状态标志位用于标示子任务是否导出完成,在该第二服务器将表单存储至导出数据库后,将该标志位更改为导出完成标志位,主服务器周期性的轮询第二服务器的导出状态标志位,在该导出状态标志位为导出完成标志位时,则确定该第二服务器的表单导出完成。
例如,该导出状态标志位可以默认为0,即导出还未完成,第二服务器在表单存储至导出数据库后,将该导出状态标志位更改为1,这样,主服务器在查询到该导出状态标志位为1时,则将该第二服务器对应的子任务的导出状态更新为导出已完成状态。
在通过上述两种方式中任一方式确定多个表单全部存储至导出数据库时,确定多个表单全部都导出完成,向客户端发送包含该导出标识的导出完成消息。
这样,通过导出完成消息将该导出标识发送至客户端,以便客户端根据该导出标识下载该多个表单。
S202、接收客户端发送的用于请求下载该多个表单的表单下载请求消息。
其中,该表单下载请求消息包括该多个表单对应的导出标识,该导出标识与该多个表单对应。
在接收到表单下载请求消息后,确定该导出标识是否对应有多个表单集,在确定该导出标识没有对应多个表单集时,则直接进行多个表单的下载,在确定该导出标识对应有多个表单集时,则通过步骤S203对表单集中的表单进行合并。
这里,在多个表单在划分为多个表单集时,会记录与该导出标识对应的划分信息,该划分信息可以包括该表单集的标识和表单集的导出状态以及在表单集中的表单导出完成后记录的表单集中的表单在导出数据库中的存储位置等信息,因此,主服务器可以通过导出标识确定对应的主任务是否存在该划分信息来确定该导出标识是否对应有该多个表单集。
S203、从该导出数据库中获取该导出标识对应的多个表单,并合并该多个表单得到合并文件。
在本步骤中,主服务器根据该导出标识获取该多个表单在该导出数据库中的存储位置,并根据该存储位置从该导出数据库中获取该多个表单。
其中,若从导出数据库中获得的多个表单是压缩文件,则将该多个压缩文件合并为一个压缩文件(相当于合并文件)。
另外,为了确保合并后的表单的排列顺序与表单数据库中的表单的排列顺序一致,在本公开另一实施例中,主服务器在划分多个表单时,记录有该多个表单在表单数据库中的排列顺序,则在合并时,获取该多个表单在该表单数据库中的排列顺序,并按照该排列顺序合并该多个表单。
例如,若该多个表单的数量为1000个,顺序的编号为1-1000,划分的4个表单集在表单数据库中的顺序分别为:表单集1中的表单在表单数据库中的顺序为第1位、表单集2中的表单在表单数据库中的顺序为第2位、表单集3中的表单在表单数据库中的顺序为第3位、表单集4中的表单在表单数据库中的顺序为第4位,则在合并时,按照上述顺序合并各个表单集中的表单得到合并文件。
S204、将该合并文件发送至该客户端。
在本步骤中,主服务器在得到合并后为压缩格式的合并文件后,可以进行以下两种方式的处理,一种方式是将合并后的压缩格式的合并文件发送至客户端,客户端进行解压缩操作后,得到该多个表单,另一种方式是由主服务器直接将压缩文件解压缩后,将解压后得到的多个表单发送至客户端,从而完成多个表单的下载。
采用上述方案,在请求下载该多个表单时,对多个表单进行合并,而在该多个表单导出至导出数据库时,无需进行合并,从而避免了由于合并后的文件过大,服务器无法对该文件进行其他任务处理的问题。
图4为本公开提供的一种表单下载的方法,如图4所示,该方法包括表单的导出和下载两部分,首先,将待处理的多个表单划分为多个表单集,并将多个表单分别分配至分布式系统中的第二服务器,该第二服务器可以包括主服务器和子服务器,通过第二服务器协作从表单数据库中将多个表单导出,并存储至导出数据库,然后在下载存储在导出数据库中的多个表单时,将多个表单合并为合并文件,下面通过具体的步骤对该方法进行详细的说明,其中,步骤S401至步骤S409为表单导出的方法,步骤S410至步骤S414为表单下载的方法,该方法的完整步骤包括:
S401、主服务器接收客户端发送的查询消息,并根据查询消息中的查询条件查询表单数据库确定待处理的多个表单。
例如,客户端的操作人员选择查询2016年1月1日至3月31日的订单(如销售订单或者预定订单等),则该2016年1月1日至3月31日的订单即为查询条件,操作人员在选定该查询条件后,客户端通过查询消息将该查询条件发送至主服务器,主服务器根据该查询条件查询表单数据库,从而确定符合该查询条件的表单。
S402、主服务器接收该客户端发送的表单导出请求消息,根据该表单导出请求消息建立主任务,并生成与该多个表单对应的主任务标识。
其中,该主任务用于指示导出该多个表单。
S403、主服务器获取该多个表单的数量,并确定该多个表单的数量是否大于或者等于预设阈值。
其中,主服务器在确定待处理的多个表单后,即可得到该多个表单的数量。
在确定该多个表单的数量小于该预设阈值时,执行步骤S404;
在确定该多个表单的数量大于或者等于该预设阈值时,执行步骤S405至步骤S414。
S404、将该多个表单以预设文档类型从表单数据库导出,并存储至导出数据库。
其中,该预设文档类型可以是Word文档,该导出数据库可以是文档数据库。
S405、主服务器确定该分布式系统中该第二服务器的数量,并根据该第二服务器的数量对该多个表单进行划分得到多个表单集,并生成对应该多个表单集的子任务。
其中,该子任务用于指示导出该多个表单集中的表单。
在一种可能的实现方式中,可以按照多个表单的数量与第二服务器的数量的比值进行划分。
另外,由于在进行多个表单导出的过程中,子服务器可能本身已经在进行大量数据的处理,导致子服务器的内存空间有限,此时,若在后续为该子服务器分配表单的导出任务,可能由于子服务器的处理效率较低,而影响整个表单导出的效率,因此,为了进一步提高表单的导出效率,在本公开另一实施例中,分布式系统中的各个子服务器可以实时向主服务器上报各自的内存占用情况,主服务器可以根据子服务器上报的内存占用情况划分该多个表单。
其中,主服务器在确定子服务器已占用的内存大于或者等于预设空间阈值时,则认为该子服务器不适合分配表单导出任务,因此,在进行多个表单的划分时不考虑该子服务器。
需要说明的是,当表单的数量与第二服务器的数量的比值为非整数时,则主服务器可以按照四舍五入的原则进行划分,例如,若第二服务器的数量为3个,则1000个表单可以划分为包含333个表单的表单集1、包含333个表单的表单集2以及包含334个表单的表单集3。
另外,在将表单划分为多个表单集后,主服务器还记录该多个表单集在表单数据库中的排列顺序,这样,在后续下载该多个表单的过程中,可以按照记录的排列顺序对该多个表单划分的表单集进行合并,从而确保了合并后的表单的排列顺序与该多个表单在表单数据库中的排列顺序一致。
S406、在该分布式系统中确定用于导出该多个表单集中表单的第二服务器,并将子任务分配至该第二服务器。
其中,该子任务包括多个表单集的标识和该主任务标识,这样,该第二服务器即可根据该多个表单集的标识获知自己需要导出的表单,并根据该主任务标识确定该表单集是根据上述多个表单划分得到的。
S407、第二服务器在分配到该子任务后,根据该子任务从表单数据库中以预设文档类型导出该多个表单集中的表单,并在压缩该导出的多个表单后,存储至导出数据库。
该预设文档类型可以是Word文档。
S408、该第二服务器将该多个表单在导出数据库中的存储位置发送至主服务器。
其中,主服务器在接收到该存储位置后,记录该多个表单对应的存储位置。
S409、主服务器在确定该多个表单都导出完毕后,向客户端发送导出完成消息。
其中,该导出完成消息包括上述主任务标识。
在本步骤中,主服务器可以通过以下两种方式确定该多个表单导出完成:
方式一:第二服务器在将表单存储至导出数据库后,向主服务器发送导出响应消息,以告知主服务器表单的导出已完成。
其中,主服务器可以记录每个分配的子任务的导出状态,在接收到该第二服务器导出响应消息后,将为该第二服务器分配的子任务的导出状态更改为导出已完成状态。
这里,在第二服务器包括主服务器时,则主服务器可以不用向自身发送该导出响应消息,只需要将主服务器负责导出的表单的导出状态更改为导出已完成状态即可。
方式二:第二服务器在接收到导出指示消息时,建立对应的导出状态标志位,该导出状态标志位用于标示子任务是否导出完成,在该第二服务器将表单存储至导出数据库后,将该标志位更改为导出完成标志位,主服务器周期性的轮询第二服务器的导出状态标志位,在该导出状态标志位为导出完成标志位时,则确定该第二服务器的表单导出完成。
例如,该导出状态标志位可以默认为0,即导出还未完成,第二服务器在表单存储至导出数据库后,将该导出状态标志位更改为1,这样,主服务器在查询到该导出状态标志位为1时,则将该第二服务器对应的子任务的导出状态更新为导出已完成状态。
在通过上述两种方式中任一方式确定多个表单全部存储至导出数据库时,确定多个表单全部都导出完成,向客户端发送包含该导出标识的导出完成消息。
在本实施例中,通过上述步骤S401至步骤S409即可完成表单导出,并通过导出完成消息将主任务标识发送至客户端,从而根据该主任务标识通过以下步骤S410至步骤S413完成表单的下载。
S410、主服务器接收客户端发送的用于请求下载该多个表单的表单下载请求消息。
其中,该表单下载请求消息包括该多个表单对应的主任务标识。
S411、主服务器在确定该主任务标识对应有多个表单集时,根据主任务标识获取多个表单集中的表单在导出数据库中的存储位置,并根据该存储位置从该导出数据库中获取该多个表单集中的表单。
主服务器在确定该主任务标识没有对应多个表单集时,直接从导出数据库中获取多个表单,并发送至客户端。
S412、主服务器根据记录的多个表单在表单数据库中的排列顺序合并该表单集中的表单得到合并文件。
其中,若从导出数据库中获得的多个表单是压缩文件,则将该多个压缩文件合并为一个压缩文件(即合并文件)。
S413、主服务器将合并文件发送至客户端。
在本步骤中,主服务器在得到合并后为压缩格式的合并文件后,可以进行以下两种方式的处理,一种方式是将合并后的压缩格式的合并文件发送至客户端,客户端进行解压缩操作后,得到该多个表单,另一种方式是由主服务器直接将压缩文件解压缩后,将解压后得到的多个表单发送至客户端,从而完成多个表单的下载。
采用上述方案,在请求下载该多个表单时,对多个表单进行合并,而在该多个表单导出至导出数据库时,无需进行合并,从而避免了由于合并后的文件过大,服务器无法对该文件进行其他任务处理的问题。
需要说明的是,对于上述方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
图5为本公开实施例提供的一种表单下载的装置,如图5所示,应用于分布式系统中的第一服务器,该装置包括:
导出单元501,用于待处理的多个表单,并将该多个表单从表单数据库导出至导出数据库。
接收单元502,用于接收客户端发送的用于请求下载该多个表单的下载请求消息。
其中,该表单下载请求消息包括该多个表单对应的导出标识,该导出标识为在从该表单数据库导出表单时生成,并在导出完成后发送至该客户端的标识。
合并单元503,用于从该导出数据库中获取该导出标识对应的多个表单,并合并该多个表单得到合并文件。
发送单元504,用于将该合并文件发送至该客户端。
可选地,该合并单元503,用于根据该导出标识获取该多个表单在该导出数据库中的存储位置,并根据该存储位置从该导出数据库中获取该多个表单。
可选地,该合并单元503,用于获取该多个表单在该表单数据库中的排列顺序,并按照该排列顺序合并该多个表单。
可选地,如图6所示,该导出单元501包括:
接收模块5011,用于接收该客户端发送的用于请求导出该多个表单的表单导出请求消息,并根据该表单导出请求消息生成对应该多个表单的导出标识;
判断模块5012,用于获取该多个表单的数量,并确定该多个表单的数量是否大于或者等于预设阈值;
划分模块5013,用于在确定该多个表单的数量大于或者等于该预设阈值时,根据该多个表单的数量划分该多个表单得到多个表单集;
分配模块5014,用于在该分布式系统中确定用于导出该多个表单集中表单的第二服务器,并将该多个表单集的标识和该导出标识通过导出指示消息发送至该第二服务器;其中,该导出指示消息用于指示该第二服务器根据该多个表单集的标识和该导出标识从该表单数据库导出该多个表单集中的表单;
发送模块5015,用于在确定该多个表单全部导出后,向该客户端发送导出完成消息,其中,该导出完成消息包括该导出标识。
可选地,该划分模块5013,用于确定该分布式系统中该第二服务器的数量,并根据该第二服务器的数量划分该多个表单得到多个表单集。
采用上述方案,在请求下载该多个表单时,对多个表单进行合并,而在该多个表单导出至导出数据库时,无需进行合并,从而避免了由于合并后的文件过大,服务器无法对该文件进行其他任务处理的问题。
需要说明的是,所属本领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程和描述,可以参考前述方法实施例中的对应过程,在此不再赘述。
本公开实施例还提供一种服务器,应用在分布式系统中,该服务器包括上述图5和图6描述的表格下载的装置。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。

Claims (10)

1.一种表单下载的方法,其特征在于,应用于分布式系统中的第一服务器,所述方法包括:
确定待处理的多个表单,并将所述多个表单从表单数据库导出至导出数据库;
接收客户端发送的用于请求下载所述多个表单的表单下载请求消息,其中,所述表单下载请求消息包括所述多个表单对应的导出标识,所述导出标识为在从所述表单数据库导出表单时生成,并在导出完成后发送至所述客户端的标识;
从所述导出数据库中获取所述导出标识对应的多个表单,并合并所述多个表单得到合并文件;
将所述合并文件发送至所述客户端。
2.根据权利要求1所述的方法,其特征在于,所述从所述导出数据库中获取所述导出标识对应的多个表单包括:
根据所述导出标识获取所述多个表单在所述导出数据库中的存储位置;
根据所述存储位置从所述导出数据库中获取所述多个表单。
3.根据权利要求1所述的方法,其特征在于,所述合并所述多个表单得到合并文件包括:
获取所述多个表单在表单数据库中的排列顺序;
按照所述排列顺序合并所述多个表单得到所述合并文件。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述将所述多个表单从表单数据库导出至导出数据库包括:
接收所述客户端发送的用于请求导出所述多个表单的表单导出请求消息,并根据所述表单导出请求消息生成对应所述多个表单的导出标识;
获取所述多个表单的数量,并确定所述多个表单的数量是否大于或者等于预设阈值;
在确定所述多个表单的数量大于或者等于所述预设阈值时,根据所述多个表单的数量划分所述多个表单得到多个表单集;
在所述分布式系统中确定用于导出所述多个表单集中表单的第二服务器,并将所述多个表单集的标识和所述导出标识通过导出指示消息发送至所述第二服务器;其中,所述导出指示消息用于指示所述第二服务器根据所述多个表单集的标识和所述导出标识从所述表单数据库导出所述多个表单集中的表单;
在确定所述多个表单全部导出后,向所述客户端发送导出完成消息,其中,所述导出完成消息包括所述导出标识。
5.根据权利要求4所述的方法,其特征在于,所述根据所述多个表单的数量划分所述多个表单得到多个表单集包括:
确定所述分布式系统中所述第二服务器的数量;
根据所述第二服务器的数量划分所述多个表单得到多个表单集。
6.一种表单下载的装置,其特征在于,应用于分布式系统中的第一服务器,所述装置包括:
导出单元,用于待处理的多个表单,并将所述多个表单从表单数据库导出至导出数据库;
接收单元,用于接收客户端发送的用于请求下载所述多个表单的下载请求消息,其中,所述表单下载请求消息包括所述多个表单对应的导出标识,所述导出标识为在从所述表单数据库导出表单时生成,并在导出完成后发送至所述客户端的标识;
合并单元,用于从所述导出数据库中获取所述导出标识对应的多个表单,并合并所述多个表单得到合并文件;
发送单元,用于将所述合并文件发送至所述客户端。
7.根据权利要求6所述的装置,其特征在于,所述合并单元,用于根据所述导出标识获取所述多个表单在所述导出数据库中的存储位置,并根据所述存储位置从所述导出数据库中获取所述多个表单。
8.根据权利要求6所述的装置,其特征在于,所述合并单元,用于获取所述多个表单在所述表单数据库中的排列顺序,并按照所述排列顺序合并所述多个表单。
9.根据权利要求6至8任一项所述的装置,其特征在于,所述导出单元包括:
接收模块,用于接收所述客户端发送的用于请求导出所述多个表单的表单导出请求消息,并根据所述表单导出请求消息生成对应所述多个表单的导出标识;
判断模块,用于获取所述多个表单的数量,并确定所述多个表单的数量是否大于或者等于预设阈值;
划分模块,用于在确定所述多个表单的数量大于或者等于所述预设阈值时,根据所述多个表单的数量划分所述多个表单得到多个表单集;
分配模块,用于在所述分布式系统中确定用于导出所述多个表单集中表单的第二服务器,并将所述多个表单集的标识和所述导出标识通过导出指示消息发送至所述第二服务器;其中,所述导出指示消息用于指示所述第二服务器根据所述多个表单集的标识和所述导出标识从所述表单数据库导出所述多个表单集中的表单;
发送模块,用于在确定所述多个表单全部导出后,向所述客户端发送导出完成消息,其中,所述导出完成消息包括所述导出标识。
10.根据权利要求9所述的装置,其特征在于,所述划分模块,用于确定所述分布式系统中所述第二服务器的数量,并根据所述第二服务器的数量划分所述多个表单得到多个表单集。
CN201610829451.5A 2016-09-18 2016-09-18 表单下载的方法和装置 Active CN106534247B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610829451.5A CN106534247B (zh) 2016-09-18 2016-09-18 表单下载的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610829451.5A CN106534247B (zh) 2016-09-18 2016-09-18 表单下载的方法和装置

Publications (2)

Publication Number Publication Date
CN106534247A true CN106534247A (zh) 2017-03-22
CN106534247B CN106534247B (zh) 2019-05-21

Family

ID=58343783

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610829451.5A Active CN106534247B (zh) 2016-09-18 2016-09-18 表单下载的方法和装置

Country Status (1)

Country Link
CN (1) CN106534247B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109325221A (zh) * 2018-09-27 2019-02-12 郑州云海信息技术有限公司 表格文件的合并方法和装置
CN111767040A (zh) * 2020-07-01 2020-10-13 北京四维智联科技有限公司 一种问题单数据的处理方法、装置及计算机设备
CN117910445A (zh) * 2024-03-20 2024-04-19 中国水利水电第七工程局有限公司 一种报告自动生成方法、系统及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103034735A (zh) * 2012-12-26 2013-04-10 北京讯鸟软件有限公司 一种大数据分布式文件导出方法
CN104253844A (zh) * 2013-06-28 2014-12-31 腾讯科技(北京)有限公司 进行微博数据下载的方法及系统、用户终端及下载服务器
CN105354025A (zh) * 2015-10-18 2016-02-24 广州赛意信息科技有限公司 基于移动应用的业务模型配置系统和方法
CN105468676A (zh) * 2015-11-13 2016-04-06 四川九成信息技术有限公司 一种大数据处理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103034735A (zh) * 2012-12-26 2013-04-10 北京讯鸟软件有限公司 一种大数据分布式文件导出方法
CN104253844A (zh) * 2013-06-28 2014-12-31 腾讯科技(北京)有限公司 进行微博数据下载的方法及系统、用户终端及下载服务器
CN105354025A (zh) * 2015-10-18 2016-02-24 广州赛意信息科技有限公司 基于移动应用的业务模型配置系统和方法
CN105468676A (zh) * 2015-11-13 2016-04-06 四川九成信息技术有限公司 一种大数据处理方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109325221A (zh) * 2018-09-27 2019-02-12 郑州云海信息技术有限公司 表格文件的合并方法和装置
CN111767040A (zh) * 2020-07-01 2020-10-13 北京四维智联科技有限公司 一种问题单数据的处理方法、装置及计算机设备
CN117910445A (zh) * 2024-03-20 2024-04-19 中国水利水电第七工程局有限公司 一种报告自动生成方法、系统及存储介质

Also Published As

Publication number Publication date
CN106534247B (zh) 2019-05-21

Similar Documents

Publication Publication Date Title
CN103929492B (zh) 业务链负载均衡方法及其装置、系统
CN106294233B (zh) 一种直接内存访问的传输控制方法及装置
WO2019218454A1 (zh) 订阅报表生成方法、装置、计算机设备和存储介质
CN107688496A (zh) 任务分布式处理方法、装置、存储介质和服务器
CN106657287A (zh) 一种数据访问方法及系统
CN105893138A (zh) 基于配额的资源管理方法和装置
CN105791254B (zh) 网络请求处理方法、装置及终端
CN105719329B (zh) 记账凭证生成方法和系统
CN104199912B (zh) 一种任务处理的方法及装置
CN105264509A (zh) 融合网络中的自适应中断联合
CN106534247A (zh) 表单下载的方法和装置
CN107659739B (zh) 名单分配方法和装置
CN102255926A (zh) MapReduce系统中的任务分配方法、系统及装置
DE112017003294T5 (de) Technologien für ein skalierbares Senden und Empfangen von Paketen
CN104580381B (zh) 一种在多节点网络中执行作业任务的方法
CN107888660B (zh) 云服务资源调配方法、介质、装置和计算设备
CN105528371B (zh) 一种执行写任务的方法、装置及系统
CN105592110A (zh) 一种资源调度方法及装置
CN105007317A (zh) 一种分布式节点的数据处理方法及网关设备
CN102932271A (zh) 负载均衡的实现方法和装置
CN108055701A (zh) 一种资源调度方法及基站
CN103248636B (zh) 离线下载的系统及方法
CN111224851B (zh) 数据传输设备和处理系统、消息分发方法和装置
CN108171606A (zh) 区块链资产的分配方法及装置
CN105450733A (zh) 一种业务数据分发处理方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant