消息队列监控方法、装置、电子设备及可读存储介质与流程

文档序号:18565004发布日期:2019-08-30 23:58阅读:160来源:国知局
消息队列监控方法、装置、电子设备及可读存储介质与流程

本发明涉及计算机技术领域,具体涉及一种消息队列监控方法、装置、电子设备及可读存储介质。



背景技术:

随着“大数据”时代的到来,越来越多的企业开始挖掘用户行为数据的商业价值,利用用户行为数据进行实时的数字营销。在实时数据处理中,通常会使用消息队列作为数据的存储方案。而且随着用户数量越来越多,在线上使用的消息队列也越来越多,如何对消息生产和消费的链路进行监控是一个巨大的挑战。现有对队列消费进度的报警,原理上都是通过对比生产者和消费者的生产和消费进度,进行监控报警。

目前方案延迟计算公式是根据生产者和消费者的生产速度差计算。影响监控指标的是生产和消费的速度差。但是在实际生产中,产品的数据实效性的指标通是时间单位。因此需要的监控指标是延迟时间,但目前的监控项是延迟消息条数,则需要针对目前的监控项进行进一步的转化计算,导致操作繁琐。而且,由于不同队列消息的生产速度和消费速度的绝对值有差异,同一消息队列在不同时间的生产速度也有差异,如果只监控消费进度,那么当数据本身存在延迟时,比如上游停止生产等场景,则无法监控出异常。所以基于速度差的报警策略操作繁琐且容易导致消息监控不准确。



技术实现要素:

本发明提供一种消息队列监控方法、装置、电子设备及可读存储介质,以部分或全部解决现有技术中消息队列监控过程相关的上述问题。

依据本发明第一方面,提供了一种消息队列监控方法,包括:

获取目标消息队列的消息生成时间和消息消费时间;

根据所述消息生成时间、所述消息消费时间和当前时间,获取所述目标消息队列的监控时间指标;所述监控时间指标包括消费延迟时间、生产延迟时间、生产消费间隔时间中的至少一种;

在所述监控时间指标超出预设的时间阈值的情况下,针对所述目标消息队列进行延迟预警。

根据本发明的第二方面,提供了一种消息队列监控装置,包括:

生成消费时间获取模块,用于获取目标消息队列的消息生成时间和消息消费时间;

监控时间指标获取模块,用于根据所述消息生成时间、所述消息消费时间和当前时间,获取所述目标消息队列的监控时间指标;所述监控时间指标包括消费延迟时间、生产延迟时间、生产消费间隔时间中的至少一种;

延迟预警模块,用于在所述监控时间指标超出预设的时间阈值的情况下,针对所述目标消息队列进行延迟预警。

根据本发明的第三方面,提供了一种电子设备,包括:

处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现前述的消息队列监控方法。

根据本发明的第四方面,提供了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行前述的消息队列监控方法。

根据本发明的消息队列监控方法,可以获取目标消息队列的消息生成时间和消息消费时间;根据所述消息生成时间、所述消息消费时间和当前时间,获取所述目标消息队列的监控时间指标;所述监控时间指标包括消费延迟时间、生产延迟时间、生产消费间隔时间中的至少一种;在所述监控时间指标超出预设的时间阈值的情况下,针对所述目标消息队列进行延迟预警。由此解决了现有的消息队列监控方法报警策略操作繁琐且容易导致消息监控不准确的技术问题。取得了提高消息队列监控的操作便利性以及准确性的有益效果。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了根据本发明实施例的一种消息队列监控方法的步骤流程图之一;

图2示出了根据本发明实施例的一种消息队列监控方法的步骤流程图之二;

图3示出了根据本发明实施例的一种消息队列监控装置的结构示意图之一;以及

图4示出了根据本发明实施例的一种消息队列监控装置的结构示意图之二。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

参照图1,示出了本发明实施例中一种消息队列监控方法的步骤流程图。

步骤110,获取目标消息队列的消息生成时间和消息消费时间。

如前述,实际生产中,产品的数据实效性指标通常用时间单位,比如数据的更新延迟不超过10秒,因此需要的监控指标是延迟时间。因此在本发明实施例中,可以获取需要进行队列检测的目标消息队列的消息生成时间和消息消费时间。

而且,在本发明实施例中,可以通过任何可用方法获取目标消息队列的消息生成时间和消息消费时间,对此本发明实施例不加以限定。例如,可以在消息生成时记录当前时间作为该消息的生成时间,而在消息被消费时则可以相应记录当前时间作为该消息的消费时间,进而则可以获取得到目标消息队列中包含的各个消息的生成时间和消费时间。

而在实际应用中,需要实时监控消息队列,那么此时则需要获知其当前的消息生成时间和消息消费时间,具体的可以获取最新生成消息的生成时间作为相应消息队列的消息生成时间,而将最新消费消息的消费时间作为相应消息队列的消息消费时间;或者,也可以取最新生成消息所在队列分区中各个消息的生成时间平均值作为目标消息队列当前的消息生成时间,并以最新消费消息所在队列分区中各个消息的消费时间平均值作为目标消息队列当前的消费生成时间;或者,也可以取最新生成消息所在队列分区中各个消息的生成时间中的最小值,也即相应分区中最早生成的消息的生成时间,作为目标消息队列当前的消息生成时间,并以最新消费消息所在队列分区中各个消息的消费时间中的最小值,也即相应分区中最早消费的消息的消费时间,作为目标消息队列当前的消费生成时间;等等。具体的可以根据需求进行预先设置,对此本发明实施例不加以限定。

步骤120,根据所述消息生成时间、所述消息消费时间和当前时间,获取所述目标消息队列的监控时间指标;所述监控时间指标包括消费延迟时间、生产延迟时间、生产消费间隔时间中的至少一种。

在获取得到目标消息队列的消息生成时间和消息消费时间之后,则可以根据所述消息生成时间、所述消息消费时间和当前时间,获取所述目标消息队列的监控时间指标。而且,在本发明实施例中,监控时间指标可以包括但不限于消费延迟时间、生产延迟时间、生产消费间隔时间中的至少一种。

其中,消费延迟时间可以理解为目标消息队列的消息消费时间相对于当前时间的延迟,可以表征为当前时间与消息消费时间的差值;生产延迟时间可以理解为目标消息队列的消息生成时间相对于当前时间的延迟,可以表征为当前时间与消息生成时间的差值;而生产消费间隔时间可以理解为目标消息队列的消息消费时间相对于消息生产时间的延迟,可以表征为消息消费时间与消息生产时间之间的差值。

此时,当数据本身存在延迟时,比如上游停止生产等场景,仍然能够通过监控时间指标中的生产延迟时间进行延迟预警,可以实现全方位的监控消息队列。而且,根据公式(vp-vc)*t/vp=delay可见,生产者和消费者间的延迟时间不受速度的绝对值影响。因此避免了由于消息生产速率正常波动带来的监控指标抖动。其中,vp表示消息生产速度,vc表示消息消费速度,t表示时间,delay表示延迟时间。

当然,在本发明实施例中,各项监控时间指标与消息生成时间、所述消息消费时间和当前时间之间的对应关系可以根据需求进行预先设置,对此本发明实施例不加以限定。例如,可以根据需求或经验等预先设置消息生成时间、消息消费时间和当前时间的权重,进而将消息生成时间、消息消费时间和当前时间进行加权后,按照上述方式获取各项监控时间指标,等等。

步骤130,在所述监控时间指标超出预设的时间阈值的情况下,针对所述目标消息队列进行延迟预警。

为了方便相关人员及时获知目标消息队列出现消息延迟的情况,在本发明实施例中,在所述监控时间指标超出预设的时间阈值的情况下,则可以针对所述目标消息队列进行延迟预警。具体的延迟预警的方式可以根据需求进行预先设置,对此本发明实施例不加以限定。而且,为了准确提示当前出现消息延迟的目标消息队列,可以在进行延迟预警的同时提示延迟预警所对应的目标消息队列的消息队列标识,以便相关人员进行查看并修正。

而且,如前述监控时间指标可以包括但不限于消费延迟时间、生产延迟时间、生产消费间隔时间中的至少一种。那么则可以分别针对每项监控时间指标设置相应的时间阈值,如果目标消息队列的至少一项监控时间指标超出其对应的时间阈值,则可以针对目标消息队列进行延迟预警。当然,也可以设置在获取得到的每项监控时间指标都超出相应的时间阈值的情况下,才针对目标消息队列进行延迟预警。而且还可以在延迟预警的同时提示本次延迟预警的原因,例如是哪项监控时间指标超出其对应的时间阈值导致的延迟预警,相应监控时间指标的溢出值,等等。

根据本发明的消息队列监控方法,可以获取目标消息队列的消息生成时间和消息消费时间;根据所述消息生成时间、所述消息消费时间和当前时间,获取所述目标消息队列的监控时间指标;所述监控时间指标包括消费延迟时间、生产延迟时间、生产消费间隔时间中的至少一种;在所述监控时间指标超出预设的时间阈值的情况下,针对所述目标消息队列进行延迟预警。取得了提高消息队列监控的操作便利性以及准确性的有益效果。

参照图2,在本发明实施例中,所述步骤110进一步可包括:

子步骤111,获取所述目标消息队列的最新消息所在队列分区中各个消息的生成时间戳和消费时间戳。

在实际应用中,消息队列中的消息并不是固定不变的,而可能是动态变化的,因此目标消息队列在不同时刻的消息生成时间和消息消费时间一般也不是固定的,而且,消息队列在存储消息时,可以将消息队列拆分为多个分区,每个分区是一个有序的,不可变的记录序列。在本发明实施例中,为了获取目标消息队列当前的消息生成时间和消息消费时间,则可以获取目标消息队列的最新消息所在队列分区中各个消息的生成时间戳和消费时间戳。其中,时间戳(timestamp),通常是一个字符序列,唯一地标识某一刻的时间。在本发明实施例中,可以通过任何可用方式生成各个消息的生成时间戳和消费时间戳,生成时间戳和消费时间戳的具体生成方式可以根据需求进行预先设置,对此本发明实施例不加以限定。

可选地,在本发明实施例中,所述子步骤111,进一步可以包括:获取所述队列分区中各个消息的生产者上报的生成时间戳,和各个所述消息的消费者上报的消费时间戳;其中,所述生成时间戳和消费时间戳的生成策略相同。

在本发明实施例中,为了提高生成时间戳和消费时间戳的准确性,可以设置基于相同的策略使消息的生产者和消费者针对一条消息生成一个时间戳,并作为事件时间上报。比如使用日志的生成时间,或者数据的业务时间。将该时间戳作为监控指标定时上报。那么则可以获取得到最新消息所在队列分区中各个消息的生产者上报的生成时间戳,和各个所述消息的消费者上报的消费时间戳,而且为了避免由于时间戳生成策略不一致导致的非必要误差,可以设置生成时间戳和消费时间戳的生成策略相同。具体的生成策略可以根据需求进行预先设置,对此本发明实施例不加以限定。

子步骤112,获取所述生成时间戳中的最小值,作为所述目标消息队列的消息生成时间。

子步骤113,获取所述消费时间戳中的最小值,作为所述目标消息队列的消息消费时间。

对于同样的当前时间,如果目标消息队列的消息生成时间越早,当前时间与消息生成时间之间的差值就越大,那么生产延迟时间则越大,则会导致针对生产延迟时间的延迟预警会越早发出;同样地,对于同样的当前时间,如果目标消息队列的消息消费时间越早,当前时间与消息消费时间之间的差值就越大,那么消费延迟时间则越大,则会导致针对消费延迟时间的延迟预警会越早发出。

由此可见,为了提高消息延迟预警的及时性,可以获取所述生成时间戳中的最小值,作为所述目标消息队列的消息生成时间,以及获取所述消费时间戳中的最小值,作为所述目标消息队列的消息消费时间。

参照图2,在本发明实施例中,所述步骤120进一步可包括:

子步骤121,获取所述当前时间和所述消息消费时间的差值,得到所述目标消息队列的消费延迟时间;

和/或,子步骤122,获取所述当前时间和所述消息生成时间的差值,得到所述目标消息队列的生成延迟时间;

和/或,子步骤123,获取所述消息消费时间和所述消息生成时间的差值,得到所述目标消息队列的生产消费间隔时间。

在本发明实施例中,根据设置的监控时间指标所包含的具体内容,可以执行步骤121-123中的任意至少一个步骤,而且对各个步骤之间的执行顺序并不做限定。

参照图2,在本发明实施例中,所述步骤130进一步可包括:

子步骤131,在所述生成延迟时间超出第一时间阈值的情况下,针对所述目标消息进行生成延迟预警;

和/或,子步骤132,在所述消费延迟时间超出第二时间阈值的情况下,针对所述目标消息进行第一消费延迟预警;

和/或,子步骤133,在所述生产消费间隔时间超出第三时间阈值的情况下,针对所述目标消息进行第二消费延迟预警。

在本发明实施例中,根据设置的监控时间指标所包含的具体内容,可以执行步骤131-133中的任意至少一个步骤,而且对各个步骤之间的执行顺序并不做限定。

其中的第一时间阈值、第二时间阈值和第三时间阈值都可以根据需求进行预先设置,而且生成延迟预警、第一消费延迟预警和第二消费延迟预警的具体预警方式也都可以根据需求进行预先设置,对此本发明实施例均不加以限定。

而且,如果针对同一目标消息队列,获取到的监控时间指标包括上述的消费延迟时间、生产延迟时间、生产消费间隔时间,而且生成延迟时间超出第一时间阈值,消费延迟时间超出第二时间阈值,生产消费间隔时间超出第三时间阈值,那么此时则可以针对该目标消息队列同时进行生成延迟预警、第二消费延迟预警以及第二消费延迟预警。

在本发明实施例中,通过获取所述目标消息队列的最新消息所在队列分区中各个消息的生成时间戳和消费时间戳;获取所述生成时间戳中的最小值,作为所述目标消息队列的消息生成时间;获取所述消费时间戳中的最小值,作为所述目标消息队列的消息消费时间。以及,获取所述队列分区中各个消息的生产者上报的生成时间戳,和各个所述消息的消费者上报的消费时间戳;其中,所述生成时间戳和消费时间戳的生成策略相同。提高了目标消息队列消息生成时间和消息消费时间的获取便利性以及准确性,进而提高延迟预警的及时性以及消息监控的准确性。

而且,在本发明实施例中,可以获取所述当前时间和所述消息消费时间的差值,得到所述目标消息队列的消费延迟时间;和/或,获取所述当前时间和所述消息生成时间的差值,得到所述目标消息队列的生成延迟时间;和/或,获取所述消息消费时间和所述消息生成时间的差值,得到所述目标消息队列的生产消费间隔时间。并且,在所述生成延迟时间超出第一时间阈值的情况下,针对所述目标消息进行生成延迟预警;和/或,在所述消费延迟时间超出第二时间阈值的情况下,针对所述目标消息进行第一消费延迟预警;和/或,在所述生产消费间隔时间超出第三时间阈值的情况下,针对所述目标消息进行第二消费延迟预警。可以进一步提高消息队列监控的准确性和全面性。

对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

参照图3,示出了本发明实施例中一种消息队列监控装置的结构示意图。

生成消费时间获取模块310,用于获取目标消息队列的消息生成时间和消息消费时间。

监控时间指标获取模块320,用于根据所述消息生成时间、所述消息消费时间和当前时间,获取所述目标消息队列的监控时间指标;所述监控时间指标包括消费延迟时间、生产延迟时间、生产消费间隔时间中的至少一种。

延迟预警模块330,用于在所述监控时间指标超出预设的时间阈值的情况下,针对所述目标消息队列进行延迟预警。

根据本发明的消息队列监控方法,可以获取目标消息队列的消息生成时间和消息消费时间;根据所述消息生成时间、所述消息消费时间和当前时间,获取所述目标消息队列的监控时间指标;所述监控时间指标包括消费延迟时间、生产延迟时间、生产消费间隔时间中的至少一种;在所述监控时间指标超出预设的时间阈值的情况下,针对所述目标消息队列进行延迟预警。取得了提高消息队列监控的操作便利性以及准确性的有益效果。

参照图4,在本发明实施例中,所述生成消费时间获取模块310,进一步可以包括:

时间戳获取子模块311,用于获取所述目标消息队列的最新消息所在队列分区中各个消息的生成时间戳和消费时间戳;

可选地,在本发明实施例中,所述时间戳获取子模块311,还用于获取所述队列分区中各个消息的生产者上报的生成时间戳,和各个所述消息的消费者上报的消费时间戳;其中,所述生成时间戳和消费时间戳的生成策略相同。

消息生成时间获取子模块312,用于获取所述生成时间戳中的最小值,作为所述目标消息队列的消息生成时间;

消息消费时间获取子模块313,用于获取所述消费时间戳中的最小值,作为所述目标消息队列的消息消费时间。

参照图4,在本发明实施例中,所述监控时间指标获取模块320,进一步可以包括:

消费延迟时间获取子模块321,用于获取所述当前时间和所述消息消费时间的差值,得到所述目标消息队列的消费延迟时间;

和/或,生成延迟时间获取子模块322,用于获取所述当前时间和所述消息生成时间的差值,得到所述目标消息队列的生成延迟时间;

和/或,生产消费间隔时间获取子模块323,用于获取所述消息消费时间和所述消息生成时间的差值,得到所述目标消息队列的生产消费间隔时间。

参照图4,在本发明实施例中,所述延迟预警模块330,进一步可以包括:

生成延迟预警子模块331,用于在所述生成延迟时间超出第一时间阈值的情况下,针对所述目标消息进行生成延迟预警;

和/或,第一消费延迟预警子模块332,用于在所述消费延迟时间超出第二时间阈值的情况下,针对所述目标消息进行第一消费延迟预警;

和/或,第二消费延迟预警子模块333,用于在所述生产消费间隔时间超出第三时间阈值的情况下,针对所述目标消息进行第二消费延迟预警。

在本发明实施例中,通过获取所述目标消息队列的最新消息所在队列分区中各个消息的生成时间戳和消费时间戳;获取所述生成时间戳中的最小值,作为所述目标消息队列的消息生成时间;获取所述消费时间戳中的最小值,作为所述目标消息队列的消息消费时间。以及,获取所述队列分区中各个消息的生产者上报的生成时间戳,和各个所述消息的消费者上报的消费时间戳;其中,所述生成时间戳和消费时间戳的生成策略相同。提高了目标消息队列消息生成时间和消息消费时间的获取便利性以及准确性,进而提高延迟预警的及时性以及消息监控的准确性。

而且,在本发明实施例中,可以获取所述当前时间和所述消息消费时间的差值,得到所述目标消息队列的消费延迟时间;和/或,获取所述当前时间和所述消息生成时间的差值,得到所述目标消息队列的生成延迟时间;和/或,获取所述消息消费时间和所述消息生成时间的差值,得到所述目标消息队列的生产消费间隔时间。并且,在所述生成延迟时间超出第一时间阈值的情况下,针对所述目标消息进行生成延迟预警;和/或,在所述消费延迟时间超出第二时间阈值的情况下,针对所述目标消息进行第一消费延迟预警;和/或,在所述生产消费间隔时间超出第三时间阈值的情况下,针对所述目标消息进行第二消费延迟预警。可以进一步提高消息队列监控的准确性和全面性。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

在本发明实施例中还提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现前述的任意一种消息队列监控方法。

在本发明实施例中还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现前述的任意一种消息队列监控方法的步骤。

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本发明实施例的消息队列监控设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

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