CN103092932A - 一种分布式文档转码*** - Google Patents

一种分布式文档转码*** Download PDF

Info

Publication number
CN103092932A
CN103092932A CN 201310002550 CN201310002550A CN103092932A CN 103092932 A CN103092932 A CN 103092932A CN 201310002550 CN201310002550 CN 201310002550 CN 201310002550 A CN201310002550 A CN 201310002550A CN 103092932 A CN103092932 A CN 103092932A
Authority
CN
China
Prior art keywords
task
server
transcoding
queue
request
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.)
Pending
Application number
CN 201310002550
Other languages
English (en)
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to CN 201310002550 priority Critical patent/CN103092932A/zh
Publication of CN103092932A publication Critical patent/CN103092932A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种分布式文档转码***,所述分布式构架包括用户上传界面、任务队列服务器、两类转码服务器群(Linux服务器群、Windows服务器群)、公共服务器。该***对文档编码格式对分类之后,将任务压入任务消息队列。任务服务器按照优先级,向转码服务器机群分配任务。转码服务器一直监听任务服务器的某一确定端口,按照自身状态请求任务数据,并将处理完的中间产物传至下一个处理环节,并产生一个新的任务,并压入任务服务器消息队列,最终得到文档的图片格式。本发明提高了***的可扩展性,更高效的利用***资源,使各种数字文档更方便的在互联网上在线阅读。

Description

一种分布式文档转码***
技术领域
本发明涉及分布式转码和任务调度技术,属于多格式数字文档处理领域。
背景技术
随着办公电子化的发展,文档在线阅读、在线文档分享已经逐渐成为在线办公的必不可少的服务和技术。文档转码使得不同格式的电子文档能够在网页、不同移动设备上显示、阅读,目前传统的解决方案是使用Flash作为播放器,如常见的百度文库、豆丁以及道客巴巴,用户可以将自己的各种格式的电子文档上传到服务器,服务器通过转码及转存,转变成Flash播放器可以识别的格式。但是Flash是以第三方插件,导致在载入速度慢、兼容性差。有些直接使用Linux下的开源转码器导致很大一部分转码结果失真。
传统的转码任务都是由专门的任务调度服务器来调度、分配和管理,在待转码任务繁多而且转码服务器群有限的情况下,任务调度会导致大量的***资源浪费,同时转码服务器自身状态变化也会对***资源利用率大大降低。
发明内容
为解决上述技术问题,本发明公开了一种分布式实时文档转码***,能够将各类文档转码为所有设备兼容的图片格式。
在所述文档转码***中,包括公共服务器、任务队列服务器、转码服务器群,
所述公共服务接收上传数据,并且为每个文件提供一个加密的下载地址。
所述任务队列服务器生成一个全局的任务编号,并将文档下载地址和其他相关任务参数作为值存入内存中的消息队列。同时为所有的转码服务器提供一个端口用于接收任务参数。其中任务参数包括文档或者转码中间产物的下载地址、任务的种类和不同任务种类可能需要的其他参数,其中任务种类包括任务类型和任务优先级。
所述消息队列分为不同的优先级,优先级不同的任务到达不同优先级的消息队列排队,等待执行。
为保证转码的质量,转码服务器群分为两类,一类为Linux服务器群,另一类为Windows服务器群。
所述Linux服务器负责解压压缩文件,以及将PDF(或Djvu)文件转码成图片格式。
所述Windows服务器负责将常见的doc、docx、ppt、pptx、pps、ppsx等电子文档格式转码成PDF文件;以及将生成的PDF文件传至公共服务器,同时向任务队列服务器的特定的端口发送建立PDF转码任务的参数,根据需要进入不同优先级的转码队列。
本发明还公布了一种任务调度方法,以便更加充分的利用***资源,尤其在任务数量远远大于转码服务器时,需要尽可能的提高处理效率,所述任务调度方法包括任务队列服务器的多优先级消息队列、任务队列服务器启动信号、转码服务器请求信号、转码服务器自适应、多次重试的策略,来处理所有的任务。
所述任务队列服务器启动信号为向空闲状态停止监听的转码服务群发送的启动信号,即向转码服务群某个端口发送认证秘钥,来启动停止请求任务的转码服务群。
所述转码服务器请求信号,即收到启动信号时,每隔一段时间请求一次任务,在空闲时自动停止请求,并监听任务队列服务器的启动信号。
所述转码服务器自适应,是指本发明只需要每台转码服务器各自计算各自的运行状态,并依据自己的剩余***资源的多少来决定请求任务的种类和数量。
所述多次重试策略,是指本发明在试图将所有的功能专有化的同时,并没有保证数据传递的可靠性,因此任务队列服务器会记录分配出去的任务的执行时间和其反馈的状态,根据超时时间、反馈状态及任务错误信息决定是否重试,每次重试时,超时时间会加长。达到一定重试次数后不再重试,将该任务列为失败任务。
附图说明
图1是本发明Linux转码服务器处理PDF文件的过程的流程图
图2是本发明整个分布式转码***的组成及其基本任务数据流,用于表述任务调度***方法的一个示意性实例
具体实施方式
本发明所述转码是将复杂文档格式到统一兼容性图片格式的一种转换,同时保证无失真的转码结果。例如PDF文件,转码过程就是将PDF格式的文件提取出每页的数据来,然后将每一页的数据写入图片文件(下面以JPG图片文件为例),得到需要的文件;对于Word及PowerPoint文件,考虑到现有开源转码器的对这种文件编码格式识别结果太过于粗糙,影响阅读,所以本发明采取直接利用Windows自身的优势,使用微软公司对自己文档格式的优秀的识别能力,将这种文件无失真的转存为PDF文件,再进行PDF转码。
所述无失真的含义是指输入文件和输出文件的内容、版式无区别。所指输入文件的内容版式以原作者想表述的内容为准。
在整个分布式转码过程中,首先使用者从上传界面上传文档之后,其中上传界面负责将上传的数据传送至公共服务器。公共服务接收传来的数据,并且为所述转码服务器群提供一个专用的文档下载地址,并向任务队列服务器请求,建立对应的转码任务,任务在内存中以键值(Key-Value)消息队列的形式存在。此时任务队列服务器根据任务队列中任务的种类向相关的转码服务器群发送启动信号。收到启动信号后,转码服务器群会依据自身的***资源的利用率及使用运行的实时剩余资源信息来决定自身请求的任务的数量和种类。
在任务队列服务器中任务存在于以Key-Value形式的消息队列中,其中Key是任务队列服务器生成的全局唯一的任务编号,而Value则是该任务的参数,任务分为转码任务和后续处理任务。转码任务Value的格式为:转码种类、转码文件ID、转码文件在公共服务器上的地址、加入时间、重试次数、超时时间、参数校验码;对于后续处理任务Value的格式则依据处理函数的不同而参数不同,此类型任务为钩子任务(HookerJob),即通过在任务中执行不同的函数来实现不同类型的任务。钩子任务多数格式为:函数所在模块、所要执行的函数名、函数的变量、参数校验码。
上述参数校验码为任务传递的有效参数的哈希值,以便保证任务传递的数据正确性。
其中在Linux转码服务器群中所执行的是PDF电子文档的处理过程,是指在转码服务器上,将PDF格式的文件提取出每页的数据来,然后将每一页的数据写入JPG文件,并对该图片做一定的清晰度处理,保存最后的结果,主要有如下步骤:
1)Linux转码服务器首先从任务队列服务器获取任务,并下载相应的PDF文件。
2)转码服务器对PDF文件解码,读出相应的文件信息。
3)对PDF的每页都另存为一张新的图片文件。该处理过程为多线程处理,必须保证处理代码为线程安全。可以根据转码服务器的性能,产生不同数量的线程,提高效率、充分利用***资源。
4)生成的所有图片文件即是我们需要的兼容性极高的格式。建议图片格式使用JPG,经验效果相对其他格式较好。同时转码服务器向任务队列服务器反馈任务执行状态。
参考图1,示出了本发明的Linux转码服务器处理PDF文件的过程。
在Windows转码服务器群中,主要工作是将Word、Powerpoint等电子文档格式转码发布成PDF文档,以便生成JPG文件,概括为如下步骤:
1)Windows转码服务器首先从任务队列服务器获取任务,根据任务参数从公共服务器下载电子文档。
2)转码服务器启动微软的Office办公软件的fork出多个进程,将对应的doc、docx、ppt、pptx文档格式的文件发布为PDF文件。
3)转码服务器将转成的PDF文件上传到公共服务器,并向任务队列服务器反馈任务执行状态,添加新的任务,并且加入相应优先级对应的消息队列。
本发明所述的任务调度方法,是采用的是可靠数据传输方案,任务调度时候,使用TCP连接,并且加入冗余参数,确保服务器之间的数据交换保证传递任务内容的正确性。
所述任务队列服务器包括:
1)存在于内存的消息队列,用于记录不同优先级、不同种类的的任务。所述消息即任务的编号及任务的详细参数和执行状态。任务队列存在于内存大大提高了任务的调度效率。
2)一个可以访问到的IP或者域名,以及一个加密端口。任务队列服务器不断监听该端口,向该端口认证之后,便可以请求任务,并从该端口获得返回的任务信息;同时可以从该端口向任务队列服务器反馈任务的执行状态及通过该端口转码服务器可以建立新的转码任务。任务队列服务器为不同的任务可以根据压力的大小开设相同或者不同的端口号。
3)任务队列服务器会记录认证成功的转码服务器的IP信息,以便发送启动信号。如果启动信号持续10次(按照实际情况设定)未收到应答,则删除相应的转码服务器的相关信息。
4)操作内存中消息队列的查询、添加、修改和删除的客户端。
5)多线程的任务请求处理机制,对每个打开的端口都开一个专门的线程来监听,以便发现请求。
参考图2,其中概括的表述了整个***的任务数据流,其中的结果存放服务器来表示最后的图片文件的的存放位置。Windows转码服务器群与Linux转码服务器群实际中并非直接发送PDF文件,而是通过公共服务器中转文件并用任务调度,图中仅仅示意Windows转码服务器群转出的中间PDF文件需要进一步的PDF文件转码。其中启动信号的应答信号、任务请求、任务建立请求、状态反馈等并未画出。
在整个任务调度的过程中,任务队列服务器只负责建立任务、发放任务、任务状态更新、重试任务、发送启动信号。其中首先建立任务,任务队列服务器会有专门的线程监听特定的加密端口,任何通过认证的请求,如果发送的是建立任务请求,任务队列服务器将会建立一个新的任务并放入对应的消息队列排队。其中建立任务请求格式包括包括建立任务命令标识,以及相对应的任务种类和任务参数。
然后发放任务,对于请求任务的转码服务器,根据任务请求的参数,任务调度服务器直接按照上述转码任务格式,将对应的任务发送给转码服务器。其中任务请求的格式包括请求任务命令标志、以及请求任务的种类。
转码服务器执行完成一个任务之后,会向任务队列服务器反馈相应的状态值,用以更新任务队列。如果任务失败,一般可能是任务超时或者任务执行过程失败。如果任务超时,任务队列服务器将自行更新任务的参数值并且重试任务,并增加超时时间。如果任务执行失败,任务队列服务器会接受到转码服务器传来的失败信息,根据失败信息,并根据失败信息对应的处理方案,将为该失败的任务产生一个新的克隆任务,并且记录重试次数、增加超时时间。
如果没有相应的失败信息处理方案,将会记录失败信息和失败任务的所有的信息,生成错误报告。再重试一次该任务后,如果错误信息不变,则停止执行该任务。
上述增加超时时间的规则是按照2的指数形式递增超时时间。例如第一次的超时时间为3秒,那么第二次的超时时间为3x22=12秒,第三次的超时时间为3x23=24秒,以此类推。
对于重试任务的过程即首先克隆一份原有的任务,并改变任务的重试、超时、时间参数,作为一个新任务。然后将原来的任务标记为失败,列入失败的消息队列。最后将新任务压入对应的消息队列中重新排队等待被执行。
最后是发送启动信号,如果任务队列服务器中某一消息队列存在任务,在10s内未收到任务对应转码服务器的请求,任务队列服务器将会向对应类型的转码服务器发送启动信号。
对于转码服务器,除了负责转码的实际执行,还负责任务请求、应答启动信号、自适应计算以及任务建立和反馈功能。
首先转码服务器任务请求依靠请求信号,即收到启动信号时,在没有任务的情况下,每隔5s(一段极短的时间)向任务队列服务器的特定端口请求一次任务。如果持续一段时间没有任务,自动停止任务请求,开始监听某一特定端口等待任务队列服务器传来的启动信号。收到启动信号后,应答启动信号,并再一次开始每隔5s请求一次任务。上述请求信号格式包括请求指令标志以及请求任务的种类。实际应用中可以将请求指令和任务种类结合,得到每种任务一个指令。此时任务请求和请求认证可以同时操作。
上述转码服务器自适应,是指本发明不需要任务队列服务器在调度时候来计算转码服务的运行状态,只需要每台转码服务器各自计算各自的运行状态,并依据自己的剩余***资源的多少来决定请求任务的种类和优先级。因为文档转码不像视频转码,大多数不会损耗过多的***资源,而且每个任务的执行时间也非常短,所以这种自适应的方式请求来的任务所需要的***资源是可以满足的。而且相比于将服务器运行状态发送到任务队列服务器,让任务队列服务器统筹发放任务,效率和资源利用率都大大提高。
本***提供的分布式文当转码***和任务的调度方式取得了很好的技术效果。在实际应用中就有很强的可扩展性和容错性。因为其本身的多层隔离的设计方法使得其维护极其方便,而且提高了转码的效率。

Claims (10)

1.一种分布式文档转码***,其特征在于包括公共服务器、任务队列服务器、转码服务器群;其特征在于:
上述公共服务器为所有的任务建立一个可以计算的加密的文件下载地址,以及存放源文档和转码的中间结果。
上述任务队列服务器负责建立新任务、处理失败任务及重试任务、向转码服务器群发送启动信号和发放任务。
上述转码服务器群具有分布式结构,分为Linux转码服务器群和Windows转码服务器群。Linux转码服务群负责PDF文件转码工作,Windows服务器负责Word、PowerPoint文件转码工作。
上述公共服务器、任务队列服务器、转码服务器群之间任务调度的数据流采用可靠传输、数据校验、多次重试方案。
2.根据权利要求1所述的任务队列服务器,其特征在于:任务队列服务器为特定的消息队列划分一个特定的加密端口,并负责监听这些加密端口,执行通过认证的请求。任务队列服务器为任务调度***的核心,可以根据请求执行发放、添加、修改任务的指令。
任务队列服务器如果消息队列中存在任务,但是在一定时间内没有转码服务器的请求,将会向对应的转码服务器发送启动信号。
上述任务队列服务器会记录通过认证的转码服务器的IP地址和任务请求种类信息。
上述启动信号为向曾经通过认证的转码服务器的特定端口,发送一段包括认证和启动命令的数据包。
3.根据权利要求2所述的消息队列,其特征在于:消息队列是服务器按照任务的种类和优先级划分的不同的任务排队队列。消息队列的存在形式是内存中一段内存序列。任务以Key-Value形式排列与消息队列当中。所述Key为任务的全局的唯一的关键字,Value为任务的相关参数和校验参数。任务队列服务器能够查询、添加、修改、删除消息队列中的任务。
4.根据权利要求1所述的具有转码PDF文件功能的Linux转码服务器群,其特征在于:所述任务请求,在一定时间内没有任务分配将自动停止请求任务,转为监听特定的启动信号接收加密端口。所述转码PDF文件的过程为将PDF格式的文件提取出每页的数据来,然后将每一页的数据写入图片文件保存,所得到的一组图片文件为转码结果,并且根据需要调节转码结果的质量。
5.根据权利要求4所述的该PDF转码器,其特征在于:该过程为多线程过程,可以多个线程同时转码执行多个任务。
6.根据权利要求1所述的具有转码常用Word、PowerPoint文件功能的转码服务器群,其特征在于:所述转码常用Word、PowerPoint文件的过程为在Windows服务器上将上述文件发布为PDF文件,并向权利要求1中所述的任务队列服务器请求建立一个PDF转码任务,并将生成的PDF文件上传到权利要求1中所述的公共服务器。
7.根据权利要求1所述的转码服务器群,其特征在于,在收到启动信号之后一段时间后开始每隔一段极小的时间(小于10秒)请求一次任务,在较长一段时间(大于1小时)均为请求到任务时停止请求任务。如上述收到启动信号后,向任务队列服务器的特定端口发送应答信号。
8.根据权利要求1所述的采用可靠传输、数据校验、多次重试方案的任务调度***,其特征在于:在数据流的传输过程使用TCP连接,加入冗余参数进行数据校验,以便确保任务传输的正确性。
9.根据权利要求8所述的任务调度***对于失败任务的处理,其特征在于:对于转码失败的任务,根据不同的错误信息对任务进行相应调整后,重试一次,再次失败则终止重试。对于超时失败的任务,按照指数形式加长重试时间作为新任务,并记录重试次数,重新将新任务加入消息队列。
10.根据权利要求8所述的自适应的转码服务器群,其特征在于:转码服务器根据自身的运行状态的计算结果决定请求任务的种类和数量。
CN 201310002550 2013-01-06 2013-01-06 一种分布式文档转码*** Pending CN103092932A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201310002550 CN103092932A (zh) 2013-01-06 2013-01-06 一种分布式文档转码***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201310002550 CN103092932A (zh) 2013-01-06 2013-01-06 一种分布式文档转码***

Publications (1)

Publication Number Publication Date
CN103092932A true CN103092932A (zh) 2013-05-08

Family

ID=48205497

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201310002550 Pending CN103092932A (zh) 2013-01-06 2013-01-06 一种分布式文档转码***

Country Status (1)

Country Link
CN (1) CN103092932A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103686204A (zh) * 2013-12-20 2014-03-26 乐视网信息技术(北京)股份有限公司 基于转码失败的智能重试的方法和***
CN105354254A (zh) * 2015-10-21 2016-02-24 杭州施强网络科技有限公司 一种利用节点服务器进行文档文件格式转换的方法
CN107370639A (zh) * 2017-08-14 2017-11-21 苏州众天力信息科技有限公司 一种基于梯形时间算法的网关多场景控制方法
CN108874513A (zh) * 2017-05-11 2018-11-23 北京京东尚科信息技术有限公司 处理定时任务的方法、***、电子设备和计算机可读介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103686204A (zh) * 2013-12-20 2014-03-26 乐视网信息技术(北京)股份有限公司 基于转码失败的智能重试的方法和***
CN105354254A (zh) * 2015-10-21 2016-02-24 杭州施强网络科技有限公司 一种利用节点服务器进行文档文件格式转换的方法
CN108874513A (zh) * 2017-05-11 2018-11-23 北京京东尚科信息技术有限公司 处理定时任务的方法、***、电子设备和计算机可读介质
CN107370639A (zh) * 2017-08-14 2017-11-21 苏州众天力信息科技有限公司 一种基于梯形时间算法的网关多场景控制方法

Similar Documents

Publication Publication Date Title
CN112100460B (zh) 基于区块链的网络页面存证方法、装置、介质及电子设备
US10965732B2 (en) Streaming zip
CN113157648A (zh) 基于区块链的分布式数据存储方法、装置、节点及***
CN110661668B (zh) 一种消息发送管理方法及装置
CN103780700A (zh) 一种实现多源异构***之间兼容与共享的应用***和方法
CN102355426A (zh) 实现离线文件传输的方法和***
CN103200204A (zh) 基于云存储的分布式转码***及其方法
EP3346379A1 (en) Database management system with dynamic allocation of database requests
CN102123279A (zh) 一种分布式实时转码方法与***
US20200213385A1 (en) Offline mobile data storage system and method
CN109583221A (zh) 基于多云服务器架构的网盘***
CN103092932A (zh) 一种分布式文档转码***
CN109672752A (zh) 数据同步的方法及节点
CN115859362A (zh) 基于区块链侧链的数据存储***、方法、设备及介质
CN114598749A (zh) 一种服务访问方法及装置
CN112883011A (zh) 实时数据处理方法和装置
CN104933059B (zh) 文件信誉获取方法、网关设备和文件信誉服务器
JP5961471B2 (ja) 複数の情報システムおける出力比較方法
CN104427003B (zh) 传送装置、传送方法和中继***
US20130024543A1 (en) Methods for generating multiple responses to a single request message and devices thereof
CN110428254B (zh) 去中心化存储下载方法及仲裁方法、设备和存储介质
CN109754251B (zh) 一种数据处理方法及其装置、介质、终端
CN106341293B (zh) 一种信息***接入企业服务总线的方法及装置
CN103401688A (zh) 基于Eucalyptus云平台的消息中间件传输整合***
KR100777991B1 (ko) 자원 통합 관리 시스템

Legal Events

Date Code Title Description
DD01 Delivery of document by public notice

Addressee: Pan Minqi

Document name: Notification of Passing Preliminary Examination of the Application for Invention

C06 Publication
PB01 Publication
DD01 Delivery of document by public notice

Addressee: Pan Minqi

Document name: Notification of Publication of the Application for Invention

DD01 Delivery of document by public notice

Addressee: Pan Minqi

Document name: Notification of before Expiration of Request of Examination as to Substance

DD01 Delivery of document by public notice

Addressee: Pan Minqi

Document name: Notification that Application Deemed to be Withdrawn

C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20130508