信息处理装置、资源控制方法、以及程序的制作方法

文档序号:6537736阅读:106来源:国知局
信息处理装置、资源控制方法、以及程序的制作方法
【专利摘要】提供了一种信息处理装置,包括确定单元,当使用可扩展处理资源执行形成应用的程序模块时,该确定单元基于每一程序模块的负载的测量结果确定是否改变分配给一个或多个程序模块的处理的数目。
【专利说明】信息处理装置、资源控制方法、以及程序
[0001]相关申请的交叉应用
[0002]本申请要求2013年2月22日提交的日本优先权专利申请JP2013-033451的权益,其全部内容通过引用并入此处。
【技术领域】
[0003]本公开涉及一种信息处理装置、资源控制方法、以及程序。
【背景技术】
[0004]最近几年,称为云计算的计算机使用形式已被广泛采用。根据国家标准与技术协会的定义,云计算为一种使得能够方便地、根据请求对可配置的计算资源的共享池进行网络访问的模型以及一种以最小使用过程或者与服务提供商的最小交互迅速分配和提供资源的模型。
[0005]云计算的特征之一是响应于用户或者应用的请求迅速或自动地提供可扩展(scalable)资源以及进行资源的规模压缩(scale in)或者规模扩展(scale out)。一般而言,所述规模压缩指的是资源大小(规模)的减小,所述规模扩展指的是资源大小的扩大。例如,“Auto Scaling”,[在线][2013 年 I 月 28 日搜索的]InterneiXURLzhttpV/aws-amazon.com/en/autoscaling/>描述了一种在处理的负载大于用户预先设置的阈值时自动增加物理或者虚拟应用服务器实例分配数目的方法。JP2001-118525A公开了一种使用服务器的负载历史、根据预测的未来负载进行服务器的规模压缩或者规模扩展的方法。

【发明内容】

[0006]然而,不仅处理器,而且诸如内存、输入/输出(1/0)设备以及通信设备等各种资源也与服务器相关联。在以服务器为单位的规模压缩或者规模扩展中,难以无浪费的使用资源。
[0007]因此,期望实现能够有效利用资源、而非以服务器为单位的粗略资源控制的结构。
[0008]根据本公开的一个实施例,提供了一种信息处理装置,包括:确定单元,当使用可扩展处理资源执行形成应用的程序模块时,其基于每一程序模块的负载的测量结果确定是否改变分配给一个或多个程序模块的处理的数目。
[0009]根据本公开的一个实施例,提供了一种信息处理装置执行的资源控制方法,该资源控制方法包括:当使用可扩展处理资源执行形成应用的程序模块时,基于每一程序模块的负载的测量结果确定是否改变分配给一个或多个程序模块的处理的数目。
[0010]根据本公开的一个实施例,提供了一种使得控制信息处理装置的计算机起下述作用的程序:确定单元,当使用可扩展处理资源执行形成应用的程序模块时,其基于每一程序模块的负载的测量结果确定是否改变分配给一个或多个程序模块的处理的数目。
[0011]根据与本公开相关的技术的实施例,能够比以服务器为单位的资源控制更有效地利用计算资源。【专利附图】

【附图说明】
[0012]图1为描述根据实施例的信息处理装置的概览的说明图;
[0013]图2A为描述以服务器为单位进行资源控制的示例的第一说明图;
[0014]图2B为描述以服务器为单位进行资源控制的示例的第二说明图;
[0015]图2C为描述以处理为单位进行资源控制的示例的第一说明图;
[0016]图2D为描述以处理为单位进行资源控制的示例的第二说明图;
[0017]图3为说明根据第一实施例的信息处理装置的配置的示例的框图;
[0018]图4为描述针对每一程序模块测量负载的方法的一个示例的说明图;
[0019]图5A为描述根据负载率分配处理器数目的第一示例的说明图;
[0020]图5B为描述根据负载率分配处理器数目的第二示例的说明图;
[0021]图6为描述针对每一程序模块测量负载的方法的另一个示例的说明图;
[0022]图7为描述针对每一程序模块测量负载的方法的又一个示例的说明图;
[0023]图8为描述针对每一程序模块测量负载的方法的再一个示例的说明图;
[0024]图9为图示说明在第一实施例中执行的资源控制处理的流程的示例的流程图;
[0025]图10为图示说明图9中图示说明的资源分配确定处理的详细流程的示例的流程图;
[0026]图11为图示说明根据第二实施例的信息处理装置的配置的示例的框图;以及
[0027]图12为描述表示请求数目与资源的必需规模之间的关系的资源模型的说明图。
【具体实施方式】
[0028]以下,将参照附图详细描述本公开的优选实施例。注意,在本说明书与附图中,具有基本相同的功能与结构的结构元件用相同的参考标号来指示,并省略对这些结构元件的重复说明。
[0029]将按以下顺序进行描述。
[0030]1.介绍
[0031]2.第一实施例
[0032]2-1.装置的配置的示例
[0033]2-2.处理的流程
[0034]3.第二实施例
[0035]4.结论
[0036]< 1.介绍>
[0037]首先,将参照图1到2D描述根据实施例的信息处理装置的介绍。
[0038]图1为描述根据实施例的信息处理装置100的概览的说明图。参照图1,图示说明了计算系统10和控制计算系统10的资源的信息处理装置100。
[0039]计算系统10为具有用于执行应用的资源的系统。更具体地,计算系统10使用可扩展处理资源执行应用中包括的一个或多个程序模块。在图1的示例中,计算系统10包括处理器20、内存30、存储器40以及通信设备50。例如,处理器20可以为中央处理单元(CPU)或者数字信号处理器(DSP)。内存30包括随机存取存储器(RAM)和只读存储器(R0M),并存储处理器20执行的程序代码。例如,存储器40可以是诸如硬盘的大容量存储介质,并存储将被输入到每一程序模块的数据和将从每一程序模块输出的数据。通信设备50在计算系统10和另一装置之间中继通信。实践中,计算系统10可以是一台物理计算机或多台物理计算机的集合。
[0040]在现有的云计算系统中,能够以服务器为单位虚拟化资源。可以根据用户或者应用的需要动态地改变虚拟服务器的数目。在图1的示例中,计算系统10包括M个服务器S1、S2>…、以及SM。服务器SpS2、…、以及Sm中的每一个服务器分配内存30的一部分内存空间,并包括与存储器40的接口以及与通信设备50的接口。
[0041]为了实现资源的更灵活的可扩展性(scalability),服务器S:、S2、…、以及SM中的每一个服务器包括一个或多个处理Pij (其中,i=l,2,…,M且j=l,2,…,以及Nm)。此处,Ni为第i个服务器的处理的数目。例如,为了实时地处理所谓“大数据”,使用由Twitter(注册商标)的开发者所建议的Storm框架中称为服务器与处理的层次结构管理处理资源。Storm为可用于实现与本公开相关的技术的实施例相关的技术的框架的示例。
[0042]此处,尽管把处理资源层次化到服务器与处理,然而当以服务器为单位执行资源的规模压缩和规模扩展时,可能浪费资源,如在现有的结构中那样。
[0043]图2A和2B为描述以服务器为单位进行资源控制的示例的说明图。参照图2A,图示说明了包括程序模块Ml和M2的 应用。例如,服务器S1被分配给程序模块Ml。服务器S1包括处理P11和P12、内存空间Rlb、I/O接口 R1。、以及通信接口 Rld。服务器S2被分配给程序模块M2。服务器&包括处理P21、P22以及P23、内存空间R2b、I/0接口 R2。、以及通信接口 R2d。
[0044]负载L1为针对程序模块Ml测量的负载。负载L2为针对程序模块M2测量的负载。此处,例如,当检测到或者预测到对一应用的处理请求增加,并且希望避免负载L2的增加时,可以执行针对程序模块M2的以服务器为单位的规模扩展。参照图2B,服务器S3被新分配给程序模块M2。服务器S3包括处理P31、内存空间R3b、I/0接口 R3。、以及通信接口 R3d。然而,存在着增加负载L2的各种原因。例如,当程序模块M2被特征化为执行多个计算或者复杂计算时,处理资源的缺乏可能是增加负载L2的主要原因。另一方面,当程序模块M2被特征化为读或者写大量数据时,内存资源的缺乏或者在不缺乏处理资源的情况下对I/O的长等待时间可能是增加负载L2的主要原因。在后一种情况下,用于物理或者虚拟服务器数目的增加的以服务器为单位的规模扩展可能是一种有效的对策。然而,在前一种情况下,物理或者虚拟服务器数目的增加可能由此导致内存空间以及I/O接口的浪费。
[0045]因此,在与本公开相关的技术的实施例中,引入了信息处理装置100,以控制以处理为单位将被分配到各程序模块的资源。信息处理装置100调整负载,以便满足应用的期望的性能(吞吐量、延迟时间等),同时通过控制以处理为单位将被分配到各程序模块的资源来有效使用计算系统10的资源。
[0046]图2C和2D为描述以处理为单位进行资源控制的示例的说明图。参照图2C,再次图示说明了图2A中所图示说明的包括程序模块Ml和M2的应用。分配到程序模块M2的服务器的数目保持为1,服务器S2内部的处理P24被新分配到程序模块M2。对于特征化为执行多个计算或者复杂计算的程序模块,以处理为单位的规模扩展能够在不造成内存空间和I/O接口的浪费的情况下抑制负载。
[0047]本公开的实施例不限于图2A到2C的示例,一个服务器可以被分配给多个程序模块。参照图2D,服务器括处理Pn、P12、P13和P14、内存空间Rlb、I/0接口 R1。、以及通信接口 Rld。服务器&包括处理P21、P22、P23和P24、内存空间R2b、I/0接口 R2。、以及通信接口 R2d。服务器S1的处理P11和P12被分配给程序模块Ml。服务器S1的处理P13和P14以及服务器S2的处理P21、P22> P23和P24被分配给程序模块M2。即使在这一情况下,信息处理装置100也能够控制以处理为单位将要分配给程序模块Ml和M2的资源。
[0048]<2.第一实施例>
[0049]信息处理装置100可以由经营云计算服务的服务提供商作为服务的一部分进行安装。取而代之,信息处理装置100可以由使用云计算服务的用户进行安装。与本公开的实施例相关的技术也可以应用于并非必须以术语“云计算”表示的形式的服务。例如,信息处理装置100可以是通用个人计算机(PC)或者工作站,或可以是为了控制资源的独特目的而设计的专用装置。
[0050][2-1.装置的配置的示例]
[0051]图3是图示说明根据第一实施例的信息处理装置100的配置的示例的框图。参照图3,信息处理装置100包括程序结构DBl 10、资源结构DB120、负载测量单元130、确定单元140、以及资源控制单元150。
[0052](I)程序结构DB
[0053]程序结构DBllO是存储指示计算系统10执行的一或多个应用的程序结构的程序结构数据的数据库。程序结构数据指示在每一个应用中包括的一个或多个程序模块的列表以及程序模块之间的调用关系。另外,程序结构数据还包括用于标识每一程序模块的输入数据和输出数据的信息。程序结构数据可以通过分析应用自动地生成,也可以由开发应用的用户生成。以下将详细描述几个典型程序结构的例子。
[0054](2)资源结构DB
[0055]资源结构DB120是存储指示分配到计算系统10正执行的应用的每一个程序模块的资源的结构的资源结构数据的数据库。计算系统10的处理资源为可针对其动态改变分配规模的资源,即如上所述的可扩展资源。例如,资源结构数据根据程序模块指示所分配的服务器的数目以及每一服务器的所分配的处理的数目。当通过以下将要描述的资源控制单元150改变资源的分配时,更新资源结构DB120存储的资源结构数据,以便反映这一改变。
[0056](3)负载测量单元
[0057]负载测量单元130对计算系统10正在执行的应用中包括的每一程序模块的负载进行测量。在本实施例中,负载测量单元130测量的负载包括每一程序模块的计算负载以及每一服务器的非计算负载。例如,非计算负载包括内存负载(内存使用率等)、I/O负载(每单位时间的I/O数目、I/O等待时间等)、以及通信负载(每单位时间的通信数据量、通信等待时间等)中的至少一个。通常,计算负载为施加于处理器的负载。然而,在许多云计算环境中,当执行某一程序模块时,难以直接测量把多少负载施加至哪一处理器。因此,在本实施例中,在针对每一程序模块的处理期间,负载测量单元130测量输入数据的数量作为计算负载。可以通过从每一程序模块的输入数据量减去输出数据量,计算处理期间的输入数据量。在云计算环境中,即使处理资源被高度虚拟化也可以监视安装在存储器中的文件系统。因此,通过采用使用文件系统上的输入数据量和输出数据量近似导引计算负载的方法,可以标识每一程序模块的计算负载而不需要对云计算环境的系统的改变。[0058]图4为描述测量每一程序模块的负载的方法的示例的说明图。参见图4,图示说明了包括在应用APl中的4个程序模块Mn、M12J1JPM1415例如,应用APl为自动向图像相册添加输入图像(例如,终端用户成像的照片)的图像处理应用。程序模块M11通过分析输入图像的特性提取图像特性量。程序模块M12把所提取的特性量与其它图像的特性量进行比较,并确定图像之间的相似性。程序模块M13根据确定的相似性把输入图像分类至多个组之一(或者一个新的组)。程序模块M14把每一个输入图像添加到输入图像被分类到的组的相册。如图4中图示说明的,程序模块Mn、M12、M13和M14具有简单的顺序调用关系。即,程序模块M11接收输入图像作为输入数据、接收输出图像特性量、并且把输入图像的状态改变为已分析的图像。输入图像的数目Dltl和已分析图像的数目D11分别与程序模块M11的输入数据的数量和输出数据的数量相同。程序模块M12接收图像特性量作为输入数据,输出相似性集合作为相似性确定的结果,并且把已分析图像的状态改变为已确定图像。已分析图像的数目D11和已确定图像的数目D12分别与程序模块M12的输入数据的数量和输出数据的数量相同。程序模块M13接收相似性的集合作为输入数据,输出分类结果(例如,每一个输入图像属于的组的标识符),并且把已确定图像的状态改变为已分类图像。已确定图像的数目D12和已分类图像的数目D13分别与程序模块M13的输入数据的数量和输出数据的数量相同。程序模块M14接收所述分类的结果作为输入数据,把输入图像添加到相应的相册,并且把已分类图像的状态改变为已处理图像。已分类图像的数目D13和已处理图像的数目D14分别与程序模块M14的输入数据的数量和输出数据的数量相同。负载测量单元130可以如下基于输入和输出数据的数量D11到D14测量程序模块Mn、M12、M13和M14的负载Ln、L12, L13和L14。
[0059][数学表达式I]
[0060]L11=D11-D10 (I)
[0061]L12=D12-D11 (2)
[0062]L13=D13-D12 (3)
[0063]L14=D14-D13 (4)
[0064]负载测量单元130在应用执行的同时周期性地测量计算负载。另外,负载测量单元130在应用执行的同时周期性地测量非计算负载。负载测量单元130把测量的计算负载和非计算负载的值输出到确定单元140。参考图4所描述的应用仅仅是一个示例。与本公开的实施例相关的技术可以应用于一种不同于图4中图示说明的示例的应用。
[0065](4)确定单元
[0066]确定单元140根据从负载测量单元130输入的每一程序模块的负载的测量结果确定是否改变分配到每一程序模块的处理的数目。例如,当针对一给定程序模块所测量的负载大于预先可定义的阈值时,确定单元140可以确定增加分配到这一程序模块的处理的数目。另外,当针对一程序模块所测量的负载小于(相同或者不同)预先可定义的阈值时,确定单元140可以确定减少分配到这一程序模块的处理的数目。
[0067]在本实施例中,确定单元140还基于针对每一服务器所测量的非计算负载确定是否改变分配到每一程序模块的服务器的数目。例如,当确定单元140确定增加分配到一给定程序模块的处理的数目并且非计算负载大于预先可定义的阈值时,确定单元140可以确定增加分配到这一程序模块的服务器的数目。通过引入这一确定,当非计算负载为过载的主要原因时,可以通过动态地增加服务器的数目来解决或减少负载。另外,当确定单元140确定增加分配到一给定程序模块的处理的数目并且非计算负载小于阈值时,确定单元140可以确定增加分配到这一程序模块的处理的数目,同时保持分配到这一程序模块的服务器的数目。通过引入这一确定,当计算负载为过载的主要原因时,可以通过动态地增加处理的数目来解决或减少负载而不需要添加对负载无贡献的资源。同样,当确定单元140确定减少分配到一给定程序模块的处理的数目时,确定单元140可以基于非计算负载与阈值之间的比较确定是否减少分配到这一程序模块的服务器的数目。
[0068]确定单元140基于对资源控制单元150的负载的测量结果输出该确定的结果。
[0069](5)资源控制单元
[0070]资源控制单元150针对确定单元140确定要改变所分配的处理的数目的程序模块改变处理的数目的分配。例如,资源控制单元150可以简单地向确定针对其增加处理的数目的程序模块的所分配的处理数目加I。取而代之,资源控制单元150可以根据此时负载的大小,将处理的数目增加不同的数目。因此,当不减少负载时,可以在随后的控制时间段进一步增加处理的数目。同样,资源控制单元150可以简单地从确定针对其减少处理的数目的程序模块的所分配的处理数目减I。取而代之,资源控制单元150可以根据此时负载的大小,将处理的数目减少不同的数目。资源控制单元150可以对于确定要改变被分配的服务器的数目的程序模块改变服务器数目的分配。当重复该资源控制时,更多数量的处理由此被分配给指示高比率的正被处理的输入数据的数量的程序模块。
[0071]当针对一给定程序模块改变处理的数目或者处理数目和服务器数目的分配时,资源控制单元150通过把控制信号传送到计算系统10,改变计算系统10的资源结构。另外,资源控制单元150还更新资源结构DB120存储的资源结构数据。
[0072]图5A为描述根据负载率分配处理数目的第一示例的说明图。在图5A的示例中,起初,向程序模块Mn、M12、M13和M14中的每一程序模块分配一个公共服务器和一个处理。例如,确定单元140根据以上描述的公式(I)到(4)测量程序模块的负载Ln、L12, L13和L14。在测量结果中,假设程序模块M12具有最高负载率,假设程序模块M13具有次高负载率(负载L12>L13>Ln, L14)。然后,当一个或多个控制时间段过去时,资源控制单元150把分配给程序模块M12的处理的数目增加至4,把分配给程序模块M13的处理的数目增加至2。因此,通过允许程序模块Mn、M12, M13和M14之间的资源平衡适当,能够确保所希望的应用性能。另外,在图5A的示例中,服务器的数目保持不变。
[0073]图5B为描述根据负载率分配处理数目的第二示例的说明图。在图5B的示例中,起初,也向程序模块Mn、M12> M13和M14中的每一程序模块分配一个公共服务器和一个处理。例如,确定单元140根据以上所描述的公式(I)到(4)测量程序模块的负载Ln、L12, L13和L140在测量结果中,假设程序模块M12具有最高负载率,假设程序模块M13具有次高负载率(负载L12>L13>Ln,L14)。另外,假设非计算负载指示高值。然后,当一个或多个控制时间段过去时,资源控制单元150把服务器的数目增加至2。另外,资源控制单元150把分配给程序模块M12的处理的数目增加至4 (每个服务器2个),把分配给程序模块M13的处理的数目增加至2 (每个服务器I个)。因此,通过允许程序模块之间的资源平衡适当,能够增加除处理资源之外的资源,并且能够确保所希望的应用性能。
[0074](6)负载测量的另一个不例
[0075]图4中已经描述了测量具有简单顺序调用关系的程序模块中的每一程序模块的负载的方法的示例。在本节中,还将描述在其中程序模块具有较复杂的调用关系的几种情况下测量负载的方法。
[0076]图6为描述测量每一程序模块的负载的方法的另一个示例的说明图。参见图6,图示说明了包括在一给定应用中的4个程序模块M21、M22、M23和M24。程序模块M22具有子例程M221和M222,并且针对一条输入数据被调用2次。程序模块M21的输入数据的数量和输出数据的数量分别为D2tl和D21。在子例程M221的第一次执行中的输入数据的数量和输出数据的数量分别为D21和D211—lt)在子例程M222的第一次执行中的输入数据的数量和输出数据的数量分别为D211」和D212程序模块M23的输入数据的数量和输出数据的数量分别为D212」和D23。在子例程M221的第二次执行中的输入数据的数量和输出数据的数量分别为D23和D211 2。在子程序M222的第二次执行中的输入数据的数量和输出数据的数量分别为D211—2和D212—2。程序模块M24的输入数据的数量和输出数据的数量分别为D212 2和D24。负载测量单元130可以如下基于输入和输出数据的数量测量程序模块M21、M22、M23和M24的负载L21、L22、L23和L24。
[0077][数学表达式2]
[0078]L21=D21-D20 (5)
[0079]L22- (D211J-D21) + (D212J-D211J) + (D211—2_D23) + (D212—2_D211—2) — (D212J-D21) + (D212J-D23)
(6)
[0080]L23=D23-D2121 (7)
[0081]L24=D24-D2122 (8)
[0082]这样,可以通过把在调用多次被调用的程序模块(或者子例程)时所计算的输出数据和输入数据的数量之间的差相加,来测量程序模块的负载。
[0083]图7为描述测量每一程序模块的负载的方法的另一个示例的说明图。参照图7,图示说明了包括在给定应用中的3个程序模块M31、M32和M33。重复调用这些程序模块,直至满足给定的结束条件。在程序模块M31的第一次执行中的输入数据的数量和输出数据的数量分别为D3c^PD31在第二次之后程序模块M31的第k次执行中的输入数据的数量和输出数据的数量分别为D33 _)和D31 k。在程序模块M32的第k次执行中的输入数据的数量和输出数据的数量分别为D31 k和D32 k。在程序模块M33的第k次执行过程中的输入数据的数量和输出数据的数量分别为D32 k和D33 k。负载测量单元130可以如下基于输入和输出数据的数量测量程序模块M31、M32和M33的负载L31、L32和L33。
[0084][数学表达式3]
【权利要求】
1.一种信息处理装置,包括: 确定单元,当使用可扩展处理资源执行形成应用的程序模块时,其基于每一程序模块的负载的测量结果确定是否改变分配给一个或多个程序模块的处理的数目。
2.根据权利要求1所述的信息处理装置,还包括: 资源控制单元,其针对确定单元已确定将被改变所分配的处理的数目的每一程序模块改变所分配的处理的数目。
3.根据权利要求2所述的信息处理装置,还包括: 测量单元,其测量每一程序模块的负载。
4.根据权利要求3所述的信息处理装置,其中,所述测量单元测量正被处理的输入数据的数量,作为每一程序模块的负载。
5.根据权利要求4所述的信息处理装置, 其中,至少基于服务器的数目和每一服务器的处理的数目来控制处理资源的规模,以及 其中,所述确定单元还基于针对每一应用或者每一服务器测量的非计算负载来确定是否改变分配给每一程序模块的服务器的数目。
6.根据权利要求5所述的信息处理装置,其中,在所述确定单元确定将增加分配给每一程序模块的处理的数目的情况下,当非计算负载大于阈值时,所述确定单元确定将增加分配给每一程序模块的服务器的数目,当非计算负载小于所述阈值时,所述确定单元确定将维持分配给每一程序模块的服务器的数目并且将增加处理的数目。
7.根据权利要求4所述的信息处理装置,其中,所述资源控制单元把更大数目的处理分配给指示高比率的正被处理的输入数据的数量的每一程序模块。
8.根据权利要求5所述的信息处理装置,其中,非计算负载包括内存负载、I/O负载以及通信负载中的至少一个。
9.根据权利要求2所述的信息处理装置,其中,所述资源控制单元根据表示对应用的请求的数目与处理资源的所需规模之间的关系的资源模型中对应用的请求的数目,控制处理资源的规模。
10.根据权利要求9所述的信息处理装置,其中,通过使用多对请求的数目与对应的所需规模进行回归分析,预先获得资源模型。
11.根据权利要求10所述的信息处理装置,还包括: 模型更新单元,在执行所述应用的同时,该模型更新单元基于请求的数目和对应的所需规模的一个新的对更新资源模型。
12.一种信息处理装置执行的资源控制方法,该资源控制方法包括: 当使用可扩展处理资源执行形成应用的程序模块时,基于每一程序模块的负载的测量结果确定是否改变分配给一个或多个程序模块的处理的数目。
13.一种使得控制信息处理装置的计算机起下述作用的程序: 确定单元,当使用可扩展处理资源执行形成应用的程序模块时,其基于每一程序模块的负载的测量结果确定是否改变分配给一个或多个程序模块的处理的数目。
【文档编号】G06F9/50GK104008016SQ201410050936
【公开日】2014年8月27日 申请日期:2014年2月14日 优先权日:2013年2月22日
【发明者】竹原充, 影山雄一, 田中义己, 菅沼久浩 申请人:索尼公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1