具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
本发明提供了互联网数据拉取系统,主要如图2所示:
参见图2,图2为本发明实施例提供的系统结构图。如图2所示,该系统可包括:质量探测服务器、中转调度服务器、中转服务器和数据库。
其中,所述质量探测服务器,用于周期性地探测中转服务器列表中各个中转服务器的可用性和网络访问质量,并记录至所述数据库;
所述数据库,用于存放中转服务器列表、以及所述质量探测服务器探测的各个中转服务器的可用性和网络访问质量;
所述中转调度服务器,用于在需要执行数据拉取任务时,按照均衡调度中转服务器的原则调度出可用、且网络访问质量最佳的中转服务器执行该数据拉取任务;
所述中转服务器,用于在所述中转调度服务器的调度下执行数据拉取任务。
图2是对本发明提供的系统进行的简单描述。下面进行详细描述:
参见图3,图3为本发明实施例提供的系统详细结构图。该图3所示的系统包括上述的质量探测服务器、中转调度服务器、中转服务器和数据库。
需要说明的是,本发明中,为保证系统的可高用性,可配置两个中转调度服务器,其中一个处于主用状态,执行上述中转调度服务器所执行的操作,而另一个处于备用状态,其在处于主用状态的中转调度服务器异常比如主用状态的中转调度服务器本身异常或对应的网络出现异常时,与处于主用状态的中转调度服务器进行主备切换,以使数据拉取操作不间断执行。
其中,所述处于备用状态的中转调度服务器通过与所述处于主用状态的中转调度服务器维持网络心跳协议来获知所述处于主用状态的中转调度服务器是否异常。比如所述处于备用状态的中转调度服务器每隔5分钟会向处于主用状态的中转调度服务器发送一个心跳传输请求,处于主用状态的中转调度服务器在收到请求之后,会发送响应给处于备用状态的中转调度服务器,而当处于备用状态的中转调度服务器在设定时间接收不到响应时认为所述处于主用状态的中转调度服务器异常。
需要说明的是,以下执行操作的中转调度服务器均处于主用状态,下面不再一一限定。
本发明中,数据库中存放的中转服务器列表是可以动态更新的,为了保证该更新,如图3所示,本系统还包括:采集服务器,周期性地运行,用于通过访问指定的中转服务器所在互联网网站采集中转服务器的数据信息,并记录至所述中转服务器列表。
如此,当采集服务器通过访问指定的中转服务器所在互联网网站探测到有新增加的中转服务器时,将该采集到的中转服务器动态记录至所述中转服务器列表。当然,当探测到有中转服务器被删除时,则可从所述数据库中删除该中转服务器的相关信息,比如,在中转服务器列表中删除该中转服务器,以及从所述数据库中删除该被删除的中转服务器的可用性和网络访问质量信息。如此,即可实现了中转服务器列表的动态更新。
需要说明的是,本发明中,采集服务器可以简单地认为是一个常驻后台服务器的程序,其通过周期性地运行比如每天定时运行一次来访问给定的某些中转服务器所在互联网网站,拉取这些页面上有关中转服务器的数据信息比如IP地址和端口,并将这些数据信息记录到数据库中。这里,采集服务器是系统中转数据源的重要基础保证。
另外,本发明中,质量探测服务器也是一个常驻的后台服务器程序,其也是周期性地运行,比如每天定时运行一次。由于在采集服务器采集了中转服务器列表之后,有些中转服务器可能网络不通,有些可能质量不好,有些可能不工作,也有些可能被屏蔽了,为保证数据拉取正常工作,需要预先判断出哪些中转服务器的网络访问质量非常好,利用网络访问质量非常好的中转服务器进行数据拉取。
其中,质量探测服务器探测中转服务器的可用性和网络访问质量可通过以下操作实现:针对每个中转服务器,利用该中转服务器对设定探测页面比如http://www.qq.com的数据连续拉取N次,如果有M次成功、且M次数据拉取花费的时间小于设定时间比如20秒,则认为此中转服务器可用,网络访问质量比较好;而如果有P次失败,则认为此中转服务器不可用,网络访问质量比较差。其中,中转服务器的网络访问质量信息可为:中转服务器的信息比如IP地址和端口、探测页面信息、成功探测页面数据花费的时间、拉取探测页面数据的失败次数、以及失败时间等。
至于中转调度服务器,其具体实现时可包括:
选择单元,用于针对需要执行的数据拉取任务,在当前所有中转服务器的拉取率均为设定默认值时,从当前所有中转服务器中选择出用于执行该数据拉取任务的可用、且网络访问质量最佳的中转服务器,否则,利用当前所有中转服务器的拉取率动态选择出用于执行该数据拉取任务的可用、且网络访问质量最佳的中转服务器;
计算单元,用于在所述选择单元选择的中转服务器每执行一次数据拉取任务时,将该中转服务器的拉取率减去第一设定数值,将得到的结果作为该中转服务器的拉取率。
其中,所述选择单元通过以下子单元实现利用当前所有中转服务器的拉取率动态选择出用于执行该数据拉取任务的可用、且网络访问质量最佳的中转服务器:
第一计算子单元,用于计算当前所有中转服务器的拉取率之和,得到第一结果,以及利用所述第一结果与设定的随机数相乘,得到第二结果;
遍历子单元,用于按顺序遍历当前所有中转服务器,将遍历到的第一个中转服务器作为当前中转服务器,将第二结果作为当前数值;以及在接收到所述判断子单元发送的触发时,继续遍历下一个中转服务器,将遍历到的中转服务器作为当前中转服务器,将所述第二计算子单元计算的当前拉取率作为当前数值;
第二计算子单元,用于将所述当前数值减去所述当前中转服务器的拉取率,得到当前拉取率;
判断子单元,用于判断当前拉取率是否小于等于第二设定数值,如果是,则确定当前中转服务器为用于执行所述数据拉取任务的可用、且网络访问质量最佳的中转服务器,否则,判断当前是否还有未被遍历的中转服务器,如果是,发送触发通知给所述遍历单元。
优选地,本发明中,所述数据库进一步存放包含至少一个数据拉取任务的任务表;基于此,中转调度服务器进一步包括:轮询单元,用于轮询所述数据库中的任务表,并在检测出所述任务表新增加数据拉取任务时,将该新增加的数据拉取任务加入至自身已建立的任务队列中,将任务队列中的数据拉取任务作为需要执行的数据拉取任务;
其中,所述轮询单元与所述选择单元执行的操作异步。
另外,在现有技术中,每次新增数据拉取程序时,就要重新添加一份对应的数据解析程序,这要对整个后台服务器进行一次代码整合,编译和链接,这对于程序的可读和可维护性带来比较大的麻烦。为了解决该问题,本发明利用插件式方式实现数据解析,具体为:将用于对中转服务器拉取的数据进行解析的数据解析函数放在动态链接库中,而在数据库中配置动态链接库的文件名(与实际中一致),将动态链接库放在指定的位置,如此,当中转服务器在拉取数据后,就在所述数据库中获取动态链接库信息,并从具有该确定出的动态链接库信息的动态链接库中获取用于解析该数据的数据解析函数,利用该获取的数据解析函数解析该数据。
以上对本发明实施例提供的系统进行了详细描述,下面基于图2或图3所示的系统,对本发明实施例提供的方法进行详细描述:
参见图4,图4为本发明实施例提供的方法流程图。如图4所示,该流程可包括以下步骤:
步骤401,质量探测服务器周期性地探测并记录中转服务器列表中各个中转服务器的可用性和网络访问质量。
步骤402,中转调度服务器在需要执行数据拉取任务时,按照均衡调度中转服务器的原则调度出用于执行该数据拉取任务的可用、且网络访问质量最佳的中转服务器,由被调度的中转服务器执行该数据拉取任务。
其中,步骤402具体实现时可包括图5所示的流程:
参见图5,图5为本发明实施例提供的步骤402实现流程图。如图5所示,该流程可包括以下步骤:
步骤501,针对需要执行的数据拉取任务,在当前所有中转服务器的拉取率均为设定默认值时,从当前所有中转服务器中选择出用于执行该数据拉取任务的可用、且网络访问质量最佳的中转服务器,否则,利用当前所有中转服务器的拉取率动态选择出用于执行该数据拉取任务的可用、且网络访问质量最佳的中转服务器;
本发明,中转服务器的拉取率可周期性地设为默认值,比如,在每天的0点设置为默认值。
步骤502,在选择的中转服务器执行每一次数据拉取任务时,将该中转服务器的拉取率减去第一设定数值,将得到的结果作为该中转服务器的拉取率。
其中,步骤501中,利用当前所有中转服务器的拉取率动态选择出用于执行该数据拉取任务的可用、且网络访问质量最佳的中转服务器包括:
B11,计算当前所有中转服务器的拉取率之和,得到第一结果,以及利用所述第一结果与设定的随机数相乘,得到第二结果;
B12,按顺序遍历当前所有中转服务器,将遍历到的第一个中转服务器作为当前中转服务器,将第二结果作为当前数值;
B13,将所述当前数值减去所述当前中转服务器的拉取率,得到当前拉取率;
B14,判断当前拉取率是否小于等于第二设定数值,如果是,则确定当前中转服务器为用于执行所述数据拉取任务的可用、且网络访问质量最佳的中转服务器,否则,判断当前是否还有未被遍历的中转服务器,如果是,继续遍历下一个中转服务器,将遍历到的中转服务器作为当前中转服务器,将当前拉取率作为当前数值,返回步骤B13。
通过以上步骤B11至步骤B14,能够保证最后确定出的中转服务器可用、网络访问质量最佳、且满足了负载均衡原则。
需要说明的是,本发明中,为避免每次新增数据拉取程序所引起的程序可读和可维护性问题,本发明通过预先将用于解析数据的数据解析函数存放在动态链接库中,并在数据库中配置该动态链接库的信息;基于此,本发明中,当中转服务器在拉取数据后,在所述数据库中获取动态链接库信息,并从具有该确定出的动态链接库信息的动态链接库中获取用于解析该数据的数据解析函数,利用该获取的数据解析函数解析该数据。
以上对本发明提供的方法进行了描述。
由以上技术方案可以看出,本发明中,由质量探测服务器预先探测中转服务器列表中各个中转服务器的可用性和网络访问质量,如此,在需要执行数据拉取任务时,中转调度服务器按照均衡调度中转服务器的原则调度出可用、且网络访问质量最佳的中转服务器执行该数据拉取任务,这显然能够提高互联网数据的拉取速度和效率;
进一步地,本发明中,采集服务器能够动态更新中转服务器列表,这能够保证中转服务器更新的实时性。
进一步地,本发明中,将用于对中转服务器拉取的数据进行解析的数据解析函数放在动态链接库中,而在数据库中配置动态链接库的文件名(与实际中一致),将动态链接库放在指定的位置,以实现中转服务器在拉取数据后在所述数据库中获取动态链接库信息,并从具有该确定出的动态链接库信息的动态链接库中获取用于解析该数据的数据解析函数,利用该获取的数据解析函数解析该数据,这避免现有新增数据拉取程序所带来的麻烦。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。