一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

分布式测试系统节点负载均衡方法、系统、设备及介质与流程

2023-01-17 11:31:10 来源:中国专利 TAG:


1.本发明涉及分布式测试领域,更具体地,涉及分布式测试系统节点负载均衡方法、系统、设备及介质。


背景技术:

2.在进行大型系统的高并发用户测试时,由于一台计算节点的算力有限,通常需要3台甚至更多的计算节点,形成测试节点集群,即分布式测试系统,来并发执行多用户测试任务。例如,假设1台计算节点的算力只能承载100个用户的模拟压力测试,如果需要对被测系统模拟1000名用户并发访问,则通常需要配置10台计算节点来承载测试任务。
3.一套分布式测试系统,通常需要并发承担多个被测系统(例如oa系统、邮件系统、门户网站等)的压力测试任务。其测试的分配过程如下:
4.假设1台计算节点只能承载100名用户的仿真压力测试,分布式测试系统中有3台计算节点,oa系统的压力测试需要200名仿真用户,邮件系统的压力测试需要200名仿真用户,门户网站的压力测试需要200名仿真用户。通常由人工将这些仿真用户分配到这3台计算节点中去,例如计算节点1和2承担oa系统的200名仿真用户,计算节点2和3承担邮件系统的200名仿真用户,计算节点1和2承担门户网站的200名仿真用户。人工分配会存在的问题是:
5.(1)人工分配测试任务容易导致系统中的各计算节点的cpu负载不均衡,从而引起测试结果失真。在处理测试任务的过程中,各计算节点cpu负载不均衡的现象会导致“局部节点”出现cpu负载过高,引起“局部用户”请求及响应迟缓,造成测试结果偏差;
6.(2)各测试任务在cpu算力方面耦合严重,缺少cpu过载防护机制,新的超负载任务会导致分布式测试系统中的所有测试任务无法输出正常的测试结果。用户通过人工手段无法实时感知各计算节点的cpu负载是否过高,会盲目地、不停地向分布式测试系统中增加压力测试任务,导致分布式测试系统中各计算节点cpu负载过高,造成运行于当前分布式测试系统中的所有测试任务的测试结果不可靠,进一步导致整个分布式测试系统不可用。


技术实现要素:

7.本发明旨在克服上述现有技术的至少一种缺陷,提供分布式测试系统节点负载均衡方法、系统、设备及介质,用于解决现有的分布式测试系统出现的计算节点cpu负载不均衡导致测试结果引起偏差,以及缺少计算节点cpu过载保护机制导致测试结果不可靠的问题。
8.本发明采用的技术方案包括:
9.第一方面,本发明提供一种分布式测试系统多计算节点负载均衡方法,应用于管理节点,包括:每接收到若干个计算节点发送的cpu空闲率时,执行以下步骤:根据每个计算节点发送的cpu空闲率将每个计算节点分类为空闲节点或繁忙节点;针对每一个繁忙节点,检索出繁忙节点中最后一个加入的测试任务t,执行直接挂起操作或贪婪调度操作;所述直
接挂起操作为:通知所有计算节点停止执行测试任务t;并将测试任务t的状态设置为挂起;所述贪婪调度操作为:确定当前空闲节点的数量,当空闲节点的数量小于数量阈值时,执行所述直接挂起操作;当空闲节点的数量大于或等于数量阈值时,在繁忙节点上停止测试任务t,将繁忙节点上承载的测试任务t按比例下发给各个空闲节点执行。
10.本发明提供的分布式测试系统多计算节点负载均衡方法应用于管理节点,管理节点根据计算节点发送的cpu空闲率将计算节点分为空闲节点或繁忙节点,一旦出现繁忙节点,表示计算节点出现了cpu负载不均衡且超负载的现象,需要对繁忙节点进行处理,确定其最后一个加入的测试任务t后,本发明提供两种处理方式,一是通知所有计算节点暂停执行该测试任务t,并将其挂起,避免繁忙节点出现cpu超负载导致测试系统无法正常测试的问题,也有效提高繁忙节点的cpu空闲率,使其转为空闲节点,防止局部节点cpu畸高的现象,为压力测试结果的有效性提供保证。第二种处理方式是将测试任务t通过贪婪调度的方式转由空闲节点处理,前提是空闲节点的数量大于一定阈值,否则贪婪调度测试任务t可能会造成其他空闲节点的cpu畸高的情况,通过贪婪调度的方式可以使测试系统各节点的算力更充分地发挥,尽量减少测试任务的“挂起”。
11.进一步,在贪婪调度操作中,当空闲节点的数量大于或等于数量阈值时,在繁忙节点上停止测试任务t,将繁忙节点上承载的测试任务t按比例下发给各个空闲节点执行,具体包括:当空闲节点的数量大于或等于数量阈值时,将除最后一个空闲节点以外的空闲节点即将分担的测试任务t的仿真用户数量设置为x1个,将最后一个空闲节点分担的测试任务t的仿真用户数量设置为y1个,根据为每个空闲节点设置的仿真用户数量将测试任务t下发给各个空闲节点执行;所述x1和y1分别通过式子x1=floor(u/n)以及式子y1=n-floor(u1/n)*(n-1)确定,其中,u1为测试任务t的总仿真用户数量,n为当前空闲节点的数量,floor()为向下取整的函数。
12.在贪婪调度测试任务t的过程中,预先计算并设定好每个空闲节点所需处理的测试任务t的仿真用户数量,并根据计算好的仿真用户数量将测试任务t分配到各个空闲节点执行。
13.进一步,方法还包括:针对每个任务状态被设置为挂起的测试任务,确定当前空闲节点的数量,当空闲节点的数量小于数量阈值时,不执行任何操作;当空闲节点的数量大于或等于数量阈值时,将被设置为挂起的测试任务按比例下发给各个空闲节点执行。
14.在本发明提供的方法中,某些任务会由于计算节点的空闲率处于被挂起的状态,挂起的测试任务在空闲节点的数量达到一定数量后,可以以贪婪调度的方式再次进行分配。
15.进一步,针对每个任务状态被设置为挂起的测试任务,当空闲节点的数量大于或等于数量阈值时,将被设置为挂起的、且任务接收时间最早的测试任务按比例下发给各个空闲节点执行,具体包括:针对每个任务状态被设置为挂起的测试任务,当空闲节点的数量大于或等于数量阈值时,将除最后一个空闲节点以外的空闲节点即将分担的测试任务的仿真用户数量设置为x2个,将最后一个空闲节点分担的测试任务的仿真用户数量设置为y2个,根据为每个空闲节点设置的仿真用户数量将被设置为挂起的、且任务接收时间最早的测试任务下发给各个空闲节点执行;所述x2和y2分别通过式子x2=floor(u2/n)以及式子y2=n-floor(u2/n)*(n-1)确定,其中,u2为被设置为挂起的、且任务接收时间最早的测试任务的总
仿真用户数量,n为当前空闲节点的数量,floor()为向下取整的函数。
16.进一步,每隔预设的第一时间间隔针对一个繁忙节点执行相应的操作;每隔预设的第二时间间隔针对一个任务状态被设置为挂起的测试任务执行相应的操作。
17.为了防止测试任务的执行尚未进入“稳态”造成的系统波动,通常在对下一个繁忙节点处理之前,需要间隔一定时间,同理,从“被挂起”的测试任务队列中选择测试任务纳入执行后,需要间隔一定时间再调度下一个被挂起的测试任务。
18.第二方面,本发明提供一种分布式测试系统多计算节点负载均衡方法,应用于计算节点,包括:定时采集当前的cpu空闲率并发送至管理节点,以使管理节点在每接收到所发送的cpu空闲率时,根据所发送的cpu空闲率将计算节点分类为空闲节点或繁忙节点;针对每一个繁忙节点,检索出繁忙节点中最后一个加入的测试任务t,执行直接挂起操作或贪婪调度操作;在所述管理节点执行直接挂起操作的过程中,接收管理节点发出的停止执行测试任务t的通知后,停止执行测试任务t;在所述管理节点执行贪婪调度操作的过程中,当接收到管理节点发出的测试任务t时,执行所接收到的测试任务t。
19.第三方面,本发明提供一种分布式测试系统多计算节点负载均衡系统,包括:至少一个管理节点,包括任务管理器;若干个计算节点,每个计算节点包括采集器和执行器;所述任务管理器用于接收用户下发的测试任务;还用于在每接收到若干个计算节点发送的cpu空闲率时,根据每个计算节点发送的cpu空闲率将每个计算节点分类为空闲节点或繁忙节点;针对每一个繁忙节点,检索出繁忙节点中最后一个加入的测试任务t,执行直接挂起操作或贪婪调度操作;所述直接挂起操作为:通知所有计算节点停止执行测试任务t;并将测试任务t的状态设置为挂起;所述贪婪调度操作为:确定当前空闲节点的数量,当空闲节点的数量小于数量阈值时,执行所述直接挂起操作;当空闲节点的数量大于或等于数量阈值时,在繁忙节点上停止测试任务t,将繁忙节点上承载的测试任务t按比例下发给各个空闲节点;所述采集器用于定时采集当前的cpu空闲率并发送至管理节点;所述执行器用于在接收到管理节点发出的停止执行测试任务的通知时,停止执行测试任务;在接收到管理节点发出的测试任务时,执行所接收到的测试任务。
20.第四方面,本发明提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述的分布式测试系统多计算节点负载均衡方法。
21.第五方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的分布式测试系统多计算节点负载均衡方法。
22.与现有技术相比,本发明的有益效果为:
23.本发明提供的分布式测试系统多计算节点负载均衡方法应用于管理节点和计算节点之间的任务调度,计算节点定时采集自身的cpu空闲率并发送至管理节点,管理节点根据计算节点发送的cpu空闲率将计算节点分为空闲节点或繁忙节点,一旦出现繁忙节点,表示计算节点出现了cpu负载不均衡且超负载的现象,确定其最后一个加入的测试任务t,提供两种处理方式,一是通知所有计算节点暂停执行该测试任务t,并将测试任务t挂起,避免繁忙节点出现cpu超负载导致测试系统无法正常测试的问题,也有效提高该繁忙节点的cpu空闲率,使其转为空闲节点,防止局部节点cpu畸高的现象,为压力测试结果的有效性提供保证。第二种处理方式是将测试任务t通过贪婪调度的方式转由空闲节点处理。该方法使分
布式测试系统具有系统压力自动保护系功能,防止人工调度的超负载任务导致整个分布式测试系统无法正常测试,为分布式测试系统的可靠运行提供保障。
附图说明
24.图1为本发明实施例1的方法步骤s110~s120的流程示意图。
25.图2为本发明实施例1的方法步骤t110~t120的流程示意图。
26.图3为本发明实施例1的方法步骤r110~r150的流程示意图。
27.图4为本发明实施例1的方法步骤q110~q130的流程示意图。
28.图5为本发明实施例3的系统的组成示意图。
具体实施方式
29.本发明附图仅用于示例性说明,不能理解为对本发明的限制。为了更好说明以下实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
30.实施例1
31.本实施例提供一种分布式测试系统多计算节点负载均衡方法,应用于分布式测试系统中的管理节点,管理节点一般是计算节点中的其中一个,将其中一个计算节点复用为管理节点,管理节点中部署有任务管理器。该方法用于在测试过程中对计算节点的cpu情况监控,并基于此灵活调度各测试任务,使整个分布式测试系统可以持续性运行,测试结果具有有效性。
32.如图1所示,该方法包括以下步骤:
33.s110、当接收若干个计算节点发送的cpu空闲率时,根据每个计算节点发送的cpu空闲率将每个计算节点分类为空闲节点或繁忙节点;
34.本步骤以及后续步骤均会在每次管理节点接收到计算节点发送的cpu空闲率时被执行,计算节点将定时向管理节点发送一次更新后的cpu空闲率。
35.具体地,在本步骤中,可预设一个cpu空闲阈值,将每个计算节点发送的cpu空闲率与预设的cpu空闲阈值进行比较,当计算节点的cpu空闲率超过cpu空闲阈值时,将其分类为繁忙节点,相反,将其分类为空闲节点。
36.在具体的实施方式中,管理节点部署的任务管理器中,存储有“节点清单”,“节点清单”各字段示意如表1所示:
37.表1
[0038][0039]
其中,“测试节点清单testnode”中一般存储有以下信息,如表2所示:
[0040]
表2
[0041][0042]“测试清单taskinfo”中一般存储有以下信息,如表3所示:
[0043]
表3
[0044]
[0045][0046]
s120、针对每一个繁忙节点,检索出繁忙节点中最后一个加入的测试任务t,执行直接挂起操作或贪婪调度操作;
[0047]
检索出繁忙节点中最后一个加入的测试任务t后,识别出该繁忙节点分担的测试任务t的仿真用户数u。
[0048]
其中,如图2所示,直接挂起操作包括以下步骤:
[0049]
t110、通知所有计算节点停止执行测试任务t;
[0050]
t120、将测试任务t的状态设置为挂起。
[0051]
在本步骤中,管理节点具体是在任务管理器的测试清单中将该测试任务的任务状态从“执行中”设置为“挂起”。
[0052]
如图3所示,贪婪调度操作包括以下步骤:
[0053]
r110、确定当前空闲节点的数量;
[0054]
r120、选择所有空闲节点作为分担繁忙节点测试任务t的目标节点;
[0055]
r130、判断空闲节点的数量是否大于或等于数量阈值,如是,执行步骤r140;如否,执行步骤r150;
[0056]
优选地,该数量阈值的数值定为3,若空闲节点的数量大于或等于数量阈值,意味着系统当前有空闲节点可以为繁忙节点分担测试任务,相反,意味着没有空闲节点可以分担。
[0057]
r140、在繁忙节点上停止测试任务t,将该繁忙节点上承载的测试任务t按比例下发给各个空闲节点执行;
[0058]
具体地,在本步骤中,将测试任务t按比例下发给各个空闲节点执行的具体过程为:
[0059]
当前空闲节点的数量为n。将1~(n-1)个空闲节点即将分担的测试任务t的仿真用户数量设置为x1个,将第n个空闲节点分担的测试任务t的仿真用户数量设置为y1个,根据为每个空闲节点设置的仿真用户数量将测试任务t下发给各个空闲节点执行。
[0060]
x1和y1分别通过式子x1=floor(u/n)以及式子y1=n-floor(u1/n)*(n-1)确定,其中,u1为测试任务t的总仿真用户数量,n为当前空闲节点的数量,floor()为向下取整的函数。
[0061]
r150、对繁忙节点执行直接挂起操作t110~t120;
[0062]
在整体步骤s120中,为了防止测试任务的执行尚未进入“稳态”造成的系统波动,本步骤在针对一个繁忙节点处理后,在对下一个繁忙节点处理之前,需要间隔一定时间,可预设第一时间间隔,优选地,第一时间间隔可设为10s。
[0063]
在优选的实施方式中,针对每个任务状态被设置为挂起的测试任务,本实施例提供的方法还包括了在空闲节点可以分担被挂起的测试任务时,按比例分配至各个空闲节点执行的步骤,所有未分配到测试资源的测试任务都被缓存在管理节点的“节点清单”的“测试清单list《taskinfo》”中,且“状态status”为“挂起”。任务管理器将定时检查系统中有无空闲的测试资源,如果有空闲的测试资源,则会从被挂起的测试任务中选择“任务接收时间:accepttime”最早的任务进行执行。
[0064]
如图4所示,针对任务状态被设置为挂起的测试任务,执行以下步骤:
[0065]
q110、确定当前空闲节点的数量;
[0066]
q120、判断空闲节点的数量是否大于或等于数量阈值,如是,执行步骤q130;
[0067]
优选地,该数量阈值的数值定为3,若空闲节点的数量大于或等于数量阈值,意味着系统当前有空闲节点可以分担被挂起的测试任务,相反,意味着没有空闲节点可以分担。
[0068]
在本步骤中,如空闲节点的数量小于数量阈值,暂不执行任何操作,可待其余计算节点重新向管理节点反馈新的cpu空闲率后再重新执行步骤q110以及后续步骤进行判断。
[0069]
q130、将被设置为挂起的、且任务接收时间最早的测试任务按比例下发给各个空闲节点执行;
[0070]
在本步骤中,每个任务的任务接收时间可以通过任务管理器的“测试清单taskinfo”的“任务接收时间:accepttime”字段确定。
[0071]
具体地,在本步骤中,将被设置为挂起的测试任务按比例下发给各个空闲节点执行的具体过程为:
[0072]
当前空闲节点的数量为n。将1~(n-1)个空闲节点即将分担的测试任务的仿真用户数量设置为x2个,将第n个空闲节点分担的测试任务的仿真用户数量设置为y2个,根据为每个空闲节点设置的仿真用户数量将被设置为挂起的、且任务接收时间最早的测试任务下发给各个空闲节点执行。
[0073]
其中,x2和y2分别通过式子x2=floor(u2/n)以及式子y2=n-floor(u2/n)*(n-1)确定,其中,u2为被设置为挂起的、且任务接收时间最早的测试任务的总仿真用户数量,n为当前空闲节点的数量,floor()为向下取整的函数。
[0074]
为了防止测试任务的执行尚未进入“稳态”造成的系统波动,在处理了一个被挂起的测试任务后,在对下一个被挂起的测试任务之前,需要间隔一定时间,可预设第二时间间隔,优选地,第二时间间隔可设为10s。
[0075]
本发明提供的分布式测试系统多计算节点负载均衡方法应用于管理节点,管理节点根据计算节点发送的cpu空闲率将计算节点分为空闲节点或繁忙节点,一旦出现繁忙节点,确定其最后一个加入的测试任务t后,本发明提供两种处理方式,一是直接挂起测试任务t,防止局部节点cpu畸高的现象,为压力测试结果的有效性提供保证。第二种处理方式是将测试任务t通过贪婪调度的方式转由空闲节点处理。该方法使分布式测试系统具有系统压力自动保护系功能,防止人工调度的超负载任务导致整个分布式测试系统无法正常测
试,为分布式测试系统的可靠运行提供保障。
[0076]
实施例2
[0077]
基于与实施例1相同的构思,本实施例提供一种分布式测试系统多计算节点负载均衡方法,应用于分布式测试系统中的计算节点。计算节点中部署有采集器和执行器。
[0078]
该方法包括以下步骤:
[0079]
s210、定时采集当前的cpu空闲率并发送至管理节点;
[0080]
该步骤由每个计算节点中的采集器完成,具体地,采集器用于按照管理节点下发的配置要求,定时采集当前计算节点的cpu空闲率,例如每隔10秒采集1次当前节点的cpu空闲率,并将采集结果上报给管理节点。
[0081]
管理节点在每接收到所发送的cpu空闲率时,根据所发送的cpu空闲率将计算节点分类为空闲节点或繁忙节点,针对每一个繁忙节点,检索出繁忙节点中最后一个加入的测试任务t,执行直接挂起操作或贪婪调度操作。
[0082]
在管理节点执行直接挂起操作的过程中,该方法包括步骤:
[0083]
s220、接收管理节点发出的停止执行测试任务t的通知,并停止执行测试任务t;
[0084]
具体地,执行器停止执行测试任务时,是将该测试任务从当前节点中删除执行。
[0085]
在管理节点执行贪婪调度操作的过程中,该方法包括步骤:
[0086]
s230、接收到管理节点发出的测试任务t,执行所接收到的测试任务t。
[0087]
步骤s220以及步骤s230均由每个计算节点中的执行器完成,具体地,执行器负责将指定的测试任务t分配到当前节点执行,或者将指定的测试任务t从当前节点删除执行。
[0088]
执行器中通常存储有“任务清单”,该字段示意如表4所示:
[0089]
表4
[0090][0091]“任务清单”中的每个任务节点tasknode含有信息如表5所示:
[0092]
表5
[0093][0094]
在本实施例中所述管理节点为执行了实施例1提供的方法的管理节点,即本实施例提供的方法除了应用对象不相同之外,其工作原理、专用词语的解释以及步骤对应的说明和有益效果均与和实施例1相同,在此不再赘述。
[0095]
实施例3
[0096]
基于与实施例1、2相同的构思,本实施例提供一种分布式测试系统多计算节点320负载均衡系统,如图5所示,该系统包括:
[0097]
至少一个管理节点310,包括任务管理器311;若干个计算节点320,每个计算节点320包括采集器321和执行器322。
[0098]
在系统初始化时,需向系统中添加计算节点320,并选定其中1个计算节点320复用为管理节点310。由于系统为分布式测试系统,计算节点320的数量一般不少于3个。添加后,系统中计算节点320的数量为n。
[0099]
任务管理器311用于:
[0100]
接收用户下发的测试任务。
[0101]
在每接收到若干个计算节点320发送的cpu空闲率时,根据每个计算节点320发送的cpu空闲率将每个计算节点320分类为空闲节点或繁忙节点。
[0102]
在具体的实施方式中,管理节点310会向各计算节点320的“采集器321”下发cpu采集的时间间隔。优选地,推荐将该时间间隔设置为10秒钟。
[0103]
针对每一个繁忙节点,检索出繁忙节点中最后一个加入的测试任务t,执行直接挂起操作或贪婪调度操作;
[0104]
直接挂起操作为:通知所有计算节点320停止执行测试任务t;并将测试任务t的状
态设置为挂起。
[0105]
贪婪调度操作为:确定当前空闲节点的数量,当空闲节点的数量小于数量阈值时,执行直接挂起操作;当空闲节点的数量大于或等于数量阈值时,在繁忙节点上停止测试任务t,将繁忙节点上承载的测试任务t按比例下发给各个空闲节点。
[0106]
具体地,在贪婪调度操作中,当空闲节点的数量大于或等于数量阈值时,将除最后一个空闲节点以外的空闲节点即将分担的测试任务t的仿真用户数量设置为x1个,将最后一个空闲节点分担的测试任务t的仿真用户数量设置为y1个,根据为每个空闲节点设置的仿真用户数量将测试任务t下发给各个空闲节点执行。
[0107]
x1和y1分别通过式子x1=floor(u/n)以及式子y1=n-floor(u1/n)*(n-1)确定,其中,u1为测试任务t的总仿真用户数量,n为当前空闲节点的数量,floor()为向下取整的函数。
[0108]
每个计算节点320的采集器321用于定时采集当前的cpu空闲率并发送至管理节点310。
[0109]
每个计算节点320执行器322用于在接收到管理节点310发出的停止执行测试任务的通知时,停止执行测试任务;在接收到管理节点310发出的测试任务时,执行所接收到的测试任务。
[0110]
在优选的实施方式中,所有未分配到测试资源的测试任务都被缓存在管理节点310中。任务管理器311将定时检查系统中有无空闲的测试资源,如果有空闲的测试资源,则会从被挂起的测试任务中选择最早的任务进行执行。
[0111]
任务管理器311具体还用于:确定当前空闲节点的数量;当空闲节点的数量是否大于或等于数量阈值时,将被设置为挂起的测试任务按比例下发给各个空闲节点执行;当空闲节点的数量小于数量阈值,待其余计算节点320重新向管理节点310反馈新的cpu空闲率后再重新进行判断。
[0112]
具体地,将被设置为挂起的、且任务接收时间最早的测试任务按比例下发给各个空闲节点执行的具体过程为:
[0113]
当前空闲节点的数量为n。将1~(n-1)个空闲节点即将分担的测试任务的仿真用户数量设置为x2个,将第n个空闲节点分担的测试任务的仿真用户数量设置为y2个,根据为每个空闲节点设置的仿真用户数量将被设置为挂起的测试任务下发给各个空闲节点执行。
[0114]
其中,x2和y2分别通过式子x2=floor(u2/n)以及式子y2=n-floor(u2/n)*(n-1)确定,其中,u2为被设置为挂起的、且任务接收时间最早的测试任务的总仿真用户数量,n为当前空闲节点的数量,floor()为向下取整的函数。
[0115]
本实施例提供的系统与实施例1、2基于相同的发明构思,其工作原理、专用词语的解释以及步骤对应的说明和有益效果均与和实施例1、2相同,在此不再赘述。
[0116]
显然,本发明的上述实施例仅仅是为清楚地说明本发明技术方案所作的举例,而并非是对本发明的具体实施方式的限定。凡在本发明权利要求书的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献