数据获取方法、装置、电子设备、介质和计算机程序产品与流程

文档序号:29740065发布日期:2022-04-21 18:59阅读:91来源:国知局
数据获取方法、装置、电子设备、介质和计算机程序产品与流程

1.本发明涉及计算机应用领域,尤其涉及一种数据获取方法、装置、电子设备、介质和计算机程序产品。


背景技术:

2.在集群环境下,一个服务部署了n+1台服务器,包括一个主服务器和多个备服务器。在n+1台部署启动服务情况下,只有主服务器可以获取数据,其它备服务器不工作,导致服务器资源浪费,还会导致获取数据表数据效率低,很长时间才可以看到获取数据结果。同时,主服务器占用资源(cpu、内存)高,备服务器不能被很好地利用,造成服务器资源的极大浪费。


技术实现要素:

3.本发明提供一种数据获取方法、装置、电子设备、介质和计算机程序产品,用以解决现有技术中主备服务模式下服务器资源浪费的缺陷,实现服务器资源的有效利用。
4.本发明提供一种数据获取方法,包括:
5.本服务器获取当前配置的所有服务器节点和数据库表中的当前设备数据;
6.本服务器在数据库表中添加字段,所述字段用于存储设备标识值;
7.本服务器遍历所述当前设备数据,将所述当前设备数据的设备标识值分别与所述当前配置的所有服务器节点的节点数进行取余,若余数与本服务器节点值一致,则获取当前设备数据作为本服务器的设备数据。
8.根据本发明提供的一种数据获取方法,所述字段的数据类型为bigint。
9.根据本发明提供的一种数据获取方法,所述将所述当前设备数据的设备标识值分别与所述当前配置的所有服务器节点数进行取余,获取本服务器的设备数据,包括:
10.将所述当前设备数据的设备标识值作为被除数,将当前配置的所有服务器节点数作为除数,获取满足所述余数的设备数据作为所述本服务器的设备数据。
11.根据本发明提供的一种数据获取方法,所述设备标识值通过设备id计算获得且每个设备的设备id唯一。
12.根据本发明提供的一种数据获取方法,所述设备标识值包括设备id的数据类型为long的crc值。
13.根据本发明提供的一种数据获取方法,所述当前配置的所有服务器节点不区分主备服务。
14.本发明还提供一种数据获取装置,包括:
15.采集模块,用于获取当前配置的所有服务器节点和数据库表中的当前设备数据;
16.修改模块,用于在数据库表中添加字段,所述字段用于存储设备标识值;
17.查询模块,用于遍历所述当前设备数据,将所述当前设备数据的设备标识值分别与所述当前配置的所有服务器节点的节点数进行取余,若余数与本服务器节点值一致,则
获取当前设备数据作为本服务器的设备数据。
18.本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述数据获取方法的步骤。
19.本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述数据获取方法的步骤。
20.本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述数据获取方法的步骤。
21.本发明提供的一种数据获取方法、装置、电子设备、介质和计算机程序产品,关闭集群部署下服务的主备服务模式,添加字段用于存储设备标识值的字段,并利用数据库函数求余获取数据。有效利用服务器资源,让部署的所有服务器节点都同时运行。
附图说明
22.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
23.图1是本发明实施例提供的数据获取方法的流程示意图之一;
24.图2是本发明实施例提供的数据获取方法的流程示意图之二;
25.图3是本发明实施例提供的数据获取装置的结构示意图;
26.图4是本发明实施例提供的电子设备的结构示意图。
具体实施方式
27.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
28.以主备模式运行的服务器集群,面对设备量大且数据量大的情况时,往往会出现服务器资源浪费的问题,例如:在计算数据量大的情况下,只有主服务器获取设备的计算结果,备服务器不工作。主服务的内存和cpu应用高。由此,本发明提出了一种据获取方法,解决上述问题。在本实施例中设备数据包括:消息推送策略、终端信息采集策略和上网行为审计策略等交由设备计算的数据。本实施例中设备数据的类型包含:ip(设备ip)、iptype(ip类型)、ipnumber(计算的ip的number值)、mac(设备mac值)、devonlyid(唯一id)、organizationid(所属组织机构)、regstate(注册状态)、deletestate(删除状态)、assetstatus(资产状态)、approvalstate(审核状态)、agentpacktype(设备类型)。
29.下面结合图1描述本发明实施例的数据获取方法,包括:
30.步骤101、本服务器获取当前配置的所有服务器节点和数据库表中的当前设备数据;
31.需要说明的是,设备数据的计算结果数据以设备的devonlyid和onlycrc(根据唯
一id计算得到的crc值)作为标识。crc即循环冗余校验码(cyclic redundancy check)。一般称为crc校验,缩写crc。所有设备的计算结果存储的同一张表中。所述数据库表中的当前设备数据为还未分类至不同服务器时存储的所有设备数据中的任一条,在本实施例中数据库表中存储的设备数据有50万,若每条设备数据对应3条策略,即每个设备有3条设备数据。
32.步骤102、本服务器在数据库表中添加字段,所述字段用于存储设备标识值;
33.步骤103、本服务器遍历所述当前设备数据,将所述当前设备数据的设备标识值分别与所述当前配置的所有服务器节点的节点数进行取余,若余数与本服务器节点值一致,则获取当前设备数据作为本服务器的设备数据。
34.需要说明的是,当前配置的所有服务器节点是指配置中心对当前服务配置的所有节点,在执行本发明的数据获取方法之前,本服务器已通过配置中心关闭主备模式算法,每个服务器节点不进行主备模式的配置。在步骤101中,本服务器通过配置线程实时监测数据库表,实时获取数据库表中的当前设备数据。本服务器是指部署所有的服务器节点中的任意一个。本服务器节点值指本服务器节点在所有节点中的序号。
35.本发明实施例的数据获取方法,弥补了传统主备模式下的集群的不足,通过添加字段用于存储设备标识值的字段,并利用数据库函数求余获取数据。有效利用服务器资源,让部署的所有服务器节点都同时运行。
36.在本发明的至少一个实施例中,所述字段的数据类型为bigint。选择该数据类型是因为所述字段存入数据库中后续需要用作被除数数据,而被除数需满足数字类型,同时,为适应crc值类型为long,故选择添加字段类型为bigint。
37.在本发明的至少一个实施例中,所述将所述当前设备数据的设备标识值分别与所述当前配置的所有服务器节点的节点数进行取余,若余数与本服务器节点值一致,则获取当前设备数据作为本服务器的设备数据,包括:
38.将所述当前设备数据的设备标识值作为被除数,将所述当前配置的所有服务器节点的节点数作为除数,若余数与本服务器节点值一致,则获取当前设备数据作为本服务器的设备数据。
39.需要说明的是,采用数据库中的取余函数进行取余操作,如式1所示:
40.mod(numer1,number2)=number3
ꢀꢀꢀꢀꢀꢀꢀ
式1
41.其中,numer1表示新增的bigint类型的字段存储的设备标识值,number2表示所有服务器节点的节点数,number3表示本服务器节点值。所述本服务器节点值,指的是本服务器在所有服务器节点中的序号。如mod(10,3)=1,获取的当前设备数据的设备标识值10除以3个节点,余数为1的设备数据,也就是序号为1的本服务器的数据。
42.本发明实施例中数据获取方法利用服务节点作为函数(mod)的除数和余数,这样服务部署一台或者多台,都能很好计算并获取正确的数据。
43.在本发明的至少一个实施例中,所述设备标识值通过设备id计算获得且每个设备的设备id唯一。
44.需要说明的是,设备id的形式例如:
45.8e79c7f681cfbe86b3c7df52c05504b3。
46.每个服务器获取的数据都是固定设备的不同数据,保证了每个服务器获取的数据不会混乱。这是因为,每个devonlyid计算的long类型的crc值都相同,求余也相同,所以每
个服务节点不变的话,获取的数据都是同一个devonlyid的数据,避免了服务的不同节点如果都获取同一个devonlyid的不同数据导致的数据错乱。
47.在本发明的至少一个实施例中,所述设备标识值包括设备id的数据类型为long的crc值。
48.在本发明的至少一个实施例中,所述当前配置的所有服务器节点不区分主备服务。服务集群部署不区分主备服务,多个服务同时运行,有效利用服务器资源,程序运行效率提高。
49.本发明实施例中,还包括了一种采用上述实施例的数据获取方法,对服务运行期间的数据进行监控的方法,先监控再获取数据,开启线程一直运行检测数据表中是否有数据,有数据时获取,无数据时,不做操作。采集数据后,同步数据库表的数据入缓存redis。包括:
50.1、部署集群服务,本服务部署多台服务器节点。
51.需要说明的是,在本发明实施例中,1万设备数据以下,本服务部署单机;如设备数据为1-4万,本服务部署4台服务器节点;如4-10万设备数据,本服务部署13台服务器节点;10万以上设备数据,按具体计算设备量划分服务器部署本服务。
52.2、数据库表新增存储long类型crc的onlycrc字段值。
53.3、启动服务跑业务,查看日志文件及观察数据库表数据。
54.4、观察数据库表数据库,有数据时程序会实时获取设备数据。
55.5、看最终结果数据是否错乱。
56.需要说明的是,所述数据错乱如:计算消息推送策略和终端信息采集策略都选择的是全部设备数据,一个是新增,一个是计算新增后删除新增的数据。结果为有消息推送策略设备数据,没有终端信息采集策略设备数据。如果一个设备不同值多个节点不同时间点服务同时处理,处理结果错乱。
57.6、服务程序运行期间观察服务器资源(服务占用cpu、内存值)。
58.如图2所示,本发明实施例公开了一种数据获取方法,包括:
59.步骤201、本服务器从配置中心获取所有节点;
60.步骤202、获取总节点数和本服务器节点的节点值;
61.步骤203、组装各自节点值;
62.需要说明的是,进行数据组装,会组装成一个集合值map传递,如果不进行组装,总节点数,本服务节点值,分别传递。组装值格式如下:
63.map《string,integer》map=new hashmap《》()
64.步骤204、计算devonlyid的long类型的crc值存入数据库;
65.步骤205、利用求余函数(mod)查询每个服务器节点的设备数据;
66.步骤206、每个服务器节点获取相同devonlyid的不同值;
67.需要说明的是,如一个设备计算消息推送策略、终端信息采集策略、上网行为审计策略。一个设备就会有3个值。设备devonlyid是相同的。
68.步骤207、获取同一个服务器节点的设备数据,即相同设备devonlyid的数据。
69.本实施例的方法,在服务程序运行期间观察服务器资源(服务占用cpu、内存值)占用小,部署本服务节点能得到充分应用。
70.下面对本发明提供的数据获取装置进行描述,下文描述的数据获取装置与上文描述的数据获取方法可相互对应参照。如图3所示,本发明公开了一种数据获取装置,包括:
71.采集模块301,用于获取当前配置的所有服务器节点和数据库表中的当前设备数据;
72.修改模块302,用于在数据库表中添加字段,所述字段用于存储设备标识值;
73.查询模块303,用于遍历所述当前设备数据,将所述当前设备数据的设备标识值分别与所述当前配置的所有服务器节点数进行取余,获取本服务器的当前设备数据。
74.本发明实施例的数据获取装置,弥补了传统主备模式下的集群的不足,通过添加字段用于存储设备标识值的字段,并利用数据库函数求余获取数据。有效利用服务器资源,让部署的所有服务器节点都同时运行。
75.在本发明的至少一个实施例中,所述字段的数据类型为bigint。
76.在本发明的至少一个实施例中,将所述当前设备数据的设备标识值分别与所述当前配置的所有服务器节点的节点数进行取余,若余数与本服务器节点值一致,则获取当前设备数据作为本服务器的设备数据,包括:
77.将所述当前设备数据的设备标识值作为被除数,将所述当前配置的所有服务器节点的节点数作为除数,若余数与本服务器节点值一致,则获取当前设备数据作为本服务器的设备数据。
78.在本发明的至少一个实施例中,所述设备标识值通过设备id计算获得且每个设备的设备id唯一。
79.在本发明的至少一个实施例中,所述设备标识值包括设备id的数据类型为long的crc值。
80.在本发明的至少一个实施例中,所述当前配置的所有服务器节点不区分主备服务。
81.图4示例了一种电子设备的实体结构示意图,如图4所示,该电子设备可以包括:处理器(processor)410、通信接口(communications interface)420、存储器(memory)430和通信总线440,其中,处理器410,通信接口420,存储器430通过通信总线440完成相互间的通信。处理器410可以调用存储器430中的逻辑指令,以执行数据获取方法,该方法包括:
82.本服务器获取当前配置的所有服务器节点和数据库表中的当前设备数据;
83.本服务器在数据库表中添加字段,所述字段用于存储设备标识值;
84.本服务器遍历所述当前设备数据,将所述当前设备数据的设备标识值分别与所述当前配置的所有服务器节点数进行取余,获取本服务器的设备数据。
85.此外,上述的存储器430中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
86.另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的数据获取方法,该方法包括:
87.本服务器获取当前配置的所有服务器节点和数据库表中的当前设备数据;
88.本服务器在数据库表中添加字段,所述字段用于存储设备标识值;
89.本服务器遍历所述当前设备数据,将所述当前设备数据的设备标识值分别与所述当前配置的所有服务器节点数进行取余,获取本服务器的设备数据。
90.又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的数据获取方法,该方法包括:
91.本服务器获取当前配置的所有服务器节点和数据库表中的当前设备数据;
92.本服务器在数据库表中添加字段,所述字段用于存储设备标识值;
93.本服务器遍历所述当前设备数据,将所述当前设备数据的设备标识值分别与所述当前配置的所有服务器节点数进行取余,获取本服务器的设备数据。
94.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
95.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
96.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1