线程组织方法

文档序号:9546912阅读:696来源:国知局
线程组织方法
【技术领域】
[0001]本发明涉及计算机计算资源调度领域,特别是涉及到计算机网络运算应用技术领域。
【背景技术】
[0002]网络爬虫,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。根据设计者的设计目的,网络爬虫可以被实现为各种形式,往往网络爬虫的实现方式都会采用多线程技术,并且其线程的设计往往会有复杂的循环运算,这些情况都导致网络爬虫设计中对单个线程运行状况进行管理的必要性。
[0003]另一方面,计算机线程,是程序执行流的最小单元,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。
[0004]多线程技术的一个很重要的组成部分是守护线程,守护线程和普通线程的区别在于,一旦一个进程中所有普通线程均已运行结束,则无论守护线程是否在运行,进程均会结束运行。守护线程常常被用于对普通线程运行的辅助功能。
[0005]稳定核是一种通过将守护线程内置于运行线程运行主体内部,使线程之间进行相互守护,进而使所有线程在进程中形成一种集中运行模式的称呼。
[0006]稳定核和传统的处理并发程序的方式的区别在于,稳定核将守护线程的任务工作内置于普通工作线程,这样一方面避免了守护线程自身运行无监督的矛盾,另一方面减少了在高并发下线程之间频繁切换导致的延时。
[0007]如图1所示,稳定核由2部分组成,挂载点环路和线程回收区。挂载点是每个线程所对应的运行标记对象,含有线程运行的信息。对线程进行检查等操作均是通过挂载点作为中介进行的。
[0008]挂载点环路的结构如图2所示。其中1、2、3、4、5、6、7、8为8个线程对应的挂载点,这些挂载点在逻辑上处于一个链式的先后关系,前后相接组成一个环路。
[0009]而如图3所示的线程回收区则可以用一个链式挂载点队列组成,其仅仅对出问题的挂载点进行暂存,如若线程1、2、3的挂载点被放入回收区,回收区的结构则如图3所示。正常运行过程中,挂载点经常在挂在点环路和线程回收区之间移动,如果线程故障被确诊,则最终可以在线程回收区中被关闭和回收。
[0010]多线程网络爬虫在运行过程中经常由于网络信息的变化和爬取策略的频繁转换而陷入一些危险代码而导致“假死”的现象,这类情况往往检查起来费时费力又不具有通用性。

【发明内容】

[0011]鉴于此,本发明的目的在于克服现有技术中多线程网络爬虫在运行过程中经常由于网络信息的变化和爬取策略的频繁转换而陷入一些危险代码而导致“假死”的现象等问题,提出一种线程组织方法,借助一种具有通用性的稳定核技术来实现网络爬虫的运行稳定性的提升,能够大大提尚网络爬虫线程的运彳丁稳定性。
[0012]为了实现此目的,本发明采取的技术方案为如下。
[0013]一种线程组织方法,所述方法包括步骤:
[0014]A:挂载点环路上一线程对其下一线程进行运行监测,检查有无故障,若有故障,将问题线程从从挂载点环路上摘下送入线程回收区,并判断所述故障是否是非首次发生,
[0015]其中若所述故障属于非首次发生,则将所述下一线程任务标记为问题任务,问题任务不再执行,
[0016]若所述故障属于首次发生,则直接进入步骤B ;
[0017]B、判断是否需要执行全局任务,
[0018]若有回收任务则执行回收任务,回收所有线程回收区内的线程,并将没有问题任务标记的任务加入复活任务清单,
[0019]若无回收任务则进入步骤C ;
[0020]C、判断复活任务清单中是否有需要复活的任务,若有则生成新线程执行该任务。
[0021]另外,所述步骤A之前进一步包括:
[0022]A01、启动多线程爬虫系统;
[0023]A02、初始化多线程爬虫和数据库的连接,以及检查爬虫运行所需的数据库是否有效;
[0024]A03、系统加载共享资源;
[0025]A04、系统在线程池中生成多个线程,每个线程独立解析出二级入口 ;
[0026]A05、每个线程将自己获得的二级入口送入公共过滤器,选出不重复的二级入口 ;
[0027]A06、在线程池中生成新的线程对二级入口进行爬取和解析,并将结果存入数据库。
[0028]其中利用分布式一致性方法确定负责所述下一线程的回收任务的全局计算线程。
[0029]并且利用公共布隆过滤器选出不重复的二级入口。
[0030]通过采用本发明的线程组织方法,利用线程之间的相互通信构造了一种稳定核结构,进程通过构造稳定核可以实现对进程中关键工作线程的运行实现自动化监控,大大提高了工作线程的运行稳定性。同时采取稳定核所提供的标准化调用接口,也避免了单独设计关键工作线程的守护线程所耗费的时间和精力,提高了软件开发效率。
【附图说明】
[0031]图1是稳定核的结构示意图。
[0032]图2是稳定核中的挂载点环路的结构示意图。
[0033]图3是稳定核中的线程回收区的结构示意图。
[0034]图4是本发明【具体实施方式】中线程组织方法的流程示意图。
[0035]图5是本发明【具体实施方式】中线程组织方法的流程示意图。
[0036]图6a_6d是本发明【具体实施方式】中稳定核的挂载点环路和线程回收区的示意图。
【具体实施方式】
[0037]下面结合附图,对本发明作详细说明。
[0038]以下公开详细的示范实施例。然而,此处公开的具体结构和功能细节仅仅是出于描述示范实施例的目的。
[0039]然而,应该理解,本发明不局限于公开的具体示范实施例,而是覆盖落入本公开范围内的所有修改、等同物和替换物。在对全部附图的描述中,相同的附图标记表示相同的元件。
[0040]同时应该理解,如在此所用的术语“和/或”包括一个或多个相关的列出项的任意和所有组合。另外应该理解,当部件或单元被称为“连接”或“耦接”到另一部件或单元时,它可以直接连接或耦接到其他部件或单元,或者也可以存在中间部件或单元。此外,用来描述部件或单元之间关系的其他词语应该按照相同的方式理解(例如,“之间”对“直接之间”、“相邻”对“直接相邻”等)。
[0041]如图4 一 5所示,本发明公开了一种线程组织方法,所述方法包括以下步骤:
[0042]A:挂载点环路上一线程对其下一线程进行运行监测,检查有无故障,若有故障,将问题线程从从挂载点环路上摘下送入线程回收区,并判断所述故障是否是非首次发生,
[0043]其中若所述故障属于非首次发生,则将所述下一线程任务标记为问题任务,问题任务不再执行,
[0044]若所述故障属于首次发生,则直接进入步骤B ;
[0045]B、判断是否需要执行全局任务,
[0046]若有回收任务则执行回收任务,回收所有线程回收区内的线程,并将没有问题任务标记的任务加入复活任务清单,
[0047]若无回收任务则进入步骤C ;
[0048]C、判断复活任务清单中是否有需要复活的任务,若有则生成新线程执行该任务。
[0049]由于本发明利用线程之间的相互通信构造了一种稳定核结构,进程通过构造稳定核可以实现对进程中关键工作线程的运行实现自动化监控,大大提高了工作线程的运行稳定性。同时采取稳定核所提供的标准化调用接口,也避免了单独设计关键工作线程的守护线程所耗费的时间和精力,提高了软件开发效率。
[0050]其中,
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1