首页> 中国专利> 大规模虚拟化环境中任务调度的优化方法及优化系统

大规模虚拟化环境中任务调度的优化方法及优化系统

摘要

本发明公开了大规模虚拟化环境中任务调度的优化方法及优化系统,包括任务的集中管理、分布式执行、并发时的平滑控制、执行时限控制、优先级定义、运行监控、自我诊断等,为任务调度提供一个友好高效的操作界面。仿照类UNIX系统中的crond程序实现,增强精细控制功能,并支持主机之间的协作以实现任务的分布式执行与集中监控。采用数据库集中管理多个主机管辖的任务定义以简化配置操作,为减轻数据库负担,任务定义完毕导入共享内存中,后续调度不再访问数据库。调度平台具有自我诊断能力,确保调度工作持续稳定运行。

著录项

  • 公开/公告号CN104331327A

    专利类型发明专利

  • 公开/公告日2015-02-04

    原文格式PDF

  • 申请/专利权人 山东乾云启创信息科技有限公司;

    申请/专利号CN201410722428.7

  • 发明设计人 张从国;石磊;王进;程栋;刘毅峰;

    申请日2014-12-02

  • 分类号G06F9/48(20060101);G06F9/54(20060101);

  • 代理机构37221 济南圣达知识产权代理有限公司;

  • 代理人张勇

  • 地址 250101 山东省济南市高新区银荷大厦C座401

  • 入库时间 2023-12-17 03:22:58

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-08-15

    专利权质押合同登记的注销 IPC(主分类):G06F 9/48 授权公告日:20170711 申请日:20141202 专利号:ZL2014107224287 登记号:Y2022980003212 出质人:山东乾云启创信息科技股份有限公司 质权人:莱商银行股份有限公司济南自贸区支行 解除日:20230731

    专利权质押合同登记的生效、变更及注销

  • 2022-04-12

    专利权质押合同登记的生效 IPC(主分类):G06F 9/48 专利号:ZL2014107224287 登记号:Y2022980003212 登记生效日:20220328 出质人:山东乾云启创信息科技股份有限公司 质权人:莱商银行股份有限公司济南自贸区支行 发明名称:大规模虚拟化环境中任务调度的优化方法及优化系统 申请日:20141202 授权公告日:20170711

    专利权质押合同登记的生效、变更及注销

  • 2019-08-20

    专利权质押合同登记的注销 IPC(主分类):G06F9/48 授权公告日:20170711 登记号:2018370000061 出质人:山东乾云启创信息科技股份有限公司 质权人:齐鲁银行股份有限公司济南金牛支行 解除日:20190729 申请日:20141202

    专利权质押合同登记的生效、变更及注销

  • 2018-04-20

    专利权质押合同登记的生效 IPC(主分类):G06F9/48 登记号:2018370000061 登记生效日:20180328 出质人:山东乾云启创信息科技股份有限公司 质权人:齐鲁银行股份有限公司济南金牛支行 发明名称:大规模虚拟化环境中任务调度的优化方法及优化系统 授权公告日:20170711 申请日:20141202

    专利权质押合同登记的生效、变更及注销

  • 2017-07-11

    授权

    授权

  • 2016-01-27

    著录事项变更 IPC(主分类):G06F9/48 变更前: 变更后: 申请日:20141202

    著录事项变更

  • 2015-09-09

    著录事项变更 IPC(主分类):G06F9/48 变更前: 变更后: 申请日:20141202

    著录事项变更

  • 2015-03-11

    实质审查的生效 IPC(主分类):G06F9/48 申请日:20141202

    实质审查的生效

  • 2015-02-04

    公开

    公开

查看全部

说明书

技术领域

本发明涉及一种大规模虚拟化环境中任务调度的优化方法及优化系统。

背景技术

虚拟化环境中存在大量的需要周期性执行的管理任务,如虚拟机的启动停止、配置参数的变更检测、主机及应用系统的异常检测、性能指标采集与分析、数据备份及超期数据的清理等。

类UNIX系统中的crond程序可以实现任务的定时执行,但是采用纯文本方式定义管理,不便于任务的定义、检索、及运行监控,对于任务的执行缺乏精细控制。

对于任务的并发执行没有额外控制,大批量任务并发时对系统资源冲击很大,可能造成系统短时没有响应。

对于任务的执行时限没有控制,可能会出现任务进程的无限期挂起,持续耗费系统资源而失去控制。

任务没有优先级的概念,所有任务优先级相同,不能区分任务的权重。

所有任务的日志信息混杂在一起,难以跟踪。

不便于实时直观监控任务的运行状态,可以通过ps命令查看进程的运行状态,但是不能与任务定义时的描述信息关联。

对于分散在多个主机执行的任务,不能集中监控与跟踪。

发明内容

本发明的目的就是为了解决上述问题,提供大规模虚拟化环境中任务调度的优化方法及优化系统,它具有实现任务的集中管理与分布式执行,实现虚拟化环境中相关任务的管理优化,包括任务的集中管理、并发时的平滑控制、执行时限控制、优先级定义、运行监控、自我诊断等,为任务管理提供一个友好高效的操作界面的优点。

为了实现上述目的,本发明采用如下技术方案:

大规模虚拟化环境中任务调度的优化方法,包括如下步骤:

步骤(1):任务信息在数据库中定义:在数据库中集中定义虚拟化环境中的多个主机管辖的任务信息,所述任务信息包括任务的归属主机和任务的优先级属性;

步骤(2):数据库任务信息装载:按需执行,从数据库中提取任务信息并将提取出的任务信息装入任务信息共享内存;

步骤(3):基础框架运行:创建进程管理共享内存,搭建基础平台支撑上层调度进程及任务进程的运行;调度进程执行任务时,通知平台进程,由平台进程从进程管理共享内存中查找空闲的槽位,并创建一个子进程作为任务进程;

步骤(4):任务调度:负责调度各个任务的周期性运行;定期从任务信息共享内存中读取任务的配置信息,检测各个任务的调度周期,对于需要调度执行的任务,绑定任务指定的优先级放入调度队列;全部任务检查完毕后,按照任务优先级由高到低依次读取队列中需要执行的任务,通知平台进程增加一个相应的任务进程,触发任务对应的执行程序的运行,任务进程执行时记录起止时间与执行结果,调度进程并不等待任务进程执行结束;

步骤(5):任务汇总:每台执行任务调度的主机运行一个代理进程;任务汇总进程定期执行,逐一向每台主机上的代理进程索要每台主机的任务信息共享内存的全部数据,放入本地缓存;全部信息索要完毕后一并装入任务信息汇总共享内存中,最后释放本地缓存;

步骤(6):运行监控:从任务信息汇总共享内存中提取任务配置数据及运行信息,能够实时查看任务调度整体运行信息以及每个任务的配置及运行信息。

所述优化方法还包括自我诊断步骤:后台常驻执行,实时检测各个进程的运行状态,对于执行持续时间超过设定时限的任务进程,强行杀死,避免任务进程的无限期挂起,确保任务的执行可控。根据进程管理共享内存中记录的每个任务进程的进程ID,判断调度进程存活与否,如果调度进程异常终止则予以重新启动,确保整个调度工作持续稳定运行。

所述步骤(1)的虚拟化环境中的每台主机都能够加载自己的任务信息共享内存,装载自己管辖的任务,并启动任务调度周期执行,从而实现任务调度的分布式执行。

所述步骤(3)中:

所述平台进程通过UDP通信机制等待用户操作指令、调度进程或诊断进程的通知,作为调度进程及每个任务进程的父进程;UDP是一种通信协议,UDP是User Datagram Protocol的简称,中文名是用户数据报协议;

所述进程管理共享内存划分为多个槽位,基础框架之上运行的每个进程占用其中一个槽位,所述槽位用于存放任务编号、进程ID、用户ID、组ID、执行时间和执行时限信息,调度进程固定占用第一个槽位。

所述步骤(4)的步骤为:

步骤(4-1):任务调度开始,获取当前时间;对任务信息共享内存加锁,连接任务信息共享内存;读取任务信息共享内存中全部数据,放入本地缓存;对任务信息共享内存解锁,断连任务信息共享内存;

步骤(4-2):调度进程循环处理本地缓存中的每个任务:检查每个任务的调度周期,对于需要调度执行的任务,绑定任务指定的优先级之后,加入调度队列;

步骤(4-3):判断调度队列中是否有任务,如果是就进入步骤(4-4);否则就睡眠一个设定周期后返回步骤(4-1);

步骤(4-4):判断是否存在空闲槽位,如果存在空闲槽位,按照任务优先级由高到低依次读取队列中需要执行的任务,通知平台进程增加一个相应的任务子进程,任务子进程执行时,占用前面分配的管理槽位,记录相关的运行信息;所述运行信息包括任务编号、进程ID、用户ID、组ID、执行时间和执行时限;调度队列中的任务全部处理完毕之后,返回步骤(4-3);如果不存在空闲槽位,就暂停设定时间后返回步骤(4-4)。

所述步骤(4)中:

任务进程启动后需要连接任务信息共享内存,读取额外配置参数,运行时需要修改任务的执行状态信息,所述任务的执行状态信息包括当前状态、开始时间、结束时间和执行结果。

为了避免修改每个任务的原有执行程序,引入一个封装程序,调度进程直接调度执行封装程序,然后由封装程序实现共享内存的访问并调用任务原有的执行程序。封装程序同时在文件中记录任务运行结果信息,后续批量导入数据库中,以便制作运维分析报表提供决策支持。

每个任务进程在日志文件中记录自己的运行信息,日志文件根据任务编号命名,方便跟踪定位。

所述自我诊断步骤为:

步骤(a-1):自我诊断进程读取配置文件,对锁文件加锁,并记录进程ID;

步骤(a-2):判断加锁是否失败,如果是就结束,否则就进入步骤(a-3);

步骤(a-3):自我诊断进程连接进程管理共享内存;

步骤(a-4):判断所有子进程检查是否完毕,如果是就断连进程管理共享内存,睡眠一个周期后返回步骤(a-3);否则就对信号灯加锁,读取一个子进程的相关信息,解锁信号灯;进入步骤(a-5);

步骤(a-5):判断是否进行异常终止检测,如果是就进入步骤(a-6);否则就进入步骤(a-7);

步骤(a-6):判断子进程是否异常终止,如果是就通知平台进程进入步骤(a-4);否则就进入步骤(a-7);

步骤(a-7):判断是否进行执行时限检测,如果是就获取当前时间,计算子进程运行的持续时间,进入步骤(a-8);否则就进入步骤(a-4);

步骤(a-8):判断持续时间是否超过设定时限,如果是就强行杀死子进程,然后进入步骤(a-4);否则就进入步骤(a-4)。

所述步骤(6)的整体运行信息包含任务总数、正在运行的任务数目、成功执行的任务累计数目、运行失败的任务累计数目和平台累计运行时间。

大规模虚拟化环境中任务调度的优化系统,包括:

任务信息在数据库中定义模块:在数据库中集中定义虚拟化环境中的多个主机管辖的任务信息,所述任务信息包括任务的归属主机和任务的优先级属性;

数据库任务信息装载模块:按需执行,从数据库中提取任务信息并将提取出的任务信息装入任务信息共享内存;

基础框架运行模块:创建进程管理共享内存,搭建基础平台支撑上层调度进程及任务进程的运行;调度进程执行任务时,通知平台进程,由平台进程从进程管理共享内存中查找空闲的槽位,并创建一个子进程作为任务进程;

任务调度模块:负责调度各个任务的周期性运行;定期从任务信息共享内存中读取任务的配置信息,检测各个任务的调度周期,对于需要调度执行的任务,绑定任务指定的优先级放入调度队列;全部任务检查完毕后,按照任务优先级由高到低依次读取队列中需要执行的任务,通知平台进程增加一个相应的任务进程,触发任务对应的执行程序的运行,任务进程执行时记录起止时间与执行结果,调度进程并不等待任务进程执行结束;

任务汇总模块:每台执行任务调度的主机运行一个代理进程;任务汇总进程定期执行,逐一向每台主机上的代理进程索要每台主机的任务信息共享内存的全部数据,放入本地缓存;全部信息索要完毕后一并装入任务信息汇总共享内存中,最后释放本地缓存;

运行监控模块:从任务信息汇总共享内存中提取任务配置数据及运行信息,能够实时查看任务调度整体运行信息以及每个任务的配置及运行信息。

所述优化系统还包括自我诊断模块:后台常驻执行,实时检测各个进程的运行状态,对于执行持续时间超过设定时限的任务进程,强行杀死,避免任务进程的无限期挂起,确保任务的执行可控。根据进程管理共享内存中记录的每个任务进程的进程ID,判断调度进程存活与否,如果调度进程异常终止则予以重新启动,确保整个调度工作持续稳定运行。

所述任务信息在数据库中定义模块的虚拟化环境中的每台主机都能够加载自己的任务信息共享内存,装载自己管辖的任务,并启动任务调度周期执行,从而实现任务调度的分布式执行。

所述基础框架运行模块中:

所述平台进程通过UDP通信机制等待用户操作指令、调度进程或诊断进程的通知,作为调度进程及每个任务进程的父进程;

所述进程管理共享内存划分为多个槽位,基础框架之上运行的每个进程占用其中一个槽位,所述槽位用于存放任务编号、进程ID、用户ID、组ID、执行时间和执行时限信息,调度进程固定占用第一个槽位。

所述任务调度模块中:

任务进程启动后需要连接任务信息共享内存,读取额外配置参数,运行时需要修改任务的执行状态信息,所述任务的执行状态信息包括当前状态、开始时间、结束时间和执行结果。

为了避免修改每个任务的原有执行程序,引入一个封装程序,调度进程直接调度执行封装程序,然后由封装程序实现共享内存的访问并调用任务原有的执行程序。封装程序同时在文件中记录任务运行结果信息,后续批量导入数据库中,以便制作运维分析报表提供决策支持。

每个任务进程在日志文件中记录自己的运行信息,日志文件根据任务编号命名,方便跟踪定位。

所述运行监控模块的整体运行信息包含任务总数、正在运行的任务数目、成功执行的任务累计数目、运行失败的任务累计数目和平台累计运行时间。

本发明的有益效果是:

1简化任务的配置管理,实现任务的集中配置与分布式执行,平滑控制任务的并发执行,支持任务优先级定义,控制任务的执行时限,支持分布式执行的任务运行信息的定期汇总,支持自我诊断,自动重新启动异常终止的调度工作,并集中实时直观监控任务的运行状态,还可以定期制作运维分析报表提供决策支持。

2采用共享内存存储的另外一个好处是可以让外部程序方便的查看调度平台内部的数据信息,了解平台自身及被调度任务的运行情况。

3任务信息载入任务信息共享内存后,后续调度时不再访问数据库从而减轻数据库负担。

附图说明

图1为整体功能架构示意图。

图2为任务调度流程图。

图3为自我诊断流程图。

图4为任务汇总示意图。

具体实施方式

下面结合附图与实施例对本发明作进一步说明。

数据库产品采用MySQL,共享内存机制采用类UNIX系统内置支持的System V标准的shared memory。为协调多个进程对共享内存的同步访问,采用System V标准的信号灯semaphore作为加锁同步机制。调度队列采用System V标准的消息队列,支持消息优先级。

为提高任务信息共享内存访问的并发能力,采用两个信号灯控制内存同步访问:一个“刷新灯”,一个“读灯”。目标效果有三点:多个进程可以同时读取共享内存、内存刷新时禁止其他进程访问、其他进程正在访问共享内存时禁止刷新操作。

进程管理共享内存同样需要加锁保护,以协调多个进程的同步访问。与上面提及的任务信息共享内存使用的“刷新灯”、“读灯”无关,进程管理共享内存使用一个独立的信号灯作为互斥锁。

按照实际需要简化任务的调度周期定义,仿照crontab的定义格式,简化为三个域,分别表示分钟、小时、天。每个定义域支持填写固定值(如1),或者填写一个间隔时间(如*/5)。

首先通过配置界面添加或调整任务信息,任务定义时包含归属主机及优先级属性,在数据库中集中存储,之后执行任务信息装载模块装入共享内存。共享内存数据准备完毕,启动基础框架、任务调度模块、自我诊断、任务汇总,此后整个平台进入自我管理的运行状态,周期性调度任务执行。此时可以通过运行监控界面实时查看调度平台运行状态。

后续如果需要调整任务配置参数,可以联机刷新任务信息共享内存,无需重新启动整个调度平台。

基础框架模块运行时读取命令行指定的配置文件,获取管理参数(如共享内存ID、并发任务数目等),创建进程管理共享内存,搭建基础平台支撑上层调度进程及任务进程的运行。进程管理共享内存划分为多个槽位,基础框架之上运行的每个进程占用其中一个槽位,存放任务编号、进程ID、用户ID、组ID、执行时间、执行时限等管理信息。调度进程固定占用第一个槽位。

平台进程通过UDP通信机制等待用户操作指令与调度进程或诊断进程的通知,作为调度进程及每个任务进程的父进程。调度进程执行任务时,自身并不创建子进程,而是通知平台进程,由后者查找空闲槽位,并创建一个子进程作为任务进程。

调度进程后台常驻执行,间隔设定的睡眠周期持续运行,每次执行时一次性读取任务信息共享内存的全部内容,检查每个任务的调度周期,对于需要调度执行的任务,绑定任务指定的优先级放入调度队列。全部任务检查完毕后,按照任务优先级由高到低依次读取队列中需要执行的任务,通知平台进程增加一个相应的任务进程,调度进程并不等待任务进程执行结束。如果管理槽位不足,暂停调度。从而实现任务并发的平滑控制及优先级管理。

任务进程启动后需要连接任务信息共享内存,读取额外配置参数,运行时需要修改任务的执行状态信息(如当前状态、开始时间、结束时间、执行结果等)。为了避免修改每个任务的原有执行程序,引入一个封装程序,调度进程直接调度执行封装程序,然后由封装程序实现共享内存的访问并调用任务原有的执行程序。封装程序同时在文件中记录任务运行结果信息,后续批量导入数据库中,以便制作运维分析报表提供决策支持。

每个任务进程在日志文件中记录自己的运行信息,日志文件根据任务编号命名,方便跟踪定位。

自我诊断模块运行时读取命令行指定的配置文件,获取管理参数(如共享内存ID、睡眠间隔等),之后后台常驻执行,定期检测各个进程的运行状态,因为进程管理共享内存中记录着每个进程的执行开始时间、执行时限信息,自我诊断模块可以据以计算任务进程的执行持续时间,对于超过设定时限的任务进程,强行杀死,避免任务进程的无限期挂起,确保任务的执行可控。

因为进程管理共享内存中记录着每个进程的进程ID,自我诊断模块可以据以判断调度进程存活与否,如果调度进程异常终止则予以重新启动,确保整个调度工作持续稳定运行。

任务定义时添加主机信息,指定任务的归属主机。虚拟化环境中的每台主机都可以加载自己的任务信息共享内存,装载自己管辖的任务,并启动任务调度平台调度任务周期执行。为简化运行监控,各个主机的任务状态信息定期汇总以便集中查看任务的运行状态。

每台执行任务调度的主机运行一个代理进程,接受汇总进程的请求并回复自己的任务信息共享内存的全部数据。任务汇总进程定期执行,逐一向每台主机上的代理进程索要各自的任务信息共享内存数据,放入本地缓存。全部信息索要完毕,一并装入任务信息汇总共享内存中,供运行监控界面查看使用,最后释放本地缓存。

运行监控界面从任务信息汇总共享内存中获取任务的配置及运行信息,并展现,支持定期刷新。监控页面分为上下两个部分,上面显示调度平台整体运行信息,下面以表格方式显示各个运行的任务信息。整体运行信息包含任务总数、正在运行的任务数目、成功执行的任务累计数目、运行失败的任务累计数目、平台累计运行时间等。

任务调度模块:仿照类UNIX系统中的crond程序实现,增强精细控制功能(如并发时的平滑控制、优先级定义)。

下面结合附图对本发明进一步说明。

如图1所示,以单台主机为例描述任务调度系统的整体功能框架,整个任务调度系统主要包含:任务信息装载、基础框架、任务调度、自我诊断、运行监控,各个组成部分作为一个有机整体协同工作。

首先通过配置界面添加或调整任务信息,在数据库中存储,之后执行任务信息装载模块装入共享内存。共享内存数据准备完毕,启动基础框架、任务调度模块、自我诊断,此后整个平台进入自我管理的运行状态,周期性调度任务执行。此时可以通过运行监控界面实时查看调度平台运行状态。

图中包含了三段共享内存,一段是任务信息共享内存,存放任务的配置及运行信息,第二段是进程管理共享内存,用以存放进程运行时的管理信息,第三段是任务信息汇总共享内存,存放汇总后的任务的配置及运行信息。进程管理共享内存划分为多个槽位,用以存放进程的运行信息,其中调度进程自身占用一个槽位,每个被调度的任务占用一个槽位(任务结束后槽位释放)。

平台进程启动时创建进程管理共享内存,之后通过UDP通信机制等待用户操作指令、调度进程或诊断进程的通知。

所述用户操作指令控制调度进程的执行与终止,或者查看整个平台的运行状态,联机更新平台的运行参数,也可以控制整个平台的终止;

所述调度进程的通知用以触发任务进程的执行;

所述诊断进程的通知用以触发调度进程重新启动。

平台进程作为调度进程及每个任务进程的父进程。调度进程执行任务时,自身并不创建子进程,而是通知平台进程,由后者查找空闲槽位,并创建一个子进程作为任务进程。

自我诊断进程作为一个增强模块,用以监控调度进程及各个任务进程的运行状态,控制任务进程的执行时限,并重新启动异常终止的调度进程。

如图2所示,调度进程后台常驻执行,间隔设定的睡眠周期持续运行,每次执行时一次性读取任务信息共享内存的全部内容,放入本地缓存。

然后循环处理本地缓存中的每个任务:检查每个任务的调度周期,判断是否与当前时间点吻合,对于需要调度执行的任务,绑定任务指定的优先级之后放入调度队列。

所有需要运行的任务放入调度队列之后,检查是否存在空闲的管理槽位,如果管理槽位不足,暂停调度,短暂睡眠之后再次检查空闲的管理槽位。管理槽位空闲时,按照任务优先级由高到低依次读取队列中需要执行的任务,通知平台进程增加一个相应的任务子进程,从而调动任务执行,调度进程并不等待任务进程执行结束。实现任务并发的平滑控制及优先级管理。

任务子进程执行时,占用前面分配的管理槽位,记录相关的运行信息(任务编号、进程ID、用户ID、组ID、执行时间、执行时限等)。

调度队列中的任务全部处理完毕之后,调度进程睡眠一个设定的时间周期,周而复始。

如图3所示,自我诊断模块运行时读取命令行指定的配置文件,获取管理参数(如共享内存ID、睡眠间隔等),之后后台常驻执行,定期检测各个进程的运行状态。

为避免自我诊断模块重复启动造成的混乱,程序启动后在一个文件(通常放置在/var/run目录下)中记录当前进程的进程ID,并对文件本身加锁。重复启动的自我诊断模块再次对同一个文件加锁时,因失败退出。自我诊断模块退出(无论正常或异常退出)时,文件锁自动释放。

因为进程管理共享内存的第一个槽位中记录调度进程的进程ID,自我诊断模块可以据以判断调度进程存活与否,如果调度进程异常终止,则予以重新启动,确保整个调度工作持续稳定运行。

对于任务进程,通常不检查其存活与否,如果任务进程异常终止,等待下一个调度周期再次调度执行。避免因为任务进程的逻辑错误而无休止的重复启动。

因为进程管理共享内存中记录着每个进程的执行开始时间、执行时限信息,自我诊断模块可以据以计算任务进程的执行持续时间,对于超过设定时限的任务进程,强行杀死,避免任务进程的无限期挂起,确保任务的执行可控。

因为调度进程需要持续不间断运行,不检查其执行时限。

如图4所示,任务定义时添加主机信息,指定任务的归属主机。虚拟化环境中的每台主机都可以加载自己的任务信息共享内存,装载自己管辖的任务,并启动任务调度平台调度任务周期执行。

为简化运行监控,各个主机的任务状态信息定期汇总以便集中查看任务的运行状态。

每台执行任务调度的主机运行一个代理进程,接受汇总进程的请求并回复自己的任务信息共享内存的全部数据。

任务汇总进程定期执行,逐一向每台主机上的代理进程索要各自的任务信息共享内存数据,放入本地缓存。全部信息索要完毕,一并装入任务信息汇总共享内存中,供运行监控界面查看使用,最后释放本地缓存。

上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号