首页> 中国专利> 网格服务组的建立方法及网格服务的发现方法

网格服务组的建立方法及网格服务的发现方法

摘要

一种网格服务组的建立方法,包括如下步骤:第一GIS实例向多个第二GIS实例发送建立服务组的询问消息;第二GIS实例返回响应消息;生成服务组成员列表;建立层叠网连接;第一GIS实例向第二GIS实例发送服务组建立的消息,并将包含成员列表的服务组信息发送给第二GIS实例;一种网格服务发现方法,包括如下步骤:GIS实例收到的服务查询请求后,当存在该服务类型的服务组时,判断所述GIS实例是否为服务组的成员,如果是,将请求转发给服务组的其他成员,如果不是,将请求转发给服务组的任一成员,由该成员转发给其他成员。通过本发明提供的方法,提高了服务查询的效率,避免了现有技术中洪泛的方法带来的响应时间长和网络开销大的缺陷。

著录项

  • 公开/公告号CN1791045A

    专利类型发明专利

  • 公开/公告日2006-06-21

    原文格式PDF

  • 申请/专利权人 北京航空航天大学;

    申请/专利号CN200510132537.4

  • 申请日2005-12-26

  • 分类号H04L12/28(20060101);H04L29/06(20060101);H04L12/24(20060101);

  • 代理机构11205 北京同立钧成知识产权代理有限公司;

  • 代理人刘芳

  • 地址 100083 北京市海淀区学院路37号

  • 入库时间 2023-12-17 17:25:12

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-02-19

    未缴年费专利权终止 IPC(主分类):H04L12/28 授权公告日:20080305 终止日期:20121226 申请日:20051226

    专利权的终止

  • 2008-03-05

    授权

    授权

  • 2006-08-16

    实质审查的生效

    实质审查的生效

  • 2006-06-21

    公开

    公开

说明书

技术领域

本发明涉及一种网格服务组的建立方法及网格服务发现方法,尤其是一种由网格环境中的任一GIS实例发起的为一服务类型建立服务组的方法以及基于已经建立的服务组进行的服务发现的方法。

背景技术

网格信息服务(Grid Information Service,简称GIS)是网格环境的重要组成部分。网格实现广域网络环境下的资源共享与协同利用,为了在网格应用与网格资源之间动态的建立起绑定关系,就需要设计网格信息服务来支持资源(服务)的发现以及之后的资源(服务)的状态监控,维护参与到网格中的各类实体(包括人员、资源、服务以及硬件等)的相关信息。在基于面向服务的体系架构(SOA)的服务网格中,信息服务扮演了服务注册表的角色,它作为网格中的服务提供者和服务请求者之间的中介,为分布资源协调一致工作提供信息管理基础设施,在网格系统中处于中心地位。事实上,许多网格中的上层服务如资源(服务)的发现与选取、网格应用管理、网格资源状态监控以及部分网格作业状态管理与故障诊断等都是以信息服务为基础的。

在网格环境中,资源按照不同的隶属关系组织成不同的自治域,自治域内的资源在地理分布上比较接近,相互访问的网络开销比较小,且具有相对一致的管理策略。在网格规模比较小时,加入网格的自治域数量有限,可以采用集中式的信息服务结构,即通过部署一个全局的GIS来管理各种实体的信息,如MDS-1(其中MDS为Metacomputing Directory Service,元计算目录服务)和Web服务环境中的注册与发现服务UDDI(Universal Descriptionand Discovery Integration,统一描述、发现与集成)等。但随着网格规模的逐步扩大,参与网格环境的自治域数量以及网格环境中的资源总数迅速增长,集中式的方案会迅速成为性能瓶颈而变得不可行。为解决这一问题,许多研究者提出了分布式的信息服务管理机制,如MDS-2(其中MDS为Monitoring and Discovery Service,监控与发现服务)、R-GMA(RelationalGrid Monitoring Architecture,关系型网格监控体系结构)、以及VEGA(织女星网格)的网格资源路由器等。分布式的信息服务系统在每个自治域内部署一个或多个GIS实例管理域内网格实体信息,分布的GIS实例之间通过一定的拓扑结构(如层次结构或网状结构)连接起来并通过信息交换协议进行资源(服务)发现请求的转发和资源状态更新。因此,分布式信息服务管理机制实际上是一种逻辑上集中,实现上分布的信息服务体系结构。

在分布式信息服务体系结构中,现有技术的服务的发现方法存在如下缺陷:由于GIS实例之间往往通过一些不同的关系连接起来,形成一个无结构的图,在这样的拓扑结构上进行资源(服务)发现时必须采用一种称为洪泛的方法,将查询请求沿着这个图进行扩散。随着图的规模的增长,这种搜索算法必然会带来较大的性能问题(即较长的响应时间和较大的综合网络开销)。

发明内容

本发明针对上述现有技术的服务发现方法存在的缺陷,提供一种网格服务组的建立方法,通过该方法可以在网格环境中,将具有同一类型的服务的GIS实例通过层叠网连接在一起,提高服务发现的效率。

本发明针对上述现有技术的服务的发现方法存在的缺陷,提供一种加入服务组的方法,通过该方法可以在网络中的GIS实例有新的服务被注册时,及时根新服务组。

本发明针对上述现有技术的服务的发现方法存在的缺陷,提供一种离开服务组的方法,通过该方法可以在服务组某个成员发生故障或者属于该服务组的服务被反注册时,及时更新服务组。

本发明针对上述现有技术的服务的发现方法存在的缺陷,提供一种网格服务的发现方法,通过该方法可以高效的查询到需要的服务,避免了现有技术中洪泛的方法带来的较长的响应时间和较大的综合网络开销。

层叠网(Overlay)的思想是在现有底层网络的基础上按照特定的准则构建一层新的网络,并针对这些准则定义适用于上层网络的协议,从而为原有网络系统增加新特性,提高原有网络的效率。在这样一个网络环境中,我们称上层的逻辑网络为层叠网。相对于上层的逻辑网络而言,底层网络往往由具体的物理连接所构成,因此一般被称为“物理网络”。

一个层叠网由一组层叠网节点(Overlay Nodes)以及连接层叠网节点的层叠网连接(Overlay Links)构成。其中,层叠网节点由一些特定的底层物理网络节点充当,而层叠网连接映射到底层物理网格则体现为一个或者多个物理连接所构成的路径(Path)。

为实现上述发明目的,本发明提供了一种网格服务组的建立方法,该方法包括如下步骤:

步骤11、第一GIS实例向分布设置在网络中的多个第二GIS实例发送建立服务组的询问消息,该询问消息中包括一类型服务的信息;

步骤12、所述第二GIS实例中具有所述类型服务的GIS实例向所述第一GIS实例发送响应消息;

步骤13、所述第一GIS实例根据收到的响应消息,生成加入所述服务组的GIS实例成员列表;

步骤14、根据所述GIS实例成员列表,为加入所述服务组的GIS实例成员建立层叠网连接;

步骤15、所述第一GIS实例向所述第二GIS实例发送所述服务组建立的消息,并将包含所述GIS实例成员列表的服务组信息发送给所述第二GIS实例;

步骤16、结束。

本发明还提供了一种加入已建立的服务组的方法,包括如下步骤:

步骤21、网络中的未加入所述服务组的GIS实例向所述服务组的任一所述GIS实例成员发送加入该服务组的请求消息;

步骤22、收到所述请求消息的GIS实例成员与所述未加入所述服务组的GIS实例建立层叠网连接;

步骤23、更新网络中的GIS实例中存储的该服务组的成员列表。

本发明还提供了一种离开已经加入的服务组的方法,包括如下步骤:

步骤31、希望离开所述服务组的GIS实例向相邻的所述GIS实例成员发送离开通知消息;

步骤32、所述邻居节点的GIS实例接到通知后,建立自己与服务组其他成员的层叠网连接;

步骤33、更新网络中的GIS实例中存储的该服务组的列表。

本发明还提供了一种网格服务发现方法,包括如下步骤:

步骤41、GIS实例收到的服务查询请求后,判断是否存在该服务类型的服务组,如果是,则执行步骤42,如果不是,则执行步骤45;

步骤42、判断所述GIS实例是否为所述服务组的成员,如果是,则执行步骤43,如果不是,则执行步骤44;

步骤43、所述GIS实例将所述服务查询请求转发给所述服务组的其他GIS实例成员,然后执行步骤46;

步骤44、所述GIS实例将所述服务查询请求转发给所述服务组的任一GIS实例成员,由该成员将所述服务查询请求转发给所述服务组的其他GIS实例成员,然后执行步骤46;

步骤45、所述GIS实例向网络中所有GIS实例转发所述服务查询请求。

步骤46、结束。

通过本发明提供的方法,提高了服务查询的效率,避免了现有技术中洪泛的方法带来的较长的响应时间和较大的综合网络开销,更加符合网格服务的需求。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

图1为本发明的网格服务组的建立方法的流程图;

图2为本发明的加入已经建立的服务组的方法的流程图;

图3为本发明的离开已经加入的服务组的方法的流程图;

图4为本发明的网格服务发现方法流程图。

具体实施方式

服务组的提出是基于一个简单的观察,即网格用户在进行服务发现时往往依据特定的服务类别来进行。这说明网格服务发现的过程并不是盲目的,而是具有一定的启发式的。如果我们能够从网格服务的类型入手在网格信息服务之上建立某种特殊的结构并利用这种结构,就有可能设计出具有更高检索效率的方法。

服务组的基本思想是:在现有GIS实例所构成的底层Mesh网络之上,依据每个GIS实例所注册的服务类别信息将不同的GIS组织起来构成针对某一服务类别的组,并在这些GIS实例之间建立逻辑连接形成层叠网。这样,在针对这一类服务进行服务发现时,服务发现请求将会首先在层叠网内部进行检索,消息转发的范围将被局限在一个相对小的范围之内,从而提高服务发现的效率,减少综合网络开销。这些针对某一服务类别而建立起来的GIS实例组将含有一类服务的GIS聚合在一起,每个成员具有共同的特征,类似人类社会中“俱乐部”的结构,即Service CLUB,简称S-CLUB,也称为服务组。

参见图1,其为本发明的网格服务组的建立方法的流程图,包括如下步骤:

步骤11、第一GIS实例向分布设置在网络中的多个第二GIS实例发送建立服务组的询问消息,该询问消息中包括一类型服务的信息;

步骤12、所述第二GIS实例中具有所述类型服务的GIS实例向所述第一GIS实例发送响应消息;

步骤13、所述第一GIS实例根据收到的所述响应消息,生成加入所述服务组的GIS实例成员列表;

步骤14、根据所述GIS实例成员列表,为加入所述服务组的GIS实例成员建立层叠网连接;

步骤15、所述第一GIS实例向所述第二GIS实例发送所述服务组建立的消息,并将包含所述GIS实例成员列表的服务组信息发送给所述第二GIS实例;

步骤16、结束。

在网格中,客户端希望通过服务发现获得一组当前网格中可用服务的列表。在进行服务发现时,服务类型是一个重要的属性。事实上,在服务网格中,我们可以通过语法和语义两个层面对服务类型进行区分。在语义层面,目前语义网格和语义Web服务方面的研究就主要关注如何建立一个统一的服务本体库(Service Ontology Base)描述服务的类别及其之间的关系,为服务的自动选取和组合提供基础,这是一种基于语义识别服务类型的方法。此外,Globus(Globus是美国国家实验室的研发项目,该项目对资源管理、安全、信息服务及数据管理等网格计算的关键理论进行研究)中采用基于名字的查找也是一类根据功能识别服务类型的简单方法。在语法层面,最近提出的OGSA/WSRF(Open Grid Services Architecture,开放网格体系结构/Web Service Resource Framework Web服务资源框架)框架允许通过定义网格服务的标准接口为网格服务提供了一个统一的服务接口和扩展机制。一个网格服务包含一组通用的Grid Service portType(网格服务端口类型)和用于提供该服务的核心功能的一组特定portType(端口类型)。基于这些portType可以定义服务模板作为服务分类的依据,所有实现了服务模板所列举的portType的服务实例均可看作是同类的服务,它们在使用时可以相互替换。因此我们可以用服务的名字或者portType作为服务的类型。

通常,在服务组的建立过程需要一个信息交换的过程;在服务组建立之后,由于服务部署的动态性,新的GIS实例需要加入服务组,一些现有的GIS实例需要离开服务组,因此服务组的结构需要动态的维护。这些过程都会产生额外的开销。因此在这样一种GIS管理机制中,存在着一个基本的取舍,即检索响应时间和综合网络开销的取舍。这一取舍直接体现在特定环境中服务组的数量上。显然,所建立起来的服务组数量越多,针对更多类别的服务发现过程即可受益于服务组的建立而得到效率的优化,但过多的服务组会产生过多的拓扑维护开销。我们注意到在网格环境中不同服务类型的使用频度是不同的,显然为使用频度相对高的服务类型建立服务组可以在这一基本的取舍中找到一个合适的解决方案。

在所述步骤11之前还包括

步骤11a、所述第一GIs实例为自身注册的每个类型服务记录使用频度,并设定使用频度阈值;

步骤11b、当一个类型服务的所述使用频度大于所述使用频度阈值时,执行步骤11。

为了在分布式计算环境中识别出服务的请求频度,每个GIS实例需要在本地为每个注册的服务类型维护一个使用频度UF(Usage Frequency)。为了记录不同服务的调用情况,我们要求每个服务在被调用时向其注册的信息服务报告这次调用。公式(1)是对一个确定GIS实例,例如服务类型T的UF定义为:

>>UF>>(>T>)>>=>>>N>>(>T>)>>>M>>->->->>(>1>)>>>s>

其中,N(T)代表在一个时间段内服务类型T被调用的总数,M代表在这个时间段内这个GIS实例所接到的各类服务调用报告的总数。通常,每个GIS实例计算得到的UF(T)体现了与在这个GIS实例处注册的其他服务类型相比,当前情况下该服务类型T被调用的相对频度。

每个GIS实例都知道自己的服务被调用的频度情况,但这只是一个局部观测的结果,并不一定代表整个网格环境的服务调用频度分布,因此还需要引入一个类似投票的过程。

每个GIS实例周期性的发起服务组的建立的过程,不同GIS实例并不在同一时刻发起建立过程,这样可以避免因同时发起过多的服务组建立过程而可能带来的冲突和网络拥塞。一个GIS实例在发起建立过程时,GIS实例计算每个服务类型的UF并尝试为具有较高UF值且还没有建立服务组的服务类型建立服务组。其中的关键问题是GIS实例应当尝试为UF在何种水平的服务类型建立服务组。为解决这一问题,我们引入一个频度阈值(FrequencyThreshold),记做α,其取值区间为[0.0,1.0]。每个GIS在为每个服务类型计算UF后将其按照降序排序,并尝试为排在前α%的服务类型建立服务组。

另外为了在网格服务中建立有效的服务组,收到询问消息的GIS实例还要判断是否有必要建立这个服务组,并返回响应消息,而发起服务组建立的GIS实例对返回的消息进行分析来最终确定是否有必要建立这个服务组。因此在上述步骤12中,所述第二GIS实例可以在收到所述询问消息后,判断所述类型服务的使用频度是否大于预先设定的针对该类型服务的使用频度的阈值,如果是,则向所述第一GIS实例发送加入服务组的响应消息,如果不是,则向所述第一GIS实例发送不加入服务组的响应消息;相应的在所述步骤13中,在生成加入所述服务组的GIS实例成员列表前还包括根据收到响应消息计算所述类型服务的支持率,并判断该支持率是否大于预先设定的支持率阈值,如果是,则继续执行,如果不是,则执行步骤16,其中所述类型服务的支持率为加入服务组的响应消息的数量与总的响应消息的数量的比值。

每个GIS实例检查在UF排序中位于前α%的服务类型,如果该类型的服务还未建立服务组,该GIS实例就尝试发起一个服务组创建过程。例如,GIS实例G尝试为类型B建立服务组。首先,G通过由GIS实例所构成的底层网络发送建立服务组B的SETUP-REQUEST(GISG,B)消息,询问其他GIS实例是否也愿意为B建立服务组。收到SETUP-REQUEST(B)消息的每个GIS实例X检查是否有类型为B的服务被注册,如果没有就忽略该消息。否则,它应当执行与G类似的检查,计算本地UF并排序,确认是否UF(B)处在排序的前α%。如果是,这个GIS实例向G发送加入服务组B的响应消息SETUP-RESPONSE(GISG,GISX,B,YES)消息,表示同意为B创建服务组并愿意加入这个服务组。如果UF(B)在排序的前α%之外,X需要向G发送不加入服务组的SETUP-RESPONSE(GISG,GISX,B,NO)消息表示根据本地的观察结果没有必要为类型B创建服务组。经过一段时间的等待,G根据收到的SETUP-RESPONSE消息创建当前注册有B类型服务的GIS集合CCB(服务组Candidate)并计算为B创建服务组的支持率δ,计算公式如公式(2)

>>δ>=>>>N>>(>YES>)>>>>N>>(>YES>)>>+>N>>(>NO>)>>>>->->->>(>2>)>>>s>

其中,N(YES)是收到SETUP-RESPONSE(GISG,GISX,B,YES)消息的个数,而N(NO)是收到SETUP-RESPONSE(GISG,GISX,B,NO)消息的个数。在S-服务组中,我们设置一个构造阈值(Construction Threshold)。如果δ大于这个阈值,G将为服务类型B建立一个服务组,否则G中止服务组创建过程,并等待下次发起创建过程时重复上述操作。

如果G决定创建一个类型为B的服务组,根据前面分析SETUP-RESPONSE消息得到的CCB依次向CCB的成员发送服务组建立的通知消息SETUP-ANNOUNCEMENT(B,CCB)消息,通知这些GIS实例为服务类型B所创建的服务组已经建立并将当前的服务组成员列表CCB传递给每个成员,每个CCB的成员独立的探测与其他成员之间的网络距离。

为了建立服务组成员间的层叠网连接,我们需要寻找一种合适的拓扑结构,在保证可靠连接的同时尽量让拓扑维护和基于拓扑的服务发现代价最小,同时也需要寻找建立和维护这样的拓扑结构的分布式的算法。这里我们并不规定用什么结构,可以采用最小生成树或者其他结构。当整个Club已经建立完毕后,发起建立过程的GIS实例G还需要通过底层网络向所有GIS实例发送新的服务组建立消息NEW-CLUB(B,CCB)以通知其他GIS实例,这样网络中的每个GIS实例都有服务组的信息,任意一个GIS实例在处理对服务类型B的查询请求时将优先转发给CCB的成员,从而提高服务发现的效率。

在服务组建立以后,需要进行动态的维护。一方面,GIS实例本身是动态的,由于网络或运行该GIS实例的主机的故障,GIS实例本身可能变得不可用;另一方面,注册到GIS实例的服务是动态的。当新的服务注册到一个GIS实例或一个注册的服务被反注册(即因服务不再提供而在GIS实例处取消注册信息)。这些情况都会导致GIS实例加入或离开已建立的服务组。

参见图2,其为本发明的加入已经建立的服务组的方法的流程图,包括如下步骤:

步骤21、网络中的未加入所述服务组的GIS实例向所述服务组的任一所述GIS实例成员发送加入该服务组的请求消息;

步骤22、收到所述请求消息的GIS实例成员与所述未加入所述服务组的GIS实例建立层叠网连接;

步骤23、更新网络中的GIS实例中存储的该服务组的成员列表。

参见图3,其为本发明的离开已经加入的服务组的方法的流程图,包括如下步骤:

步骤31、希望离开所述服务组的GIS实例向相邻的所述GIS实例成员发送离开通知消息;

步骤32、所述邻居节点的GIS实例接到通知后,建立自己与服务组其他成员的层叠网连接;

步骤33、更新网络中的GIS实例中存储的该服务组的列表。

在本发明中,服务组中的GIS实例通过一定的拓扑结构建立层叠网连接,为了在运行时检测因网络或主机故障所导致的可能的GIS实例失效并尽快恢复因此而导致的拓扑结构变化,需要设计成员管理协议(Member ManagementProtocol)。

服务组的成员管理协议的基本思想是:每个成员需要维护一个所有其他成员的列表,记录当前各个成员的状态。当一个新成员进入或者一个原有的成员离开服务组时,这个列表需要同步更新。为了在服务组中传播这些变化,我们要求每个服务组成员周期性的产生一个刷新消息(Refresh Message)通过服务组的拓扑进行传递。

当一个GIS实例X得到一个服务类型B服务的注册信息,它需要检查是否该类型的服务组已经创建(这可以通过收集所收到的SETUP-ANNOUNCEMENT消息并维护一个当前处于活动状态的服务组集合来实现)。如果存在,则依次向CCB的成员发送加入服务组的消息JOIN(GISX,B),直到收到一个确认消息JOIN-ACK为止。收到JOIN消息的服务组成员M向X发送确认消息JOIN-ACK(B,CCB)消息,更新本地状态,并将按照拓扑结构向其他服务组成员转发这一消息。这时X同原来的服务组成员M之间建立层叠网连接,连入服务组。此后,X开始通过定期发送刷新消息和其他服务组成员交换信息,获得服务组成员的变化信息。

当一个成员主动离开时,它需要通知其他邻居节点,将自己的直接邻居节点的列表发送给其他邻居节点,这些收到通知的邻居节点在自己同列表中建立与服务组其他成员间的层叠网连接,保证服务组的连通性,确保服务组的内部拓扑不会因为成员的离开而分割成两个子图。

当成员因网络或主机故障被动离开时,它无法通知其他邻居节点,这需要服务组进行故障检测和恢复。如前文所述,每个成员会从其邻居节点那里定期的收到刷新消息。如果GIS实例G在一个时间段(通常是连续k个刷新周期)内没有收到来自邻居X的刷新消息,这表明节点X可能被动地离开了服务组。这时,G通过底层网络发送寻找节点X的FIND-GIS(X,NBG)消息寻找节点X,NBG代表节点G在服务组中的所有直接邻居节点集合。NBG的成员收到FIND-GIS消息后同其他NBG成员建立层叠网连接,保证服务组的连通性。

上面介绍的成员进入和离开的机制并不能确保成员之间的拓扑结构(因为新节点的加入有随机性),成员不断的进入和离开服务组会改变服务组成员拓扑结构并降低服务组内消息传递的性能。因此整个服务组还需要定期地发起拓扑重构过程,即更新后的服务组的成员列表重新为所述服务组的GIS实例成员的建立层叠网连接,重新执行分布式的拓扑构造算法,将拓扑恢复到预定的结构,提高层叠网内部的消息传递效率。在拓扑重构结束后,发起拓扑重构的GIS实例还需要通过底层网络向所有GIS实例发送拓扑重构消息(NEW-CLUB(B,CCB))以通知其他GIS实例。这样,不在服务组中的GIS实例可以定期的收到新的成员列表CCB并在处理对该类型的查询消息时直接定位到服务组成员。

当新GIS实例进入网格环境时,它需要获得当前服务组列表。由于每个进入网格的GIS实例都至少存在一个与网格中的其他GIS实例的连接,因此这个新GIS实例可以向与其相邻的其他GIS实例请求当前的服务组列表,并将其拷贝到本地。

参见图4,其为本发明的网格服务发现方法的流程图,包括如下步骤:

步骤41、GIS实例收到的服务查询请求后,判断是否存在该服务类型的服务组,如果是,则执行步骤42,如果不是,则执行步骤45;

步骤42、判断所述GIS实例是否为所述服务组的成员,如果是,则执行步骤43,如果不是,则执行步骤44;

步骤43、所述GIS实例将所述服务查询请求转发给所述服务组的其他GIS实例成员,然后执行步骤46;

步骤44、所述GIS实例将所述服务查询请求转发给所述服务组的任一GIS实例成员,由该成员将所述服务查询请求转发给所述服务组的其他GIS实例成员,然后执行步骤46;

步骤45、所述GIS实例向网络中所有GIS实例转发所述服务查询请求。

步骤46、结束。

用户在发出服务查询请求时,总是发给距离自己最近的GIS实例。该GIS实例在收到用户发起的请求后,该GIS实例首先检查本地维护的服务组列表,判断是否已经建立起此类服务的服务组。如果服务组已建立,该GIS实例直接将请求转发给服务组中的任何一个成员,收到请求的成员再将该请求转发给服务组的其他成员。相关GIS实例将注册服务的元数据发回给最初发起请求的GIS实例。如果该类型并未建立服务组,首先收到用户请求的GIS将按现有技术的方法在底层网络中的所有GIS实例转发请求。

最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号