掌桥专利:专业的专利平台
掌桥专利
首页

集群迁移方法、装置及存储介质

文献发布时间:2023-06-19 09:43:16


集群迁移方法、装置及存储介质

技术领域

本申请涉及集群迁移技术领域,具体而言,涉及一种集群迁移方法、装置及存储介质。

背景技术

集群可能会由于某些业务需要而进行迁移,例如,原来使用阿里机房的集群,现在需要迁移到腾讯机房的集群。目前现有的解决方案为:先新建一个集群,然后利用数据同步工具如mirror,把原集群中的数据同步到新集群,然后在低峰时段切流量。然而,上述方案需要较多的手动运维操作,增加了人工操作可能带来的稳定性风险,且在低峰时段使用业务的用户会明显的感知到业务的短暂中断。同时,采用mirror同步数据时,如果网络不稳定可能导致丢失消息。

发明内容

为了解决上述问题,本申请实施例提供了一种集群迁移方法、装置及存储介质。

第一方面,本申请实施例提供了一种集群迁移方法,包括以下步骤:

向用户端发送第一指令,所述第一指令用于指示所述用户同时读取第一集群与所述第二集群的消息;所述第二集群为基于所述第一集群创建的集群;

基于所述第二集群的配置信息,将所述第二集群的权限从不可读写更改为可读写;

向服务器发送第二指令,所述第二指令用于指示所述服务器停止向所述第一集群写入消息,并开始向所述第集群写入消息。

可选地,所述向服务器发送第二指令,所述第二指令用于指示所述服务器停止向所述第一集群写入消息,并开始向所述第二集群写入消息之后,还包括:

向所述第一集群发送第二权限修改指令,所述第二权限修改指令用以指示所述第一集群将权限从可读写更改为只读。

可选地,所述向所述第一集群发送第二权限修改指令,所述第二权限修改指令用以指示所述第一集群将权限从可读写更改为只读之后,还包括:

当所述用户端读取完所述第一集群的所有消息后,向所述第一集群发送第三权限修改指令,所述第三权限修改指令用以指示所述第一集群将权限从只读更改为不可读写。

可选地,所述当所述用户端读取完所述第一集群的所有消息后,向所述第一集群发送第三权限修改指令,所述第三权限修改指令用以指示所述第一集群将权限从只读更改为不可读写之后,还包括:

向用户端发送第三指令,所述第三指令用于指示所述用户端停止向所述第一集群读取消息。

可选地,所述向用户端发送第三指令,所述第三指令用于指示所述用户端停止向所述第一集群读取消息之后,还包括:

生成迁移完成提醒信息,将所述迁移完成提醒信息发送至预设的管理人员的用户终端。

可选地,所述在基于第一集群创建第二集群后,向用户端发送第一指令之前,还包括:

创建第二集群,并获取所述第一集群的配置信息;

在所述第二集群中创建所述第一集群的所述配置信息。

可选地,所述基于所述第二集群的配置信息,将所述第二集群的权限从不可读写更改为可读写,包括:

向所述第二集群发送第一权限修改指令,所述第一权限修改指令用以指示所述第二集群将权限从不可读写更改为可读写。

第二方面,本申请实施例提供了一种集群迁移装置,包括:

第一指令发送模块,用于在基于第一集群创建第二集群后,向用户端发送第一指令,所述第一指令用于指示所述用户端同时读取所述第一集群与所述第二集群的消息;

第一权限修改模块,用于基于所述第二集群的配置信息,将所述第二集群的权限从不可读写更改为可读写;

第二指令发送模块,用于向服务器发送第二指令,所述第二指令用于指示所述服务器停止向所述第一集群写入消息,并开始向所述第二集群写入消息。

第三方面,本申请实施例提供了一种集群迁移装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项方法的步骤。

第四方面,本申请实施例提供了一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项方法的步骤。

在本申请一个或多个实施例中,基于第一集群创建第二集群,获取所述第一集群的配置信息,在所述第二集群中创建所述配置信息;向消费者发送第一指令,所述第一指令用于指示所述消费者同时读取所述第一集群与所述第二集群的消息;基于所述配置信息,将所述第二集群的权限从不可读写更改为可读写;向生产者发送第二指令,所述第二指令用于指示所述生产者停止向所述第一集群写入消息,并开始向所述第二集群写入消息;所述生产者停止向所述第一集群写入消息,并开始向所述第二集群写入消息之后,基于所述配置信息,将所述第一集群的权限从可读写更改为只读。在上述集群迁移方案中,管理平台先创建并配置一个和第一集群相关配置相同的第二集群,接着让消费者同时订阅第一集群与第二集群,更改第二集群的权限为可读写,使消费者除了能够从第一集群读取消息,还能够从第二集群读取消息,再让生产者从第一集群改为向第二集群写入消息后,将第一集群的权限修改为只读,以此实现了配置自动化,大大降低了人工运维成本,避免了人工操作可能带来的稳定性风险,且消息迁移过程对业务基本无感知,无需同步数据,不会出现因为原集群向目标集群做数据迁移而造成丢失消息的情况。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种集群迁移系统的架构示意图;

图2为本申请实施例提供的一种集群迁移方法的流程示意图;

图3为本申请实施例提供的另一种集群迁移方法的流程示意图;

图4为本申请实施例提供的一种集群迁移装置的结构示意图;

图5为本申请实施例所涉及的一种集群迁移装置的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。

在下述介绍中,术语“第一”、“第二”仅为用于描述的目的,而不能理解为指示或暗示相对重要性。下述介绍提供了本申请的多个实施例,不同实施例之间可以替换或者合并组合,因此本申请也可认为包含所记载的相同和/或不同实施例的所有可能组合。因而,如果一个实施例包含特征A、B、C,另一个实施例包含特征B、D,那么本申请也应视为包括含有A、B、C、D的一个或多个所有其他可能的组合的实施例,尽管该实施例可能并未在以下内容中有明确的文字记载。

下面的描述提供了示例,并且不对权利要求书中阐述的范围、适用性或示例进行限制。可以在不脱离本申请内容的范围的情况下,对描述的元素的功能和布置做出改变。各个示例可以适当省略、替代或添加各种过程或组件。例如所描述的方法可以以所描述的顺序不同的顺序来执行,并且可以添加、省略或组合各种步骤。此外,可以将关于一些示例描述的特征组合到其他示例中。

需要说明的是,kafka是一款基于发布与订阅的消息系统。它一般被称为“分布式提交日志”或者“分布式流平台”。其特点为能够同时为分布和订阅提供高吞吐量。Kafka每秒可以生产约25万条消息(50MB),每秒处理55万条消息(110MB)。而kafka一般由三部分组成:kafka生产者(producer,即消息的生成者)、kafka集群、kafka消费者(consumer,即消息的消费者),kafka生产者负责将消息写入kafka集群中,kafka集群中含有一个或多个broker(即缓存代理,kafka集群中的一台或多台服务器统称borker),kafka消费者负责读取kafka集群中写入的消息并对消息进行消费。本申请实施例将以kafka为例进行解释说明。

请参见图1,图1是本申请实施例提供的一种集群迁移系统的架构示意图。

如图1所示,该集群迁移系统可以包括管理平台101、生产者102、消费者103、第一集群104和第二集群105。

一个集群可以有多个服务器,一个服务器可以看做是一个broker,即第一集群104与第二集群105可以是集成了多个服务器的服务器组。其中,集群的topic相关配置与权限仅在接收到管理平台101发送的指令后才能进行更改。

生产者102为消息生产者,是向集群中的broker发消息的客户端,具体可以是搭载有生产者客户端的服务器。生产者102能够向已经关联的集群发送消息,但生产者102仅在收到管理平台101发送的指令后才能更改其关联的对象。

消费者103为消息消费者,是从集群中的broker取消息的客户端,具体可以是搭载有消费者客户端的用户终端。消费者103能够向已经订阅的集群接收消息,但消费者103仅在收到管理平台101发送的指令后才能更改其订阅的对象。

例如,当老师想要向班级群中的学生发红包时,老师用来发送红包的终端是生产者102,红包消息发送至对应设置有红包主题的集群中,学生用来接收红包的终端是消费者103,消费者103从该设置有红包主题的集群中便能获取到老师发送的红包消息,完成红包的领取。

管理平台101为负责整个集群迁移工作流程的管理系统,其可以通过通信链路对生产者102、消费者103、第一集群104和第二集群105分别发送指令,进而实现诸如对生产者102发送消息对象、消费者103订阅消息对象的更改,对集群中topic权限修改等功能,管理平台101具体可以是搭载有管理系统软件的服务器。

需要说明的是,生产者102与消费者103均可以设置有一个或多个,图1所示的集群迁移系统中的生产者102与消费者103的数目仅作为实例,在具体实现中,该集群迁移系统可以包含任意数目的生产者102与消费者103,本申请对此不作限定。

参见图2,图2是本申请实施例提供的一种集群迁移方法的流程示意图,在本申请实施例中,所述方法包括:

S201、向用户端发送第一指令,所述第一指令用于指示所述用户同时读取第一集群与所述第二集群的消息,所述第二集群为基于所述第一集群创建的集群。

在本申请实施例中,第二集群在创建并配置好之后,此刻其并没有与任何生产者或消费者相关联,即没有生产者对第二集群进行消息的写入,也没有消费者对第二集群进行消息的读写。管理平台将会向消费者发送第一指令,消费者在接收到第一指令后,其将会订阅第二集群,由于消费者先前就已经订阅了第一集群,因此消费者在接收到第一指令后能够同时订阅第一集群与第二集群的消息。

S202、基于所述第二集群的配置信息,将所述第二集群的权限从不可读写更改为可读写。

在本申请实施例中,先前经由管理平台创建的第二集群在初始状态下,其topic权限处于不可读写状态,在该权限下,即使消费者订阅了第二集群,消费者也不能够读取第二集群中的消息。因此,管理平台会基于第二集群配置的topic配置信息,将第二集群的topic权限从不可读写更改为可读写。

在一种可实施方式中,步骤S202具体包括:

向所述第二集群发送第一权限修改指令,所述第一权限修改指令用以指示所述第二集群将权限从不可读写更改为可读写。

在本申请实施例中,管理平台会向第二集群发送第一权限修改指令,第二集群在接收到第一权限修改指令后,第二集群会将其topic权限从初始的不可读写状态更改为可读写状态,使第二集群既能够被生产者写入消息,也能够被消费者读取消息。

S203、向服务器发送第二指令,所述第二指令用于指示所述服务器停止向所述第一集群写入消息,并开始向所述第集群写入消息。

在本申请实施例中,为了进行集群的迁移,在上述步骤保证了第二集群的topic配置与第一集群的topic配置相同、消费者订阅了第二集群、第二集群为可读写状态的前提下,管理平台将会向生产者发送第二指令,生产者在接收到第二指令后,将停止向第一集群写入消息,同时开始向第二集群写入消息,以此实现了生产者消息写入对象的转变。

在一种可实施方式中,步骤S203之后,还包括:

所述生产者停止向所述第一集群写入消息,并开始向所述第二集群写入消息之后,基于所述配置信息,将所述第一集群的权限从可读写更改为只读。

在本申请实施例中,当生产者的消息写入对象变更为第二集群后,第一集群中将不会再被写入新的消息,此时管理平台会将第一集群的topic权限从可读写更改为只读,使第一集群仅能够让消费者继续读取第一集群中未被读取的消息。

通过上述过程,生产者产生的新的消息将会写入第二集群,进而被消费者继续读取,完成了集群的迁移,且第一集群中剩余还未被读取的消息依旧会被消费者继续读取,不会因为第一集群向第二集群迁移而导致丢失了第一集群中的消息,实现配置自动化,避免了人工运维可能导致的稳定性风险。

参见图3,图3是本申请实施例提供的又一种集群迁移方法的流程示意图,如图3所示,在本申请实施例中,所述方法还可以包括:

S301、创建第二集群,并获取所述第一集群的配置信息,在所述第二集群中创建所述第一集群的所述配置信息。

在本申请实施例中,在需要进行集群迁移时,管理平台将会基于原集群即第一集群创建第二集群,创建的第二集群的broker数量与第一集群的broker数量相同。创建好的第二集群初始状态下是没有进行任何配置的,管理平台会获取第一集群的topic配置信息,并在第二集群中创建与该topic配置信息内容完全相同的topic配置信息。topic是处理资源的消息源的不同分类,其可以理解为一个主题,每个生产者可以向一个topic(主题)发布一些消息,第二集群在创建了与第一集群相同的topic配置后,才能够写入与第一集群中同类别的消息。

S302、向用户端发送第一指令,所述第一指令用于指示所述用户同时读取第一集群与所述第二集群的消息。

具体过程如步骤S201所示,在此不再赘述。

S303、基于所述第二集群的配置信息,将所述第二集群的权限从不可读写更改为可读写。

具体过程如步骤S202所示,在此不再赘述。

S304、向服务器发送第二指令,所述第二指令用于指示所述服务器停止向所述第一集群写入消息,并开始向所述第集群写入消息。

具体过程如步骤S203所示,在此不再赘述。

S305、向所述第一集群发送第二权限修改指令,所述第二权限修改指令用以指示所述第一集群将权限从可读写更改为只读。

在本申请实施例中,当生产者的消息写入对象变更为第二集群后,第一集群中将不会再被写入新的消息,此时管理平台会将第一集群的topic权限从可读写更改为只读,使第一集群仅能够让消费者继续读取第一集群中未被读取的消息。

S306、当所述用户端读取完所述第一集群的所有消息后,向所述第一集群发送第三权限修改指令,所述第三权限修改指令用以指示所述第一集群将权限从只读更改为不可读写。

在本申请实施例中,由于消费者同时订阅了第一集群与第二集群,消费者在从第二集群读取新的消息的同时还在读取第一集群中剩余的未被读取的消息。当消费者将第一集群中的消息全部读取完毕后,由于第一集群不会再被写入消息,即第一集群不再会有新的消息需要被消费者读取,因此管理平台会将第一集群的topic权限从只读状态更改为不可读写。管理平台修改第一集群topic权限的具体方式为管理平台向第一集群发送第三权限修改指令,第一集群在接收到第三权限修改指令后会将其topic权限更改为不可读写。

S307、向用户端发送第三指令,所述第三指令用于指示所述用户端停止向所述第一集群读取消息。

在本申请实施例中,第一集群的topic权限修改为不可读写后,由于第一集群无法被读写且第一集群没有需要被读取的新消息,消费者不需要再订阅第一集群。管理平台会向消费者发送第三指令,消费者在接收到第三指令后,将停止向第一集群读取消息。

S308、生成迁移完成提醒信息,将所述迁移完成提醒信息发送至预设的管理人员的用户终端。

在本申请实施例中,由于集群迁移是通过管理平台分别与第一集群、第二集群、生产者、消费者的通信来实现配置自动化,管理平台将在集群迁移结束后,生成迁移完成提醒信息。管理平台可以预先人工存储有需要在完成迁移后发送迁移完成提醒信息的管理人员对应的用户终端ID,当要发送迁移完成提醒信息时,管理平台可以直接获取该用户终端ID,并将迁移完成提醒信息发送至该用户终端ID对应的用户终端。迁移完成提醒信息可以是一段文字、语音或图片,例如其可以是包含“集群已完成迁移”字样的文本信息。

通过上述过程,在第一集群中剩余的消息被全部读取完后,修改第一集群的权限并断开第一集群与消费者的关联,实现将第一集群从迁移后的整体中脱离出来,便于管理人员后续进行对第一集群的维修等工作。

下面将结合附图4,对本申请实施例提供的集群迁移装置进行详细介绍。需要说明的是,附图4所示的集群迁移装置,用于执行本申请图2-图3所示实施例的方法,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请图2-图3所示的实施例。

请参见图4,图4是本申请实施例提供的一种集群迁移装置的结构示意图,如图4所示,所述集群迁移装置包括:

第一发送模块401,用于向用户端发送第一指令,所述第一指令用于指示所述用户同时读取第一集群与所述第二集群的消息;所述第二集群为基于所述第一集群创建的集群;

第一权限更改模块402,用于基于所述第二集群的配置信息,将所述第二集群的权限从不可读写更改为可读写;

第二发送模块403,用于向服务器发送第二指令,所述第二指令用于指示所述服务器停止向所述第一集群写入消息,并开始向所述第集群写入消息。

在一种可实施方式中,第一权限更改模块402具体用于:

向所述第二集群发送第一权限修改指令,所述第一权限修改指令用以指示所述第二集群将权限从不可读写更改为可读写。

在一种可实施方式中,所述装置还包括:

第二权限更改模块,用于向所述第一集群发送第二权限修改指令,所述第二权限修改指令用以指示所述第一集群将权限从可读写更改为只读。

在一种可实施方式中,所述第二权限更改模块包括:

发送单元,用于当所述用户端读取完所述第一集群的所有消息后,向所述第一集群发送第三权限修改指令,所述第三权限修改指令用以指示所述第一集群将权限从只读更改为不可读写。

在一种可实施方式中,所述发送单元包括:

发送元件,用于向用户端发送第三指令,所述第三指令用于指示所述用户端停止向所述第一集群读取消息。

在一种可实施方式中,所述发送元件具体用于:

生成迁移完成提醒信息,将所述迁移完成提醒信息发送至预设的管理人员的用户终端。

在一种可实施方式中,所述装置还包括:

创建模块,用于创建第二集群,并获取所述第一集群的配置信息;

配置模块,用于在所述第二集群中创建所述第一集群的所述配置信息。

本领域的技术人员可以清楚地了解到本申请实施例的技术方案可借助软件和/或硬件来实现。本说明书中的“单元”和“模块”是指能够独立完成或与其他部件配合完成特定功能的软件和/或硬件,其中硬件例如可以是现场可编程门阵列(Field-ProgrammableGate Array,FPGA)、集成电路(Integrated Circuit,IC)等。

本申请实施例的各处理单元和/或模块,可通过实现本申请实施例所述的功能的模拟电路而实现,也可以通过执行本申请实施例所述的功能的软件而实现。

参见图5,其示出了本申请实施例所涉及的一种集群迁移装置的结构示意图,该集群迁移装置可以用于实施上述实施例中集群迁移的方法。如图5所示,集群迁移装置500可以包括:至少一个中央处理器501,至少一个网络接口504,用户接口503,存储器505,至少一个通信总线502。

其中,通信总线502用于实现这些组件之间的连接通信。

其中,用户接口503可以包括显示屏(Display)、摄像头(Camera),可选用户接口503还可以包括标准的有线接口、无线接口。

其中,网络接口504可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。

其中,中央处理器501可以包括一个或者多个处理核心。中央处理器501利用各种接口和线路连接整个终端500内的各个部分,通过运行或执行存储在存储器505内的指令、程序、代码集或指令集,以及调用存储在存储器505内的数据,执行终端500的各种功能和处理数据。可选的,中央处理器501可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。中央处理器501可集成中央中央处理器(Central Processing Unit,CPU)、图像中央处理器(GraphicsProcessing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到中央处理器501中,单独通过一块芯片进行实现。

其中,存储器505可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选的,该存储器505包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器505可用于存储指令、程序、代码、代码集或指令集。存储器505可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器505可选的还可以是至少一个位于远离前述中央处理器501的存储装置。如图5所示,作为一种计算机存储介质的存储器505中可以包括操作系统、网络通信模块、用户接口模块以及程序指令。

本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。其中,计算机可读存储介质可以包括但不限于任何类型的盘,包括软盘、光盘、DVD、CD-ROM、微型驱动器以及磁光盘、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪速存储器设备、磁卡或光卡、纳米系统(包括分子存储器IC),或适合于存储指令和/或数据的任何类型的媒介或设备。

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

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

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

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

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

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

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通进程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random AccessMemory,RAM)、磁盘或光盘等。

以上所述者,仅为本公开的示例性实施例,不能以此限定本公开的范围。即但凡依本公开教导所作的等效变化与修饰,皆仍属本公开涵盖的范围内。本领域技术人员在考虑说明书及实践这里的公开后,将容易想到本公开的其实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未记载的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的范围和精神由权利要求限定。

相关技术
  • 集群数据迁移方法、装置、电子设备和存储介质
  • 集群迁移方法、装置及存储介质
技术分类

06120112269450