首页 / 专利库 / 电脑零配件 / 接口 / 通信接口 / 中间件实例管理装置和方法

中间件实例管理装置和方法

阅读:0发布:2021-02-10

专利汇可以提供中间件实例管理装置和方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种 中间件 实例管理装置和方法,装置包括:实例化模 块 ,用于将位于队列中的多个处理器进行实例化得到多个处理器实例对象;第一分组模块,用于根据预设的配置表建立多个第一组;第二分组模块,用于根据多个第一组以及多个第一组中处理器实例对象对应的处理器的队列标志建立多个第二组;划分模块,将处理器实例对象对应处理器属于第一中间件实例的第二组划分为可运行第二组;数据写入模块,控制第一中间件实例运行第一处理器实例对象向预设的第一分表写入数据。在本发明的技术方案中,在用户量较大的情况造成某些可运行第二组中的处理器实例对象无法使用,也有足够的其他处理器实例对象用来完成对分表的数据写入。,下面是中间件实例管理装置和方法专利的具体信息内容。

1.一种中间件实例管理装置,其特征在于,包括:
实例化模,用于将位于队列中的多个处理器进行实例化得到多个处理器实例对象,所述多个处理器具有互不相同的队列标志;
第一分组模块,用于根据预设的配置表建立多个第一组,所述配置表中记录所述多个处理器以及所述多个处理器所属的中间件实例,每个第一组中包括一个处理器实例对象及其对应处理器所述的中间件实例;
第二分组模块,用于根据所述多个第一组以及所述多个第一组中处理器实例对象对应的处理器的队列标志建立多个第二组,每个第二组中包括一个处理器的队列标志以及该处理器的处理器实例对象所在的第一组;
划分模块,用于对于当前需向分表写入数据的第一中间件实例,判断所述多个第二组中的处理器实例对象对应处理器是否属于所述第一中间件实例,并将其中处理器实例对象对应处理器属于所述第一中间件实例的第二组划分为可运行第二组,将其中处理器实例对象对应处理器不属于所述第一中间件实例的第二组划分为不可运行第二组;
数据写入模块,用于从所述可运行第二组中选择一个第一处理器实例对象,并控制所述第一中间件实例运行所述第一处理器实例对象向预设的第一分表写入数据。
2.根据权利要求1所述的中间件实例管理装置,其特征在于,还包括:
第一判断模块,用于根据所述第一处理器实例对象所对应处理器的队列标志,查找是否存在具有所述第一处理器实例对象的不可运行第二组,当查找到具有所述第一处理器实例对象的不可运行第二组时,通过预设的远程通信接口查询所述第一处理器实例对象是否在所找到的不可运行第二组的第二中间件实例中运行,当所述第一处理器实例对象在所述第二中间件实例中运行时,结束所述第一处理器实例在所述第一中间实例中的运行,并将所述可运行第二组修改为所述不可运行第二组;
当未找到具有所述第一处理器实例对象的不可运行第二组或所述第一处理器实例对象未在所述第二中间件实例中运行时,所述数据写入模块控制所述第一中间件实例运行所述第一处理器实例对象向预设的第一分表写入数据。
3.根据权利要求1所述的中间件实例管理装置,其特征在于,还包括:
版本号设置模块,用于从预设的缓存中提取一个自增值作为所述第一处理器实例对象的版本号;
查找模块,用于在所述第一分表中写输入的数据量到达预设阈值时,根据所述第一处理器实例对象对应处理器的队列标志,查找具有该队列标志的不可运行第二组中,并取其中的中间件实例为第三中间件实例;
版本号比较模块,用于控制所述第一中间件实例通过预设的远程通信接口与所述第三中间件实例通信,以比较所述第一中间件实例的版本号与所述第三中间件实例的版本号大小;
分表处理模块,用于控制所述第一中间件实例的版本号小于所述第三中间件实例的版本号时,所述第一中间实例获取第二分表,以用于进行数据写入。
4.根据权利要求3所述的中间件实例管理装置,其特征在于,
所述版本号设置模块从所述缓存中重新获取一个自增值作为所述第一处理器实例对象的版本号。
5.根据权利要求3所述的中间件实例管理装置,其特征在于,还包括:
信息分发模块,用于控制所述第一中间件实例通过所述远程通信接口,将所述分表信息发送给多个其他多个中间件实例,以触发所述其他多个中间件实例对所述第二分表进行数据写入。
6.一种中间件实例管理方法,其特征在于,包括:
将位于队列中的多个处理器进行实例化得到多个处理器实例对象,所述多个处理器具有互不相同的队列标志;
根据预设的配置表建立多个第一组,所述配置表中记录所述多个处理器以及所述多个处理器所属的中间件实例,每个第一组中包括一个处理器实例对象及其对应处理器所述的中间件实例;
根据所述多个第一组以及所述多个第一组中处理器实例对象对应的处理器的队列标志建立多个第二组,每个第二组中包括一个处理器的队列标志以及该处理器的处理器实例对象所在的第一组;
对于当前需向分表写入数据的第一中间件实例,判断所述多个第二组中的处理器实例对象对应处理器是否属于所述第一中间件实例,并将其中处理器实例对象对应处理器属于所述第一中间件实例的第二组划分为可运行第二组,将其中处理器实例对象对应处理器不属于所述第一中间件实例的第二组划分为不可运行第二组;
从所述可运行第二组中选择一个第一处理器实例对象,所述第一中间件实例运行所述第一处理器实例对象向预设的第一分表写入数据。
7.根据权利要求6所述的中间件实例管理方法,其特征在于,在所述第一中间件实例运行所述第一处理器实例对象向预设的第一分表写入数据之前,还包括:
根据所述第一处理器实例对象所对应处理器的队列标志,查找是否存在具有所述第一处理器实例对象的不可运行第二组,当查找到具有所述第一处理器实例对象的不可运行第二组时,通过预设的远程通信接口查询所述第一处理器实例对象是否在所找到的不可运行第二组的第二中间件实例中运行,当所述第一处理器实例对象在所述第二中间件实例中运行时,结束所述第一处理器实例在所述第一中间实例中的运行,并将所述可运行第二组修改为所述不可运行第二组;当未找到具有所述第一处理器实例对象的不可运行第二组或所述第一处理器实例对象未在所述第二中间件实例中运行时,进入所述第一中间件实例运行所述第一处理器实例对象向预设的第一分表写入数据。
8.根据权利要求6所述的中间件实例管理方法,其特征在于,还包括:
从预设的缓存中提取一个自增值作为所述第一处理器实例对象的版本号;
在所述第一分表中写输入的数据量到达预设阈值时,根据所述第一处理器实例对象对应处理器的队列标志,查找具有该队列标志的不可运行第二组中,并取其中的中间件实例为第三中间件实例;
所述第一中间件实例通过预设的远程通信接口与所述第三中间件实例通信,以比较所述第一中间件实例的版本号与所述第三中间件实例的版本号大小;
所述第一中间件实例的版本号小于所述第三中间件实例的版本号时,所述第一中间实例获取第二分表,以用于进行数据写入。
9.根据权利要求8所述的中间件实例管理方法,其特征在于,还包括:
从所述缓存中重新获取一个自增值作为所述第一处理器实例对象的版本号。
10.根据权利要求8所述的中间件实例管理方法,其特征在于,还包括:
所述第一中间件实例通过所述远程通信接口,将所述分表信息发送给多个其他多个中间件实例,以触发所述其他多个中间件实例对所述第二分表进行数据写入。

说明书全文

中间件实例管理装置和方法

技术领域

[0001] 本发明涉及电子信息技术领域,尤其涉及一种中间件实例管理装置和方法。

背景技术

[0002] 随着移动通信以及移动互联网的快速发展,移动终端的持有量在不断上升,移动终端的系统功能也在不断加速更新,移动终端的固件版本产生速度也随之增长。在大量的移动终端的用户进行并发的FOTA(移动终端空中下载软件升级)升级时,FOTA系统产生的数据也随之大量生产,因而,当前的延迟异步持久化存储中间件在单台单实例的模式下,已无法满足千万级别的用户量产生的数据处理的性能要求,急需要一种能够将延迟异步持久化存储中间件横向平扩展,进行集群化的方案,保障该中间件的数据处理能能够随着用户量的量级提升而进行增加机器节点的扩展而得到提升,同时能够对该中间件的集群中的各个节点进行管理。

发明内容

[0003] 本发明的主要目的在于提出一种中间件实例管理装置和方法,旨在提高中间件在用户量较大的情况下写入数据的能力。
[0004] 为实现上述目的,本发明提供的一种中间件实例管理装置,包括:实例化模,用于将位于队列中的多个处理器进行实例化得到多个处理器实例对象,所述多个处理器具有互不相同的队列标志;第一分组模块,用于根据预设的配置表建立多个第一组,所述配置表中记录所述多个处理器以及所述多个处理器所属的中间件实例,每个第一组中包括一个处理器实例对象及其对应处理器所述的中间件实例;第二分组模块,用于根据所述多个第一组以及所述多个第一组中处理器实例对象对应的处理器的队列标志建立多个第二组,每个第二组中包括一个处理器的队列标志以及该处理器的处理器实例对象所在的第一组;划分模块,用于对于当前需向分表写入数据的第一中间件实例,判断所述多个第二组中的处理器实例对象对应处理器是否属于所述第一中间件实例,并将其中处理器实例对象对应处理器属于所述第一中间件实例的第二组划分为可运行第二组,将其中处理器实例对象对应处理器不属于所述第一中间件实例的第二组划分为不可运行第二组;数据写入模块,用于从所述可运行第二组中选择一个第一处理器实例对象,并控制所述第一中间件实例运行所述第一处理器实例对象向预设的第一分表写入数据。
[0005] 可选地,前述的中间件实例管理装置,还包括:第一判断模块,用于根据所述第一处理器实例对象所对应处理器的队列标志,查找是否存在具有所述第一处理器实例对象的不可运行第二组,当查找到具有所述第一处理器实例对象的不可运行第二组时,通过预设的远程通信接口查询所述第一处理器实例对象是否在所找到的不可运行第二组的第二中间件实例中运行,当所述第一处理器实例对象在所述第二中间件实例中运行时,结束所述第一处理器实例在所述第一中间实例中的运行,并将所述可运行第二组修改为所述不可运行第二组;当未找到具有所述第一处理器实例对象的不可运行第二组或所述第一处理器实例对象未在所述第二中间件实例中运行时,所述数据写入模块控制所述第一中间件实例运行所述第一处理器实例对象向预设的第一分表写入数据。
[0006] 可选地,前述的中间件实例管理装置,还包括:版本号设置模块,用于从预设的缓存中提取一个自增值作为所述第一处理器实例对象的版本号;查找模块,用于在所述第一分表中写输入的数据量到达预设阈值时,根据所述第一处理器实例对象对应处理器的队列标志,查找具有该队列标志的不可运行第二组中,并取其中的中间件实例为第三中间件实例;版本号比较模块,用于控制所述第一中间件实例通过预设的远程通信接口与所述第三中间件实例通信,以比较所述第一中间件实例的版本号与所述第三中间件实例的版本号大小;分表处理模块,用于控制所述第一中间件实例的版本号小于所述第三中间件实例的版本号时,所述第一中间实例获取第二分表,以用于进行数据写入。
[0007] 可选地,前述的中间件实例管理装置,所述版本号设置模块从所述缓存中重新获取一个自增值作为所述第一处理器实例对象的版本号。
[0008] 可选地,前述的中间件实例管理装置,还包括:信息分发模块,用于控制所述第一中间件实例通过所述远程通信接口,将所述分表信息发送给多个其他多个中间件实例,以触发所述其他多个中间件实例对所述第二分表进行数据写入。
[0009] 为实现上述目的,本发明还提供了一种中间件实例管理方法,包括:将位于队列中的多个处理器进行实例化得到多个处理器实例对象,所述多个处理器具有互不相同的队列标志;根据预设的配置表建立多个第一组,所述配置表中记录所述多个处理器以及所述多个处理器所属的中间件实例,每个第一组中包括一个处理器实例对象及其对应处理器所述的中间件实例;根据所述多个第一组以及所述多个第一组中处理器实例对象对应的处理器的队列标志建立多个第二组,每个第二组中包括一个处理器的队列标志以及该处理器的处理器实例对象所在的第一组;对于当前需向分表写入数据的第一中间件实例,判断所述多个第二组中的处理器实例对象对应处理器是否属于所述第一中间件实例,并将其中处理器实例对象对应处理器属于所述第一中间件实例的第二组划分为可运行第二组,将其中处理器实例对象对应处理器不属于所述第一中间件实例的第二组划分为不可运行第二组;从所述可运行第二组中选择一个第一处理器实例对象,所述第一中间件实例运行所述第一处理器实例对象向预设的第一分表写入数据。
[0010] 可选地,前述的中间件实例管理方法,在所述第一中间件实例运行所述第一处理器实例对象向预设的第一分表写入数据之前,还包括:根据所述第一处理器实例对象所对应处理器的队列标志,查找是否存在具有所述第一处理器实例对象的不可运行第二组,当查找到具有所述第一处理器实例对象的不可运行第二组时,通过预设的远程通信接口查询所述第一处理器实例对象是否在所找到的不可运行第二组的第二中间件实例中运行,当所述第一处理器实例对象在所述第二中间件实例中运行时,结束所述第一处理器实例在所述第一中间实例中的运行,并将所述可运行第二组修改为所述不可运行第二组;当未找到具有所述第一处理器实例对象的不可运行第二组或所述第一处理器实例对象未在所述第二中间件实例中运行时,进入所述第一中间件实例运行所述第一处理器实例对象向预设的第一分表写入数据。
[0011] 可选地,前述的中间件实例管理方法,还包括:从预设的缓存中提取一个自增值作为所述第一处理器实例对象的版本号;在所述第一分表中写输入的数据量到达预设阈值时,根据所述第一处理器实例对象对应处理器的队列标志,查找具有该队列标志的不可运行第二组中,并取其中的中间件实例为第三中间件实例;所述第一中间件实例通过预设的远程通信接口与所述第三中间件实例通信,以比较所述第一中间件实例的版本号与所述第三中间件实例的版本号大小;所述第一中间件实例的版本号小于所述第三中间件实例的版本号时,所述第一中间实例获取第二分表,以用于进行数据写入。
[0012] 可选地,前述的中间件实例管理方法,还包括:从所述缓存中重新获取一个自增值作为所述第一处理器实例对象的版本号。
[0013] 可选地,前述的中间件实例管理方法,还包括:所述第一中间件实例通过所述远程通信接口,将所述分表信息发送给多个其他多个中间件实例,以触发所述其他多个中间件实例对所述第二分表进行数据写入。
[0014] 本发明提出的可选地,前述的中间件实例管理装置和方法,,至少具有以下优点:
[0015] 在本发明的技术方案中,配置表中记录了处理器和其所属的中间件实例,则实例化后的处理器实例对象也属于相应的中间件实例,则基于配置表设置第一组、第二组并进一步划分为可运行第二组和不可运行第二组,则可运行第二组中的处理器实例对象用于供其对应处理器所属的中间件实例向分表写入数据时所使用,即使在用户量较大的情况造成某些可运行第二组中的处理器实例对象无法使用,也有足够的其他处理器实例对象用来完成对分表的数据写入。附图说明
[0016] 图1为参与本发明各个实施例一个可选的移动终端的硬件结构示意图;
[0017] 图2为如图1所示的移动终端的无线通信系统示意图;
[0018] 图3为根据本发明的一个实施例的中间件实例管理装置的框图
[0019] 图4为根据本发明的一个实施例的中间件实例管理装置的框图;
[0020] 图5为根据本发明的一个实施例的中间件实例管理方法的流程图
[0021] 图6为根据本发明的一个实施例的中间件实例管理方法的流程图。
[0022] 本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

[0023] 应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0024] 现在将参考附图描述实现本发明各个实施例的移动终端。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身并没有特定的意义。因此,"模块"与"部件"可以混合地使用。
[0025] 移动终端可以以各种形式来实施。例如,本发明中描述的终端可以包括诸如移动电话、智能电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、导航装置等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。下面,假设终端是移动终端。然而,本领域技术人员将理解的是,除了特别用于移动目的的元件之外,根据本发明的实施方式的构造也能够应用于固定类型的终端。
[0026] 图1为参与本发明各个实施例一个可选的移动终端的硬件结构示意。
[0027] 移动终端100可以包括无线通信单元110、用户输入单元130、输出单元150、存储器160、接口单元170、控制器180和电源单元190等等。图1示出了具有各种组件的移动终端,但是应理解的是,并不要求实施所有示出的组件。可以替代地实施更多或更少的组件。将在下面详细描述移动终端的元件。
[0028] 无线通信单元110通常包括一个或多个组件,其允许移动终端100与无线通信系统或网络之间的无线电通信。例如,无线通信单元可以包括广播接收模块111、移动通信模块112、无线互联网模块113、短程通信模块114和位置信息模块115中的至少一个。
[0029] 广播接收模块111经由广播信道从外部广播管理服务器接收广播信号和/或广播相关信息。广播信道可以包括卫星信道和/或地面信道。广播管理服务器可以是生成并发送广播信号和/或广播相关信息的服务器或者接收之前生成的广播信号和/或广播相关信息并且将其发送给终端的服务器。广播信号可以包括TV广播信号、无线电广播信号、数据广播信号等等。而且,广播信号可以进一步包括与TV或无线电广播信号组合的广播信号。广播相关信息也可以经由移动通信网络提供,并且在该情况下,广播相关信息可以由移动通信模块112来接收。广播信号可以以各种形式存在,例如,其可以以数字多媒体广播(DMB)的电子节目指南(EPG)、数字视频广播手持(DVB-H)的电子服务指南(ESG)等等的形式而存在。广播接收模块111可以通过使用各种类型的广播系统接收信号广播。特别地,广播接收模块111可以通过使用诸如多媒体广播-地面(DMB-T)、数字多媒体广播-卫星(DMB-S)、数字视频广播-手持(DVB-H),前向链路媒体(MediaFLO@)的数据广播系统、地面数字广播综合服务(ISDB-T)等等的数字广播系统接收数字广播。广播接收模块111可以被构造为适合提供广播信号的各种广播系统以及上述数字广播系统。经由广播接收模块111接收的广播信号和/或广播相关信息可以存储在存储器160(或者其它类型的存储介质)中。
[0030] 移动通信模块112将无线电信号发送到基站(例如,接入点、节点B等等)、外部终端以及服务器中的至少一个和/或从其接收无线电信号。这样的无线电信号可以包括语音通话信号、视频通话信号、或者根据文本和/或多媒体消息发送和/或接收的各种类型的数据。
[0031] 无线互联网模块113支持移动终端的无线互联网接入。该模块可以内部或外部地耦接到终端。该模块所涉及的无线互联网接入技术可以包括WLAN(无线LAN)(Wi-Fi)、Wibro(无线宽带)、Wimax(全球微波互联接入)、HSDPA(高速下行链路分组接入)等等。
[0032] 短程通信模块114是用于支持短程通信的模块。短程通信技术的一些示例包括蓝牙TM、射频识别(RFID)、红外数据协会(IrDA)、超宽带(UWB)、紫蜂TM等等。
[0033] 位置信息模块115是用于检查或获取移动终端的位置信息的模块。位置信息模块的典型示例是GPS(全球定位系统)。根据当前的技术,GPS模块115计算来自三个或更多卫星的距离信息和准确的时间信息并且对于计算的信息应用三测量法,从而根据经度、纬度和高度准确地计算三维当前位置信息。当前,用于计算位置和时间信息的方法使用三颗卫星并且通过使用另外的一颗卫星校正计算出的位置和时间信息的误差。此外,GPS模块115能够通过实时地连续计算当前位置信息来计算速度信息。
[0034] 用户输入单元130可以根据用户输入的命令生成键输入数据以控制移动终端的各种操作。用户输入单元130允许用户输入各种类型的信息,并且可以包括键盘、锅仔片、触摸板(例如,检测由于被接触而导致的电阻、压力、电容等等的变化的触敏组件)、滚轮、摇杆等等。特别地,当触摸板以层的形式叠加在显示单元151上时,可以形成触摸屏
[0035] 接口单元170用作至少一个外部装置与移动终端100连接可以通过的接口。例如,外部装置可以包括有线或无线头戴式机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的装置的端口、音频输入/输出(I/O)端口、视频I/O端口、耳机端口等等。识别模块可以是存储用于验证用户使用移动终端100的各种信息并且可以包括用户识别模块(UIM)、客户识别模块(SIM)、通用客户识别模块(USIM)等等。另外,具有识别模块的装置(下面称为"识别装置")可以采取智能卡的形式,因此,识别装置可以经由端口或其它连接装置与移动终端100连接。接口单元170可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到移动终端100内的一个或多个元件或者可以用于在移动终端和外部装置之间传输数据。
[0036] 另外,当移动终端100与外部底座连接时,接口单元170可以用作允许通过其将电力从底座提供到移动终端100的路径或者可以用作允许从底座输入的各种命令信号通过其传输到移动终端的路径。从底座输入的各种命令信号或电力可以用作用于识别移动终端是否准确地安装在底座上的信号。输出单元150被构造为以视觉、音频和/或触觉方式提供输出信号(例如,音频信号视频信号、警报信号、振动信号等等)。输出单元150可以包括显示单元151、音频输出模块152、警报单元153等等。
[0037] 显示单元151可以显示在移动终端100中处理的信息。例如,当移动终端100处于电话通话模式时,显示单元151可以显示与通话或其它通信(例如,文本消息收发、多媒体文件下载等等)相关的用户界面(UI)或图形用户界面(GUI)。当移动终端100处于视频通话模式或者图像捕获模式时,显示单元151可以显示捕获的图像和/或接收的图像、示出视频或图像以及相关功能的UI或GUI等等。
[0038] 同时,当显示单元151和触摸板以层的形式彼此叠加以形成触摸屏时,显示单元151可以用作输入装置和输出装置。显示单元151可以包括液晶显示器(LCD)、薄膜晶体管LCD(TFT-LCD)、有机发光二极管(OLED)显示器、柔性显示器、三维(3D)显示器等等中的至少一种。这些显示器中的一些可以被构造为透明状以允许用户从外部观看,这可以称为透明显示器,典型的透明显示器可以例如为TOLED(透明有机发光二极管)显示器等等。根据特定想要的实施方式,移动终端100可以包括两个或更多显示单元(或其它显示装置),例如,移动终端可以包括外部显示单元(未示出)和内部显示单元(未示出)。触摸屏可用于检测触摸输入压力以及触摸输入位置和触摸输入面积。
[0039] 音频输出模块152可以在移动终端处于呼叫信号接收模式、通话模式、记录模式、语音识别模式、广播接收模式等等模式下时,将无线通信单元110接收的或者在存储器160中存储的音频数据转换音频信号并且输出为声音。而且,音频输出模块152可以提供与移动终端100执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等等)。音频输出模块152可以包括扬声器、蜂鸣器等等。
[0040] 警报单元153可以提供输出以将事件的发生通知给移动终端100。典型的事件可以包括呼叫接收、消息接收、键信号输入、触摸输入等等。除了音频或视频输出之外,警报单元153可以以不同的方式提供输出以通知事件的发生。例如,警报单元153可以以振动的形式提供输出,当接收到呼叫、消息或一些其它进入通信(incomingcommunication)时,警报单元153可以提供触觉输出(即,振动)以将其通知给用户。通过提供这样的触觉输出,即使在用户的移动电话处于用户的口袋中时,用户也能够识别出各种事件的发生。警报单元153也可以经由显示单元151或音频输出模块152提供通知事件的发生的输出。
[0041] 存储器160可以存储由控制器180执行的处理和控制操作的软件程序等等,或者可以暂时地存储己经输出或将要输出的数据(例如,电话簿、消息、静态图像、视频等等)。而且,存储器160可以存储关于当触摸施加到触摸屏时输出的各种方式的振动和音频信号的数据。
[0042] 存储器160可以包括至少一种类型的存储介质,所述存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等等。而且,移动终端100可以与通过网络连接执行存储器160的存储功能的网络存储装置协作。
[0043] 控制器180通常控制移动终端的总体操作。例如,控制器180执行与语音通话、数据通信、视频通话等等相关的控制和处理。另外,控制器180可以包括用于再现(或回放)多媒体数据的多媒体模块1810,多媒体模块1810可以构造在控制器180内,或者可以构造为与控制器180分离。控制器180可以执行模式识别处理,以将在触摸屏上执行的手写输入或者图片绘制输入识别为字符或图像。
[0044] 电源单元190在控制器180的控制下接收外部电力或内部电力并且提供操作各元件和组件所需的适当的电力。
[0045] 这里描述的各种实施方式可以以使用例如计算机软件、硬件或其任何组合的计算机可读介质来实施。对于硬件实施,这里描述的实施方式可以通过使用特定用途集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理装置(DSPD)、可编程逻辑装置(PLD)、现场可编程阵列(FPGA)、处理器、控制器、微控制器微处理器、被设计为执行这里描述的功能的电子单元中的至少一种来实施,在一些情况下,这样的实施方式可以在控制器180中实施。对于软件实施,诸如过程或功能的实施方式可以与允许执行至少一种功能或操作的单独的软件模块来实施。软件代码可以由以任何适当的编程语言编写的软件应用程序(或程序)来实施,软件代码可以存储在存储器160中并且由控制器180执行。
[0046] 至此,己经按照其功能描述了移动终端。下面,为了简要起见,将描述诸如折叠型、直板型、摆动型、滑动型移动终端等等的各种类型的移动终端中的滑动型移动终端作为示例。因此,本发明能够应用于任何类型的移动终端,并且不限于滑动型移动终端。
[0047] 如图1中所示的移动终端100可以被构造为利用经由或分组发送数据的诸如有线和无线通信系统以及基于卫星的通信系统来操作。
[0048] 现在将参考图2描述其中根据本发明的移动终端能够操作的通信系统。
[0049] 这样的通信系统可以使用不同的空中接口和/或物理层。例如,由通信系统使用的空中接口包括例如频分多址(FDMA)、时分多址(TDMA)、码分多址(CDMA)和通用移动通信系统(UMTS)(特别地,长期演进(LTE))、全球移动通信系统(GSM)等等。作为非限制性示例,下面的描述涉及CDMA通信系统,但是这样的教导同样适用于其它类型的系统。
[0050] 参考图2,CDMA无线通信系统可以包括多个移动终端100、多个基站(BS)270、基站控制器(BSC)275和移动交换中心(MSC)280。MSC280被构造为与公共电话交换网络(PSTN)290形成接口。MSC280还被构造为与可以经由回程线路耦接到基站270的BSC275形成接口。
回程线路可以根据若干己知的接口中的任一种来构造,所述接口包括例如E1/T1、ATM,IP、PPP、帧中继、HDSL、ADSL或xDSL。将理解的是,如图2中所示的系统可以包括多个BSC2750。
[0051] 每个BS270可以服务一个或多个分区(或区域),由多向天线或指向特定方向的天线覆盖的每个分区放射状地远离BS270。或者,每个分区可以由用于分集接收的两个或更多天线覆盖。每个BS270可以被构造为支持多个频率分配,并且每个频率分配具有特定频谱(例如,1.25MHz,5MHz等等)。
[0052] 分区与频率分配的交叉可以被称为CDMA信道。BS270也可以被称为基站收发器子系统(BTS)或者其它等效术语。在这样的情况下,术语"基站"可以用于笼统地表示单个BSC275和至少一个BS270。基站也可以被称为"蜂窝站"。或者,特定BS270的各分区可以被称为多个蜂窝站。
[0053] 如图2中所示,广播发射器(BT)295将广播信号发送给在系统内操作的移动终端100。如图1中所示的广播接收模块111被设置在移动终端100处以接收由BT295发送的广播信号。在图2中,示出了几个全球定位系统(GPS)卫星300。卫星300帮助定位多个移动终端
100中的至少一个。
[0054] 在图2中,描绘了多个卫星300,但是理解的是,可以利用任何数目的卫星获得有用的定位信息。如图1中所示的GPS模块115通常被构造为与卫星300配合以获得想要的定位信息。替代GPS跟踪技术或者在GPS跟踪技术之外,可以使用可以跟踪移动终端的位置的其它技术。另外,至少一个GPS卫星300可以选择性地或者额外地处理卫星DMB传输。
[0055] 作为无线通信系统的一个典型操作,BS270接收来自各种移动终端100的反向链路信号。移动终端100通常参与通话、消息收发和其它类型的通信。特定基站270接收的每个反向链路信号被在特定BS270内进行处理。获得的数据被转发给相关的BSC275。BSC提供通话资源分配和包括BS270之间的软切换过程的协调的移动管理功能。BSC275还将接收到的数据路由到MSC280,其提供用于与PSTN290形成接口的额外的路由服务。类似地,PSTN290与MSC280形成接口,MSC与BSC275形成接口,并且BSC275相应地控制BS270以将正向链路信号发送到移动终端100。
[0056] 基于上述移动终端硬件结构以及通信系统,提出本发明方法各个实施例。
[0057] 如图3所示,本发明的第一实施例中提供一种中间件实例管理装置,包括:
[0058] 实例化模块310,用于将位于队列中的多个处理器进行实例化得到多个处理器实例对象,多个处理器具有互不相同的队列标志。在本实施例中,提供一个初始化管理器,读取配置表中所有可用的处理器配置数据(对应地记录处理器和其所属中间件),依次循环处理:获取队列中处理器的类名,进行反射处理后生成处理器实例对象。
[0059] 第一分组模块320,用于根据预设的配置表建立多个第一组,配置表中记录多个处理器以及多个处理器所属的中间件实例,每个第一组中包括一个处理器实例对象及其对应处理器的中间件实例。在本实施例中,生成一个以所属中间件实例名(ip:port)为Key(键),以处理器实例对象为Value(值)的处理器Map(组)。
[0060] 第二分组模块330,用于根据多个第一组以及多个第一组中处理器实例对象对应的处理器的队列标志建立多个第二组,每个第二组中包括一个处理器的队列标志以及该处理器的处理器实例对象所在的第一组。
[0061] 划分模块340,用于对于当前需向分表写入数据的第一中间件实例,判断多个第二组中的处理器实例对象对应处理器是否属于第一中间件实例,并将其中处理器实例对象对应处理器属于第一中间件实例的第二组划分为可运行第二组,将其中处理器实例对象对应处理器不属于第一中间件实例的第二组划分为不可运行第二组。在本实施例中,对于当前的需进行数据写入的中间件实例,判断该处理器实例对象是否属于当前的中间件实例,如果是则将该处理器Map添加到以处理器的queueKey(队列标志)为Key值的一个可运行Map中,否则加入不可运行Map中(第二次设置的Map的Value是一个以实例名(ip:port)为Key,以处理器实例对象为Value的在先生成的Map,即为嵌套Map的数据结构)
[0062] 数据写入模块350,用于从可运行第二组中选择一个第一处理器实例对象,并控制第一中间件实例运行第一处理器实例对象向预设的第一分表写入数据。在本实施例中,在分表中写入的数据可以是移动终端的升级信息。
[0063] 本实施例的技术方案,则基于配置表设置第一组、第二组并进一步划分为可运行第二组和不可运行第二组,则可运行第二组中的处理器实例对象用于供其对应处理器所属的中间件实例向分表写入数据时所使用,即使在用户量较大的情况造成某些可运行第二组中的处理器实例对象无法使用,也有足够的其他处理器实例对象用来完成对分表的数据写入,这实现了中间件实例的横向水平扩展、集群化,摆脱了纵向扩展对机器硬件性能的依赖,可通过部署大量的廉价X86服务器节点组成的集群,来提高系统的数据处理高吞吐量,保障该中间件实例的数据处理能力能够适应用户量的量级提升。所以本实施例实际上是实现了一种FOTA延迟异步持久化存储中间件的集群化管理方案,解决了FOTA延迟异步持久化存储中间件在千万级别以上的用户终端的升级访问时由于单节点实例造成的数据处理吞吐量的性能问题。
[0064] 本发明的第二实施例中提供一种中间件实例管理装置,相比于前述的实施例,本实施例的中间件实例管理装置,还包括:
[0065] 第一判断模块,用于根据第一处理器实例对象所对应处理器的队列标志,查找是否存在具有第一处理器实例对象的不可运行第二组,当查找到具有第一处理器实例对象的不可运行第二组时,通过预设的远程通信接口查询第一处理器实例对象是否在所找到的不可运行第二组的第二中间件实例中运行,当第一处理器实例对象在第二中间件实例中运行时,结束第一处理器实例在第一中间实例中的运行,并将可运行第二组修改为不可运行第二组。在本实施例中需要预先设置远程通信接口,具体方式可以如下:启动预设的RMI通信处理管理器(RMIInvocationManager),并始化各个实现远程接口(Remote)的各个构件类,获取配置的RMI通信端口并将各个构件类绑定注册到相应的RMI通信端口。在本实施例中,可以通过轮询可运行Map的方式,获取其中的处理器实例对象对应的处理器的queueKey,将以该queueKey的值查询是否在不可运行Map中存在对应的处理器实例对象,如果存在则获取该不可运行Map中的Value,该Value也是一个Map数据结构,获取其中的中间件实例名(ip:port),解析出其ip,组合成相应的callUri(作为中间件实例的标识符),调用RMI模块同步接口(doSyncInvocate),即前述的远程通信接口,检查该队列处理器实例对象是否在获取的ip对应的中间件实例中运行,当其在运行时结束该队列处理器实例对象在当前中间件实例的运行,并将其从可运行Map中移除,添加到不可运行的Map中。也就是说,在本实施例的技术方案中包含了基于RMI的分布式通信处理模块,该模块封装底层java原生的RMI通信处理管理器,对其他构件提供RMI通信处理服务。在中间件实例启动时,启动相应的RMI通信处理管理器(RMIInvocationManager),之后设置作为客户端的中间件实例和作为服务端的中间件实例的安全管理器(SecurityManager),并控制客户端与服务端之间进行通信。
[0066] 当未找到具有第一处理器实例对象的不可运行第二组或第一处理器实例对象未在第二中间件实例中运行时,数据写入模块330第一中间件实例运行第一处理器实例对象向预设的第一分表写入数据。
[0067] 根据本实施例的技术方案中,由于有可能可运行第二组中的处理器实例对象被占用或因为其他原因无法进行数据写入工作,所以需要这些处理器实例对象从可运行第二组中排除。
[0068] 如图4所示,本发明的第三实施例中提供一种中间件实例管理装置,相比于前述的实施例,本实施例的中间件实例管理装置,还包括:
[0069] 版本号设置模块360,用于从预设的缓存中提取一个自增值作为第一处理器实例对象的版本号。在本实施例中提供一个Redis分布式缓存系统,可以从Redis集群中获取一个key为upgrade_info_processor_version(版本号)的自增值,设置到当前处理器实例对象中,运行该处理器实例对象进行数据写入工作。
[0070] 查找模块370,用于在第一分表中写输入的数据量到达预设阈值时,根据第一处理器实例对象对应处理器的队列标志,查找具有该队列标志的不可运行第二组中,并取其中的中间件实例为第三中间件实例。在本实施例中,在当前的处理器实例对象开始进行数据写入时,初始化一个定时器,该定时器每隔一定时间检测当前分表写入的数据量;当前分表的写入数据量大于分表的数据量阈值时,选择当前处理器实例对象进行分表处理(即获取新的分表开始新的数据写入),并设置为可执行状态,并根据当前处理器实例对象对应的queueKey,获取不可运行Map中以该queueKey为Key值的Value,即获取其他的中间件实例的ip。
[0071] 版本号比较模块380,用于控制第一中间件实例通过预设的远程通信接口与第三中间件实例通信,以比较第一中间件实例的版本号与第三中间件实例的版本号大小。在本实施例中,当找到的不可运行Map有多个键值对(多个组)时,通过多线程方式并发进行处理,采用CountDownLatch(一种获取结果的方法)来等待多个并发获得的结果,具体地,以下处理采用多线程并发:获取找到的不可运行Map的中间件实例名(ip:port),解析出其ip,组合成相应的callUri,并调用RMI模块同步接口(doSyncInvocate),参数为当前处理器实例对象对应的版本号(upgrade_info_processor_version),向其他中间件实例确认本实例是否可执行分表处理。当发起请求的中间件实例的处理器实例对象对应的处理版本号大于接受请求的中间件实例中的处理器实例对象对应的处理版本号时,返回不可执行的标志返回给发起请求的中间件实例,当发起请求的中间件实例只要接收到一个不可执行的返回结果时,则将执行标志设置为不可执行,则当前的中间件实例设置为不进行分表处理。
[0072] 分表处理模块390,用于控制第一中间件实例的版本号小于第三中间件实例的版本号时,第一中间实例获取第二分表,以用于进行数据写入。在本实施例中,当所有的返回结果都是可执行时,则挂起当前的中间件实例中处理器实例对象的定时器和相应的子对列线程,并进行分表处理。
[0073] 版本号设置模块360从缓存中重新获取一个自增值作为第一处理器实例对象的版本号。在本实施例中,完成分表处理后从Redis中获取一个新的upgrade_info_processor_version(版本号)的自增值,设置到当前处理器实例,以用于再次的数据写入。
[0074] 信息分发模块3100,用于控制第一中间件实例通过远程通信接口,将分表信息发送给多个其他多个中间件实例,以触发其他多个中间件实例对第二分表进行数据写入。在本实施例中,具体地,调用RMI模块同步接口(doSyncInvocate),参数为当前的新的分表名,将参数的当前分表名设置到相应的变量以通知给其他中间件实例,唤醒其他所有中间件实例的处理器实例对象的所有子处理线程和定时器,再次进行数据写入。
[0075] 在本实施例的技术方案中,由于可能存在多个处理器实例对象进行相同的数据写入的工作,则会造成多个处理器实例对象的冲突,在本实施例中利用自增值作为版本号,从多个处理器实例对象中选出一个作为基准的处理器实例对象,并通过选出的处理器实例对象进行分表处理,即获取新的分表开始新一轮的数据写入工作。
[0076] 如图5所示,本发明的第四实施例中提供一种中间件实例管理方法,包括:
[0077] 步骤510,将位于队列中的多个处理器进行实例化得到多个处理器实例对象,多个处理器具有互不相同的队列标志。在本实施例中,提供一个初始化管理器,读取配置表中所有可用的处理器配置数据(对应地记录处理器和其所属中间件),依次循环处理:获取队列中处理器的类名,进行反射处理后生成处理器实例对象。
[0078] 步骤520,根据预设的配置表建立多个第一组,配置表中记录多个处理器以及多个处理器所属的中间件实例,每个第一组中包括一个处理器实例对象及其对应处理器的中间件实例。在本实施例中,生成一个以所属中间件实例名(ip:port)为Key(键),以处理器实例对象为Value(值)的处理器Map(组)。
[0079] 步骤530,根据多个第一组以及多个第一组中处理器实例对象对应的处理器的队列标志建立多个第二组,每个第二组中包括一个处理器的队列标志以及该处理器的处理器实例对象所在的第一组。
[0080] 步骤540,对于当前需向分表写入数据的第一中间件实例,判断多个第二组中的处理器实例对象对应处理器是否属于第一中间件实例,并将其中处理器实例对象对应处理器属于第一中间件实例的第二组划分为可运行第二组,将其中处理器实例对象对应处理器不属于第一中间件实例的第二组划分为不可运行第二组。在本实施例中,对于当前的需进行数据写入的中间件实例,判断该处理器实例对象是否属于当前的中间件实例,如果是则将该处理器Map添加到以处理器的queueKey(队列标志)为Key值的一个可运行Map中,否则加入不可运行Map中(第二次设置的Map的Value是一个以实例名(ip:port)为Key,以处理器实例对象为Value的在先生成的Map,即为嵌套Map的数据结构)
[0081] 步骤550,从可运行第二组中选择一个第一处理器实例对象,并控制第一中间件实例运行第一处理器实例对象向预设的第一分表写入数据。在本实施例中,在分表中写入的数据可以是用户移动终端的升级信息。
[0082] 本实施例的技术方案,则基于配置表设置第一组、第二组并进一步划分为可运行第二组和不可运行第二组,则可运行第二组中的处理器实例对象用于供其对应处理器所属的中间件实例向分表写入数据时所使用,即使在用户量较大的情况造成某些可运行第二组中的处理器实例对象无法使用,也有足够的其他处理器实例对象用来完成对分表的数据写入,这实现了中间件实例的横向水平扩展、集群化,摆脱了纵向扩展对机器硬件性能的依赖,可通过部署大量的廉价X86服务器节点组成的集群,来提高系统的数据处理高吞吐量,保障该中间件实例的数据处理能力能够适应用户量的量级提升。所以本实施例实际上是实现了一种FOTA延迟异步持久化存储中间件的集群化管理方案,解决了FOTA延迟异步持久化存储中间件在千万级别以上的用户终端的升级访问时由于单节点实例造成的数据处理吞吐量的性能问题。
[0083] 本发明的第五实施例中提供一种中间件实例管理方法,相比于前述的实施例,本实施例的中间件实例管理方法,在步骤550之前,还包括:
[0084] 根据第一处理器实例对象所对应处理器的队列标志,查找是否存在具有第一处理器实例对象的不可运行第二组,当查找到具有第一处理器实例对象的不可运行第二组时,通过预设的远程通信接口查询第一处理器实例对象是否在所找到的不可运行第二组的第二中间件实例中运行,当第一处理器实例对象在第二中间件实例中运行时,结束第一处理器实例在第一中间实例中的运行,并将可运行第二组修改为不可运行第二组。在本实施例中需要预先设置远程通信接口,具体方式可以如下:启动预设的RMI通信处理管理器(RMIInvocationManager),并始化各个实现远程接口(Remote)的各个构件类,获取配置的RMI通信端口并将各个构件类绑定注册到相应的RMI通信端口。在本实施例中,可以通过轮询可运行Map的方式,获取其中的处理器实例对象对应的处理器的queueKey,将以该queueKey的值查询是否在不可运行Map中存在对应的处理器实例对象,如果存在则获取该不可运行Map中的Value,该Value也是一个Map数据结构,获取其中的中间件实例名(ip:port),解析出其ip,组合成相应的callUri(作为中间件实例的标识符),调用RMI模块同步接口(doSyncInvocate),即前述的远程通信接口,检查该队列处理器实例对象是否在获取的ip对应的中间件实例中运行,当其在运行时结束该队列处理器实例对象在当前中间件实例的运行,并将其从可运行Map中移除,添加到不可运行的Map中。也就是说,在本实施例的技术方案中包含了基于RMI的分布式通信处理模块,该模块封装底层java原生的RMI通信处理管理器,对其他构件提供RMI通信处理服务。在中间件实例启动时,启动相应的RMI通信处理管理器(RMIInvocationManager),之后设置作为客户端的中间件实例和作为服务端的中间件实例的安全管理器(SecurityManager),并控制客户端与服务端之间进行通信。
[0085] 当未找到具有第一处理器实例对象的不可运行第二组或第一处理器实例对象未在第二中间件实例中运行时,数据写入模块330第一中间件实例运行第一处理器实例对象向预设的第一分表写入数据。
[0086] 根据本实施例的技术方案中,由于有可能可运行第二组中的处理器实例对象被占用或因为其他原因无法进行数据写入工作,所以需要这些处理器实例对象从可运行第二组中排除。
[0087] 如图6所示,本发明的第三实施例中提供一种中间件实例管理方法,相比于前述的实施例,本实施例的中间件实例管理方法,还包括:
[0088] 步骤560,从预设的缓存中提取一个自增值作为第一处理器实例对象的版本号。在本实施例中提供一个Redis分布式缓存系统,可以从Redis集群中获取一个key为upgrade_info_processor_version(版本号)的自增值,设置到当前处理器实例对象中,运行该处理器实例对象进行数据写入工作。
[0089] 步骤570,在第一分表中写输入的数据量到达预设阈值时,根据第一处理器实例对象对应处理器的队列标志,查找具有该队列标志的不可运行第二组中,并取其中的中间件实例为第三中间件实例。在本实施例中,在当前的处理器实例对象开始进行数据写入时,初始化一个定时器,该定时器每隔一定时间检测当前分表写入的数据量;当前分表的写入数据量大于分表的数据量阈值时,选择当前处理器实例对象进行分表处理(即获取新的分表开始新的数据写入),并设置为可执行状态,并根据当前处理器实例对象对应的queueKey,获取不可运行Map中以该queueKey为Key值的Value,即获取其他的中间件实例的ip。
[0090] 步骤580,控制第一中间件实例通过预设的远程通信接口与第三中间件实例通信,以比较第一中间件实例的版本号与第三中间件实例的版本号大小。在本实施例中,当找到的不可运行Map有多个键值对(多个组)时,通过多线程方式并发进行处理,采用CountDownLatch(一种获取结果的方法)来等待多个并发获得的结果,具体地,以下处理采用多线程并发:获取找到的不可运行Map的中间件实例名(ip:port),解析出其ip,组合成相应的callUri,并调用RMI模块同步接口(doSyncInvocate),参数为当前处理器实例对象对应的版本号(upgrade_info_processor_version),向其他中间件实例确认本实例是否可执行分表处理。当发起请求的中间件实例的处理器实例对象对应的处理版本号大于接受请求的中间件实例中的处理器实例对象对应的处理版本号时,返回不可执行的标志返回给发起请求的中间件实例,当发起请求的中间件实例只要接收到一个不可执行的返回结果时,则将执行标志设置为不可执行,则当前的中间件实例设置为不进行分表处理。
[0091] 步骤590,控制第一中间件实例的版本号小于第三中间件实例的版本号时,第一中间实例获取第二分表,以用于进行数据写入。在本实施例中,当所有的返回结果都是可执行时,则挂起当前的中间件实例中处理器实例对象的定时器和相应的子对列线程,并进行分表处理。
[0092] 步骤5100,从缓存中重新获取一个自增值作为第一处理器实例对象的版本号。在本实施例中,完成分表处理后从Redis中获取一个新的upgrade_info_processor_version(版本号)的自增值,设置到当前处理器实例,以用于再次的数据写入。
[0093] 步骤5110,控制第一中间件实例通过远程通信接口,将分表信息发送给多个其他多个中间件实例,以触发其他多个中间件实例对第二分表进行数据写入。在本实施例中,具体地,调用RMI模块同步接口(doSyncInvocate),参数为当前的新的分表名,将参数的当前分表名设置到相应的变量以通知给其他中间件实例,唤醒其他所有中间件实例的处理器实例对象的所有子处理线程和定时器,再次进行数据写入。
[0094] 在本实施例的技术方案中,由于可能存在多个处理器实例对象进行相同的数据写入的工作,则会造成多个处理器实例对象的冲突,在本实施例中利用自增值作为版本号,从多个处理器实例对象中选出一个作为基准的处理器实例对象,并通过选出的处理器实例对象进行分表处理,即获取新的分表开始新一轮的数据写入工作。
[0095] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
[0096] 以上仅为本发明的可选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈