日志存储方法和分布式系统与流程

文档序号:20276982发布日期:2020-04-07 14:37阅读:163来源:国知局
日志存储方法和分布式系统与流程

本发明涉及分布式存储技术领域,具体而言,涉及一种日志存储方法和分布式系统。



背景技术:

在相关技术中,对于单体项目或者分布式项目中,经常会对用户访问日志记录进行采集,并存储采集到的用户访问日志记录,在现有的方案中,对用户访问日志记录采集的方式是利用不同客户端的采集逻辑进行采集,然后将用户访问日志记录进行相同逻辑的存储,其存储的数据基本相同,这样会造成存储代码重复,造成存储用户访问日志数据混乱的情况,而且需要针对不同的客户端采集的方案不同,需要针对每种客户端采用对应的存储方案,存储方式差异较大,需要后台节点花费较多的线程处理不同客户端的采集到的用户日志数据。

针对上述的相关技术中对于不同客户端采集的用户访问日志数据,在存储数据时容易造成存储数据混乱且数据容易重复的技术问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种日志存储方法和分布式系统,以至少解决相关技术中对于不同客户端采集的用户访问日志数据,在存储数据时容易造成存储数据混乱且数据容易重复的技术问题。

根据本发明实施例的一个方面,提供了一种日志存储方法,包括:客户端采集用户访问日志数据;服务器接收所述用户访问日志数据,并确定与所述用户访问日志数据对应的业务项目,其中,所述服务器上设置有多个存储点;所述服务器统计所述用户访问日志数据的数据量;所述服务器依据所述业务项目和所述数据量,确定存储所述用户访问日志数据的目标存储点;所述服务器将所述用户访问日志数据存储至所述目标存储点。

进一步地,所述客户端为多个,每个所述客户端采集所述用户访问日志数据的采集逻辑不同;所述服务器为一个,所述服务器存储每个所述客户端采集到的所述用户访问日志数据的存储逻辑相同。

进一步地,日志存储方法还包括:所述服务器将存储所述用户访问日志数据的存储逻辑打包为可执行文件,其中,所述可执行文件用于存储所述用户访问日志数据;所述服务器根据所述可执行文件提供对存储在所述服务器上的所述用户访问日志数据进行检索操作。

进一步地,日志存储方法还包括:所述服务器在接收到所述用户访问日志数据后,通过预设应用程序界面api调用所述存储逻辑,以将所述用户访问日志数据存储至所述目标存储点。

进一步地,日志存储方法还包括:所述服务器将所述用户访问日志数据分类,得到多个分类日志数据,其中,每个所述存储点存储一个所述分类日志数据。

进一步地,所述服务器将所述用户访问日志数据分类,得到多个分类日志数据包括:所述服务器按照预先设置的多个时间段对所述用户访问日志数据分类;所述服务器按照预先设置的多个分类级别对所述用户访问日志数据分类,其中,所述多个分类级别至少包括:调试级别、错误级别、执行级别。

进一步地,日志存储方法还包括:所述客户端在采集到所述用户访问日志数据后,建立消息队列,并将所述消息队列放入预设的传输通道;所述服务器监听所述传输通道中是否有所述消息队列,并在监听到所述消息队列后,将所述消息队列对应的用户访问日志数据存储至目标存储点。

根据本发明实施例的另一个方面,还提供了一种分布式系统,包括:至少一个日志采集模块,设置于客户端上,用于采集用户访问日志数据;第一确定模块,用于确定所述用户访问日志数据的所属业务项目;统计模块,用于统计所述用户访问日志数据的数据量;第二确定模块,用于依据所述所属业务项目和所述数据量,确定存储所述用户访问日志数据的目标存储点,其中,所述目标存储点设置于服务器上,在所述服务器上设置多个存储点;日志存储模块,用于将所述用户访问日志数据存储至所述目标存储点。

进一步地,所述客户端为多个,每个所述客户端采集所述用户访问日志数据的采集逻辑不同;所述服务器为一个,所述服务器存储每个所述客户端采集到的所述用户访问日志数据的存储逻辑相同。

进一步地,所述日志存储模块包括:分类单元,用于将所述用户访问日志数据分类,得到多个分类子单元,其中,每个所述分类子单元中存储一类所述用户访问日志数据。

进一步地,所述分类单元包括:时间分类子单元,用于按照预先设置的多个时间段对所述用户访问日志数据分类;级别分类子单元,用于按照预先设置的多个分类级别对所述用户访问日志数据分类,其中,所述多个分类级别至少包括:调试级别、错误级别、执行级别。

进一步地,所述分布式系统还包括:队列模块,与所述至少一个日志采集模块连接,用于建立消息队列;监听模块,与所述队列模块连接,用于监听是否有待处理的所述消息队列,并在监听到所述消息队列后,发送通知消息,其中,所述通知消息用于告知所述日志存储模块将所述用户访问日志数据存储至所述目标存储点。

在本发明实施例中,在客户端上设置至少一个日志采集模块,以采集用户访问日志数据,并通过服务器来确定用户访问日志数据的所属业务项目,并统计用户访问日志数据的数据量,然后可以依据业务项目和数据量,确定存储用户访问日志数据的目标存储点,其中,目标存储点设置于服务器上,在服务器上设置有多个存储点,可以将用户访问日志数据存储至目标存储点。本发明中,可以将数据采集和存储分别设置在客户端和服务器上,并且通过目标存储点来存储日志数据,不同客户端会对应不同的开发语言,这样采集不同的语言记录的用户访问日志数据,并通过日志存储模块来存储用户访问日志数据,将日志存储模块存储的逻辑做成统一的服务端,减少了代码量,这样采集端和存储端分离,不会造成存储数据的混乱,且由于存储的统一性,会使得数据单一化,不会出现数据重复的情况,从而解决相关技术中对于不同客户端采集的用户访问日志数据,在存储数据时容易造成存储数据混乱且数据容易重复的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的一种分布式系统的示意图;

图2是根据本发明实施例的一种日志存储方法的流程图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

为便于用户理解本发明,下面对本发明各实施例中涉及的部分术语或名词做出解释:

应用程序接口,applicationprogramminginterface,简称api,提供应用程序与开发人员以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

本发明下述实施例可以应用于各种系统中,对于系统中包含的模块和程序不做具体限定,该系统可以为:分布式系统。本申请中的用户访问日志数据可以是通过单体项目或者分布式项目来确定的,本发明实施例中对于项目的具体类型不做具体限定。

相关技术中在存储时会存在针对多个不同客户端采集到的用户访问日志数据,需要采用不同的存储逻辑存储数据,由于采集和存储都是相对独立的,因此,会存在存储的数据相同,且代码出现重复的情况。本发明下述各实施例中为了解决这种问题,将日志采集逻辑和日志存储逻辑分离,采集逻辑针对不同的开发语言提供不同的采集方案,同时存储逻辑做成统一的存储端,以减少代码的同时,还能实现存储的标准化和采集逻辑的跨语言(开发语言)实现。下面通过各个实施例对本发明进行说明。

实施例一

下述实施例中说明了分布式系统的相关方案,在该方案中,日志数据的采集端和存储端是分离,以便于采集的多样化和存储的统一化,从而实现数据的有效采集和存储,对于分布式系统所使用的应用和使用的终端不做具体限定。

图1是根据本发明实施例的一种分布式系统的示意图,如图1所示,该分布式系统包括:至少一个日志采集模块11、第一确定模块13、统计模块15、第二确定模块17、日志存储模块19,其中,

至少一个日志采集模块11,设置于客户端上,用于采集用户访问日志数据;

第一确定模块13,用于确定用户访问日志数据的所属业务项目;

统计模块15,用于统计用户访问日志数据的数据量;

第二确定模块17,用于依据所属业务项目和数据量,确定存储用户访问日志数据的目标存储点,其中,目标存储点设置于服务器上,在服务器上设置多个存储点;

日志存储模块19,用于将用户访问日志数据存储至目标存储点。

在本发明实施例中,可以在每个客户端上设置一个日志采集模块,这样就方便后续对用户访问日志数据的采集。

其中,上述至少一个日志采集模块11可以设置在客户端上,而第一确定模块13、统计模块15、第二确定模块17、日志存储模块19可以设置在服务器上。

可选地,上述的客户端可以为多个,每个客户端采集用户访问日志数据的采集逻辑不同。另外,多个客户端支持多种开发语言的用户访问日志数据的采集程序。每一个客户端可以支持至少一个开发语言,可选地,开发语言包括但不限于:javascript、php等。本发明中可以对不同的开发语言采集不同的用户访问日志数据。

对于本发明实施例来说,用户访问日志数据,可以是用户在访问各种编程软件、网站、网页、应用、app等时,后台自动记录的访问日志数据,可选的,用户访问日志数据中包括但不限于:debug、错误代码、调试结果、访问时间、访问地址、访问网页页面元素、访问时长、用户评论等。在本发明实施例可以通过文件或者表格自动记录用户访问日志数据,以为后续分析用户访问行为,推荐用户感兴趣的访问内容做准备。

可选的,日志采集模块中的日志采集方案针对不同开发语言提供不同引入和扩展方案,使用者根据子系统开发语言去获取对应的包文件引入,经过简单配置即可实现日志采集。另外,本发明实施例中,还可以提供自定义逻辑,以让用户自行输入采集逻辑,从而根据用户输入的采集逻辑进行用户日志数据的采集。

对于第一确定模块,在确定用户访问日志数据的所属业务项目时,可以是获取业务项目对应的名称或者编号,这些名称或者编号可以预先记录在用户访问日志中,在获取时,可以自动获取到业务项目的相关数据。

可选的,对于第二确定模块,在确定目标存储点时,可以先依据业务项目来确定与业务项目对应的预设存储子区域,可选的,在服务器的存储区域中会预先划分多个子区域,每个子区域可以存储一种类型的业务项目的数据,这样,在获取到新的用户访问日志数据后,可以将该数据对应的业务项目类型查询到,然后存储到对应的子区域中。在确定与业务项目对应的预设存储子区域后,可以利用数据量来确定目标存储点,每个存储点的存储大小不同,查询与数据量对应的存储点,将数据量与存储点的大小对应,这样可以合理分配存储资源。

其中,本发明实施例中的服务器可以为一个,服务器存储每个客户端采集到的用户访问日志数据的存储逻辑相同。即本发明实施例中,可以将存储逻辑做成统一的服务端,从而实现数据的统一存储,避免数据的存储重复,而且可以实现存储的标准化。

上述分布式系统,利用至少一个日志采集模块11来采集用户访问日志数据,通过第一确定模块13确定用户访问日志数据的所属业务项目;通过统计模块15统计用户访问日志数据的数据量;通过第二确定模块17依据所属业务项目和数据量,确定存储用户访问日志数据的目标存储点,其中,目标存储点设置于服务器上,在服务器上设置有多个存储点;最后通过设置于服务器上的日志存储模块19将用户访问日志数据存储至目标存储点。本发明中,可以将数据采集和存储分别设置在客户端和服务器上,并且通过查询存储点来存储日志数据,不同客户端会对应不同的开发语言,这样采集不同的语言记录的用户访问日志数据,并通过日志存储模块来存储用户访问日志数据,将日志存储模块存储的逻辑做成统一的服务端,减少了代码量,这样采集端和存储端分离,不会造成存储数据的混乱,且由于存储的统一性,会使得数据单一化,不会出现数据重复的情况,从而解决相关技术中对于不同客户端采集的用户访问日志数据,在存储数据时容易造成存储数据混乱且数据容易重复的技术问题。

在本发明实施例中,日志存储模块包括:分类单元,用于将用户访问日志数据分类,得到多个分类子单元,其中,每个分类子单元中存储一种用户访问日志数据。

另一种可选的实施方式,上述分类单元包括:时间分类子单元,用于按照预先设置的多个时间段对用户访问日志数据分类;级别分类子单元,用于按照预先设置的多个分类级别对用户访问日志数据分类,其中,多个分类级别至少包括:调试级别、错误级别、执行级别。

可选的,上述的多个时间段可以是预先设定的,如设置每隔一天/每隔3天/每隔5天等存储一次用户访问日志数据,这样就可以在后续查询服务器上存储的数据时,就可以依据时间设置直接查询到对应事件的数据。

而对于上述的多个分类级别,其分类的类型可以包括:debug类型、调试类型、错误类型和执行类型,通过这些分类类型将用户访问日志数据分成多个类别,每个类别对应为一种访问日志数据,这样在存储时,可以将数据简化分类,以存储多种类型的用户访问日志数据,在后续查询服务器上存储的数据时,也可以依据数据类别来查询该用户访问日志数据。

在一可选的示例中,分布式系统还包括:队列模块,与至少一个日志采集模块连接,用于建立消息队列;监听模块,与队列模块连接,用于监听是否有待处理的消息队列,并在监听到消息队列后,发送通知消息,其中,通知消息用于告知日志存储模块将用户访问日志数据存储至目标存储点。

其中,上述的队列模块可以与日志采集模块连接,在采集到一次数据后,可以建立一个消息队列,该消息队列用于告知传输通道有一份用户访问日志数据需要传输至服务器上。而对于监听模块,其一侧可以与服务器连接,另一侧与队列模块连接,通过监听模块可以监听是否有消息队列需要处理,进而在检测到消息队列后,将消息队列对应的用户访问日志数据传输至服务器上。

可选的,如果有多个消息队列同时需要处理,可以依据消息队列预先定义的权重值,确定出每个消息队列对应的优先级,这样就可以对优先级较高的消息队列进行处理。

对于本发明实施例来说,上述分布式系统还包括:打包模块,用于将存储用户访问日志数据的存储逻辑打包为可执行文件,其中,可执行文件用于存储用户访问日志数据;检索模块,用于根据可执行文件提供对存储在服务器上的用户访问日志数据进行检索操作。

上述打包模块打包的是存储逻辑,然后打包模块将存储逻辑打包为可执行文件,这样就可以利用可执行文件来存储用户访问日志数据,为后续日志数据存储做准备。

而对于上述的检索模块,可以理解为反向解析可执行文件,然后根据解析结果对服务器上存储的用户访问日志数据进行查询。即可以通过检索模块提供检索服务,在用户或者后台程序员需要查询用户访问日志数据时,通过该检索服务即可提供检索操作,具体地,本发明实施例中可以为用户或者后台程序员提供检索窗口或者检索框,以供输入关键词或者检索关键式,从而自动检索出与用户想要的内容一致的日志数据。这样就可以为用户访问日志数据提供统一标准的存储和检索服务,同时使用者可以根据相应的条件(如输入关键词)查询到对应的系统的用户访问日志数据,提高存储和检索的效率。

一种可选的实施方式,上述检索模块可以包括:检索子模块,通过检索子模块可以查询存储点,从而查询到对应的用户访问日志数据。

在本发明另一种可选的实施方式,分布式系统还包括:调用模块,用于在通过日志采集模块采集到用户访问日志数据后,通过预设应用程序界面api调用日志存储模块的存储逻辑,以将用户访问日志数据存储至目标存储点。即可以在采集模块通过采集逻辑采集到数据后,还可以通过api调用服务端的存储逻辑,以快速将用户访问日志数据存储至服务器中,方便日志数据的存储。

根据本发明实施例的另一个方面,还提供了第一存储介质和第二存储介质,其中,第一存储介质设置于客户端,用于临时缓存日志采集模块采集到的用户访问日志数据,第二存储介质设置于服务器端,用于提供存储区域,每个存储区域可以对应有一个存储点。

根据本发明实施例的另一个方面,还提供了第一处理器和第二处理中,其中,第一处理器用于处理客户端所要执行的程序一,该程序一用于运行采集用户访问日志数据的程序,而第二处理器用于处理服务器所要执行的程序二,该程序二用于运行存储用户访问日志数据的程序。

本发明上述分布式系统,可以将用户访问日志数据的采集端和存储端分离,采集逻辑和存储逻辑分离,将存储逻辑分离出来进入服务器,从而利用统一的服务器存储用户访问日志数据,然后减少存储逻辑代码量,存储的用户日志数据不会出现重复。并且还可以将用户访问日志采集逻辑抽离出来做成客户端,针对不同的开发语言做了不同的默认实现方案同时允许用户自定义扩展采集逻辑,这样就可以让本发明实施例中的采集方式更多,而存储模式统一,让采集多样化,存储统一化,减少存储的代码量。

同时,上述分布式系统可以实现通过存储点分散存储用户访问日志数据,并且查询到与用户访问日志数据对应的业务项目,从而利用分类单元确定数据的分类结果,进而依据分类结果,对数据进行合理存储,减少存储资源的浪费。

下面通过另一种实施例对本发明进行说明。

实施例二

根据本发明实施例,提供了一种基于分布式系统的日志存储方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

本发明下述实施例提供了一种日志存储方法,该日志存储方法可以应用于上述实施例中的分布式系统,分布式系统包括至少一个日志采集模块和日志存储模块,至少一个日志采集模块设置于客户端上,日志存储模块设置于服务器上。

图2是根据本发明实施例的一种日志存储方法的流程图,如图2所示,该方法包括如下步骤:

步骤s202,客户端采集用户访问日志数据。

步骤s204,服务器接收用户访问日志数据,并确定与用户访问日志数据对应的业务项目,其中,服务器上设置有多个存储点;

步骤s206,服务器统计用户访问日志数据的数据量;

步骤s208,服务器依据业务项目和数据量,确定存储用户访问日志数据的目标存储点;

步骤s210,服务器将用户访问日志数据存储至目标存储点。

其中,本发明实施例中的目标服务器可以是同一个服务器,目标服务器的类型和型号,可以根据每个客户使用的服务器自行定义。

在本发明实施例中,客户端为多个,每个客户端采集用户访问日志数据的采集逻辑不同;服务器为一个,服务器存储每个客户端采集到的用户访问日志数据的存储逻辑相同。

通过上述步骤,在客户端上设置至少一个日志采集模块,以采集用户访问日志数据,并通过服务器来确定用户访问日志数据的所属业务项目,并统计用户访问日志数据的数据量,然后可以依据业务项目和数据量,确定存储用户访问日志数据的目标存储点,其中,目标存储点设置于服务器上,在服务器上设置有多个存储点,可以将用户访问日志数据存储至目标存储点。在该实施例中,通过分布式系统中至少一个日志采集模块来采集用户访问日志数据,不同客户端会对应不同的开发语言,这样采集不同的语言记录的用户访问日志数据,在得到用户访问日志数据后,可以将用户访问日志数据存储至目标服务器中,存储的逻辑做成统一的服务端,减少了代码量,这样采集端和存储端分离,不会造成存储数据的混乱,且由于存储的统一性,会使得数据单一化,不会出现数据重复的情况,从而解决相关技术中对于不同客户端采集的用户访问日志数据,在存储数据时容易造成存储数据混乱且数据容易重复的技术问题。

在一可选的示例中,日志存储方法还包括:服务器将存储用户访问日志数据的存储逻辑打包为可执行文件,其中,可执行文件用于存储用户访问日志数据;服务器根据可执行文件提供对存储在服务器上的用户访问日志数据进行检索操作。

上述打包的是存储逻辑,然后将存储逻辑打包为可执行文件,这样就可以利用可执行文件来存储用户访问日志数据,为后续日志数据存储做准备。

在提供检索操作时,本发明实施例中可以为用户或者后台程序员提供检索窗口或者检索框,以供输入关键词或者检索关键式,从而自动检索出与用户想要的内容一致的日志数据。这样就可以为用户访问日志数据提供统一标准的存储和检索服务,同时使用者可以根据相应的条件(如输入关键词)查询到对应的系统的用户访问日志数据,提高存储和检索的效率。

作为本发明一可选的实施方式,日志存储方法还包括:服务器在接收到用户访问日志数据后,通过预设应用程序界面api调用存储逻辑,以将用户访问日志数据存储至目标存储点。

对于本发明实施例来说,日志存储方法还包括:服务器将用户访问日志数据分类,得到多个分类日志数据,其中,每个存储点存储一个分类日志数据。

需要说明的是,服务器将用户访问日志数据分类,得到多个分类日志数据包括:服务器按照预先设置的多个时间段对用户访问日志数据分类;服务器按照预先设置的多个分类级别对用户访问日志数据分类,其中,多个分类级别至少包括:调试级别、错误级别、执行级别。

对于多个时间段可以是预先设定的,通过多个时间段分类,在后续查询服务器上存储的数据时,就可以依据时间设置直接查询到对应事件的数据。

对于上述的多个分类级别,其分类的类型可以包括:debug类型、调试类型、错误类型和执行类型,通过这些分类类型将用户访问日志数据分成多个类别,每个类别对应为一种访问日志数据,这样在存储时,可以将数据简化分类,以存储多种类型的用户访问日志数据,在后续查询服务器上存储的数据时,也可以依据数据类别来查询该用户访问日志数据。

在本发明一可选的实施例中,日志存储方法还包括:客户端在采集到用户访问日志数据后,建立消息队列,并将消息队列放入预设的传输通道;服务器监听传输通道中是否有消息队列,并在监听到消息队列后,将消息队列对应的用户访问日志数据存储至目标存储点。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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