一种调用外部系统服务的方法及装置制造方法

文档序号:6485741阅读:141来源:国知局
一种调用外部系统服务的方法及装置制造方法
【专利摘要】本申请公开了一种调用外部系统服务的方法及装置,用以解决现有技术中本地系统提供服务的质量较低,本地系统和外部系统的负担较大的问题。该方法第一系统向用户提供弱依赖服务时,调用需要的每个第二系统的子服务,并当判断在第一设定时间长度内未获取到调用的所有子服务的服务结果时,将在该第一设定时间长度内获取到的服务结果进行处理并返回给用户。由于本申请实施例中第一系统在第一设定时间长度内未获取到调用的所有子服务的服务结果时,将在该第一设定时间长度内已经获取到的部分服务结果提供给用户,因此提高了提供服务的质量,也使用户不会再次请求该服务,也就无需再次调用各第二系统的子服务,降低了第一系统和各第二系统的负担。
【专利说明】—种调用外部系统服务的方法及装置
【技术领域】
[0001]本申请涉及通信【技术领域】,尤其涉及一种调用外部系统服务的方法及装置。
【背景技术】
[0002]目前,一个运行的系统或多或少的需要与其他的外部系统进行信息交互,也就是说,本地系统向用户提供某些服务时,需要依赖于外部系统向本地系统提供的相应子服务。而本地系统要依赖于外部系统的子服务才能提供的服务根据其对外部系统的依赖性,又可分为强依赖服务和弱依赖服务。
[0003]强依赖服务是指,如果外部系统不能向本地系统提供相应的子服务,那么本地系统则不能向用户提供的服务。例如,本地系统为银联系统,外部系统为银行A的系统和银行B的系统,银联系统为用户提供在银行A和银行B之间转账的服务,那么该服务必须依赖于银行A的系统和银行B的系统分别提供相应的子服务才能进行,如果银行A的系统和银行B的系统中的任何一个不能提供相应的子服务,则银联系统就不能提供在银行A和银行B之间转账的服务。因此,银联系统提供的该在银行A和银行B之间转账的服务就是强依赖服务。
[0004]弱依赖服务是指,如果外部系统不能向本地系统提供相应的子服务,那么本地系统实际仍然可以向用户提供部分服务的服务。例如,本地系统为机票查询系统,外部系统为航空公司A的系统、航空公司B的系统、航空公司C的系统,机票查询系统为用户提供查询机票的服务,那么该服务要依赖于航空公司A的系统、航空公司B的系统、航空公司C的系统提供相应的子服务,如果航空公司A的系统不能提供相应的子服务,则机票查询系统仍然可以从航空公司B的系统和航空公司C的系统中查询机票,只是查询的机票中不包括航空公司A的机票。因此,机票查询系统为用户提供的该查询机票的服务就是弱依赖服务。
[0005]然而,在现有技术中,本地系统向用户提供服务时,并不区分用户请求的服务是强依赖服务还是弱依赖服务,如图1所示。图1为现有技术中本地系统向用户提供服务的过程,具体包括以下步骤:
[0006]SlOl:本地系统接收用户发送的服务请求。
[0007]S102:本地系统建立各个调用任务,在各个线程上分别执行各个调用任务,以调用相应外部系统的子服务。
[0008]本地系统针对每个要调用的外部系统的子服务,建立一个调用任务,在一个线程上执行建立的调用任务,以调用外部系统的子服务。
[0009]S103:判断是否在接收到该服务请求后的设定时间长度内获取到调用的所有子服务的服务结果,若是,则执行步骤S104,否则执行步骤S105。
[0010]在实际应用中,用户向本地系统请求的服务通常都会对应一个预设的请求超时时间长度,该请求超时时间长度即为步骤S103中的设定时间长度。
[0011]如果本地系统在接收到服务请求后的该设定时间长度内,获取到了调用的所有子服务的服务结果,则将获取到的服务结果处理后返回给用户,也即执行步骤S104。如果本地系统在接收到服务请求后的该设定时间长度内未获取到所有子服务的服务结果,则提供的该服务失败,也即执行步骤S105。
[0012]S104:将服务结果进行处理后返回给该用户。
[0013]S105:通知该用户本次请求的服务失败,不向该用户返回服务结果。
[0014]当用户请求的服务是弱依赖服务时,如上例中的查询机票服务,如果航空公司A的系统出现故障,不能向本地系统提供相应的子服务,则在上述步骤S103中,本地系统势必会确定在设定时间长度内未获取到所有子服务的服务结果(未获取到航空公司A的系统的子服务的服务结果),因此执行步骤S105,通知该用户本次服务失败,不向该用户返回任何服务结果。而此时本地系统毕竟已经成功获取到了航空公司B的系统和航空公司C的系统的子服务的服务结果,现有技术中直接通知用户本次服务失败,这无疑降低了本地系统提供服务的质量。用户也很有可能会再次请求该服务,使本地系统再次调用各外部系统的子服务,这也增加了本地系统和各外部系统的负担。

【发明内容】

[0015]本申请实施例提供一种调用外部系统服务的方法及装置,用以解决现有技术中本地系统提供服务的质量较低,本地系统和外部系统的负担较大的问题。
[0016]本申请实施例提供的一种调用外部系统服务的方法,包括:
[0017]第一系统向用户提供弱依赖服务时,确定需要调用的每个第二系统的子服务并调用;以及
[0018]判断是否在第一设定时间长度内获取到调用的所有子服务的服务结果;
[0019]当判断结果为否时,将在所述第一设定时间长度内获取到的服务结果进行处理并返回给所述用户。
[0020]本申请实施例提供的一种调用外部系统服务的装置,包括:
[0021]调用模块,用于向用户提供弱依赖服务时,确定需要调用的每个第二系统的子服务并调用;
[0022]判断模块,用于判断是否在第一设定时间长度内获取到调用的所有子服务的服务结果;
[0023]处理模块,用于当所述判断模块的判断结果为否时,将在所述第一设定时间长度内获取到的服务结果进行处理并返回给所述用户。
[0024]本申请实施例提供一种调用外部系统服务的方法及装置,该方法第一系统向用户提供弱依赖服务时,调用需要的每个第二系统的子服务,并判断是否在第一设定时间长度内获取到调用的所有子服务的服务结果,当判断结果为否时,将在该第一设定时间长度内获取到的服务结果进行处理并返回给用户。由于本申请实施例中第一系统在第一设定时间长度内未获取到调用的所有子服务的服务结果时,并非直接通知用户本次服务失败,而是将在该第一设定时间长度内已经获取到的部分服务结果提供给用户,因此提高了提供服务的质量,也使用户不会再次请求该服务,也就无需再次调用各第二系统的子服务,降低了第一系统和各第二系统的负担。
【专利附图】

【附图说明】[0025]图1为现有技术中本地系统向用户提供服务的过程;
[0026]图2为本申请实施例提供的调用外部系统服务的过程;
[0027]图3为本申请实施例提供的第一系统调用航空公司A系统、航空公司B系统和航空公司C系统的子服务的示意图;
[0028]图4为本申请实施例提供的第一系统通过划分的两个线程池执行调用任务的示意图;
[0029]图5为本申请实施例提供的第一系统通过划分的多个线程池执行调用任务的示意图;
[0030]图6为本申请实施例提供的调用外部系统服务的详细过程;
[0031]图7为本申请实施例提供的调用外部系统服务的装置结构示意图。
【具体实施方式】
[0032]由于现有技术中当本地系统在提供弱依赖服务时,如果在设定时间长度内未获取到调用的所有子服务的服务结果,则直接通知用户本次服务失败,这样就会使在该设定时间长度内已经获取到的服务结果变得毫无意义,浪费了网络资源去获取到这些服务结果,也降低了提供服务的质量,同时,用户也很有可能会再次请求该服务,使本地系统再次调用各外部系统的子服务,这也增加了本地系统和各外部系统的负担。
[0033]本申请实施例中本地系统在设定时间长度内未获取到调用的所有子服务的服务结果时,将在该设定时间长度内已经获取到的服务结果提供给用户,可以提高本地系统提供服务的质量,使用户不会再次请求该服务,降低了本地系统和各外部系统的负担。
[0034]下面结合说明书附图,以第一系统为本地系统,第二系统为外部系统为例,对本申请实施例进行详细描述。
[0035]图2为本申请实施例提供的调用外部系统服务的过程,具体包括以下步骤:
[0036]S201:第一系统向用户提供弱依赖服务时,确定需要调用的每个第二系统的子服务并调用。
[0037]在本申请实施例中,作为本地系统的第一系统可以根据自身提供的服务对外部系统的子服务的依赖程度,为自身提供的不同服务设定不同的服务标识,例如,为强依赖服务设定强依赖服务标识,为弱依赖服务设定弱依赖服务标识。当用户请求的服务对应的服务标识为弱依赖服务标识时,第一系统确定需要调用的每个第二系统的子服务,并调用相应第二系统的子服务。
[0038]例如,当用户向第一系统请求机票查询服务时,由于该机票查询服务对应的服务标识为弱依赖服务,因此,第一系统确定需要调用的每个第二系统的子服务,假设确定需要调用的第二系统的子服务是:航空公司A系统的子服务、航空公司B系统的子服务、航空公司C系统的子服务,则调用这3个第二系统的子服务。
[0039]S202:判断是否在第一设定时间长度内获取到调用的所有子服务的服务结果,若判断结果为是,则执行步骤S204,否则执行步骤S203。
[0040]其中,该第一设定时间长度可以根据需要进行设定,例如,设定为10秒。
[0041]继续沿用上例,假设该第一设定时间长度为10秒,则第一系统判断是否在10秒内获取到调用的这3个子服务(航空公司A系统的子服务、航空公司B系统的子服务、航空公司C系统的子服务)的服务结果。
[0042]S203:将在该第一设定时间长度内获取到的服务结果进行处理,并返回给该用户。
[0043]继续沿用上例,如果在10秒内未获取到上述3个服务的全部服务结果,假设获取到了航空公司B系统和航空公司C系统的子服务的服务结果,但未获取到航空公司A系统的子服务的服务结果,则将10秒内已经获取到的服务结果进行处理,也即将获取到的航空公司B系统和航空公司C系统的子服务的服务结果进行处理,并返回给该用户。
[0044]S204:将获取到的所有子服务的服务结果进行处理,并返回给该用户。
[0045]继续沿用上例,如果在10秒内获取到了上述3个子服务的服务结果,则将获取到的这3个服务结果进行处理,并返回给该用户。
[0046]通过上述方法,第一系统在第一设定时间长度内未获取到调用的所有子服务的服务结果时,并非直接通知用户本次服务失败,而是将在该第一设定时间长度内已经获取到的部分服务结果提供给用户,因此,提高了提供服务的质量,也使用户不会再次请求该服务,也就无需再次调用各第二系统的子服务,降低了第一系统和各第二系统的负担。
[0047]在图2所示的步骤S201中,第一系统调用每个第二系统的子服务的方法具体为:第一系统分别针对每个第二系统,建立调用该第二系统的子服务的调用任务,在线程池中选择要执行该调用任务的线程,占用自身与该第二系统的连接,并在选择的线程上执行该调用任务,调用该第二系统的子服务。
[0048]继续沿用上例,作为本地系统的第一系统确定要调用的各第二系统的子服务为航空公司A系统的子服务、航空公司B系统的子服务、航空公司C系统的子服务,则第一系统针对航空公司A系统,建立调用航空公司A系统的子服务的调用任务A,并在线程池中选择要执行该调用任务A的线程,占用自身与该航空公司A系统的连接并在选择的线程上执行该调用任务A,以调用航空公司A系统的子服务。相应的,第一系统建立调用航空公司B系统的子服务的调用任务B,建立调用航空公司C系统的子服务的调用任务C,并在线程池中分别选择要执行调用任务B和调用任务C的线程,在选择的线程上相应执行调用任务B和调用任务C,以调用航空公司B系统和航空公司C系统的子服务。
[0049]采用上述方法调用每个第二系统的子服务时,图2所示的步骤S202中判断是否在第一设定时间长度内获取到调用的所有子服务的服务结果的方法具体可以为:通过在第一预设线程上执行第一监控任务,判断每个线程上的调用任务在执行了第一设定时间长度时,是否获取到相应调用的子服务的服务结果。
[0050]继续沿用上例,第一系统在第一预设线程上执行第一监控任务,判断调用任务A、调用任务B和调用任务C分别执行了第一设定时间长度时,是否获取到相应调用的子服务的服务结果,如图3所示。图3为本申请实施例提供的第一系统调用航空公司A系统、航空公司B系统和航空公司C系统的子服务的示意图,在图3中,第一系统分别与航空公司A系统、航空公司B系统和航空公司C系统相连,当用户请求机票查询服务时,第一系统分别建立调用任务A、调用任务B和调用任务C,并占用自身与3个系统的连接执行这3个调用任务,以分别调用这3个系统的子服务。并且,执行第一监控任务,通过执行该第一监控任务判断这3个调用任务在执行了第一设定时间长度时,是否获取到相应调用的子服务的服务结果。
[0051]当然,也可以分别针对建立的每个调用任务分别建立相应的监控任务并执行,以判断每个线程上的调用任务在执行了第一设定时间长度时,是否获取到相应调用的子服务的服务结果。
[0052]在本申请实施例中,为了进一步减轻本地系统和外部系统的负担,进一步提闻本地系统提供服务的效率,在图2所示的步骤S202中,第一系统当判断在第一设定时间长度内未获取到调用的所有子服务的服务结果时,还要继续执行在该第一设定时间长度内未获取到服务结果的调用任务,并判断继续执行的调用任务在继续执行了第二设定时间长度时,是否获取到相应调用的子服务的服务结果,当判断结果为是时,第一系统保存该继续执行的调用任务获取到的服务结果,用以向后续请求同样的该弱依赖服务的用户提供,否则,保存该继续执行的调用任务,并释放该继续执行的调用任务所在的线程。其中,第二设定时间长度也可以根据需要进行设定,例如,可以设定为50秒。
[0053]继续沿用上例,第一系统分别执行调用任务A、调用任务B、调用任务C,以分别调用航空公司A系统、航空公司B系统、航空公司C系统的子服务,假设第一设定时间长度为10秒,第一系统判断10秒内获取到了调用任务B和调用任务C相应调用的子服务的服务结果,但未获取到调用任务A调用的子服务的服务结果。因此,第一系统一方面将获取到的调用任务B和调用任务C调用的子服务的服务结果处理并返回给用户,另一方面继续执行调用任务A。
[0054]假设第二设定时间长度为50秒,则第一系统判断该调用任务A在继续执行了 50秒时,是否获取到相应调用的子服务的服务结果。
[0055]若获取到了,则保存获取到的该调用任务A调用的子服务的服务结果。当后续其他用户再次请求该机票查询服务时,可以直接从第一系统中提取该调用任务A调用的子服务的服务结果进行提供,而无需再次调用航空公司A系统的子服务,从而进一步减轻了本地系统和外部系统的负担,提高了提供服务的效率。当然,也可以将获取到的调用任务A、调用任务B、调用任务C分别调用的子服务的服务结果都进行保存,当后续其他用户再次请求该机票查询服务时,可以直接提取保存的这3个服务结果,无需再次调用航空公司A系统、航空公司B系统和航空公司C系统的子服务。
[0056]若未获取到,则保存该调用任务A,并释放执行该调用任务A所在的线程,用以后续定期提取未完成的该调用任务A并执行。
[0057]在上述过程中,第一系统继续执行在第一设定时间长度内未获取到服务结果的调用任务时,可以降低在该第一设定时间长度内未获取到服务结果的调用任务所在的线程的优先级,并继续执行。
[0058]继续沿用上例,第一系统降低调用任务A的所在的线程的优先级并执行。这是因为在本申请实施例中,对于超过了第一设定时间长度仍未获取到服务结果的调用任务A来说,即使继续执行该调用任务A并在第二设定时间长度内获取到了服务结果,该服务结果也不会再提供给本次请求服务的用户,而执行该调用任务A时所在的线程却仍需要占用第一系统自身中央处理器(Central Processing Unit, CPU)的处理资源。因此,降低该调用任务A所在的线程的优先级可以使第一系统优先将自身CPU的处理资源分配给其他优先级较高的线程。
[0059]其中,第一系统降低在第一设定时间长度内未获取到服务结果的调用任务所在的线程的优先级并继续执行的方法可以为:针对在第一设定时间长度内未获取到服务结果的调用任务所在的线程,将该线程的优先级降低,并继续在该线程上执行该调用任务。例如,将线程的优先级分为高、低两个优先级,预先将线程池中每个线程的优先级均设置高优先级,当判断某个线程上的调用任务在第一设定时间长度内未获取到服务结果时,将该线程的优先级降低为低优先级,并继续在该线程上执行该调用任务。具体优先级的划分可以根据实际需要进行划分。
[0060]另外,降低在第一设定时间长度内未获取到服务结果的调用任务所在的线程的优先级并继续执行的方法还可以为:在划分的优先级较低的线程池中重新选择执行该调用任务的线程,并在重新选择的线程上继续执行该调用任务。
[0061]具体的,第一系统可以预先划分高优先级和低优先级的两个线程池,如图4所示。图4为本申请实施例提供的第一系统通过划分的两个线程池执行调用任务的示意图。在图4中,当用户请求弱依赖服务时,第一系统确定需要调用的每个第二系统的子服务,针对确定的每个第二系统,建立调用任务,在高优先级的线程池中选择一个线程,占用自身与该第二系统的连接并在选择的线程上执行建立的该调用任务。此时,采用高优先级的线程池中的第一监控任务对该调用任务进行监控。
[0062]若该调用任务在执行了第一设定时间长度时,获取到了相应调用的子服务的服务结果,则将该服务结果处理并返回给用户,否则,在低优先级的线程池中重新选择线程,在重新选择的线程上继续执行该调用任务,并采用低优先级的线程池中的第一监控任务对该调用任务进行监控。当该调用任务在重新选择的线程上继续执行了第二设定时间长度时获取到了相应调用的子服务的服务结果时,保存在服务结果,否则释放该调用任务当前所在的线程,并保存该调用任务。
[0063]当然,也可以预先划分两个以上具有不同优先级的线程池,按照优先级由高到低的顺序将各线程池进行排序,并为每个线程池设定超时时间,优先级最高的线程池对应的超时时间即为第一设定时间长度,其他线程池对应的超时时间的和值即为第二设定时间长度,如图5所示。图5为本申请实施例提供的第一系统通过划分的多个线程池执行调用任务的示意图,在图5中,共划分了 4个线程池,按优先级由高到低的顺序排序为I级线程池、2级线程池、3级线程池、4级线程池。
[0064]执行调用任务时先从优先级最高的线程池中选择线程,也即从I级线程池中选择线程,在选择的线程上执行该调用任务,并通过I级线程池中的第一监控任务对该调用任务进行监控。若在第一设定时间长度内获取到了服务结果,则处理并返回给用户,否则在排序的下一个线程池中重新选择线程,也即在2级线程池中重新选择线程,并在重新选择的线程上继续执行该调用任务,通过2级线程池中的第一监控任务对该调用任务进行监控。若该调用任务继续执行了 2级线程池对应的超时时间时仍未获取到服务结果,则再次在排序的下一个线程池中重新选择线程执行该调用任务,也即在3级线程池中重新选择线程执行该调用任务,以此类推,这里就不再一一赘述。如果该调用任务在最后一级线程池,也即4级线程池中执行了 4级线程池对应的超时时间时仍未获取到服务结果,则保存在调用任务,并释放该调用任务所在的线程。
[0065]其中,可以设置第一系统为每个线程池中的线程分配CPU处理资源是按照优先级的由高到低的顺序分配的,也即当不同线程池中的线程都需要占用CPU处理资源时,优先级高的线程池中的线程可以优先占用CPU处理资源。[0066]图6为本申请实施例提供的调用外部系统服务的详细过程,具体包括以下步骤:
[0067]S601:第一系统向用户提供弱依赖服务时,确定需要调用的每个第二系统的子服务。
[0068]S602:针对每个第二系统,建立调用该第二系统的子服务的调用任务,在线程池中选择要执行该调用任务的线程,占用自身与该第二系统的连接并在选择的线程上执行该调用任务,调用该第二系统的子服务。
[0069]S603:在第一预设线程上执行第一监控任务,判断每个线程上的调用任务在执行了第一设定时间长度时,是否获取到相应调用的子服务的服务结果,若判断结果为是,则进行步骤S609,否则执行步骤S604。
[0070]S604:将在该第一设定时间长度内获取到的服务结果进行处理并返回给该用户。
[0071]S605:继续执行在该第一设定时间长度内未获取到服务结果的调用任务。
[0072]S606:判断继续执行的调用任务在继续执行了第二设定时间长度时,是否获取到相应调用的子服务的服务结果,若判断结果为是,则执行步骤S607,否则执行步骤S608。
[0073]S607:保存该继续执行的调用任务获取到的服务结果,用以向后续请求该弱依赖服务的用户提供。
[0074]S608:保存在继续执行的调用任务,并释放该继续执行的调用任务所在的线程。
[0075]S609:将获取到的所有子服务的服务结果进行处理并返回给该用户。
[0076]另外,在本申请实施例中,第一系统还可以监控自身与各第二系统的连接是否出现故障,并断开出现故障的连接。具体的,第一系统针对自身与每个第二系统的连接,通过在第二预设线程上执行第二监控任务,判断该连接在被占用了第三设定时间长度时,是否通过该连接获取了至少一个服务结果,若判断结果为否,则断开该连接。
[0077]图7为本申请实施例提供的调用外部系统服务的装置结构示意图,具体包括:
[0078]调用模块701,用于向用户提供弱依赖服务时,确定需要调用的每个第二系统的子服务并调用;
[0079]判断模块702,用于判断是否在第一设定时间长度内获取到调用的所有子服务的服务结果;
[0080]处理模块703,用于当所述判断模块702的判断结果为否时,将在所述第一设定时间长度内获取到的服务结果进行处理并返回给所述用户。
[0081]所述调用模块701具体用于,分别针对每个第二系统,建立调用该第二系统的子服务的调用任务,在线程池中选择要执行该调用任务的线程,占用自身与该第二系统的连接并在选择的线程上执行该调用任务,调用该第二系统的子服务;
[0082]所述判断模块702具体用于,通过在第一预设线程上执行第一监控任务,判断每个线程上的调用任务在执行了所述第一设定时间长度时,是否获取到相应调用的子服务的服务结果。
[0083]所述调用模块701还用于,当所述判断模块702判断在所述第一设定时间长度内未获取到调用的所有子服务的服务结果时,继续执行在所述第一设定时间长度内未获取到服务结果的调用任务;
[0084]所述判断模块702还用于,判断继续执行的调用任务在继续执行了第二设定时间长度时,是否获取到相应调用的子服务的服务结果,当判断结果为是时,保存所述继续执行的调用任务获取到的服务结果,用以向后续请求所述弱依赖服务的用户提供,否则,保存所述继续执行的调用任务,并释放所述继续执行的调用任务所在的线程。
[0085]所述调用模块701具体用于,降低在所述第一设定时间长度内未获取到服务结果的调用任务所在的线程的优先级,并继续执行。
[0086]所述判断模块702还用于,针对自身与每个第二系统的连接,通过在第二预设线程上执行第二监控任务,判断该连接在被占用了第三设定时间长度时,是否通过该连接获取到了至少一个服务结果,若判断结果为否,则断开该连接。
[0087]具体的上述调用外部系统服务的装置可以位于作为本地系统的第一系统中。
[0088]本申请实施例提供一种调用外部系统服务的方法及装置,该方法第一系统向用户提供弱依赖服务时,调用需要的每个第二系统的子服务,并判断是否在第一设定时间长度内获取到调用的所有子服务的服务结果,当判断结果为否时,将在该第一设定时间长度内获取到的服务结果进行处理并返回给用户。由于本申请实施例中第一系统在第一设定时间长度内未获取到调用的所有子服务的服务结果时,并非直接通知用户本次服务失败,而是将在该第一设定时间长度内已经获取到的部分服务结果提供给用户,因此提高了提供服务的质量,也使用户不会再次请求该服务,也就无需再次调用各第二系统的子服务,降低了第一系统和各第二系统的负担。
[0089]显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
【权利要求】
1.一种调用外部系统服务的方法,其特征在于,包括: 第一系统向用户提供弱依赖服务时,确定需要调用的每个第二系统的子服务并调用;以及 判断是否在第一设定时间长度内获取到调用的所有子服务的服务结果; 当判断结果为否时,将在所述第一设定时间长度内获取到的服务结果进行处理并返回给所述用户。
2.如权利要求1所述的方法,其特征在于,调用每个第二系统的子服务,具体包括: 所述第一系统分别针对每个第二系统,建立调用该第二系统的子服务的调用任务,在线程池中选择要执行该调用任务的线程,占用自身与该第二系统的连接并在选择的线程上执行该调用任务,调用该第二系统的子服务; 判断是否在第一设定时间长度内获取到调用的所有子服务的服务结果,具体包括:所述第一系统通过在第一预设线程上执行第一监控任务,判断每个线程上的调用任务在执行了所述第一设定时间长度时,是否获取到相应调用的子服务的服务结果。
3.如权利要求2所述的方法,其特征在于,当判断在所述第一设定时间长度内未获取到调用的所有子服务的服务结果时,所述方法还包括: 所述第一系统继续执行在所述第一设定时间长度内未获取到服务结果的调用任务;并判断继续执行的调用任务在继续执行了第二设定时间长度时,是否获取到相应调用的子服务的服务结果; 当判断结果为是时,所述第一系统保存所述继续执行的调用任务获取到的服务结果,用以向后续请求所述弱依赖 服务的用户提供,否则,保存所述继续执行的调用任务,并释放所述继续执行的调用任务所在的线程。
4.如权利要求3所述的方法,其特征在于,所述第一系统继续执行在所述第一设定时间长度内未获取到服务结果的调用任务,具体包括: 所述第一系统降低在所述第一设定时间长度内未获取到服务结果的调用任务所在的线程的优先级,并继续执行。
5.如权利要求2所述的方法,其特征在于,所述方法还包括: 所述第一系统针对自身与每个第二系统的连接,通过在第二预设线程上执行第二监控任务,判断该连接在被占用了第三设定时间长度时,是否通过该连接获取到了至少一个服务结果,若判断结果为否,则断开该连接。
6.一种调用外部系统服务的装置,其特征在于,包括: 调用模块,用于向用户提供弱依赖服务时,确定需要调用的每个第二系统的子服务并调用; 判断模块,用于判断是否在第一设定时间长度内获取到调用的所有子服务的服务结果; 处理模块,用于当所述判断模块的判断结果为否时,将在所述第一设定时间长度内获取到的服务结果进行处理并返回给所述用户。
7.如权利要求6所述的装置,其特征在于,所述调用模块具体用于,分别针对每个第二系统,建立调用该第二系统的子服务的调用任务,在线程池中选择要执行该调用任务的线程,占用自身与该第二系统的连接并在选择的线程上执行该调用任务,调用该第二系统的子服务; 所述判断模块具体用于,通过在第一预设线程上执行第一监控任务,判断每个线程上的调用任务在执行了所述第一设定时间长度时,是否获取到相应调用的子服务的服务结果O
8.如权利要求7所述的装置,其特征在于,所述调用模块还用于,当所述判断模块判断在所述第一设定时间长度内未获取到调用的所有子服务的服务结果时,继续执行在所述第一设定时间长度内未获取到服务结果的调用任务; 所述判断模块还用于,判断继续执行的调用任务在继续执行了第二设定时间长度时,是否获取到相应调用的子服务的服务结果,当判断结果为是时,保存所述继续执行的调用任务获取到的服务结果,用以向后续请求所述弱依赖服务的用户提供,否则,保存所述继续执行的调用任务,并释放所述继续执行的调用任务所在的线程。
9.如权利要求8所述的装置,其特征在于,所述调用模块具体用于,降低在所述第一设定时间长度内未获取到服务结果的调用任务所在的线程的优先级,并继续执行。
10.如权利要求7所述的装置,其特征在于,所述判断模块还用于,针对自身与每个第二系统的连接,通过 在第二预设线程上执行第二监控任务,判断该连接在被占用了第三设定时间长度时,是否通过该连接获取到了至少一个服务结果,若判断结果为否,则断开该连接。
【文档编号】G06F9/46GK103455366SQ201210179618
【公开日】2013年12月18日 申请日期:2012年6月1日 优先权日:2012年6月1日
【发明者】王冬 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1