一种任务调度的方法、服务器和计算机可读存储介质与流程

文档序号:21262729发布日期:2020-06-26 22:31阅读:159来源:国知局
一种任务调度的方法、服务器和计算机可读存储介质与流程

本发明实施例涉及互联网信息技术领域,特别涉及一种任务调度的方法、服务器和计算机可读存储介质。



背景技术:

大数据平台技术框架支持的开发语言多种多样,产生出很多不同类型的程序(任务)运行在大数据平台之上,任务类型可以是各编程语言如:mapreduce、hive、pig、spark、java、shell、python等。由于大数据平台上的任务或者任务流需要通过调度系统的定时调度触发。大数据平台通常由多套大数据计算集群构成,每个计算集群包括处理相同业务的多台服务器,每个计算集群对应一个调度系统,该调度系统用于管理该计算集群上传的任务。

发明人发现相关技术中至少存在如下问题:目前的每个计算集群对应一个调度系统,当一个任务需要多个集群共同处理时,由于该大数据平台上出现了多个计算集群的调度系统,导致无法统一协调调度任务,影响调度任务的效率。



技术实现要素:

本发明实施方式的目的在于提供一种任务调度的方法、服务器和计算机可读存储介质,使得可以合理协调调度指定集群处理待处理任务,提高任务调度的效率。

为解决上述技术问题,本发明的实施方式提供了一种任务调度的方法,应用于调度服务端,包括:若检测到满足待处理任务的触发条件,则按照待处理任务被配置的指定集群,查找与指定集群对应的任务队列;将待处理任务分发至任务队列,供指定集群的调度代理根据指定集群的负载信息,抓取任务队列中的待处理任务并提到至指定集群,反馈指定集群处理待处理任务的处理结果;获取指定集群的调度代理返回的处理结果。

本发明的实施方式还提供了一种任务调度的方法,应用于调度代理,调度代理分别通信连接调度服务端和对应的指定集群,任务调度方法包括:根据指定集群的负载信息,抓取与指定集群对应的指定任务队列中的待处理任务;向指定集群提交待处理任务,供指定集群处理待处理任务,向调度代理返回处理结果;将接收的处理结果反馈至调度服务端。

本发明的实施方式还提供了一种任务调度的方法,应用于配置中心,配置中心分别与调度服务端和调度代理通信连接,调度服务端用于执行对应的任务调度的方法,调度代理用于执行对应的任务调度的方法,任务调度的方法包括:根据调度服务端发送的任务流的配置信息,查找配置信息对应的配置文件;向调度服务端反馈配置文件;根据调度代理发送的获取请求,获取请求包括:调度代理对应的指定集群的信息;根据指定集群信息,查找指定集群的运行环境信息并将运行环境信息返回调度代理。

本发明的实施方式还提供了一种服务器,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行与调度服务端对应的任务调度的方法,或者,执行与调度代理对应的任务调度的方法,或者,执行与配置中心对应的任务调度的方法。

本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现与调度服务端对应的任务调度的方法,或者,实现与调度代理对应的任务调度的方法,或者,实现与配置中心对应的任务调度的方法。

本发明实施方式相对于现有技术而言,在检测到待处理任务的触发条件被满足后,按照该待处理任务被配置的指定集群,查找与该指定集群对应的任务队列,并将该待处理任务分发至该查找到的任务队列中,通过对指定集群设置对应的任务队列,使得调度服务端无需将待处理任务直接发送至指定集群,而是直接分发至任务队列中,由于任务队列具有缓存的作用,使得在任务队列中的待处理任务不会直接到达指定集群,避免指定集群因无法处理高并发的待处理任务而导致任务处理失败的问题;而将任务队列与指定集群对应,使得该调度服务端可以根据待处理任务被配置的指定集群,将不同业务类型的待处理任务分发至对应的任务队列中,由指定集群的调度代理抓取从对应的任务队列中抓取任务,实现了多集群的协调调度,同时指定集群的调度代理会基于指定集群的负载信息,抓取任务队列中的待处理任务,由于指定集群并没有主动抓取任务的功能,通过设置对应的调度代理,使得可以根据指定集群的负载合理抓取任务进行处理,提高了任务调度的效率。

另外,在检测是否满足待处理任务的触发条件之前,任务调度的方法还包括:接收创建任务流的创建请求,创建任务流,创建请求包括:任务流的配置信息以及所需集群的信息;根据所需集群的信息,将任务流划分为n个待处理任务,每个待处理任务配置有对应的指定集群,n的值与所需集群的数量相同。任务流包括n个待处理任务,根据该任务流所需集群的信息,将该任务流划分为n个待处理任务,并为每个待处理任务被配置有对应的指定集群,使得该调度服务端可以调度处理配置有不同集群的任务流,进一步提高了任务流的多集群的调度的效率。

另外,将任务流划分为n个待处理任务之后,任务调度的方法还包括:获取每个待处理任务之间的依赖关系;根据依赖关系对每个待处理任务设置对应的触发条件。该任务流中的待处理任务的触发条件基于依赖关系设置,使得待处理任务可以关联调度,实现合理调度指定集群,提高了集群调度的效率。

另外,任务调度的方法还包括:任务调度的方法还包括:向配置中心发送任务流的配置信息,供配置中心查找任务流的配置文件,并向调度服务端所述配置文件,配置文件包括:待处理任务的执行脚本信息;接收配置中心反馈的配置文件,按照配置文件配置待处理任务。调度服务端仅存储配置信息,而对应的配置文件存储在配置中心,使得后续对配置文件进行修改时无需对调度服务端进行代码的修改,提高了该调度服务端的使用的灵活性。

附图说明

一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。

图1是根据本发明第一实施方式提供的一种任务调度的方法的具体流程图;

图2是本发明第二实施方式提供的配置待处理任务的一种具体实现示意图;

图3是本发明第二实施方式提供的一种任务调度的框架示意图;

图4是本发明第三实施方式提供的一种任务调度的方法的具体流程图;

图5是本发明第四实施方式提供的一种任务调度的方法的具体流程图;

图6是本发明第五实施方式提供的一种任务调度的方法的具体流程图;

图7是本发明第六实施方式提供的一种服务器的具体结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。

以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。

发明人发现目前相关任务调度的方法中,相同业务由一个集群处理,每个集群对应一个调度系统,每个集群各自的调度系统将独立管理该集群上的任务调度,但是对于调度平台而言,由于有多个集群,且每个集群有各自对应的调度系统,这导致调度平台会有多个集群调度系统,平台不能合理调度集群,例如,若有多个待处理任务,且每个待处理任务需要不同的集群进行处理,且待处理任务的处理结果具有依赖关系,这导致多个集群中的资源被挂起的待处理任务占用,导致集群资源不能得到合理的利用,平台不能统一协调调度各集群,导致集群资源的浪费。

本发明的第一实施方式涉及一种任务调度的方法。该任务调度的方法应用于调度服务端。该任务调度的方法的具体流程如图1所示。

步骤101:若检测到满足待处理任务的触发条件,则按照待处理任务被配置的指定集群,查找与指定集群对应的任务队列。

该调度服务端可以包括任务创建模块,用于创建新的待处理任务,可以面向用户提供任务创建的接口,便于用户创建新的待处理任务,例如,该调度服务端可以提供可视化操作界面,通过可视化操作界面接收用户输入的任务创建的创建请求,并按照该创建请求创建待处理任务,该创建请求包括:该待处理任务的配置信息以及所需集群的信息,配置信息可以包括配置文件,配置文件可以是该待处理任务的执行脚本,任务类型,其中,任务类型可以是各编程语言的类型,例如:mapreduce、hive、pig、spark、java、shell、python等。配置文件可以存储在调度服务端的数据库中,因而可以根据该配置信息从数据库中获取该配置信息对应的配置文件。其中,待处理任务所需集群的信息包括:该待处理任务被配置的集群。

该待处理任务的触发条件可以由用户设置,触发条件可以是:达到预设的调度时间、或者接收到基于其他程序的执行结果。调度服务端存储有指定集群与任务队列之间的对应关系,在检测到该待处理任务的触发条件被触发后,可以按照该待处理任务被配置的指定集群,基于该对应关系查找与该指定集群对应的任务队列。

值得一提的是,每个指定集群都有唯一对应的任务队列,由于不同集群处理不同的业务,因而该调度服务端的不同任务队列用于处理各自对应的业务,通过任务队列可以实现对不同集群的调度。

在另一个例子中,在检测是否满足待处理任务的触发条件之前,该调度服务端接收创建任务流的创建请求,创建任务流,该创建请求包括:任务流的配置信息以及所需集群的信息;根据所需集群的信息,将任务流划分为n个待处理任务,每个待处理任务配置有对应的指定集群,n的值与所需集群的数量相同。

具体的说,与创建单个待处理任务类似,调度服务端可以创建任务流,接收该任务流的配置信息以及该任务流所需集群的信息,根据该任务流的配置信息可以在数据库中确定该任务流的配置文件,配置文件可以包括:集群运行环境信息,或者、对外查询服务的接口信息等。所需集群的信息,可以是该任务流的所需各集群的标识信息,例如,任务流a的集群信息包括:集群1的标识信息,集群2的标识信息。由于任务流中需要不同的集群处理,因而可以将该任务流按照所需集群的信息,划分为n个待处理任务,n的值与所需集群的数量相同,每个待处理任务被配置有对应的指定集群。例如,所需集群的数量为2个,将任务a拆解为两个待处理任务,分别为:待处理任务a1:集群1;待处理任务a2:集群2。

在一个例子中,将任务流划分为n个待处理任务之后,任务调度的方法还包括:获取每个待处理任务之间的依赖关系;根据依赖关系对每个待处理任务设置对应的触发条件。

具体的说,每个待处理任务之间的依赖关系可以由用户输入,也可以根据用户设置的任务流的触发时间点确定。无前置依赖关系的待处理任务的触发条件可以为该任务流预设的触发条件,例如,任务流a的触发条件为在t1时刻触发,该任务流被拆分为待处理任务a1和待处理任务a2,其中,待处理任务a1与待处理任务a2存在依赖关系,待处理任务a2需要基于待处理任务a1的处理结果进行计算,那么可以将待处理任务a2的触发条件设置为:接收到待处理任务a1执行完毕的指令,待处理任务a1无前置依赖关系,则可以将该待处理任务a1的触发条件设置为在t1时刻触发。

步骤102:将待处理任务分发至任务队列,供指定集群的调度代理根据指定集群的负载信息,抓取任务队列中的待处理任务并提到至指定集群,反馈指定集群处理待处理任务的处理结果。

具体的说,每个指定集群中可以包括多个调度代理,每个调度代理均可以用于为该指定集群提交任务,该调度代理可以是服务端,分别与调度服务端和集群连接;该调度代理无需设置在集群内,以便提高该调度代理的适用性。

在待处理任务的触发条件被满足后,且基于该待处理任务被配置的指定集群,查找到指定集群对应的任务队列,将待处理任务分发至任务队列。由该指定集群的调度代理根据指定集群的负载信息,抓取任务队列中的待处理任务并提到至指定集群,反馈指定集群处理待处理任务的处理结果。负载信息可以由集群提供,也可以定时汇总集群处理待处理任务所消耗的时间的情况,确定负载信息。

在一个例子中,调度服务端可以根据指定集群对应的任务队列中被抓取的待处理任务的数量,确定各指定集群的负载信息;从而可以根据指定集群的负载信息,判断该指定集群的是否健康。

步骤103:获取指定集群的调度代理返回的处理结果。

具体的说的,针对任务流的调度:接收调度代理返回的上一个待处理任务的处理结果,若下一个待处理任务的触发条件为接收到上一个待处理任务的处理结果,那么可以触发按照下一个待处理任务的指定集群,查找下一个待处理任务的指定集群对应的下一个任务队列,并将下一个待处理任务分发至下一个任务队列,继续进行任务调度,直至所有的待处理任务完成,得到任务流的处理结果,可以输出该任务流的处理结果。

若该调度服务端接收的处理结果与其他待处理任务无依赖关系,则可以直接输出该处理结果。

本发明实施方式相对于现有技术而言,在检测到待处理任务的触发条件被满足后,按照该待处理任务被配置的指定集群,查找与该指定集群对应的任务队列,并将该待处理任务分发至该查找到的任务队列中,通过对指定集群设置对应的任务队列,使得调度服务端无需将待处理任务直接发送至指定集群,而是直接分发至任务队列中,由于任务队列具有缓存的作用,使得在任务队列中的待处理任务不会直接到达指定集群,避免指定集群因无法处理高并发的待处理任务而导致任务处理失败的问题;而将任务队列与指定集群对应,使得该调度服务端可以根据待处理任务被配置的指定集群,将不同业务类型的待处理任务分发至对应的任务队列中,由指定集群的调度代理抓取从对应的任务队列中抓取任务,实现了多集群的协调调度,同时指定集群的调度代理会基于指定集群的负载信息,抓取任务队列中的待处理任务,由于指定集群并没有主动抓取任务的功能,通过设置对应的调度代理,使得可以根据指定集群的负载合理抓取任务进行处理,提高了任务调度的效率。

本发明的第二实施方式涉及一种任务调度的方法。第二实施方式是对第一实施方式的进一步改进,主要改进之处在于:在本发明第二实施方式中,该调度服务端将该任务流的配置信息发送至配置中心,获取配置中心返回的配置文件,该任务调度的方法中配置待处理任务的具体过程如图2所示。

步骤201:向配置中心发送任务流的配置信息,供配置中心查找任务流的配置文件,并向调度服务端反馈配置文件,配置文件包括:待处理任务的执行脚本信息。

具体的说,该任务流被创建后,向配置中心发送任务流的配置信息,配置中心获取该配置信息后,按照配置文件的索引信息,在该配置中心查找对应的配置文件,并将该配置文件返回该调度服务端,还可以在接收到调度中心的获取请求后,将该配置文件发送至调度代理。该配置文件包括:待处理任务的执行脚本信息。

值得一提的是,将配置文件放置在配置中心,而不存储待调度服务端,便于后续对配置文件进行修改,而不影响该调度服务端;将配置文件的存储和调度服务端隔离开,也便于后续对配置文件进行调优处理。

步骤202:接收配置中心反馈的配置文件。

步骤203:按照配置文件配置待处理任务。

具体的说,该配置文件中包括该待处理任务的执行脚本信息,按照该待处理脚本信息配置该待处理任务。

需要说明的是,该步骤201至步骤203可以在创建任务流之后执行。

该配置中心可以是单独的服务端,下面结合附图3,介绍整个任务调度的过程。图3为该整个任务调度的框架示意图,图中3中配置中心以标号40表示,该调度服务端用标号10表示,该调度服务端10包括多个模块,如:任务管理模块(图3未示出)、调度模块和任务队列;该任务管理模块用于创建新的待处理任务,或该任务管理模块创建任务流,并将给任务流划分将n个待处理任务,n为大于0的整数。该调度模块用于查找待处理任务对应的指定集群的任务队列,并将待处理任务放入任务队列。调度代理表示为20,指定集群为标号30,datanode表示该指定集群中的计算节点。

调度服务端10将待处理任务1的配置信息发送配置中心,配置中心根据该配置信息,查找对应的配置文件,并将该配置文件返回该调度服务端,调度服务端中的调度模块在检测到满足该待处理任务1的触发条件,则按照该待处理任务1对应的指定集群31,查找该指定集群对应的任务队列1,将该待处理任务分发至该任务队列1中。

该指定集群1对应有k个调度代理,每个调度代理分别与调度服务端和配置中心通信连接,该调度代理启动后,调度代理从配置中心获取指定集群的运行环境信息,该调度代理根据获取的运行环境信息调整当前的运行环境。调度代理1根据该指定集群31的负载信息,从任务队列1中抓取待处理任务1,并将待处理任务1提交至指定集群31中进行处理,获取指定集群31的处理结果,并返回调度服务端10。

本实施方式提供的任务调度的方法,调度服务端仅存储配置信息,而对应的配置文件存储在配置中心,使得后续对配置文件进行修改时无需对调度服务端进行代码的修改,提高了该调度服务端的使用的灵活性。

上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。

本发明第三实施方式涉及一种任务调度的方法,该任务调度的方法应用于调度代理,该调度代理分别通信连接该调度服务端和对应的指定集群。该调度代理可以是服务器;本实施方式中的任务调度的方法的具体流程如图4所示。

步骤301:根据指定集群的负载信息,抓取与指定集群对应的指定任务队列中的待处理任务。

具体的说,每个指定集群中可以包括多个调度代理,每个调度代理在被启动后,可以获取指定集群的负载信息,抓取与指定集群对应的指定任务队列中的待处理任务。

该调度代理每次可以向对应的指定集群提交一个待处理任务,因而调度代理可以在处于空闲状态时,从该任务队列抓取任务,并提交至该指定集群。该调度代理还可以每隔预设时间就从该任务队列中抓取待处理任务并提交至该指定集群。

步骤302:向指定集群提交待处理任务,供指定集群处理待处理任务,向调度代理返回处理结果。

按照指定集群的运行环境信息调整当前的运行环境,并根据该指定集群的接口信息,将待处理任务提交至指定集群。

在一个例子中,若处理结果为失败,则按照预设规则向指定集群重新提交待处理任务,预设规则包括:距上一次提交时刻的时长达到预设时长,或者,指定集群中的负载达到预设负载。

具体的说,若接收到的处理结果为失败,失败的原因可能该指定集群的负载较大,导致处理失败,因而可以距上一次提交时刻的时长达到预设时长,或者,指定集群中的负载达到预设负载后,重新提交待处理任务。

值得一提的是,由于任务流中包括多个待处理任务,若某一待处理任务处理失败,会导致对整个任务流的处理失败,通过重新提交待处理任务,仅需对该待处理任务进行处理即可,节省了处理资源,提高对任务流的处理效率。

步骤303:将接收的处理结果反馈至调度服务端。

本实施方式中提供的任务调度的方法,通过调度代理从任务队列中获取待处理任务,使得指定集群可以负载均衡地处理各待处理任务,提高了集群处理任务的效率。

本发明第四实施方式涉及一种任务调度的方法。第四实施方式是第三实施方式进一步改进,主要改进之处在于:在本发明第四实施方式中,该调度代理与配置中心通信连接,从配置中心获取运行环境信息。该任务调度的方法还包括如图5所示的流程。

步骤401:向配置中心发送获取指定集群的运行环境的获取请求,获取请求包括指定集群的信息。

具体的说,该调度代理与配置中心通信连接,该配置中心存储有各个待处理任务的配置文件,同时还存储有各个指定集群的运行环境信息。由配置中心单独存储配置文件以及各指定集群的运行环境信息,可以便于对配置文件以及运行环境信息进行修改,而不影响调度服务端的运行。

在调度代理被启动后,该调度代理向该配置中心发送获取请求,该获取请求中包括该调度代理对应的指定集群的信息,例如,可以是指定集群的标识信息。调度代理可以仅在启动后获取一次该运行环境的信息,也可以在接收到配置中心发送的更新运行环境信息的指令后,重新获取指定集群的运行环境信息。其中,调度代理可以由用户手动启动,也可以是在达到启动的触发条件后,自动启动。启动的触发条件可以接收到上电指定;达到预设时间。

步骤402:接收配置中心发送的指定集群的运行环境信息。

步骤403:根据运行环境信息调整当前的运行环境。

具体的说,按照接收的运行环境信息调整当前的运行环境。可以理解的是,同一个指定集群的各个调度代理的运行环境信息相同。

步骤404:根据指定集群的负载信息,抓取与指定集群对应的指定任务队列中的待处理任务。

步骤405:向指定集群提交待处理任务,供指定集群处理所述待处理任务,向调度代理返回处理结果。

步骤406:将接收的处理结果反馈至调度服务端。

步骤404至步骤406与第三实施方式中的步骤301至步骤303大致相同,此处将不再赘述。

由于第二实施方式与本实施方式相互对应,因此本实施方式可与第二实施方式互相配合实施。第二实施方式中提到的相关技术细节在本实施方式中依然有效,在第二实施方式中所能达到的技术效果在本实施方式中也同样可以实现,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第二实施方式中。

本发明第五实施方式涉及一种任务调度的方法,该任务调度的方法应用于配置中心,该配置中心与调度服务端和调度代理通信连接,调度服务端用于执行第一实施方式或第二实施方式中的任务调度的方法,调度代理用于执行第三实施方式或第四实施方式中任务调度的方法。该任务调度的方法的具体流程如图6所示。

步骤501:根据调度服务端发送的任务流的配置信息,查找配置信息对应的配置文件;向调度服务端反馈配置文件。

具体的说,配置中心存储有配置文件,该配置中心接受任务流的配置信息,通过配置信息即可查找到对应的配置文件,将该配置文件反馈给该调度服务端,配置文件包括:待处理任务的执行脚本信息。

步骤502:根据调度代理发送的获取请求,获取请求包括:调度代理对应的指定集群的信息;根据指定集群信息,查找指定集群的运行环境信息并将运行环境信息返回调度代理。

具体的说,配置中心还存储有各指定集群的运行环境信息以及该指定集群的标识信息,通过获取请求,即可查找到该指定集群的运行环境信息,并将该运行环境信息返回调度代理,由调度代理根据接收的运行环境信息调整当前的运行环境。

本发明第六实施方式涉及一种服务器,该服务器的结构如图7所示,包括:至少一个处理器601;以及,与至少一个处理器601通信连接的存储器602;其中,存储器602存储有可被至少一个处理器601执行的指令,指令被至少一个处理器601执行,以使至少一个处理器601能够执行第一实施方式或第二实施方式中的任务调度的方法,或者,执行如第三实施方式或第四实施方式中的任务调度的方法,或者,执行如第五实施方式中的任务调度的方法。

其中,存储器602和处理器601采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器601和存储器602的各种电路链接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器601处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器601。

处理器601负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器601在执行操作时所使用的数据。

本发明第七实施方式涉及一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现第一实施方式或第二实施方式的任务调度的方法,或者,实现如第三实施方式或第四实施方式的任务调度的方法,或者,实现第五实施方式的任务调度的方法。

本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1