一种断链检测的方法、装置及电子设备转让专利

申请号 : CN202110552235.1

文献号 : CN113315676B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 尹航

申请人 : 北京达佳互联信息技术有限公司

摘要 :

本公开关于一种断链检测的方法、装置及电子设备,用以解决目前不能自动分析上下文传递链路是否发生断链的问题。该方法包括:接收业务请求,所述业务请求用于请求服务;调用提供所述服务的第一服务子单元,并向所述第一服务子单元传输所述业务请求的上下文信息;根据预设上下文信息格式中的信息项,检测所述上下文信息中是否存在信息项内容丢失;若存在信息项内容丢失,则确认所述上下文信息传递链路断链。本公开实施例通过在上下文传输过程中自动检测上下文信息,实现自动检测上下文传递链路是否存在断链,检测结果更准确且效率更高。

权利要求 :

1.一种断链检测的方法,其特征在于,包括:

接收业务请求,所述业务请求用于请求服务;

调用提供所述服务的第一服务子单元,并向所述第一服务子单元传输所述业务请求的上下文信息;

根据预设上下文信息格式中的信息项,检测所述上下文信息中是否存在信息项内容丢失;

若存在信息项内容丢失,则确认所述上下文信息传递链路断链。

2.如权利要求1所述的方法,其特征在于,还包括:调用与所述第一服务子单元关联的第二服务子单元,所述第二服务子单元在所述第一服务子单元被调用前或调用后执行:获取传输的上下文信息,根据预设上下文信息格式中的信息项,检测所述上下文信息中是否存在信息项内容丢失;以及若存在信息项内容丢失,则确认所述上下文信息传递链路断链。

3.根据权利要求1或2所述的方法,其特征在于,还包括:检测到所述上下文信息中存在信息项内容丢失时,上报信息项内容丢失的消息。

4.根据权利要求1所述的方法,其特征在于,所述根据预设上下文信息格式中的信息项,检测所述上下文信息中是否存在信息项内容丢失,包括:根据预设上下文信息格式中定义的非空内容信息项,检测所述上下文信息中各非空内容信息项的内容是否为空;

检测到任一非空内容信息项的内容为空时,确定所述上下文信息中存在信息项内容丢失。

5.根据权利要求2所述的方法,其特征在于,还包括:根据调用的第二服务子单元确认所述上下文信息传递链路断链时,确定被调用的第一调用单元和第二调用单元,所述第一调用单元为第一服务子单元及第一服务子单元中存在上下级调用关系的调用单元,所述第二调用单元为除所述第一调用单元外被调用的存在上下级调用关系的调用单元;

对所述第一调用单元和第二调用单元的上下级调用关系进行解析,确定所述上下文信息传递链路断链的原因。

6.根据权利要求5所述的方法,其特征在于,所述确定所述上下文信息传递链路断链的原因,包括:在所述第一调用单元和第二调用单元中,按照调用关系从下级往上级的查找顺序,查找至最上级的调用单元;

确认上下信息传递异常的原因为所述最上级的调用单元异常。

7.根据权利要求1所述的方法,其特征在于,若存在信息项内容丢失,则确认所述上下文信息传递链路断链,包括:若存在信息项内容丢失,则确认所述上下文信息传递链路断链,且链路原因为上下文信息传递异常。

8.根据权利要求7所述的方法,其特征在于,还包括:确认所述上下文信息传递链路断链的原因为上下文信息传递异常时,停止服务调用过程。

9.根据权利要求7所述的方法,其特征在于,还包括:若不存在信息项内容丢失,根据服务调用过程重建所述上下文信息的传递链路;

若重建的传递链路上发生断链,确认发生断链的原因为配置故障。

10.一种断链检测的装置,其特征在于,包括:

业务请求模块,被配置为执行接收业务请求,所述业务请求用于请求服务;

上下文传递模块,被配置为执行调用提供所述服务的第一服务子单元,并向所述第一服务子单元传输所述业务请求的上下文信息;

异常检测模块,被配置为执行根据预设上下文信息格式中的信息项,检测所述上下文信息中是否存在信息项内容丢失;

断链分析模块,被配置为执行若存在信息项内容丢失,则确认所述上下文信息传递链路断链。

11.如权利要求10所述的装置,其特征在于,还包括:关联调用模块,被配置为执行调用与所述第一服务子单元关联的第二服务子单元,所述第二服务子单元在所述第一服务子单元被调用前或调用后执行:获取传输的上下文信息,根据预设上下文信息格式中的信息项,检测所述上下文信息中是否存在信息项内容丢失;以及若存在信息项内容丢失,则确认所述上下文信息传递链路断链。

12.根据权利要求10或11所述的装置,其特征在于,还包括:消息上报模块,被配置为执行检测到所述上下文信息中存在信息项内容丢失时,上报信息项内容丢失的消息。

13.根据权利要求10所述的装置,其特征在于,所述异常检测模块根据预设上下文信息格式中的信息项,检测所述上下文信息中是否存在信息项内容丢失,包括:根据预设上下文信息格式中定义的非空内容信息项,检测所述上下文信息中各非空内容信息项的内容是否为空;

检测到任一非空内容信息项的内容为空时,确定所述上下文信息中存在信息项内容丢失。

14.根据权利要求11所述的装置,其特征在于,还包括:异常解析模块,被配置为根据调用的第二服务子单元确认所述上下文信息传递链路断链时,确定被调用的第一调用单元和第二调用单元,所述第一调用单元为第一服务子单元及第一服务子单元中存在上下级调用关系的调用单元,所述第二调用单元为除所述第一调用单元外被调用的存在上下级调用关系的调用单元;对所述第一调用单元和第二调用单元的上下级调用关系进行解析,确定所述上下文信息传递链路断链的原因。

15.根据权利要求14所述的装置,其特征在于,所述异常解析模块被配置为执行确定所述上下文信息传递链路断链的原因,包括:在所述第一调用单元和第二调用单元中,按照调用关系从下级往上级的查找顺序,查找至最上级的调用单元;

确认上下信息传递异常的原因为所述最上级的调用单元异常。

16.根据权利要求10所述的装置,其特征在于,断链分析模块若存在信息项内容丢失,则确认所述上下文信息传递链路断链,包括:若存在信息项内容丢失,则确认所述上下文信息传递链路断链,且链路原因为上下文信息传递异常。

17.根据权利要求16所述的装置,其特征在于,还包括:服务调用停止模块,被配置为执行确认所述上下文信息传递链路断链的原因为上下文信息传递异常时,停止服务调用过程。

18.根据权利要求16所述的装置,其特征在于,还包括:配置故障确定模块,被配置为执行若不存在信息项内容丢失,根据服务调用过程重建所述上下文信息的传递链路;若重建的传递链路上发生断链,确认发生断链的原因为配置故障。

19.一种电子设备,其特征在于,包括:

处理器;

用于存储所述处理器可执行指令的存储器;

其中,所述处理器被配置为执行所述指令,以实现根据权利要求1至权利要求9中任一项所述的断链检测的方法。

20.一种存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行根据权利要求1至权利要求9中任一项所述的断链检测的方法。

说明书 :

一种断链检测的方法、装置及电子设备

技术领域

[0001] 本公开涉及分布式系统技术领域,特别涉及一种断链检测的方法、装置及电子设备。

背景技术

[0002] 近年来随着互联网的快速发展,尤其是移动互联网以及云计算的迅猛发展,对于软件交付与迭代速度和效率的要求在不断提高。分布式架构体系凭借其简单清晰、灵活可扩展、独立部署等优势,越来越成为主流。分布式架构体系作为一个整体对用户提供服务,而整个系统的内部的协作对用户来说是透明的。
[0003] 但是,在服务调用过程中,业务请求的上下文信息传递过程中,可能会发生上下文信息丢失即断链。
[0004] 目前并没有特别好的断链检测的方案,相关技术中通过人工确认上下文信息传递的有效性,确定业务请求上下文传递链路是否出现断链,该方案检测效率低且出错率比较高。

发明内容

[0005] 本公开提供一种断链检测的方法、装置及电子设备,用以解决目前检测上下文信息传递链路断链存在效率低且容易出错的问题。本公开的技术方案如下:
[0006] 根据本公开实施例的第一方面,提供一种断链检测的方法,包括:
[0007] 接收业务请求,所述业务请求用于请求服务;
[0008] 调用提供所述服务的第一服务子单元,并向所述第一服务子单元传输所述业务请求的上下文信息;
[0009] 根据预设上下文信息格式中的信息项,检测所述上下文信息中是否存在信息项内容丢失;
[0010] 若存在信息项内容丢失,则确认所述上下文信息传递链路断链。
[0011] 在一种可能的实施方式中,还包括:
[0012] 调用与所述第一服务子单元关联的第二服务子单元,所述第二服务子单元在所述第一服务子单元被调用前或调用后执行:
[0013] 获取传输的上下文信息,根据预设上下文信息格式中的信息项,检测所述上下文信息中是否存在信息项内容丢失;以及若存在信息项内容丢失,则确认所述上下文信息传递链路断链。
[0014] 在一种可能的实施方式中,该方法还包括:
[0015] 检测到所述上下文信息中存在信息项内容丢失时,上报信息项内容丢失的消息。
[0016] 在一种可能的实施方式中,所述根据预设上下文信息格式中的信息项,检测所述上下文信息中是否存在信息项内容丢失,包括:
[0017] 根据预设上下文信息格式中定义的非空内容信息项,检测所述上下文信息中各非空内容信息项的内容是否为空;
[0018] 检测到任一非空内容信息项的内容为空时,确定所述上下文信息中存在信息项内容丢失。
[0019] 在一种可能的实施方式中,该方法还包括:
[0020] 根据调用的第二服务子单元确认所述上下文信息传递链路断链时,确定被调用的第一调用单元和第二调用单元,所述第一调用单元为第一服务子单元及第一服务子单元中存在上下级调用关系的调用单元,所述第二调用单元为除所述第一调用单元外被调用的存在上下级调用关系的调用单元;
[0021] 对所述第一调用单元和第二调用单元的上下级调用关系进行解析,确定所述上下文信息传递链路断链的原因。
[0022] 在一种可能的实施方式中,所述确定所述上下文信息传递链路断链的原因,包括:
[0023] 在所述第一调用单元和第二调用单元中,按照调用关系从下级往上级的查找顺序,查找至最上级的调用单元;
[0024] 确认上下信息传递异常的原因为所述最上级的调用单元异常。
[0025] 在一种可能的实施方式中,若存在信息项内容丢失,则确认所述上下文信息传递链路断链,包括:
[0026] 若存在信息项内容丢失,则确认所述上下文信息传递链路断链,且链路原因为上下文信息传递异常。
[0027] 在一种可能的实施方式中,该方法还包括:
[0028] 确认所述上下文信息传递链路断链的原因为上下文信息传递异常时,停止服务调用过程。
[0029] 在一种可能的实施方式中,还包括:
[0030] 若不存在信息项内容丢失,根据服务调用过程重建所述上下文信息的传递链路;
[0031] 若重建的传递链路上发生断链,确认发生断链的原因为业配置故障。
[0032] 根据本公开实施例的第二方面,提供一种断链检测的装置,包括:
[0033] 业务请求模块,被配置为执行接收业务请求,所述业务请求用于请求服务;
[0034] 上下文传递模块,被配置为执行调用提供所述服务的第一服务子单元,并向所述第一服务子单元传输所述业务请求的上下文信息;
[0035] 异常检测模块,被配置为执行根据预设上下文信息格式中的信息项,检测所述上下文信息中是否存在信息项内容丢失;
[0036] 断链分析模块,被配置为执行若存在信息项内容丢失,则确认所述上下文信息传递链路断链。
[0037] 在一种可能的实施方式中,还包括:
[0038] 关联调用模块,被配置为执行调用与所述第一服务子单元关联的第二服务子单元,所述第二服务子单元在所述第一服务子单元被调用前或调用后执行:
[0039] 获取传输的上下文信息,根据预设上下文信息格式中的信息项,检测所述上下文信息中是否存在信息项内容丢失;以及若存在信息项内容丢失,则确认所述上下文信息传递链路断链。
[0040] 在一种可能的实施方式中,该装置还包括:
[0041] 消息上报模块,被配置为执行检测到所述上下文信息中存在信息项内容丢失时,上报信息项内容丢失的消息。
[0042] 在一种可能的实施方式中,所述异常检测模块根据预设上下文信息格式中的信息项,检测所述上下文信息中是否存在信息项内容丢失,包括:
[0043] 获取传输的上下文信息,根据预设上下文信息格式中定义的非空内容信息项,检测所述上下文信息中各非空内容信息项的内容是否为空;
[0044] 检测到任一非空内容信息项的内容为空时,确定所述上下文信息中存在信息项内容丢失。
[0045] 在一种可能的实施方式中,该装置还包括:
[0046] 异常解析模块,被配置为执行根据调用的第二服务子单元确认所述上下文信息传递链路断链时,确定被调用的第一调用单元和第二调用单元,所述第一调用单元为第一服务子单元及第一服务子单元中存在上下级调用关系的调用单元,所述第二调用单元为除所述第一调用单元外被调用的存在上下级调用关系的调用单元;对所述第一调用单元和第二调用单元进行解析,确定所述上下文信息传递链路断链的原因;对所述第一调用单元和第二调用单元的上下级调用关系进行解析,确定所述上下文信息传递链路断链的原因。
[0047] 在一种可能的实施方式中,所述异常解析模块被配置为执行确定所述上下文信息传递链路断链的原因,包括:
[0048] 在所述第一调用单元和第二调用单元中,按照调用关系从下级往上级的查找顺序,查找至最上级的调用单元;
[0049] 确认上下信息传递异常的原因为所述最上级的调用单元异常。
[0050] 在一种可能的实施方式中,断链分析模块若存在信息项内容丢失,则确认所述上下文信息传递链路断链,包括:
[0051] 若存在信息项内容丢失,则确认所述上下文信息传递链路断链,且链路原因为上下文信息传递异常。
[0052] 在一种可能的实施方式中,该装置还包括:
[0053] 服务调用停止模块,被配置为执行确认所述上下文信息传递链路断链的原因为上下文信息传递异常时,停止服务调用过程。
[0054] 在一种可能的实施方式中,该装置还包括:
[0055] 配置故障确定模块,被配置为执行若不存在信息项内容丢失,根据服务调用过程重建所述上下文信息的传递链路;若重建的传递链路上发生断链,确认发生断链的原因为配置故障。
[0056] 根据本公开实施例的第三方面,提供一种电子设备,包括:存储器,用于存储可执行指令;
[0057] 处理器,用于读取并执行所述存储器中存储的可执行指令,以实现执行上述第一方面提供的断链检测的方法的步骤。
[0058] 根据本公开实施例的第四方面,提供一种非易失性存储介质,当所述存储介质中的指令由断链检测的电子设备的处理器执行时,能够执行本公开实施例第一方面中所述的断链检测的方法。
[0059] 本公开的实施例提供的技术方案至少带来以下有益效果:
[0060] 本公开实施例提供的断链检测的方法,可以调用业务请求对应的服务过程中,自动检测出上下文信息传递链路是否发生断链,检测结果准确且效率高。

附图说明

[0061] 此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
[0062] 图1是根据一示例性实施例示出的应用场景的示意图;
[0063] 图2是根据一示例性实施例示出的一种断链检测的系统示意图;
[0064] 图3是根据一示例性实施例示出的断链检测的方法流程图;
[0065] 图4是根据一示例性实施例示出的断链检测的装置框图;
[0066] 图5是根据一示例性实施例示出的一种电子设备的框图。

具体实施方式

[0067] 为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
[0068] 需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
[0069] 以下,对本公开实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
[0070] (1)本公开实施例中术语“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
[0071] (2)本公开实施例中术语“电子设备”可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
[0072] (3)本公开实施例中术语“分布式请求”是指在由分布式协作系统中的多个服务协作完成的请求。
[0073] (4)本公开实施例中术语“上下文传递组件”是指,在调用多个服务提供业务请求相应业务服务的过程中,能够对每个服务进行业务请求的上下文信息传递功能的组件,通过分布式系统底层框架,可以采用穷举的方式,得到分布式系统中的所有上下文传递组件。
[0074] (5)本公开实施例中术语“客户端”,或称为用户端,是指与服务器相对应的,为用户提供本地服务的程序。除了一些本地运行的应用程序之外,一般安装在普通的客户机上,需要与服务端互相配合运行。
[0075] 在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体。系统拥有多种通用的物理和逻辑资源,可以动态的分配任务,分散的物理和逻辑资源通过计算机网络实现信息交换。系统中存在一个以全局的方式管理计算机资源的分布式操作系统。分布式操作系统是以全局方式管理系统资源的,它可以为用户任意调度网络资源,并且调度过程是"透明"的。当用户提交一个业务请求,分布式操作系统能够根据需要在系统中选择最合适的处理节点,将用户的业务请求提交到处理节点,由处理节点调用对应的服务子单元,完成与业务请求对应的服务的调用,上述处理节点可以为服务器。
[0076] 为了将各个服务子单元的调用关联起来,在服务器中预先设置与各个服务子单元相对应的上下文传递组件,具体包括在各服务子单元被调用前调用的入口的上下文传递组件,及各服务子单元被调用后调用的出口的上下文传递组件,在处理节点调用对应服务子单元前或调用对应服务子单元后,通过与该服务子单元相对应的上下文传递组件,将该业务请求的上下文信息以用户透明的方式隐式传递下去,由此可以通过追踪上下文信息传递过程,确定上下文传递链路是否异常。
[0077] 相关技术中通过人工解析上下文信息传递过程,确定业务请求上下文传递链路是否出现断链,该方式检测效率低且出错率比较高。
[0078] 本公开实施例提供了一种断链检测的方法和装置及电子设备,可以自动准确检测出上下文传递链路上是否发生断链。
[0079] 为了使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开作进一步地详细描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本公开保护的范围。
[0080] 图1为根据本公开实施例的一个应用场景的示意图,如图1所示,该应用场景中可以包括分布式系统中的多个服务器20和多个终端设备。其中,终端设备可以是可用来进行网络访问的任何合适的电子设备,包括但不限于计算机、笔记本电脑、智能电话、平板电脑或是其它类型的终端。多个服务器20能够提供与业务请求对应的服务。终端设备可以经由网络40实现与多个服务器20的信息传输。多个服务器20可以通过访问数据库50来获取终端设备所需的内容,例如模型参数、广告内容、索引文件等。终端设备之间(例如,30_1与30_2或30_N之间)也可以经由网络40彼此通信。网络40可以是广义上的用于信息传递的网络,可以包括一个或多个通信网络,诸如无线通信网络、因特网、私域网、局域网、城域网、广域网或是蜂窝数据网络等。
[0081] 响应于用户在终端设备上触发的业务请求,终端设备通过网络40将业务请求发送到多个服务器20,由多个服务器20中作为控制节点的服务器确定该业务请求所请求的服务、及确定提供该服务的多个服务子单元,触发多个服务子单元所在的服务器调用对应的服务子单元,协作完成业务请求对应的服务。上述作为控制节点的服务器20的控制方式可以是集中控制,即所有的业务请求都发送到一个服务器,也可以为分布式控制,即多个服务器20各自处理被分配到的业务请求,本申请实施例不限制采用的控制方式,本申请解决的是在触发多个服务子单元所在的服务器调用对应的服务子单元后,如何实现自动检测上下文传递链路是否存在断链的问题。
[0082] 如图2所示,本公开实施例提供一种断链检测的系统,包括客户端21、服务端设备22,服务端设备包括多个服务器,多个服务器分布协作完成业务请求的过程参见上述应用场景的描述。客户端21为安装在电子设备上的应用程序客户端,与服务端设备22配合为用户23提供服务,用户23可以查看客户端21展示的内容,或触发客户端21上支持的操作。
[0083] 本公开实施例中,响应于用户23在客户端21上触发的业务请求,客户端21向服务端设备22发送业务请求,服务端设备22确定该业务请求所请求的服务、及提供该服务需要调用的多个服务子单元,通过各服务子单元所在的服务器调用各服务子单元,协作为用户23提供业务服务,具体包括:
[0084] 接收业务请求,所述业务请求用于请求服务;
[0085] 调用提供所述服务的第一服务子单元,并向所述第一服务子单元传输所述业务请求的上下文信息;
[0086] 根据预设上下文信息格式中的信息项,检测所述上下文信息中是否存在信息项内容丢失;
[0087] 若存在信息项内容丢失,则确认所述上下文信息传递链路断链。
[0088] 实施例1
[0089] 本公开实施例提供的一种断链检测的方法,应用于服务端设备,如图3所示,为本公开实施例提供的断链检测的方法流程图,包括以下步骤S301‑S304。
[0090] 在步骤S301中,接收业务请求,所述业务请求用于请求服务。
[0091] 用户通过客户端触发业务请求的操作,并将该业务请求发送到服务端设备,服务端设备接收业务请求,确定该业务请求所请求的服务、及提供该服务需要调用的多个服务子单元,多个服务子单元的调用是存在先后顺序的,按照调用的顺序调用对应的服务子单元,以提供相应的服务,对于第一个被调用的服务子单元,在调用之前根据本次业务请求,生成业务请求的上下文信息,调用第一个服务子单元前向第一个服务子单元传递上下文信息,然后调用第一个服务子单元,完成该第一个服务子单元的调用后,向下一个调用服务子单元传递上下文信息后,调用下一个服务子单元;下一个服务子单元接收上一个服务子单元传递过来的本次业务请求的上下文信并被调用息,完成该服务子单元的调用后,向再下一个服务子单元传递上下文信息后调用再下一个服务子单元;重复上述过程直至上述多个服务子单元全部被调用。上述多个服务子单元所在的服务器为上述多个服务器的全部服务器或部分服务器。
[0092] 上述上下文信息至少包括业务请求的标识ID、调用的服务、调用该服务的业务请求方的信息、请求该服务的客户端IP等等。
[0093] 对于同一个业务请求,业务请求的上下文信息在传递过程中不会发生内容的变化,并按照多个服务子单元的调用顺序传递下去。对于不同的业务请求,业务请求的上下文信息的格式相同,即包括相同的信息项,不同的是信息项的内容会发生变化。
[0094] 在步骤S302中,调用提供所述服务的第一服务子单元,并向所述第一服务子单元传输所述业务请求的上下文信息。
[0095] 本公开实施例中调用业务请求对应的服务,为按照调用顺序调用提供该服务的多个服务子单元,提供该服务的服务子单元在本实施例被称为第一服务子单元。
[0096] 向提供所述服务的第一服务单元传输所述业务请求的上下文信息,则调用的多个第一服务子单元,按照调用顺序传递上下文信息,多个第一服务子单元传递上下文信息的方式参见上述描述,这里不再重述。
[0097] 在步骤S303中,根据预设上下文信息格式中的信息项,检测所述上下文信息中是否存在信息项内容丢失。
[0098] 本公开实施例向提供所述服务的每个第一服务子单元传输上下文信息时,会自动触发执行断链检测。即断链检测是与上下文信息传递绑定在一起,在检测到有上下文信息传递时触发执行:根据预设上下文信息格式中的信息项,检测上下文信息中是否存在信息项内容丢失,从而可以确定传递是否异常。
[0099] 这里预设的上下文信息格式,是指上下文信息包括若干个预定义的信息项,如业务请求的标识ID、调用的服务、调用该服务的业务请求方的信息、调用该服务的客户端IP等等。当业务请求改变时,不会改变上下文信息的格式,而是改变上下文信息中信息项的内容。
[0100] 步骤S304中,若存在信息项内容丢失,则确认所述上下文信息传递链路断链。
[0101] 确认上下文信息传递链路断链时,会进行异常上报,具体可以上报给上述多个服务器中作为控制节点的服务器,以使断链恢复人员可以根据上报信息确定发生断链的原因,从而检测出在某个第一服务单元被调用时发生了断链。
[0102] 本公开实施提供的断链检测的方法,解决了目前断链分析时的如下问题:由于当前第一服务子单元调用极其复杂,依赖人工梳理调用关系解析上下文信息传递过程,确定是否发生上下文信息传递的断链,准确率低且效率比较低的问题。
[0103] 作为一种可选的实施方式,还包括:
[0104] 调用与所述第一服务子单元关联的第二服务子单元,所述第二服务子单元在所述第一服务子单元被调用前或调用后执行:
[0105] 获取传输的上下文信息,根据预设上下文信息格式中的信息项,检测所述上下文信息中是否存在信息项内容丢失;以及若存在信息项内容丢失,则确认所述上下文信息传递链路断链。
[0106] 如前所述,提供所述服务的多个第一服务子单元,每个被调用的第一服务子单元在调用前会传递上下文信息,则该第一服务子单元被调用前,通过该第一服务子单元所关联的第二服务子单元,检测上一个第一服务子单元传递过来的上下文信息中是否存在信息项内容丢失,该第一服务子单元完成调用后,会执行上下文信息的传递,则通过该第一服务子单元所关联的第二服务子单元,检测向下一个第一服务子单元传递的上下文信息中是否存在信息项内容丢失,从而实现上下文信息传递链路上哪个传递环节出现存在异常。
[0107] 本公开实施例中调用提供服务的多个第一服务子单元时,按照多个第一服务子单元的调用顺序,在调用第一服务单元前或调用第一服务子单元后传递上下文信息,具体可以通过服务器中预先设置与各个服务子单元相对应的上下文传递组件,实现上下文信息的传递。也就是在每个第一服务子单元被调用前,会触发与该第一服务子单元对应的入口的上下文传递组件的调用,通过该上下文传递组件获取上一个第一服务子单元的上下文信息并传递到当前第一服务子单元,在每个第一服务子单元完成调用后,会触发与该第一服务子单元对应的出口的上下文传递组件的调用,通过该上下文传递组件获取当前第一服务子单元的上下文信息并传递到下一个第一服务子单元。
[0108] 本公开实施例每个第一服务子单元与对应的第二服务子单元进行关联的方式可以具体为:
[0109] 由于第一服务子单元被调用前或调用后触发对上下文传递组件的调用,本申请实施例将执行第二服务子单元功能的检测代码,增加到与第一服务子单元对应的上下文传递组件中,从而实现将第一服务子单元与第二服务子单元的关联,以使第二服务子单元在第一服务子单元被调用前或调用后执行,即上下文传递组件被调用时,上述检测代码也被执行,实现如下步骤:
[0110] 根据预设上下文信息格式中的信息项,检测上下文传递组件传递的上下文信息中是否存在信息项内容丢失;以及若存在信息项内容丢失,则确认所述上下文信息传递链路断链。
[0111] 通过上述可以实现全链路上下文传递时,依赖分布式系统中与各个第一服务子单元对应的上下文传递组件的调用,自动检测是否存在上下文信息传递链路断链,来避免人工排查的成本降低成本;另外,上下文传递组件与上述检测代码绑定,所以只要涉及到上下文信息传递,就会执行上下文信息传递链路断链检测,不会存在漏检的问题,提高了检测的准确率。
[0112] 分布式系统目前支持对上下文传递组件的穷举,本公开实施例实现检测代码与上下文传递组件绑定的一种可能的方式为:
[0113] 穷举出分布式系统中与各第一服务子单元对应的所有的上下文传递组件;
[0114] 在所有的上下文传递组件中植入上述检测代码。这样,在上下文信息通过上下文传递组件被传递时,触发执行该检测代码的执行,在第一服务子单元被调用前通过上下文传递组件读取上一个第一服务子单元传递的上下文信息,调用第一服务子单元时,通过上下文传递组件传递到当前被调用的第一服务子单元中,在第一服务子单元调用过程中运行服务相关的配置,提供相应的服务,第一服务子单元调用完成后通过上下文传递组件,确定当前第一服务子单元传递的上下文信息,并调用下一个第一服务子单元,在调用下一个第一服务子单元时,通过上下文传递组件传递给下一个第一服务子单元,上下文传递组件每次被调用时,触发上述检测代码的执行,通过检测代码确定是否发生上下文信息传递链路断链。
[0115] 虽然上述上下文传递组件根据多个第一服务子单元的调用顺序,分别被触发执行,但植入的检测代码相同,因此执行的上下文信息检测的流程是一致的。
[0116] 本公开实施例中,断链检测的方法还包括:检测到所述上下文信息中存在信息项内容丢失时,上报信息项内容丢失的消息。上述检测代码不仅在第一服务子单元调用前或者调用后传递时,检测是否有信息项内容丢失,还可以在检测到信息项内容丢失时上报检测结果。可以是在第一服务子单元调用前或者调用后检测是否有丢失后进行检测结果上报,即不管是否发生上下文信息丢失,都会进行上报;也可以是在检测到发生上下文信息丢失时进行上报。
[0117] 上报信息项内容丢失的消息时,会将当前检测到发生上下文信息丢失的调用环境进行上报,可以包括调用的分布式系统中组件、调用分布式系统中服务单元、调用第一服务子单元前或调用第一服务子单元后丢失、丢失的信息项内容中的至少一项,本公开实施例中上述第一服务子单元、上述第二服务子单元、分布式系统中的服务单元,为执行相应功能的程序单元,可以是不同大小的程序单元,如可以为线程、进程、应用等。
[0118] 本公开实施例根据预设上下文信息格式中的信息项,检测所述上下文信息中是否存在信息项内容丢失,包括:
[0119] 根据预设上下文信息格式中定义的非空内容信息项,检测所述上下文信息中各非空内容信息项的内容是否为空;
[0120] 检测到任一非空内容信息项的内容为空时,确定所述上下文信息中存在信息项内容丢失。
[0121] 如果在上下文信息传递过程中,通过检测代码检测到某个第一服务子单元调用前或者调用后传递上下文信息时,某一个信息项内容发生了丢失,则认为上下文信息传递发生异常。因为按照调用顺序先后调用第一服务子单元时,上下文传递异常可能的情况为,调用的第一服务子单元没有配置故障,即调用的第一服务子单元根据配置正常提供相应的服务,但在上下文传递机制出现了问题,调用的第一服务子单元向下一个调用的第一服务子单元传递的上下文信息时发生信息项内容丢失,则通过触发的检测代码会检测到传递的是异常的上下文信息。
[0122] 具体实施时,上述预设上下文信息格式中,可以包括适用不同业务请求的信息项,即在调用第一个服务子单元前生成相应的上下文信息,由于服务的不同,可能某些信息项不需要填充内容,但会设置此类信息项为默认值,但不能为空。非空设定作为后续第二服务子单元判定断链的依据,只要不发生由于上次文传递导致的断链,该上下文信息中各信息项的内容就一定能被检测到,反之,一旦检测到该信息为空,即可判定为断链。
[0123] 因为上下文信息除了由于配置正常(即业务正常),但上下文传递机制引起的丢失,还存在由于配置异常(即存在业务故障)引起的丢失。业务服务正常但上下文传递机制引起的丢失的情况,通过本申请实施例的方法可以触发相应的检测代码,可以实现在上下文信息传递过程中,检测出由于上下文传递机制引起的上下文信息项内容丢失,第一时间发现并及时进行干预。
[0124] 为了更进一步的了解上下文信息传递链路断链时的具体原因,根据调用的第二服务子单元确认所述上下文信息传递链路断链时,根据调用的第二服务子单元确认所述上下文信息传递链路断链时,确定被调用的第一调用单元和第二调用单元,所述第一调用单元为第一服务子单元及第一服务子单元中存在上下级调用关系的调用单元,所述第二调用单元为除所述第一调用单元外被调用的存在上下级调用关系的调用单元;
[0125] 对所述第一调用单元和第二调用单元的上下级调用关系进行解析,确定所述上下文信息传递链路断链的原因。
[0126] 本公开实施例中调用单元,为不同大小的程序单元,例如线程、进程等,多个调用单元之间可以存在上下级调用关系,例如可以是线程、线程调用的调用栈等,上下文信息传递链路断链时,确定所述第一调用单元和第二调用单元。则对所述第一调用单元和第二调用单元的上下级调用关系进行解析,确定所述上下文信息传递链路断链的原因,包括:
[0127] 在所述第一调用单元和第二调用单元中,按照调用关系从下级往上级的查找顺序,查找至最上级的调用单元;
[0128] 确认上下信息传递异常的原因为所述最上级的调用单元异常。
[0129] 逐级查找最上级的调用单元时,可以采用爬栈的方式由最底层的调用方式逐级向上爬栈查找。具体可以在单位时间内,根据设定的爬栈次数进行爬栈,即采取流控的方式进行爬栈,限定每秒爬栈的次数,避免同时爬栈开销比较大的问题。
[0130] 本公开实施例可以在第一服务子单元被调用前或调用后进行上下文信息传递时,检测是否上下文信息传递异常,由于第一服务子单元被调用后传递时涉及调用的下一个第一服务子单元,本公开实施例不关注下一个第一服务子单元调用提供相应服务的中间过程,而是关注向下一个第一服务子单元的上下文传递过程,例如调用提供数据库服务的第一服务子单元mysql时,上一个第一服务子单元完成调用后通过上下文传递组件向mysql传递上下文信息,第二服务子单元通过检测代码检测到调用到mysql前可能由于跨线程、内存队列过长等原因造成上下文信息丢失而发生断链,上报向mysql传递上下文信息出现断链,而不需要关注mysql是否出现异常。
[0131] 作为一种可选的实施例,预先设置与各第一服务子单元对应的上下文传递组件,根据调用的第一服务子单元的功能类型不同或调用时机不同,上述上下文传递组件包括如下至少一种类型组件:
[0132] 存储类型组件、远程过程调用出口组件、服务入口组件。
[0133] 上述属于存储类型组件的上下文传递组件,主要用于数据库类型的第一服务子单元的上下文信息传递,在数据库类型的第一服务子单元被调用前或调用后调用属于存储类型组件的上下文传递组件,属于存储类型组件的上下文传递组件可以但不限于为如下组件:与提供mysql、redis、memcached、hbase、es服务等的第一服务子单元对应的上下文传递组件。上述属于远程过程调用出口组件(RPC调用出口组件)的上下文传递组件,主要用于提供远程过程调用功能的第一服务子单元的上下文信息传递,在提供远程过程调用功能的第一服务子单元调用后,调用属于RPC调用出口组件的上下文传递组件,属于RPC调用出口组件的上下文传递组件可以但不限于为如下组件:与提供grpc client、http client服务等的第一服务子单元对应的上下文传递组件。
[0134] 属于服务入口组件的上下文传递组件,主要用于内部服务类型的第一服务子单元的上下文信息传递,在用于内部服务类型的第一服务子单元调用前调用该属于服务入口组件的上下文传递组件。属于服务入口组件的上下文传递组件具体可以但不限于包括如下组件:与提供grpc server、http server服务的第一服务子单元对应的上下文传递组件。
[0135] 通过本公开实施例提供的业务请求过程中进行断链检测的方法,若存在信息项内容丢失,则确认所述上下文信息传递链路断链,包括:
[0136] 若存在信息项内容丢失,则确认所述上下文信息传递链路断链,且链路原因为上下文信息传递异常,从而可以准确引起断链的原因。
[0137] 由于引起上下文信息传递链路断链的原因除了上下文传递异常,还有可能其他原因,为了进一步排查其他原因引起的上下文信息传递链路断链,其中一个应用场景为业务故障检测场景,应用于该场景时,该方法还包括:
[0138] 若不存在信息项内容丢失,根据服务调用过程重建所述上下文信息的传递链路。一个实施方式中,解析开始调用到结束调用的时间段内被调用的上下文传递组件,根据上下文传递组件传递的上下文信息中的业务ID,筛选出传递当前业务请求的上下文信息的上下文传递组件,对筛选出的上下文传递组件的调用时间进行排序,根据上下文传递组件与第一服务子单元的对应关系,确定提供当前业务请求的第一服务子单元,根据确定第一服务子单元的调用顺序重塑传递链路;
[0139] 将提供所述服务需调用的第一服务子单元,与重塑传递链路上的第一服务子单元进行对比,若不一致,确定重建的传递链路上发生断链,若通过上述检测代码未检测出上下文传递异常,确认发生断链的原因为配置故障。
[0140] 本公开实施例提供的上述业务请求过程中进行断链检测的方法,其中一个应用场景为全链路压测检查场景,该方法还包括:
[0141] 确认所述上下文信息传递链路断链的原因为上下文信息传递异常时,停止服务调用过程。
[0142] 下面给出上述业务故障检测场景和全链路压测检查场景下,具体示例的详细过程。
[0143] 示例1
[0144] 分布式架构体系下,确定业务请求所请求的服务、及提供该服务需要调用的多个第一服务子单元,通过多个第一服务子单元所在的服务器调用多个第一服务子单元。为了将各个第一服务子单元的调用关联起来,在服务器调用对应第一服务子单元前或调用对应服务子单元后,将该业务请求的上下文信息以用户透明的方式隐式传递下去,具体为在第一服务子单元调用前或调用后,触发与该第一服务子单元对应的入口的上下文传递组件及出口的上下文传递组件进行上下文信息传递。
[0145] 在上下文传递组件被调用时,执行与该上下文传递组件绑定的检测代码检测传递的上下文信息中是否存在信息项内容丢失,如果检测到内容丢失,则向作为控制节点服务器上报。
[0146] 如前所述,链路发生断链的原因有两种,利用上述检测代码未检测到上下文信息的传递链路断链时,不代表没有发生断链,可能存在由于第一服务子单元的配置故障发生的断链,因此经上述检测代码检测若不存在信息项内容丢失,根据服务调用过程重建所述上下文信息的传递链路,具体过程参见上述描述,这里不再重述;将提供所述服务需调用的第一服务子单元,与重塑传递链路上的第一服务子单元进行对比,若不一致,确定重建的传递链路上发生断链,若通过上述检测代码未检测出上下文传递异常,确认发生断链的原因为配置故障,从而确定故障原因。
[0147] 上述检测代码检测到上下文信息传递时,若发生信息项内容丢失,则进行上报,例如上报给服务器。本实施例根据检测代码绑定的上下文传递组件,及上下文传递组件对应的第一服务子单元,确定上下文传递链路发生断链的位置,对该断链的位置进行标记,并标记断链的原因为上下文信息传递异常引起的断链。
[0148] 这样,在对第一服务子单元的调用结束后,确定检测代码检测到上下文信息传递时发生信息项内容丢失,获取标记的链路上所有发生断链的位置。若未发现上下文信息传递异常引起的断链,则可以进行链路重塑,如果发现存在断链,则确定是第一服务子单元配置故障导致的断链。例如按照第一服务子单元1调用第一服务子单元2,第一服务子单元2调用第一服务子单元3,第一服务子单元3调用第一服务子单元4的顺序调用,如果第一服务子单元2调用第一服务子单元3时,上下文传递没有异常,但在第一服务子单元3的调用过程中第一服务子单元3异常导致不输出任何数据,也就不会对检测代码进行调用,从而检测不到上下文传递异常,但链路重塑可以确定在第一服务子单元3时发生了断链。
[0149] 示例2
[0150] 全链路压测检查场景基于真实的用户场景,构建仿真环境对各个业务链路进行压力测试的过程。
[0151] 在对各个业务链路进行压力测试的过程中,对于进行压力测试的业务请求,通过仿真环境提供对应的服务,即通过调用仿真的服务子单元提供的服务,仿真的服务子单元按照调用顺序形成业务链路,需要将业务链路的压测流量进行标记,与正常用户流量进行区分,具体的,可以在上下文信息中设置压测流量标记。将压测流量的上下文信息进行全链路的传递,以便各服务能识别压测流量,进而选择对应的调度策略,如mysql具有真实mysql和仿真的进行压力测试的虚拟mysql,对于压测流量不访问线上真实的mysql中的数据表,而是使用仿真的虚拟mysql,从而达到仿真目的的同时,避免污染线上真实mysql的数据。所以一旦该压测流量标记丢失,则该仿真的服务子单元可能会使用真实mysql的数据,有可能会篡改真实mysql的数据,影响正常用户的使用。
[0152] 通过调用仿真的服务子单元提供的服务过程中,利用本公开上述实施例的方法进行上下文信息传递链路断链检测,根据检测结果,确定上下文信息传递链路断链,停止对仿真的服务子单元的调用过程。上述压测流量标记属于业务请求的上下文信息的一部分信息,则如果在对仿真的服务子单元调用过程中,上述压测流量标记丢失,则会第一时间发现上报并停止服务调用过程,则可以避免对真实数据的污染。
[0153] 实施例2
[0154] 图4是根据一示例性实施例示出的一种断链检测的装置框图。参照图4,该装置包括业务请求模块401、上下文传递模块402、异常检测模块403和断链分析模块404,其中:
[0155] 业务请求模块,被配置为执行接收业务请求,所述业务请求用于请求服务;
[0156] 上下文传递模块,被配置为执行调用提供所述服务的第一服务子单元,并向所述第一服务子单元传输所述业务请求的上下文信息;
[0157] 异常检测模块,被配置为执行根据预设上下文信息格式中的信息项,检测所述上下文信息中是否存在信息项内容丢失;
[0158] 断链分析模块,被配置为执行若存在信息项内容丢失,则确认所述上下文信息传递链路断链。
[0159] 在一种可能的实施方式中,还包括:
[0160] 关联调用模块,被配置为执行调用与所述第一服务子单元关联的第二服务子单元,所述第二服务子单元在所述第一服务子单元被调用前或调用后执行:
[0161] 获取传输的上下文信息,根据预设上下文信息格式中的信息项,检测所述上下文信息中是否存在信息项内容丢失;以及若存在信息项内容丢失,则确认所述上下文信息传递链路断链。
[0162] 在一种可能的实施方式中,该装置还包括:
[0163] 消息上报模块,被配置为执行检测到所述上下文信息中存在信息项内容丢失时,上报信息项内容丢失的消息。
[0164] 在一种可能的实施方式中,所述异常检测模块根据预设上下文信息格式中的信息项,检测所述上下文信息中是否存在信息项内容丢失,包括:
[0165] 根据预设上下文信息格式中定义的非空内容信息项,检测所述上下文信息中各非空内容信息项的内容是否为空;
[0166] 检测到任一非空内容信息项的内容为空时,确定所述上下文信息中存在信息项内容丢失。
[0167] 在一种可能的实施方式中,该装置还包括:
[0168] 异常解析模块,被配置为执行根据调用的第二服务子单元确认所述上下文信息传递链路断链时,确定被调用的第一调用单元和第二调用单元,所述第一调用单元为第一服务子单元及第一服务子单元中存在上下级调用关系的调用单元,所述第二调用单元为除所述第一调用单元外被调用的存在上下级调用关系的调用单元;对所述第一调用单元和第二调用单元的上下级调用关系进行解析,确定所述上下文信息传递链路断链的原因。
[0169] 在一种可能的实施方式中,所述异常解析模块被配置为执行确定所述上下文信息传递链路断链的原因,包括:
[0170] 在所述第一调用单元和第二调用单元中,按照调用关系从下级往上级的查找顺序,查找至最上级的调用单元;
[0171] 确认上下信息传递异常的原因为所述最上级的调用单元异常。
[0172] 在一种可能的实施方式中,断链分析模块若存在信息项内容丢失,则确认所述上下文信息传递链路断链,包括:
[0173] 若存在信息项内容丢失,则确认所述上下文信息传递链路断链,且链路原因为上下文信息传递异常。
[0174] 在一种可能的实施方式中,该装置还包括:
[0175] 服务调用停止模块,被配置为执行确认所述上下文信息传递链路断链的原因为上下文信息传递异常时,停止服务调用过程。
[0176] 在一种可能的实施方式中,该装置还包括:
[0177] 配置故障确定模块,被配置为执行若不存在信息项内容丢失,根据服务调用过程重建所述上下文信息的传递链路;若重建的传递链路上发生断链,确认发生断链的原因为配置故障。
[0178] 关于上述实施例中的装置,其中各个单元执行请求的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
[0179] 图5是根据一示例性实施例示出的一种电子设备500的框图,该电子设备包括:
[0180] 处理器510;
[0181] 用于存储所述处理器510可执行指令的存储器520;
[0182] 其中,所述处理器510被配置为执行所述指令,以实现本公开实施例中的断链检测的方法。
[0183] 在示例性实施例中,还提供了一种包括指令的非易失性存储介质,例如包括指令的存储器520,上述指令可由电子设备500的处理器510执行以完成如下方法步骤:
[0184] 接收业务请求,所述业务请求用于请求服务;
[0185] 调用提供所述服务的第一服务子单元,并向所述第一服务子单元传输所述业务请求的上下文信息;
[0186] 根据预设上下文信息格式中的信息项,检测所述上下文信息中是否存在信息项内容丢失;
[0187] 若存在信息项内容丢失,则确认所述上下文信息传递链路断链。
[0188] 在一种可能的实施方式中,处理器还用于:
[0189] 调用与所述第一服务子单元关联的第二服务子单元,所述第二服务子单元在所述第一服务子单元被调用前或调用后执行:
[0190] 获取传输的上下文信息,根据预设上下文信息格式中的信息项,检测所述上下文信息中是否存在信息项内容丢失;以及若存在信息项内容丢失,则确认所述上下文信息传递链路断链。
[0191] 在一种可能的实施方式中,上述处理器还用于:
[0192] 检测到所述上下文信息中存在信息项内容丢失时,上报信息项内容丢失的消息。
[0193] 在一种可能的实施方式中,所述处理器根据预设上下文信息格式中的信息项,检测所述上下文信息中是否存在信息项内容丢失,包括:
[0194] 根据预设上下文信息格式中定义的非空内容信息项,检测所述上下文信息中各非空内容信息项的内容是否为空;
[0195] 检测到任一非空内容信息项的内容为空时,确定所述上下文信息中存在信息项内容丢失。
[0196] 在一种可能的实施方式中,上述处理器还用于:
[0197] 根据调用的第二服务子单元确认所述上下文信息传递链路断链时,确定被调用的第一调用单元和第二调用单元,所述第一调用单元为第一服务子单元及第一服务子单元中存在上下级调用关系的调用单元,所述第二调用单元为除所述第一调用单元外被调用的存在上下级调用关系的调用单元;
[0198] 对所述第一调用单元和第二调用单元的上下级调用关系进行解析,确定所述上下文信息传递链路断链的原因。
[0199] 在一种可能的实施方式中,所述处理器确定所述上下文信息传递链路断链的原因,包括:
[0200] 在所述第一调用单元和第二调用单元中,按照调用关系从下级往上级的查找顺序,查找至最上级的调用单元;
[0201] 确认上下信息传递异常的原因为所述最上级的调用单元异常。
[0202] 在一种可能的实施方式中,处理器判定若存在信息项内容丢失,则确认所述上下文信息传递链路断链,包括:
[0203] 若存在信息项内容丢失,则确认所述上下文信息传递链路断链,且链路原因为上下文信息传递异常。
[0204] 在一种可能的实施方式中,上述处理器还用于:
[0205] 确认所述上下文信息传递链路断链的原因为上下文信息传递异常时,停止服务调用过程。
[0206] 在一种可能的实施方式中,上述处理器还用于:
[0207] 若不存在信息项内容丢失,根据服务调用过程重建所述上下文信息的传递链路;
[0208] 若重建的传递链路上发生断链,确认发生断链的原因为配置故障。
[0209] 可选地,存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD‑ROM、磁带、软盘和光数据存储设备等。
[0210] 本公开实施例还提供一种计算机程序产品,当所述计算机程序产品在电子设备上运行时,使得所述电子设备执行实现本公开实施例上述任意一项断链检测的方法或任意一项断链检测的方法任一可能涉及的方法。
[0211] 本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
[0212] 应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。