数据读写方法、装置、电子设备、存储介质及程序产品与流程

文档序号:31516972发布日期:2022-09-14 12:09阅读:54来源:国知局
数据读写方法、装置、电子设备、存储介质及程序产品与流程

1.本公开实施例涉及数据处理技术领域,具体涉及一种数据读写方法、装置、电子设备、存储介质及程序产品。


背景技术:

2.hbase是一种构建在hdfs之上的分布式、面向列的存储系统,可用于数据的实时读写、以及超大规模数据集的随机访问,也正因为hbase具有以上特点,对于hbase的读写会占用大量内存。因此,亟需一种既能够实现hbase数据的有效读写,又能够减少内存占有率的数据读写方案。


技术实现要素:

3.本公开实施例提供一种数据读写方法、装置、系统、设备、存储介质及程序产品。
4.第二方面,本公开实施例中提供了一种数据读写方法。
5.具体的,所述数据读写方法,包括:
6.获取待写入hbase数据;
7.将所述待写入hbase数据根据hbase目标区域划分为多个数据组;
8.将所述数据组写入中间存储组件,并在满足预设条件时,将所述数据组从所述中间存储组件读入至对应的hbase目标区域中。
9.结合第二方面,本公开实施例在第二方面的第一种实现方式中,所述将所述待写入hbase数据根据hbase目标区域划分为多个数据组,被实施为:
10.确定所述待写入hbase数据是否满足预设实时性要求;
11.当确定所述待写入hbase数据满足预设实时性要求时,将所述待写入hbase数据根据hbase目标区域划分为多个数据组。
12.结合第二方面和第二方面的第一种实现方式,本公开实施例在第二方面的第二种实现方式中,所述待写入hbase数据携带有将要写入的hbase目标区域信息;
13.所述将所述待写入hbase数据根据hbase目标区域划分为多个数据组,包括:
14.获取所述待写入hbase数据携带的hbase目标区域信息;
15.将同一hbase目标区域对应的待写入hbase数据划分为同一数据组,得到与所述hbase目标区域对应的多个数据组。
16.结合第二方面、第二方面的第一种实现方式和第二方面的第二种实现方式,本公开在第二方面的第三种实现方式中,所述预设条件为:
17.所述中间存储组件中存储的数据量达到预设数据量阈值;或者,
18.当前时间与数据组写入中间存储组件的写入时间之间的时间差达到预设时长阈值。
19.结合第二方面、第二方面的第一种实现方式、第二方面的第二种实现方式和第二方面的第三种实现方式,本公开在第二方面的第四种实现方式中,所述将所述数据组从所
述中间存储组件读入至对应的hbase目标区域中,包括:
20.将所述数据组根据hbase预设文件格式组成hbase文件;
21.将所述hbase文件从所述中间存储组件读入至与所述数据组对应的hbase目标区域中。
22.第二方面,本公开实施例中提供了一种数据读写装置。
23.具体的,所述数据读写装置,包括:
24.获取模块,被配置为获取待写入hbase数据;
25.划分模块,被配置为将所述待写入hbase数据根据hbase目标区域划分为多个数据组;
26.读取模块,被配置为将所述数据组写入中间存储组件,并在满足预设条件时,将所述数据组从所述中间存储组件读入至对应的hbase目标区域中。
27.结合第二方面,本公开实施例在第二方面的第一种实现方式中,所述划分模块被配置为:
28.确定所述待写入hbase数据是否满足预设实时性要求;
29.当确定所述待写入hbase数据满足预设实时性要求时,将所述待写入hbase数据根据hbase目标区域划分为多个数据组。
30.结合第二方面和第二方面的第一种实现方式,本公开实施例在第二方面的第二种实现方式中,所述待写入hbase数据携带有将要写入的hbase目标区域信息;
31.所述划分模块被配置为:
32.获取所述待写入hbase数据携带的hbase目标区域信息;
33.将同一hbase目标区域对应的待写入hbase数据划分为同一数据组,得到与所述hbase目标区域对应的多个数据组。
34.结合第二方面、第二方面的第一种实现方式和第二方面的第二种实现方式,本公开在第二方面的第三种实现方式中,所述预设条件为:
35.所述中间存储组件中存储的数据量达到预设数据量阈值;或者,
36.当前时间与数据组写入中间存储组件的写入时间之间的时间差达到预设时长阈值。
37.结合第二方面、第二方面的第一种实现方式、第二方面的第二种实现方式和第二方面的第三种实现方式,本公开在第二方面的第四种实现方式中,所述读取模块被配置为:
38.将所述数据组根据hbase预设文件格式组成hbase文件;
39.将所述hbase文件从所述中间存储组件读入至与所述数据组对应的hbase目标区域中。
40.第三方面,本公开实施例提供了一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条支持数据读写装置执行上述数据读写方法的计算机指令,所述处理器被配置为用于执行所述存储器中存储的计算机指令。所述数据读写装置还可以包括通信接口,用于数据读写装置与其他设备或通信网络通信。
41.第四方面,本公开实施例提供了一种计算机可读存储介质,用于存储数据读写装置所用的计算机指令,其包含用于执行上述数据读写方法为数据读写装置所涉及的计算机指令。
42.第五方面,本公开实施例提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现上述数据读写方法的步骤。
43.本公开实施例提供的技术方案可包括以下有益效果:
44.上述技术方案通过将待写入hbase的数据进行中间存储,以及将待写入hbase的数据进行分组来减少内存占有率。该技术方案实现简单,操作方便,既能够实现hbase数据的有效读写,又能够减少内存占有率,提高内存有效使用率,降低hbase数据写入时的cpu负荷。
45.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开实施例。
附图说明
46.结合附图,通过以下非限制性实施方式的详细描述,本公开实施例的其它特征、目的和优点将变得更加明显。在附图中:
47.图1示出根据本公开一实施方式的数据读写方法的流程图;
48.图2示出根据本公开一实施方式的数据读写装置的结构框图;
49.图3示出根据本公开一实施方式的电子设备的结构框图;
50.图4是适于用来实现根据本公开一实施方式的数据读写方法的计算机系统的结构示意图。
具体实施方式
51.下文中,将参考附图详细描述本公开实施例的示例性实施方式,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。
52.在本公开实施例中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。
53.另外还需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开实施例。
54.本公开实施例提供的技术方案通过将待写入hbase的数据进行中间存储,以及将待写入hbase的数据进行分组来减少内存占有率。该技术方案实现简单,操作方便,既能够实现hbase数据的有效读写,又能够减少内存占有率,提高内存有效使用率,降低hbase数据写入时的cpu负荷。
55.图1示出根据本公开一实施方式的数据读写方法的流程图,如图1所示,所述数据读写方法包括以下步骤s101-s103:
56.在步骤s101中,获取待写入hbase数据;
57.在步骤s102中,将所述待写入hbase数据根据hbase目标区域划分为多个数据组;
58.在步骤s103中,将所述数据组写入中间存储组件,并在满足预设条件时,将所述数据组读入至对应的hbase目标区域中。
59.上文提及,hbase是一种构建在hdfs之上的分布式、面向列的存储系统,可用于数
据的实时读写、以及超大规模数据集的随机访问,也正因为hbase具有以上特点,对于hbase的读写会占用大量内存。因此,亟需一种既能够实现hbase数据的有效读写,又能够减少内存占有率的数据读写方案。
60.考虑到上述问题,在该实施方式中,提出一种数据读写方法,该方法通过将待写入hbase的数据进行中间存储,以及将待写入hbase的数据进行分组来减少内存占有率。该技术方案实现简单,操作方便,既能够实现hbase数据的有效读写,又能够减少内存占有率,提高内存有效使用率,降低hbase数据写入时的cpu负荷。
61.在本公开一实施方式中,所述数据读写方法可适用于进行数据读写的计算设备、电子设备、处理器、服务器等等。
62.在本公开一实施方式中,所述待写入hbase数据指的是将要写入至hbase中的数据。其中,每个待写入hbase数据有可能需要写入至hbase中的不同区域中,因此,所述待写入hbase数据除了数据本体,还携带有将要写入的hbase目标区域信息。其中,所述hbase目标区域指的是待写入hbase的数据最终将会写入的hbase的区域;进一步地,所述hbase目标区域信息比如可以为hbase目标区域id等具有区别性的hbase目标区域标识信息。
63.在本公开一实施方式中,所述中间存储组件指的是可用作数据的中间存储的,或者说可用作数据的中转存储的存储组件。其中,所述中间存储组件比如可以为缓存、消息队列等存储组件。
64.在上述实施方式中,首先获取携带有将要写入的hbase目标区域信息的待写入hbase数据;然后将所述待写入hbase数据根据hbase目标区域划分为多个数据组;然后将所述数据组写入中间存储组件,后续在满足预设条件时,再将所述数据组从所述中间存储组件中读入至对应的hbase目标区域中。
65.进一步地,在将所述数据组从所述中间存储组件中读入至对应的hbase目标区域中时,可借助对于bulkload函数的调用,将所述数据组加载至对应的hbase目标区域中。
66.在本公开一实施方式中,所述步骤s102,即将所述待写入hbase数据根据hbase目标区域划分为多个数据组的步骤,可被实施为:
67.确定所述待写入hbase数据是否满足预设实时性要求;
68.当确定所述待写入hbase数据满足预设实时性要求时,将所述待写入hbase数据根据hbase目标区域划分为多个数据组。
69.上文提及,hbase可用于数据的实时读写,另外,不可否认的是,数据的中间存储将会耗费一定的时间,因此,在该实施方式中,仅对于写入实时性要求不高的数据才执行上述中间存储策略。即在该实施方式中,在获取得到待写入hbase数据之后,首先确定所述待写入hbase数据是否满足预设实时性要求,即确定所述待写入hbase数据是否为对于写入实时性要求不高的数据,其中,所述预设实时性要求可根据实际应用的需要进行设置,比如可设置为数据写入时延大于或等于预设时延阈值;然后,若确定所述待写入hbase数据满足预设实时性要求,即确定所述待写入hbase数据对于写入实时性要求不高时,才可执行后续的数据中间存储流程,即将所述待写入hbase数据根据hbase目标区域划分为多个数据组,将数据组写入中间存储组件,并在满足预设条件时,将所述数据组从所述中间存储组件读入至对应的hbase目标区域中。
70.在本公开一实施方式中,所述步骤s102,即将所述待写入hbase数据根据hbase目
标区域划分为多个数据组的步骤,可包括以下步骤:
71.获取所述待写入hbase数据携带的hbase目标区域信息;
72.将同一hbase目标区域对应的待写入hbase数据划分为同一数据组,得到与所述hbase目标区域对应的多个数据组。
73.在该实施方式中,在将所述待写入hbase数据根据hbase目标区域划分为多个数据组时,首先获取所述待写入hbase数据携带的hbase目标区域信息;然后根据所述hbase目标区域信息对于所述待写入hbase数据进行区分,将将要写入同一hbase目标区域的hbase数据划分至同一数据组中,这样就可以得到与所述hbase目标区域对应的多个数据组,其中,每个数据组对应同一hbase目标区域。
74.在本公开一实施方式中,所述预设条件指的是触发将所述数据组从所述中间存储组件读入至对应的hbase目标区域中的条件。
75.在本公开一实施方式中,所述预设条件可包括数据量条件和/或时长条件,其中:
76.所述数据量条件可表达为:所述中间存储组件中存储的数据量达到预设数据量阈值,也就是说,当所述中间存储组件中存储的数据量多到一定程度时,就可启动中间存储数据至目的地的读取,其中,所述预设数据量阈值可根据实际应用的需要进行设置,比如,可根据所述中间存储组件的可存储空间大小来确定所述数据量阈值,更为具体地,可将所述数据量阈值设置为中间存储组件可存储空间大小的80%。
77.所述时长条件可表达为:当前时间与数据组写入中间存储组件的写入时间之间的时间差达到预设时长阈值,也就是说,为了不影响数据读取的实时性,当所述中间存储组件存储数据的时间足够长时,可启动中间存储数据至目的地的读取。其中,所述预设时长阈值可根据实际应用的需要进行设置,比如,可根据hbase对于数据的实时性要求来设置所述预设时长阈值。
78.进一步地,当所述预设条件为所述时长条件时,所述时间差的计算可以以数据组为单位,也就是说,可分别确定当前时间与每个数据组写入中间存储组件的写入时间之间的时间差是否达到预设时长阈值,对于当前时间与写入中间存储组件的写入时间之间的时间差达到预设时长阈值的数据组执行数据读取操作,即,当确定当前时间与某个数据组写入中间存储组件的写入时间之间的时间差达到预设时长阈值时,即可启动将该数据组读入至目的地的数据读取操作。
79.在本公开一实施方式中,所述步骤s103中,将所述数据组从所述中间存储组件读入至对应的hbase目标区域中的步骤,可包括以下步骤:
80.将所述数据组根据hbase预设文件格式组成hbase文件;
81.将所述hbase文件从所述中间存储组件读入至与所述数据组对应的hbase目标区域中。
82.在将所述数据组从所述中间存储组件读入至对应的hbase目标区域中时,为了保障数据读取的有效性,同时提高数据读取的效率,在该实施方式中,首先将需要读入至hbase的数据组根据hbase预设文件格式组成符合hbase预设文件格式要求的hbase文件;然后再将所述hbase文件从所述中间存储组件读入至与所述数据组对应的hbase目标区域中,以借助数据的中间存储实现数据的非实时性读取,进而减少内存占有率,提高内存的有效使用率。
83.下述为本公开装置实施例,可以用于执行本公开方法实施例。
84.图2示出根据本公开一实施方式的数据读写装置的结构框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图2所示,所述数据读写装置包括:
85.获取模块201,被配置为获取待写入hbase数据;
86.划分模块202,被配置为将所述待写入hbase数据根据hbase目标区域划分为多个数据组;
87.读取模块203,被配置为将所述数据组写入中间存储组件,并在满足预设条件时,将所述数据组从所述中间存储组件读入至对应的hbase目标区域中。
88.上文提及,hbase是一种构建在hdfs之上的分布式、面向列的存储系统,可用于数据的实时读写、以及超大规模数据集的随机访问,也正因为hbase具有以上特点,对于hbase的读写会占用大量内存。因此,亟需一种既能够实现hbase数据的有效读写,又能够减少内存占有率的数据读写方案。
89.考虑到上述问题,在该实施方式中,提出一种数据读写装置,该装置通过将待写入hbase的数据进行中间存储,以及将待写入hbase的数据进行分组来减少内存占有率。该技术方案实现简单,操作方便,既能够实现hbase数据的有效读写,又能够减少内存占有率,提高内存有效使用率,降低hbase数据写入时的cpu负荷。
90.在本公开一实施方式中,所述数据读写装置可实现为进行数据读写的计算设备、电子设备、处理器、服务器等等。
91.在本公开一实施方式中,所述待写入hbase数据指的是将要写入至hbase中的数据。其中,每个待写入hbase数据有可能需要写入至hbase中的不同区域中,因此,所述待写入hbase数据除了数据本体,还携带有将要写入的hbase目标区域信息。其中,所述hbase目标区域指的是待写入hbase的数据最终将会写入的hbase的区域;进一步地,所述hbase目标区域信息比如可以为hbase目标区域id等具有区别性的hbase目标区域标识信息。
92.在本公开一实施方式中,所述中间存储组件指的是可用作数据的中间存储的,或者说可用作数据的中转存储的存储组件。其中,所述中间存储组件比如可以为缓存、消息队列等存储组件。
93.在上述实施方式中,首先获取携带有将要写入的hbase目标区域信息的待写入hbase数据;然后将所述待写入hbase数据根据hbase目标区域划分为多个数据组;然后将所述数据组写入中间存储组件,后续在满足预设条件时,再将所述数据组从所述中间存储组件中读入至对应的hbase目标区域中。
94.进一步地,在将所述数据组从所述中间存储组件中读入至对应的hbase目标区域中时,可借助对于bulkload函数的调用,将所述数据组加载至对应的hbase目标区域中。
95.在本公开一实施方式中,所述划分模块202被配置为:
96.确定所述待写入hbase数据是否满足预设实时性要求;
97.当确定所述待写入hbase数据满足预设实时性要求时,将所述待写入hbase数据根据hbase目标区域划分为多个数据组。
98.上文提及,hbase可用于数据的实时读写,另外,不可否认的是,数据的中间存储将会耗费一定的时间,因此,在该实施方式中,仅对于写入实时性要求不高的数据才执行上述
中间存储策略。即在该实施方式中,在获取得到待写入hbase数据之后,首先确定所述待写入hbase数据是否满足预设实时性要求,即确定所述待写入hbase数据是否为对于写入实时性要求不高的数据,其中,所述预设实时性要求可根据实际应用的需要进行设置,比如可设置为数据写入时延大于或等于预设时延阈值;然后,若确定所述待写入hbase数据满足预设实时性要求,即确定所述待写入hbase数据对于写入实时性要求不高时,才可执行后续的数据中间存储流程,即将所述待写入hbase数据根据hbase目标区域划分为多个数据组,将数据组写入中间存储组件,并在满足预设条件时,将所述数据组从所述中间存储组件读入至对应的hbase目标区域中。
99.在本公开一实施方式中,所述划分模块202可被配置为:
100.获取所述待写入hbase数据携带的hbase目标区域信息;
101.将同一hbase目标区域对应的待写入hbase数据划分为同一数据组,得到与所述hbase目标区域对应的多个数据组。
102.在该实施方式中,在将所述待写入hbase数据根据hbase目标区域划分为多个数据组时,首先获取所述待写入hbase数据携带的hbase目标区域信息;然后根据所述hbase目标区域信息对于所述待写入hbase数据进行区分,将将要写入同一hbase目标区域的hbase数据划分至同一数据组中,这样就可以得到与所述hbase目标区域对应的多个数据组,其中,每个数据组对应同一hbase目标区域。
103.在本公开一实施方式中,所述预设条件指的是触发将所述数据组从所述中间存储组件读入至对应的hbase目标区域中的条件。
104.在本公开一实施方式中,所述预设条件可包括数据量条件和/或时长条件,其中:
105.所述数据量条件可表达为:所述中间存储组件中存储的数据量达到预设数据量阈值,也就是说,当所述中间存储组件中存储的数据量多到一定程度时,就可启动中间存储数据至目的地的读取,其中,所述预设数据量阈值可根据实际应用的需要进行设置,比如,可根据所述中间存储组件的可存储空间大小来确定所述数据量阈值,更为具体地,可将所述数据量阈值设置为中间存储组件可存储空间大小的80%。
106.所述时长条件可表达为:当前时间与数据组写入中间存储组件的写入时间之间的时间差达到预设时长阈值,也就是说,为了不影响数据读取的实时性,当所述中间存储组件存储数据的时间足够长时,可启动中间存储数据至目的地的读取。其中,所述预设时长阈值可根据实际应用的需要进行设置,比如,可根据hbase对于数据的实时性要求来设置所述预设时长阈值。
107.进一步地,当所述预设条件为所述时长条件时,所述时间差的计算可以以数据组为单位,也就是说,可分别确定当前时间与每个数据组写入中间存储组件的写入时间之间的时间差是否达到预设时长阈值,对于当前时间与写入中间存储组件的写入时间之间的时间差达到预设时长阈值的数据组执行数据读取操作,即,当确定当前时间与某个数据组写入中间存储组件的写入时间之间的时间差达到预设时长阈值时,即可启动将该数据组读入至目的地的数据读取操作。
108.在本公开一实施方式中,所述读取模块203可被配置为:
109.将所述数据组根据hbase预设文件格式组成hbase文件;
110.将所述hbase文件从所述中间存储组件读入至与所述数据组对应的hbase目标区
域中。
111.在将所述数据组从所述中间存储组件读入至对应的hbase目标区域中时,为了保障数据读取的有效性,同时提高数据读取的效率,在该实施方式中,首先将需要读入至hbase的数据组根据hbase预设文件格式组成符合hbase预设文件格式要求的hbase文件;然后再将所述hbase文件从所述中间存储组件读入至与所述数据组对应的hbase目标区域中,以借助数据的中间存储实现数据的非实时性读取,进而减少内存占有率,提高内存的有效使用率。
112.本公开还公开了一种电子设备,图3示出根据本公开一实施方式的电子设备的结构框图,如图3所示,所述电子设备300包括存储器301和处理器302;其中,
113.所述存储器301用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器302执行以实现上述方法步骤。
114.图4是适于用来实现根据本公开一实施方式的数据读写方法的计算机系统的结构示意图。
115.如图4所示,计算机系统400包括处理单元401,其可以根据存储在只读存储器(rom)402中的程序或者从存储部分408加载到随机访问存储器(ram)403中的程序而执行上述实施方式中的各种处理。在ram403中,还存储有计算机系统400操作所需的各种程序和数据。处理单元401、rom402以及ram403通过总线404彼此相连。输入/输出(i/o)接口405也连接至总线404。
116.以下部件连接至i/o接口405:包括键盘、鼠标等的输入部分406;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分407;包括硬盘等的存储部分408;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分409。通信部分409经由诸如因特网的网络执行通信处理。驱动器410也根据需要连接至i/o接口405。可拆卸介质411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器410上,以便于从其上读出的计算机程序根据需要被安装入存储部分408。其中,所述处理单元401可实现为cpu、gpu、tpu、fpga、npu等处理单元。
117.特别地,根据本公开的实施方式,上文描述的方法可以被实现为计算机软件程序。例如,本公开的实施方式包括一种计算机程序产品,其包括有形地包含在及其可读介质上的计算机程序,所述计算机程序包含用于执行所述数据读写方法的程序代码。在这样的实施方式中,该计算机程序可以通过通信部分409从网络上被下载和安装,和/或从可拆卸介质411被安装。
118.本公开实施例还公开了一种计算机程序产品,所述计算机程序产品包括计算机程序/指令,该计算机程序/指令被处理器执行时实现上述任一方法步骤。
119.附图中的流程图和框图,图示了按照本公开各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,路程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用
执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
120.描述于本公开实施方式中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
121.作为另一方面,本公开实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本公开实施例的方法。
122.以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开实施例中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开实施例中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1