发明内容
有鉴于此,本发明在于提供一种实现网络预订存储的系统和方法,以解决上述用户有下载请求,但无法获得相应资源的问题。
为解决上述问题,本发明提供一种实现网络预订存储的系统,包括管理服务器、预订服务器、存储服务器,
所述管理服务器,用于将从网络中获得的共享用户信息发送至预订服务器;所述共享用户为网络中拥有与预订事件所对应数据资源的用户;
所述预订服务器,用于接收来自下载用户的预订事件,当所述预订事件所对应的数据资源处于可下载状态时,将获得的与所述数据资源相对应的共享用户信息发送至存储服务器;
所述存储服务器,用于在无需下载用户与网络保持连接的情况下,利用所述共享用户信息与共享用户建立连接,下载所述数据资源,并在所述数据资源全部下载完毕后,通过即时通信消息通知下载用户,以便下载用户连接到网络下载所述数据资源。
其中,
所述预订服务器,包括:接收单元,判断单元,发送单元,
所述接收单元,用于接收来自下载用户的预订事件;
所述判断单元,用于当得知所述预订事件所对应的数据资源处于可下载状态时,通知所述发送单元;
所述发送单元,用于将获得的与所述数据资源相对应的共享用户信息发送至存储服务器。
其中,所述预订服务器,用于接收到来自下载用户的预订消息后,将预订消息中的预订事件发送至管理服务器;
所述管理服务器,用于将网络中拥有与所述预订事件相应数据资源的所述共享用户信息发送至预订服务器。
其中,所述预订服务器,用于接收到来自下载用户的预订消息后,将预订消息中的预订事件保存在预订数据库中,收到来自管理服务器的所述共享用户信息后,利用所述共享用户信息判断所述共享用户拥有的所述数据资源是否对应于所述预订数据库中的预订事件,如果是,将所述共享用户信息发送至存储服务器;
所述存储服务器,在将所述数据资源全部下载完成后,通知所述预订服务器删除所述预订事件。
其中,所述预订服务器还用于,接收到来自下载用户的预订消息后,先判断预订消息中的预订事件所对应的数据资源是否在存储服务器中,如果在,则将所述数据资源发送至下载用户。
其中,所述管理服务器,还用于所述下载用户从所述共享用户下载所述数据资源时中断后,记录中断后所述下载用户的下载进度;
所述管理服务器在从网络中获得所述共享用户信息发送至预订服务器的同时,发送所述下载进度信息;
所述预订服务器,还用于将获得的共享用户信息发送至存储服务器的同时,发送所述下载进度信息;
所述存储服务器,在利用所述共享用户信息与共享用户建立连接后,利用所述进度信息下载所述数据资源中的剩余部分。
本发明还提供一种实现网络预订存储的方法,
接收并存储来自下载用户的预订事件;
步骤A:预订服务器判断所述预订事件相对应的数据资源是否处于可下载状态,如果不是,则返回本步骤,直至判断所述数据资源处于可下载状态后,将从管理服务器获取的与所述数据资源相对应的共享用户信息发送至存储服务器,存储服务器在无需下载用户与网络保持连接的情况下,利用共享用户信息与共享用户建立连接下载并存储所述数据资源,并在所述数据资源全部下载完毕后,通过即时通信消息通知下载用户,以便下载用户连接到网络下载所述数据资源;
其中,所述共享用户为网络中拥有与预订事件所对应数据资源的用户。
其中,步骤A中所述判断是否可以下载所述预订事件相对应的数据资源为:
判断网络中是否存在拥有所述数据资源相对应的共享用户,如果存在,则处于可下载状态,如果不存在,则处于不可下载状态。
其中,步骤A中所述判断是否可以下载所述预订事件相对应的数据资源为:
利用共享用户信息判断共享用户所拥有的数据资源是否与步骤A中接收到的预订事件相对应,如果相对应,则处于可下载状态,如果不相对应,则处于不可下载状态。
其中,在步骤A之后,该方法进一步包括:
发送所述预订事件的下载用户一方从所述存储服务器下载所述数据资源。
其中,该方法进一步包括:
步骤A中存储服务器下载并存储所述数据资源的过程中,追踪并记录下载进度信息。
其中,步骤A中存储服务器下载并存储所述数据资源的过程中,如果出现中断,则重新执行步骤A;
在所述重新执行步骤A的过程中,下载并存储所述数据资源为:
利用所记录的下载进度信息,对所述数据资源中未下载的部分进行下载,直至将所述数据资源全部下载完成后,将与所述数据资源相对应的预订事件从预订服务器中删除。
其中,在下载用户发起下载请求时,该方法进一步包括:
判断存储服务器中是否保存有与该下载请求相对应的所述数据资源,如果是,则直接从该存储服务器中下载对应的所述数据资源。
本发明的实施例在下载用户离开网络后,服务器通过预订事件从共享用户处获得数据资源并保存,当获得全部的数据资源后,通知下载用户,下载用户从服务器中获得所需的数据资源。本发明的实施例解决了共享用户在网络中而下载用户不在网络中时,下载用户无法从共享用户处获得所需的数据资源的问题,较大地提高网络中各个用户之间的数据资源传递效率,为网络中用户下载数据资源带来了方便。特别是对于下载用户在获得数据资源的过程中,如果与共享用户的连接出现中断,则服务器为下载用户获得在中断后未获得的数据资源,并在下载完成后,通知下载用户获得数据资源,为网络中下载用户获得数据资源带来方便。
具体实施方式
为详细说明本发明解决现有技术中所存在的问题,下面结合附图详细说明本发明的各个实施例。
参见图2,首先说明本发明系统的实施例一。在此实施例中,系统包括管理服务器、预订服务器和存储服务器,
所述管理服务器,用于将从网络中获得的共享用户信息发送至预订服务器;
所述预订服务器,用于接收来自下载用户的预订事件,当所述预订事件所对应的数据资源处于可下载状态时,将获得的与所述数据资源相对应的共享用户信息发送至存储服务器;
所述存储服务器,用于利用所述共享用户信息与共享用户建立连接,下载所述数据资源。
其中,下载用户是指需要从网络中下载数据资源的用户,共享用户是指网络中拥有与预订事件所对应数据资源的用户,而共享用户信息是指这些共享用户的地址链接信息,如IP地址、端口等。数据资源为各类形式的文件等。
在该实施例中,如果用户A作为下载用户,则用户A可向预订服务器发送预订消息,预订服务器解析接收到预订消息,解析出预订消息中的预订事件,预订事件中包括有多个描述属性。描述属性包括文件名关键词、文件类型、预订事件有效期、文件大小限制、匹配下载的文件数目上限、文件内容哈希值等。
解析出的预订事件后,预订服务器可通过预订事件中的描述属性先向存储服务器中查询,查询存储服务器中是否已经存有与解析出的预订事件相对应的数据资源,如果存储服务器中之前为其它用户下载并存储有这类数据资源,则存储服务器与用户A建立连接,用户A获得所需的数据资源。
当然,用户A向预订服务器发送预订消息的同时,还可同时向管理服务器发送相同的预订消息。管理服务器将解析预订消息,并按照解析出的预订事件查找网络中的共享用户,如果网络中存在有共享用户,且共享用户为用户B和用户C,则管理服务器将共享用户B、共享用户C的信息发送至用户A,用户A与用户B、用户C之间建立连接,用户A获得数据资源。如果此时用户A还与存储服务器建立连接,则用户A可同时从用户B、用户C及存储服务器处获得数据资源,以便能够用最少的时间来获得所需的数据资源。
当存储服务器中没有用户A所要获得的数据资源时,管理服务器会将用户B和用户C的用户信息发送给用户A和预订服务器。此时,用户A既可通过用户信息直接与用户B、用户C建立连接,获得数据资源;用户A也可向预订服务器发送命令,由预订服务器通知存储服务器,由存储服务器通过用户B、用户C建立连接,获得用户A所需要的数据资源。存储服务器获得并存储用户A所需要的全部数据资源后,以邮件、短信或其它形式的即时通信消息通知用户A进行下载。
由于用户B、用户C作为数据资源的提供者,不可能保证实时在网络中,如果用户B、用户C没有在网络中,管理服务器则无法查询出用户B、用户C的用户信息,也就无法向预订服务器和用户A提供共享用户信息,用户A没有共享用户信息,也会离开网络。管理服务器会向预订服务器发送没有共享用户信息的通知,预订服务器接收到该通知后,会将解析出的预订事件存储到预订数据库中。如果用户B、用户C加入到网络中后,管理服务器发现后会将用户B、用户C的用户信息发送至预订服务器,预订服务器接收到用户B、用户C的用户信息后,判断所述预订数据库中是否有与用户信息相对应的预订事件,由于预订数据库中已经存有用户A的预订事件,则预订服务器会触发存储服务器执行操作,存储服务器会按照用户B、用户C的用户信息建立连接,获得用户A所需要的数据资源。存储服务器获得并存储用户A所需要的全部数据资源后,以邮件、短信或其它形式的及时通信消息通知用户A进行下载。
在上述的实施例中,当共享用户不存在网络中时,下载用户可将获得数据资源的操作由网络中的存储服务器来完成;当共享用户存在于网络中时,下载用户既可离开网络,由网络中的服务器完成获得数据资源的操作。还可以由下载用户直接通过共享用户来获得数据资源,如前面所描述的用户A接收管理服务器发送的用户B、用户C的用户信息,通过用户信息与用户B、用户C建立连接,获得所需要的数据资源。
在用户A通过用户B、用户C获得数据资源的过程中,管理服务器会将用户A获得数据资源的进度信息实时发送至预订服务器,预订服务器会将进度信息存储到预订数据库中。如果用户A与用户B、用户C之间的数据资源的传输过程出现中断,例如用户A离开网络。此时,预订服务器会通过进度信息没有变化来发现这种情况,而预订服务器会通知存储服务器继续获得用户A未获得的剩余数据资源,存储服务器会通过预订服务器中存储的来自管理服务器的用户信息,与用户B、用户C建立连接,并按照预订数据库中的进度信息获得用户A未获得的剩余数据资源。存储服务器获得并存储用户A所需要的全部数据资源后,以邮件、短信或其它形式的即时通信消息通知用户A进行下载。
上述系统实施例中的预订服务器,在运行预订数据库时可以是静态存储,也可以动态加载,相比而言,动态加载的访问与检索速度较快,但需要预订服务器具有较多的系统内存。对于已经实现完成的预订事件,可以将其静态存储,从而减少内存占用。相对而言,如果预订规模较小,则预订服务器可以嵌入管理服务器设备,否则应单独架设网络设备。需要注意的是,如果作为独立设备运行,为了不影响管理服务器的正常网络操作,将预订服务器和管理服务器连接在同一个网段内,即连接在同一个网路交换机中,采取类似于网络入侵检测系统的并联架构,预订服务器在网络交换机端口上旁路侦听管理服务器上的用户数据。
上述系统实施例中的存储服务器,可根据每个用户的服务等级分配不同容量的存储空间并设定阈值,处理用户预订所下载的文件大小不能超出此容量阈值。存储服务器还可对其存储的文件做索引,以便快速查找。当两个用户的预订事件相同,即所预订的内容有重复,则存储服务器端可以直接在用户存储空间内复制文件或直接对重复需求的文件建立对象引用,以便及时向用户发送其所需要的数据资源。存储服务器可以是单个或集群存储设备,也可以采取分布式存储的策略。对于分布式存储的情况,系统支持同时指派多个存储服务器从文件提供者下载文件的不同片段,从而能够利用多源文件传输协议(MFTP)实现快速上传和下载。
上面所描述的系统实施例详细说明系统中各个服务器的关系及功能,下面详细描述实现预订存储流程的实施例。首先描述实施例二,参见图3,
步骤S301:下载用户发送预订消息;
为便于传输,下载用户将预订事件以预订消息的形式同时发送至预订服务器和管理服务器。
步骤S302:预订服务器解析所述预订消息;
预订服务器从预订消息中解析出预订事件并保存在预订数据库中。在预订数据库中,记录有所有下载用户的用户信息和该下载用户的所预订的数据资源的下载记录信息,如是否已经全部下载到存储服务器中,已下载的进度信息等。
步骤S303:预订服务器判断存储服务器中是否存在相应的数据资源;
预订服务器判断之前是否存在其它下载用户也预订相同的数据资源,该数据资源是否被存储服务器全部下载且并未被取走,如果是,则执行步骤S304,如果否,则结束;
步骤S304:预订服务器通知存储服务器,存储服务器向下载用户发送数据资源;
由于存储服务器中存储有其它下载用户预订的数据资源,还未被取走,存储服务器接收到来自预订服务器的通知,得到下载用户信息,直接将相应的数据资源复制后发送给下载用户。
步骤S305:管理服务器解析预订消息;
管理服务器解析预订消息,获得预订事件。
步骤S306:管理服务器判断是否存在共享用户信息;
管理服务器判断是网络中是否存在拥有与所述预订事件相对应数据资源的共享用户信息。如果有,则执行步骤S307,如果没有,则执行步骤S308。
步骤S308:通知下载用户;
管理服务器通知网络中不存在共享用户。
步骤S307:管理服务器判断下载用户是否需要下载;
当网络中存在有共享用户信息后,如果下载用户要通过共享用户建立连接下载,则执行步骤S309,如果下载用户不进行连接,则执行步骤S310。
步骤S309:下载用户进行连接;
下载用户通过管理服务器获得共享用户信息,与共享用户之间建立P2P连接,下载所需的数据资源。
步骤S310:存储服务器进行下载;
如果下载用户没有与共享用户建立连接,则表明下载用户可能会离开网络,此时,管理服务器会通知预订服务器,并在通知中附着共享用户信息,预订服务器收到共享用户信息后,触发存储服务器利用共享用户信息与共享用户之间建立P2P连接,并获得下载用户所需的数据资源。
在步骤S304、步骤S309、步骤S310之后,下载用户获得到所有的数据资源后,执行步骤S311。
步骤S311:更新预订数据库;
预订数据库进行更新,将预订数据库中的预订事件删除,并记录相关日志。
存储服务器获得并存储了下载用户所需要的全部数据资源后,以邮件、短信或其它形式的及时通信消息通知下载用户,下载用户接到通知后从存储服务器中获得所述数据资源。
在实施例一中,下载用户向预订服务器提交预订事件后,便可以由存储服务器直接下载,存储服务器全部下载后,再通知下载用户。步骤S304与步骤S309可同时进行,这样会加快下载用户的下载速度,为下载用户获得全部的数据资源节省时间。在步骤S309中,下载用户进行下载时,如果下载用户在没有获得全部数据资源后离开网络,则下载用户只获得数据资源的部分片段,对于这种情况,通过实施例二说明解决的方案,参见图4,
步骤S401:下载用户发送预订消息;
步骤S402:预订服务器解析所述预订消息;
步骤S403:预订服务器将预订事件发送至管理服务器;
由于预订服务器判断出存储服务器中没有下载用户所需的数据资源,将预订事件发送至管理服务器;
步骤S404:管理服务器判断出存在共享用户信息;
步骤S405:管理服务器判断出下载用户自行下载;
步骤S406:下载用户进行连接,获得数据资源;
下载用户与共享用户建立连接,获得数据资源;
步骤S407:管理服务器判断下载用户是否下线;
在下载用户获得数据资源的过程中,管理服务器不断判断下载用户是否还在网络中,如果在,则继续判断;如果不在,则执行步骤S408;
步骤S408:管理服务器通知预订服务器;
由于下载用户可能会由于多种原因断开网络连接,此时,管理服务器将会通知预订服务器该下载用户下线,即下载用户已经断开网络,并通知预订服务器相应的共享用户信息、进度信息等;
步骤S409:预订服务器触发存储服务器下载;
由于所有P2P系统都支持文件下载追踪并记录进度信息,预订服务器触发存储服务器参考进度信息,利用共享用户信息与共享用户建立连接,从共享用户处获得下载用户下线后未获得数据资源的剩余片段。
步骤S410:更新预订数据库。
存储服务器获得并存储下载用户下线后未获得数据资源的剩余片段后,以邮件、短信或其它形式的及时通信消息通知下载用户,下载用户接到通知后从存储服务器中获得数据资源的剩余片段。
上述两个实施例都是共享用户在网络中,下载用户离开网络或下载用户在下载过程中断开网络后,网络是如何为下载用户下载并保存数据资源的。由于在网络中,共享用户和下载用户都具有很强的动态性,还可能会出现下载用户上线提交预订事件后,共享用户不在网络中,如实施例一中的步骤S306、S308,但是,之后共享用户上线,此时,如果下载用户已经离开网络或还在网络中,对于这类情况的解决方案,通过实施例三进行说明,参见图5,
步骤S501:管理服务器判断网络中是否有共享用户加入;
管理服务器不停的判断网络中是否有共享用户加入,当判断出有共享用户加入到网络中后,管理服务器将共享用户信息发送到预订服务器;
步骤S502:预订服务器检索预订数据库;
预订服务器收到共享用户信息后,根据该共享用户所拥有的数据资源检索预订数据库,由于预订服务器之前已经将预订事件存储到预订数据库中,而预订事件与数据资源之间存在相互对应关系,能够通过数据资源检索预订数据库中是否存在相应的预订事件。
步骤S503:判断是否存在预订事件;
通过数据资源检索预订数据库中是否存在预订事件。如果存在,则执行步骤S504,如果不存在,则结束。
步骤S504:判断下载用户是否在线;
预订数据库中存在有相应的预订事件,表明有下载用户需要从共享用户处获得相应的数据资源,此时,先判断下载用户是否在网络中,即是否在线。预订服务器将下载用户信息发送至管理服务器,由管理服务器判断下载用户是否在线,如果在线,则执行步骤S505,如果不在线,则执行步骤S507。
步骤S505:管理服务器判断下载用户是否建立连接;
如果是,则执行步骤S506,如果否,则执行步骤S507。
步骤S506:下载用户建立连接;
当下载用户需要自行下载时,则下载用户可通过预订服务器或管理服务器处获得共享用户信息,并与共享用户建立P2P连接,获得所需的数据资源。
步骤S507:存储服务器进行下载;
如果下载用户不在线或下载用户由于其它原因无法与共享用户建立连接,则管理服务器通知预订服务器,由预订服务器触发存储服务器,存储服务器通过预订服务器中的共享用户信息,与共享用户建立连接,获得下载用户所需的全部数据资源。
步骤S508:更新预订数据库;
在下载结束后,预订数据库都会进行更新,将预订数据库中的预订事件删除,并记录相关日志。
存储服务器获得并存储了下载用户所需要的全部数据资源后,以邮件、短信或其它形式的及时通信消息通知下载用户,下载用户接到通知后从存储服务器中获得所述数据资源。
在实施例三中,下载用户选择自行下载,即执行步骤S 506,在下载用户从共享用户处获得数据资源的过程中,如果下载用户与网络断开连接,这种情况可采取实施例二中步骤S407至步骤S410进行解决;当然,还可能存在的情况是下载用户与共享用户之间建立连接后,由于共享用户离开网络,下载用户只获得部分数据资源后也离开网络,之后,共享用户再次加入网络,对于这种情况,通过实施例四进行说明解决的方案。参见图6,
步骤S601:管理服务器通知预订服务器;
由于共享用户离开网络,下载用户和共享用户断开连接,管理服务器将会通知预订服务器该共享用户下线,即共享用户已经断开网络,并通知预订服务器断开前的进度信息等;
步骤S602:预订服务器记录接收到的信息;
预订服务器会将所接收到信息记录到预订数据库中,与相应的预订事件保存在一起;
步骤S603:管理服务器判断网络中是否有共享用户加入;
管理服务器不停的判断网络中是否有共享用户加入,当有共享用户加入到网络中后,管理服务器将共享用户信息发送到预订服务器。新加入的共享用户可以是上次断开前相同的共享用户,也可以不同的共享用户,只要该共享用户有下载用户所需的数据资源即可。
步骤S604:预订服务器检索预订数据库;
预订服务器收到共享用户信息后,会根据该共享用户所拥有的数据资源检索预订数据库,由于预订服务器之前已经将预订事件存储到预订数据库中,而预订事件与数据资源之间存在相互对应关系,能够通过数据资源检索预订数据库中是否存在相应的预订事件。
步骤S605:判断是否存在预订事件;
通过数据资源检索预订数据库中是否存在预订事件。如果存在,表明有下载用户需要从共享用户处获得相应的数据资源,则执行步骤S606,如果不存在,则结束。
步骤S606:判断下载用户是否在线;
此时,先判断下载用户是否在网络中,即是否在线。预订服务器将下载用户信息发送至管理服务器,由管理服务器判断下载用户是否在线,如果在线,则执行步骤S607,如果不在线,则执行步骤S609。
步骤S607:管理服务器判断下载用户是否建立连接;
如果是,则执行步骤S608,如果否,则执行步骤S609。
步骤S608:下载用户建立连接;
当下载用户需要自行下载时,则下载用户可通过预订服务器或管理服务器处获得共享用户信息,并与共享用户建立P2P连接,获得上次断开后未获得数据资源的剩余片段。
步骤S609:存储服务器进行下载;
如果下载用户不在线或下载用户由于其它原因无法与共享用户建立连接,则管理服务器通知预订服务器,预订服务器将在预订数据库中查找,找到相应的预订事件中所记录的下载用户的进度信息,由预订服务器触发存储服务器,存储服务器通过预订服务器中的共享用户信息,与共享用户建立连接,按照进度信息获得上次下载用户在与共享用户断开后未获得数据资源的剩余片段。
步骤S610:更新预订数据库;
在下载结束后,预订数据库都会进行更新,将预订数据库中的预订事件删除,并记录相关日志。
存储服务器获得并存储下载用户下线后未获得数据资源的剩余片段后,以邮件、短信或其它形式的及时通信消息通知下载用户,下载用户接到通知后从存储服务器中获得数据资源的剩余片段。
由于系统在工作过程中,共享用户加入到网络中后,预订服务器接收到共享用户消息次数可能非常频繁,为减少预订服务器的负担,可建立多个预订服务器实现负载均衡,多个预订服务器可采用集群或分布式结构;还可以按照时间周期或接收到共享用户信息数量的阈值作为触发预订服务器的工作条件。
在上述各个实施例中,预订服务器在实现网络预订存储功能时,具有很关键的作用,关于预订服务器的组成,通过本发明的实施例六进行说明,参见图7,
预订服务器701,包括:接收单元702,判断单元703,发送单元704,
所述接收单元702,用于接收来自下载用户的预订事件;
所述判断单元703,用于当得知所述预订事件所对应的数据资源处于可下载状态时,通知所述发送单元704;
所述发送单元704,用于将获得的与所述数据资源相对应的共享用户信息发送。
在上面所描述的各个实施例中,各个服务器、下载用户、共享用户之间在进行数据传输时建立的连接可以是P2P连接,但不仅限于这种连接方式。还可通过其它的连接方式进行数据传输,如超级旋风等,存储服务器也可通过网络硬盘等方式实现。
对于本发明各个实施例中所阐述的系统和方法,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。