调用请求处理方法、装置、终端和计算机可读存储介质与流程

文档序号:22041203发布日期:2020-08-28 18:08阅读:165来源:国知局
调用请求处理方法、装置、终端和计算机可读存储介质与流程

本发明涉及电路板制造技术领域,具体而言,涉及一种终端的调用请求处理方法、一种调用请求处理装置、一种终端和一种计算机可读存储介质。



背景技术:

鉴于微服务和软件高内聚、低耦合的实现要求以及移动应用的广泛普及,接口的调用从之前的内部单一调用变成了海量客户端的请求调用,尤其一些常用数据接口面对百万级甚至千万级的请求需要在服务快速高效地响应每个请求,在此除了在硬件上进行扩容,更多的是需要软件层依据一些高并发处置策略进行有效响应。

相关技术中,对于海量接口请求调用处理方式大致分为入口并发异步锁机制、接口调用分布式/集群机制,对此两种机制,目标是在入口和执行端进行控制,抑制高并发造成的资源耗尽和端口堵塞。但上述两种方案具有很大的弊端:第一,在调用入口加异步锁机制会造成延迟,这对于实时性比较高的接口调用显然不合理;第二,在接口响应时进行分布式或集群对资源要求更高,相应的成本也更高,而且更多的分布式或集群带来的维护成本、问题追踪更加复杂。



技术实现要素:

本发明旨在至少解决现有技术或相关技术中存在的技术问题之一。

为此,本发明第一方面在于提出了一种终端的调用请求处理方法。

本发明的第二方面在于提出了一种调用请求处理装置。

本发明的第三方面在于提出了一种终端。

本发明的第四方面在于提出了一种计算机可读存储介质。

有鉴于此,根据本发明的第一方面,提出了一种终端的调用请求处理方法,包括:获取终端的调用请求;根据预设分类条件对调用请求进行分类合并,生成请求列表;根据请求列表配置对应的线程池,并确定线程执行队列;根据线程执行队列执行接口调用操作。

本发明提供的调用请求处理方法,不同客户端对接口的调用会不同的参数和规则要求,由于同一类(条件)的请求调用本质上与单一的请求返回机制是一样的,为此,对接口的海量调用请求根据预设分类条件进行归类,其中,预设分类条件包括参数、类型、规则等,将统一的业务、规则、参数的请求进行合并,生成请求列表,然后根据请求列表将合并归类后的调用请求调用组以键值对的形式入列到等待队列中,整个队列是一定数量的线程池,使得线程池能够对应同一类的调用请求,这些待执行的调用请求会去不断检查线程池中是否有空闲执行线程,如果存在空闲执行线程,则从等待队列出列到线程执行队列,并由线程池对应的空闲执行线程快速执行接口调用操作。从而形成合并请求-入列等待对垒-进入执行队列-执行并回调的循环机制,能够将同一类的调用请求作为一种请求来响应,分批量进行接口调用,实现一处响应多处返回,进而在较少硬件资源条件下保证准确、高效、有序地进行响应调用请求,降低运行维护成本,且有利于问题追踪。

另外,根据本发明提供的上述技术方案中终端的调用请求处理方法,还可以具有如下附加技术特征:

在上述技术方案中,进一步地,确定线程执行队列,具体包括:获取终端的数据处理参数;获取终端的数据处理参数;根据阻抗匹配规则和数据处理参数,确定线程池的执行线程数量;根据预设优先级确定请求列表中调用请求的调用顺序;根据调用顺序和执行线程数量,确定线程执行队列。

在该技术方案中,线程池是一系列线程聚集地,考虑到在请求调用接口的应用上,如果基于“threadperrequest”的模式,每个调用请求用一个线程去处理,当请求数达到某个临界值,由于线程的增加,上下文之间的切换开销也随之增加,使得接口吞吐量反而会下降,为了在并发请求数很高时也能保持稳定的吞吐量,利用线程池来处理调用请求,并且利用终端的数据处理参数和线程池阻抗匹配规则对线程池中每个线程进行饱和度计算,从而确定线程池的执行线程数量,即系统cpu(中央处理器)能够用于执行请求的线程数量,其中,cpu的性能越高,执行线程数量越多,然后根据预设优先级确定请求列表中调用请求的调用顺序,例如,先进先出、请求数据量大小等规则,按照调用顺序以键值对(key-value)的形式入列到线程池的等待队列中,等待队列对应一个固定执行线程数量的线程池,线程池中的执行线程按序列号有序转入执行调用请求的线程执行队列,同时,等待队列中待执行的调用请求不断检查线程池中是否有空闲执行线程,判断空闲的标准是采用线程池阻抗匹配,若存在空闲执行线程,则调用请求从等待队列出列到执行线程池对应的空闲执行线程,以执行线程池的接口调用,从而运用了线程池阻抗匹配规则接收线程,让每个线程池根据cpu的性能得出最优布局,利用线程池轮询机制,无论在调用请求的等待队列还是执行队列,实现入列-出列(执行)快速多线程执行,在提高了接口响应的并发度的同时保证稳定的吞吐量,进而提升响应调用请求的效率。

具体地,线程池中的线程在执行任务时,密集计算所占的时间比重为a(0<a≤1),而系统一共有n个cpu,为了让这n个cpu跑满而又不过载,线程池大小百分比(执行线程数量)的经验公式t=n/a,例如n=8,a=1.0,即线程池的任务完全是密集计算,那么t=8,只要8个执行线程就能让8个cpu饱和,即使调用请求的数量超过8个,但由于cpu资源耗尽,多余调用请求也只能继续存于等待队列中,直至空闲执行线程出现。

在上述任一技术方案中,进一步地,根据线程执行队列执行接口调用操作,具体包括:确定线程执行队列中调用请求的线程类型;根据线程类型调用线程池中的执行线程进行线程执行队列的接口调用操作。

在该技术方案中,根据调用请求中业务类型、调用规则等信息,确定线程执行队列中调用请求所需的线程类型,根据线程类型调用线程池中的执行线程进行线程执行队列的接口调用操作,从而将不同的数据处理操作分别交由不同的线程来异步进行,实现不同的数据处理操作的相互重叠(并行),降低了系统延迟,有利于快速对接口调用后返回进行同类分发,进而降低资源消耗,提高响应服务速度。

在上述任一技术方案中,进一步地,还包括:获取线程执行队列的线程回调函数;根据线程回调函数生成调用结果;返回调用结果,并更新执行线程的状态信息。

在该技术方案中,接口调用执行后分可以直接完成操作,不做返回,也可以根据线程执行队列的线程回调函数生成调用结果,并将调用结果返回给请求端,同时更新执行线程的状态为空闲,以便于等待队列中的调用请求继续调用该执行线程进行接口调用,从而提高了线程的利用率,进而在较少硬件资源条件下保证准确、高效、有序地响应调用请求,降低维护成本。

在上述任一技术方案中,进一步地,线程类型包括:io线程和计算线程。

在该技术方案中,io操作主要是读写存储在物理介质中的数据,数据获取之后的需要进行计算也,采用io和“计算”拆分的算法,把读写数据和数据计算进行分离,让一个线程只从事某一项处理操作,实现线程的重用,降低了系统延迟和资源消耗,提高响应服务速度。

在上述任一技术方案中,进一步地,获取终端的调用请求之后,还包括:判断调用请求是否满足预设调用规则;判定调用请求不满足预设调用规则,删除调用请求。

在该技术方案中,在接收到调用请求后,判断调用请求是否满足接口的预设调用规则,若调用请求不满足预设调用规则,说明接口无法处理该调用请求,则对不符合预设调用规则的调用请求进行屏蔽,以提高调用请求的响应效率。

在上述任一技术方案中,进一步地,调用请求至少包括:业务类型、调用规则、请求数据。

根据本发明的第二方面,提出了一种调用请求处理装置,包括存储器、处理器,存储器储存有计算机程序,处理器执行计算机程序时执行上述第一方面的终端的调用请求处理方法。因此该调用请求处理装置具备上述任一项的终端的调用请求处理方法的全部有益效果。

根据本发明的第三方面,提出了一种终端,上述第二方面的调用请求处理装置,调用请求处理装置执行计算机程序时能够执行以下步骤:获取终端的调用请求;根据预设分类条件对调用请求进行分类合并,生成请求列表;根据请求列表配置对应的线程池,并生成线程执行队列;根据线程执行队列执行接口调用操作。

在该技术方案中,不同客户端对接口的调用会不同的参数和规则要求,由于同一类(条件)的请求调用本质上与单一的请求返回机制是一样的,为此,对接口的海量调用请求根据预设分类条件进行归类,其中,预设分类条件包括参数、类型、规则等,将统一的业务、规则、参数的请求进行合并,生成请求列表,然后根据请求列表将合并归类后的调用请求调用组以键值对的形式入列到等待队列中,整个队列是一定数量的线程池,使得线程池能够对应同一类的调用请求,这些待执行的调用请求会去不断检查线程池中是否有空闲执行线程,如果存在空闲执行线程,则从等待队列出列到线程执行队列,并由线程池对应的空闲执行线程快速执行接口调用操作。从而形成合并请求-入列等待对垒-进入执行队列-执行并回调的循环机制,能够将同一类的调用请求作为一种请求来响应,分批量进行接口调用,进而在较少硬件资源条件下保证准确、高效、有序地响应调用请求,降低运行维护成本,且有利于问题追踪。

根据本发明的第四方面,提出了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时执行如上述第一方面的终端的调用请求处理方法的步骤。因此该计算机可读存储介质具备上述任一项的终端的调用请求处理方法的全部有益效果。

本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。

附图说明

本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1示出了本发明一个实施例的终端的调用请求处理方法流程示意图;

图2示出了本发明又一个实施例的终端的调用请求处理方法流程示意图;

图3示出了本发明又一个实施例的终端的调用请求处理方法流程示意图;

图4示出了本发明又一个实施例的终端的调用请求处理方法流程示意图;

图5示出了本发明一个具体实施例的终端的调用请求处理方法流程示意图;

图6示出了本发明一个具体实施例的海量数据接口调用的合并-请求-执行策略示意图;

图7示出了本发明一个实施例的调用请求处理装置示意框图。

具体实施方式

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不限于下面公开的具体实施例的限制。

下面参照图1至图7描述根据本发明一些实施例的终端的调用请求处理方法和调用请求处理装置。

实施例一

如图1所示,根据本发明第一方面的实施例,提出了一种终端的调用请求处理方法,该方法包括:

步骤102,获取终端的调用请求;

步骤104,根据预设分类条件对调用请求进行分类合并,生成请求列表;

步骤106,根据请求列表配置对应的线程池,并确定线程执行队列;

步骤108,根据线程执行队列执行接口调用操作。

在该实施例中,不同客户端对接口的调用会有一些不同的参数和规则要求,由于同一类(条件)的请求调用本质上与单一的请求返回机制是一样的,为此,对接口的海量调用请求根据预设分类条件进行归类,其中,预设分类条件包括参数、类型、规则等,将统一的业务、规则、参数的请求进行合并,生成请求列表,然后根据请求列表将合并归类后的调用请求调用组以键值对的形式入列到等待队列中,整个队列是一定数量的线程池,使得线程池能够对应同一类的调用请求,这些待执行的调用请求会去不断检查线程池中是否有空闲执行线程,如果存在空闲执行线程,则从等待队列出列到线程执行队列,并由线程池对应的空闲执行线程快速执行接口调用操作。从而形成合并请求-入列等待对垒-进入执行队列-执行并回调的循环机制,能够将同一类的调用请求作为一种请求来响应,分批量进行接口调用,实现一处响应多处返回,进而在较少硬件资源条件下保证准确、高效、有序地进行响应调用请求,降低运行维护成本,且有利于问题追踪。

具体地,调用请求至少包括:业务类型、调用规则、请求数据。

实施例二

如图2所示,根据本发明的一个实施例,提出了一种终端的调用请求处理方法,该方法包括:

步骤202,获取终端的调用请求和数据处理参数;

步骤204,根据预设分类条件对调用请求进行分类合并,生成请求列表;

步骤206,根据请求列表配置对应的线程池;

步骤208,根据预设优先级确定请求列表中调用请求的调用顺序;

步骤210,根据调用顺序和执行线程数量,确定线程执行队列;

步骤212,根据线程执行队列执行接口调用操作。

在该实施例中,线程池是一系列线程聚集地,考虑到在请求调用接口的应用上,如果基于“threadperrequest”的模式,每个调用请求用一个线程去处理,当请求数达到某个临界值,由于线程的增加,上下文之间的切换开销也随之增加,使得接口吞吐量反而会下降,为了在并发请求数很高时也能保持稳定的吞吐量,利用线程池来处理调用请求,并且利用终端的数据处理参数和线程池阻抗匹配规则对线程池中每个线程进行饱和度计算,从而确定线程池的执行线程数量,即系统cpu(中央处理器)能够用于执行请求的线程数量,其中,cpu的性能越高,执行线程数量越多,然后根据预设优先级确定请求列表中调用请求的调用顺序,例如,先进先出、请求数据量大小等规则。根据调用顺序和执行线程数量,确定线程执行队列的步骤具体包括:按照调用顺序以键值对(key-value)的形式入列到线程池的等待队列中,其中,等待队列对应一个固定执行线程数量的线程池,同时,线程池中的执行线程按序列号有序转入执行调用请求的线程执行队列,等待队列中待执行的调用请求不断检查线程池中是否有空闲执行线程,若存在空闲执行线程,则调用请求从等待队列出列到执行线程池对应的空闲执行线程,以执行线程池的接口调用。从而运用了线程池阻抗匹配规则接收线程,让每个线程池根据cpu的性能得出最优布局,利用线程池轮询机制,无论在调用请求的等待队列还是执行队列,都能够实现入列-出列(执行)快速多线程执行,在提高了接口响应的并发度的同时保证稳定的吞吐量,进而提升响应调用请求的效率。

具体地,线程池中的线程在执行任务时,密集计算所占的时间比重为a(0<a≤1),而系统一共有n个cpu,为了让这n个cpu跑满而又不过载,线程池大小百分比(执行线程数量)的经验公式t=n/a,例如n=8,a=1.0,即线程池的任务完全是密集计算,那么t=8,只要8个执行线程就能让8个cpu饱和,即使调用请求的数量超过8个,但由于cpu资源耗尽,多余调用请求也只能继续存于等待队列中,直至空闲执行线程出现。

实施例三

如图3所示,根据本发明的一个实施例,提出了一种终端的调用请求处理方法,该方法包括:

步骤302,获取终端的调用请求;

步骤304,根据预设分类条件对调用请求进行分类合并,生成请求列表;

步骤306,根据请求列表配置对应的线程池,并确定线程执行队列;

步骤308,确定线程执行队列中调用请求的线程类型;

步骤310,根据线程类型调用线程池中的执行线程进行线程执行队列的接口调用操作;

步骤312,获取线程执行队列的线程回调函数;

步骤314,根据线程回调函数生成调用结果;

步骤316,返回调用结果,并更新执行线程的状态信息。

在该实施例中,根据调用请求中业务类型、调用规则等信息,确定线程执行队列中调用请求所需的线程类型,根据线程类型调用线程池中的执行线程进行线程执行队列的接口调用操作,从而将不同的数据处理操作分别交由不同的线程来异步进行,实现不同的数据处理操作的相互重叠(并行),降低了系统延迟,有利于快速对接口调用后返回进行同类分发,进而降低资源消耗,提高响应服务速度。接口调用执行后分可以直接完成操作,不做返回,也可以根据线程执行队列的线程回调函数生成调用结果,并将调用结果返回给请求端,同时更新执行线程的状态为空闲,以便于等待队列中的调用请求继续调用该执行线程进行接口调用,从而提高了线程的利用率,进而在较少硬件资源条件下保证准确、高效、有序地响应调用请求,降低维护成本。

具体地,线程类型包括:io线程和计算线程。io操作主要是读写存储在物理介质中的数据,这是一个比较耗时的地方,数据获取之后的计算也需要耗费资源,采用io和“计算”拆分的算法,把读写数据和数据计算进行分离,让一个线程只从事某一项处理操作,实现线程的重用,降低了系统延迟,降低资源消耗,提高响应服务速度。

实施例四

如图4所示,根据本发明的一个实施例,提出了一种终端的调用请求处理方法,该方法包括:

步骤402,获取终端的调用请求;

步骤404,调用请求是否满足预设调用规则,若是,进入步骤406,若否,进入步骤408;

步骤406,根据预设分类条件对调用请求进行分类合并,生成请求列表;

步骤408,删除调用请求;

步骤410,根据请求列表配置对应的线程池,并确定线程执行队列;

步骤412,根据线程执行队列执行接口调用操作。

在该实施例中,在接收到调用请求后,判断调用请求是否满足接口的预设调用规则,若调用请求不满足预设调用规则,说明接口无法处理该调用请求,则对不符合预设调用规则的调用请求进行屏蔽,以提高调用请求的响应效率。

具体地,删除调用请求后及时提醒请求端该调用请求已被屏蔽,以便用户随时了解服务访问情况。

实施例五

如图5所示,根据本发明的一个具体实施例,提出了一种终端的调用请求处理方法,该方法包括:

步骤502,调用请求合并;

步骤504,调用请求队列;

步骤506,执行请求队列;

步骤508,请求回调。

在该实施例中,基于加软件减硬件的成本理念,提出对接口访问的海量请求根据参数、类型等条件进行归类分批量进行接口调用,同一类的请求调用本质上与单一的请求返回机制是一样的,合并归类后的请求调用组以键值对的形式入列到等待队列中,整个队列是一定数量的线程池,每个线程采用线程池阻抗匹配技术进行饱和度计算,每个线程池对应一类待执行请求,在此这些待执行调用任务会去不断检查执行队列是否有空闲执行线程,判断空闲的标准是采用线程池阻抗匹配技术,如果有的话则出列到执行线程池对应的空闲线程,由执行线程在restapi(表现层状态转移应用程序接口)快速执行接口请求任务然后返回,同时重置该执行线程状态为空闲,由此继续去接收待执行接口调用请求。海量数据接口调用的合并-请求-执行策略如图6所示。另外,采用io和“计算”拆分的算法把读写数据和数据计算进行分离,从而形成合并请求-入列等待对垒-进入执行队列-执行并回调的循环机制。

具体的实现步骤主要分4大响应机制:

1、调用请求合并;

不同请求端对接口的调用会有一些不同的参数和规则要求,在进行接口响应之前就对这些调用进行归类合并,将统一业务、规则、参数的请求进行合并,做到一处响应多处返回,同时对一些不符合接口调用规则的请求进行屏蔽。

2、调用请求队列;

对已经合并好的请求列表按线程池阻抗匹配规则,例如先进先出、请求数据量大小等规则将调用请求列表存入等待队列,队列大小对应一个固定线程数量的线程池,线程池中的线程按序列号有序转入执行调用请求的线程执行队列,执行线程池中执行接口调用,并返回调用结果。

3、执行请求队列;

执行队列对应一个固定值的线程池,每个请求列分配一个线程进行接口访问调用,每个请求都进行io和“计算”拆分然后合并返回,最后将该线程重新入队,回调接收新的请求列表。

4、请求回调;

接口服务调用后分两种情况,一种是直接操作完成,不做返回;第二种需要将接口调用的结果返回给服务请求端,这时就需要调用在执行队列里的线程回调函数来执行返回,等结果返回后再重置线程为待执行状态。

进一步地,将调用请求以队列形式存入,是因为消息队列为高吞吐量的分布式发布订阅消息中间件,具有高性能、持久化、多副本备份、横向扩展能力。在请求调用接口的应用上,如果基于“threadperrequest”的模式,当请求数达到某个临界值,随着线程的增加,上下文之间的切换开销也随之增加,导致接口吞吐量下降,为了在并发请求数很高时也能保持稳定的吞吐量,实施例中使用线程池处理调用请求,使得在调用接口请求并没有大量的计算时,线程可以快速实现切换而无需等待io操作。

线程池阻抗匹配规则原理:池中线程在执行任务时,密集计算所占的时间比重为a(0<a<=1),而系统一共有n个cpu,为了让这n个cpu跑满而又不过载,线程池大小百分比的经验公式t=n/a。

io和“计算”拆分算法原理:io操作主要是读写存储在物理介质中的数据,这是一个比较耗时的地方,此外,数据获取之后的计算也需要耗费资源,把这两部分操作分别交由不同的线程来异步进行,让“专业”的线程从事“专业”的任务,相当于io操作和“计算”相互重叠,降低了延迟。

本实施例对海量接口调用,首先通过独立线程机制进行分类合并,以key-value键值对的形式入列等待队列,使得同一类(条件)的请求作为一种请求来响应,结果返回后分发。运用了线程池阻抗匹配技术接收线程,让每个线程池根据cpu的性能得出最优布局,入列等待执行的请求以先进先出的机制轮询执行队列线程池是否有空闲线程,有的话则入列执行线程池,调用执行线程进行接口调用,无论在等待队列还是执行队列,入列-出列(执行)快速多线程执行,提高了接口响应的并发度。接口io和“计算”拆分的响应机制,可以快速对接口调用后返回进行同类分发,同时对执行后线程进行空闲标识,提高了线程的利用率。

实施例六

如图7所示,根据本发明第二方面的实施例,提出了一种调用请求处理装置700,包括存储器702和处理器704,存储器702存储有计算机程序,处理器704执行计算机程序时实现上述第一方面实施例提出的终端的调用请求处理方法。因此该调用请求处理装置700具备上述第一方面实施例提出的终端的调用请求处理方法的全部有益效果。

实施例七

根据本发明第三方面的实施例,提出了一种终端,包括上述第二方面实施例提出的调用请求处理装置,调用请求处理装置执行计算机程序时能够执行以下步骤:获取终端的调用请求;根据预设分类条件对调用请求进行分类合并,生成请求列表;根据请求列表配置对应的线程池,并生成线程执行队列;根据线程执行队列执行接口调用操作。

在该实施例中,不同客户端对接口的调用会有一些不同的参数和规则要求,由于同一类(条件)的请求调用本质上与单一的请求返回机制是一样的,为此,对接口的海量调用请求根据预设分类条件进行归类,其中,预设分类条件包括参数、类型、规则等,将统一的业务、规则、参数的请求进行合并,生成请求列表,然后根据请求列表将合并归类后的调用请求调用组以键值对的形式入列到等待队列中,整个队列是一定数量的线程池,使得线程池能够对应同一类的调用请求,这些待执行的调用请求会去不断检查线程池中是否有空闲执行线程,如果存在空闲执行线程,则从等待队列出列到线程执行队列,并由线程池对应的空闲执行线程快速执行接口调用操作。从而形成合并请求-入列等待对垒-进入执行队列-执行并回调的循环机制,能够将同一类的调用请求作为一种请求来响应,分批量进行接口调用,进而在较少硬件资源条件下保证准确、高效、有序地响应调用请求,降低运行维护成本,且有利于问题追踪。

实施例八

根据本发明第四方面的实施例,提出了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时执行如上述第一方面实施例提出的终端的调用请求处理方法的步骤。因此该计算机可读存储介质具备上述任一实施例的调用请求处理方法的全部有益效果。

在本说明书的描述中,术语“第一”、“第二”仅用于描述的目的,而不能理解为指示或暗示相对重要性,除非另有明确的规定和限定;术语“连接”、“安装”、“固定”等均应做广义理解,例如,“连接”可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

在本说明书的描述中,术语“一个实施例”、“一些实施例”、“具体实施例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或实例。而且,描述的具体特征、结构、材料或特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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