公开/公告号CN112269831A
专利类型发明专利
公开/公告日2021-01-26
原文格式PDF
申请/专利权人 广州助蜂网络科技有限公司;
申请/专利号CN202011160296.5
申请日2020-10-27
分类号G06F16/27(20190101);G06F16/23(20190101);G06F16/21(20190101);
代理机构44430 广州睿金泽专利代理事务所(普通合伙);
代理人宋伟文
地址 510635 广东省广州市天河区龙口横街28号东塔26楼自编2601单元
入库时间 2023-06-19 09:41:38
技术领域
本发明属于物联网数据同步领域,尤其涉及一种高性能的海量数据同步方法及装置。
背景技术
万物互联的时代已经到来,物联网卡的使用也随处可见。面对物联网卡的海量数据,一个高性能的物联网卡管理系统十分重要。物联网卡的业务极其复杂,其中对物联网卡自身的数据管理能力,足以体现一个系统是否优秀。物联网卡自身的数据主要体现在卡的状态、卡的流量信息、卡的套餐信息数据。如何高效地、准实时地与运营商同步这些数据,直接影响着物联网卡的运营。高性能的海量数据同步策略是每个物联网卡系统的制胜法宝。
现有的物联网卡管理系统的同步策略基本上是定时轮询。针对不同的上游运营商采用不同的定时频率进行卡的扫描,然同遍历每一张卡去请求上游不同的运营商,再将返回的数据同步到数据库。但现有的物联网卡管理系统的同步策略存在以下问题:
(1)现有的定时同步策略与上游运营商的接口访问策略导致卡的数据延时问题。例如某个上游运营商的接口访问频率是1分钟20次,每次批量的卡上限是100张,也就是1分钟内最多只能同步到2000张卡的状态数据。但是某公司管理这个上游运营商的卡可能有几十万张、甚至几百万张需要访问运营商接口,现有的同步策略远远不能满足运营需求;
(2)物联网卡管理系统记录的卡的状态与上游运营商记录的状态同步不及时问题。例如,在运营商系统里卡的状态已经是使用状态,但是由于同步的迟延问题,物联网卡管理系统记录的卡的状态还是处于非使用状态。流量亦是如此,卡的流量已经用超了,但是物联网卡系统记录的卡的流量还是可以正常使用,严重影响了物联网卡管理系统的正常运作;
(3)每张卡每时每刻的状态、流量、套餐数据都可能发生变化,也有可能不变化。面对物联网卡多变的海量数据,直接同步到数据库里,无论是对业务系统还是对数据库的压力都是巨大的。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种高性能的海量数据同步方法及装置,通过配置不同的同步策略和缓冲策略,提高数据的同步效率、灵活性和实时性,大幅度降低同步数据对业务系统和数据库的压力。
本专利方案提供一种高性能的海量数据同步方法,包括:
获取物联网卡的过去状态数据;
根据所述过去状态数据,配置数据同步策略;
根据所述过去状态数据和数据同步策略,计算同步频率,得到同步频率列表;
根据所述同步频率列表,通过运营商接口获取所述物联网卡的实时状态数据;
所述实时状态数据通过Redis进行数据过滤,将过滤后的所述实时状态数据写入数据库。
进一步地,所述过去状态数据和实时状态数据包括物联网卡的使用状态、流量信息和套餐信息。
进一步地,所述配置所述数据同步策略,具体包括:
根据所述过去状态数据,定义所述物联网卡的同步频率评价指标及其计算方式;其中,所述同步频率评价指标包括:日均使用流量占比、已用流量占比、日流量增长环比、套餐流量、剩余沉默期、上一次同步时间;
定义所述同步频率评价指标的同步频率权重;
定义根据所述同步频率评价指标及其权重、计算所述同步频率的方式。
进一步地,所述实时状态数据通过Redis进行数据过滤,具体包括:
将所述实时状态数据与所述Redis中保存的过去状态数据进行比对;
若所述实时状态数据相对所述过去状态数据发生变化,则使用所述实时状态数据更新所述Redis中保存的过去状态数据;
否则将所述实时状态数据丢弃。
进一步地,还包括:将所述实时状态数据写入Elasticsearch引擎。
还提供一种高性能的海量数据同步装置,包括:
策略配置模块,用于从数据库中获取物联网卡的过去状态数据;根据所述过去状态数据,配置数据同步策略;并将所述过去状态数据和数据同步策略传递给同步管理模块;
所述同步管理模块,用于根据所述过去状态数据和数据同步策略,计算同步频率,得到同步频率列表,并将所述同步频率列表传递给数据访问模块;
所述数据访问模块,用于根据所述同步频率列表,通过运营商接口获取所述物联网卡的实时状态数据,并传递给Redis;
所述Redis,用于对所述实时状态数据进行数据过滤,并将过滤后的所述实时状态数据传递给所述数据库;
所述数据库,用于保存由Redis过滤后的所述实时状态数据。
进一步地,所述过去状态数据和实时状态数据包括所述物联网卡的使用状态、流量信息和套餐信息。
进一步地,所述配置所述数据同步策略,具体包括:
根据所述过去状态数据,定义所述物联网卡的同步频率评价指标及其计算方式;其中,所述同步频率评价指标包括:日均使用流量占比、已用流量占比、日流量增长环比、套餐流量、剩余沉默期、上一次同步时间;
定义所述同步频率评价指标的同步频率权重;
定义根据所述同步频率评价指标及其权重、计算所述同步频率的方式。
进一步地,所述Redis,用于对所述实时状态数据进行数据过滤,具体包括:
将所述实时状态数据与所述Redis中保存的过去状态数据进行比对;
若所述实时状态数据相对所述过去状态数据发生变化,则使用所述实时状态数据更新所述Redis中保存的过去状态数据;
否则将所述实时状态数据丢弃。
进一步地,还包括:Elasticsearch引擎,用于写入所述实时状态数据。
本专利的改进带来如下优点:
(1)通过对物联网卡过去状态数据的分析,配置合适的同步策略,使用多个维度的卡数据建立同步频率模型。在运营商接口访问有限和待同步的卡数量众多的限制下,合理分配每张卡的同步频率,极大地提高物联网卡数据的同步效率和灵活性,满足海量物联网卡数据同步的运营需求;
(2)在提高物联网卡数据同步效率的基础上,提高了同步的实时性,保证了物联网卡管理系统的正常运作;
(3)通过使用Redis过滤数据作为缓冲策略,大幅度减少无效的同步数据,大大减少了写库的次数,减轻了业务系统和数据库的运行压力。
附图说明
图1为本申请实施例一种高性能的海量数据同步方法的步骤示意图;
图2为本申请实施例一种高性能的海量数据同步装置的结构示意图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
请参阅图1,本申请实施例1一种高性能的海量数据同步方法,包括:
S101:获取物联网卡的过去状态数据;先从Redis获取物联网的过去状态数据,如获取不到,则从数据库中获取;
S102:根据所述过去状态数据,配置数据同步策略;
S103:根据所述过去状态数据和数据同步策略,计算同步频率,得到同步频率列表;
S104:根据所述同步频率列表,通过运营商接口获取所述物联网卡的实时状态数据;
S105:所述实时状态数据通过Redis进行数据过滤,将过滤后的所述实时状态数据写入数据库。
其中,物联网卡又称物联卡,是运营商为物联网服务企业提供的用于智能终端设备联网的,仅面对企业用户进行批量销售,广泛用于共享单车、移动支付、智能城市、自动售卖机等领域,不面向个人用户。过去状态数据是物联网卡非实时的保存在数据库中的状态数据,物联网卡的状态数据还包括实时状态数据。物联网卡的状态数据包括使用状态、流量信息和套餐信息。物联网卡类似平常生活用的手机SIM卡,使用状态分为沉默状态,测试状态,使用状态,停机,销户。沉默状态是指还未使用的卡,还未激活,这个状态没有流量产生,所以不会收费;测试状态是已经激活的,测试状态有一定的流量可以用于测试,调试设备使用,这个状态也不会收费;使用状态是正常的根据套餐进行收费;停机是禁止了上网功能,也不会产生收费;销户是指账户已经销毁,卡无效,无法使用的状态。流量信息,主要是总流量、当天已用流量、当月已用流量、流量使用时长等。总流量包括套餐内的流量和叠加的流量,当天已用流量是通过计算得到,当月已用流量是本月所产生的流量。套餐主要分为长周期,短周期套餐。套餐信息包括套餐周期、套餐周期起始日、套餐总流量、已用套餐流量、可用套餐流量等;套餐总流量是指套餐的流量包,已用套餐流量是套餐内的已用流量。
步骤S104中的同步频率列表指的是物联网卡与同步频率的映射关系,并不以列表作为对该映射关系的形式限制;同步频率列表的表现形式包括但不限于一维表、二维表、列表、数组等;Redis(REmote DIctionary Server)是一个key-value存储系统;Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API;它通常被称为数据结构服务器,因为值(value)可以是字符串(String),哈希(Hash),列表(list),集合(sets)和有序集合(sorted sets)等类型。
针对运营商接口访问限制的问题,本实施例提出了一种数据同步策略。把多种不同的维度根据物联网卡的状态数据进行组合建模,从而达到最优的同步策略。该思想参考了SQL语句中的order by字段1(维度1),字段2(维度2)……语法,优先根据维度1的顺序、然后再根据维度2的顺序……这样可以高效地同步到卡的状态。例如运营商中国移动的上游限制每秒钟只能同步25次,将其定义为count_per_sec。所有该运营商的卡总数为card_num,则所有卡同步的话需要的时间,设为time,则time=card_num÷count_per_sec。car_num越大,也即是卡越多,同步一次的话,需要的时间也越多。由于每秒同步次数count_per_sec是由运营商限定的,所以无法改变其大小。那么只能通过改变card_num的大小来减少同步需要的时间。物联网卡在时间上有大部分卡的是正常使用的,而大部分的卡对同步的频率要求不同。根据这个特点,可以定义各种数据同步策略,对物联网卡进行结构化的分级分类管理,提高数据同步效率。
可选地,步骤S102中的配置数据同步策略,具体包括:
首先,根据过去状态数据,定义物联网卡的同步频率评价指标及其计算方式;同步频率评价指标是用于计算物联网卡同步频率的基本参数,包括有日均使用流量占比、已用流量占比、日流量增长环比、套餐流量、剩余沉默期、上一次同步时间;然后,定义同步频率评价指标的同步频率权重;最后,定义根据同步频率评价指标及其权重、计算同步频率的方式。
其中,日均使用流量占比指的是日均使用流量相对套餐总流量的比例,日均流量使用占比较大的,可能该物联网卡很快就有可能超流量(超出套餐内的总流量),进而影响物联网卡的正常工作。因此,可以给日均使用流量占定义一个较大的同步频率权重,从而提高该类物联网卡的同步频率,使得物联网卡在即将超量时前能得到妥善处理。已用流量占比指的是已用流量相对套餐总流量的比例;已用流量占比越高,说明已用流量越多,越有可能超量,那么在定义同步频率权重时给已用流量占比这一评价指标较大的权重。日流量增长环比指的是当天使用流量与昨日使用流量增长的比值。套餐流量是指该物联网卡的套餐总流量。剩余沉默期指的是该物联网卡剩余的沉默期时长,距离激活时间还有多久。
根据不同的指标定义不同的同步频率,例如日均使用流量占比超过10%的,设置每隔10分钟同步一次,日均使用流量超过20%的,设置每5分钟同步一次。根据日流量增长环比设置同步频率,日使用增长5%的,设置10分钟同步1次,日使用增长10%的,设置5分钟同步一次。根据卡的客户套餐大小设置同步频率,30M的卡10分钟同步一次,100M的卡30分钟同步一次。同步频率的会根据设定的进行,只是同步的卡列表会根据实际卡符不符号设定的规则进行调整,如果卡使用流量达到最大值,进行了停机,那么这个卡就不会在进行同步,直到下个月开机。沉默期即将到期的卡,需要同步优先调度,因为即将到期的卡,很有可能进入激活状态。上一次的同步时间是作为一个重要的同步因素,如果上一次同步是发生在5分钟内,则不需要再次同步,因为频繁的同步一张卡,卡的流量情况和状态极大可能不会有什么变化,上游接口对数据的请求是有限制的,这样会浪费一次同步请求的机会。
关于步骤S105,实时状态数据通过Redis进行数据过滤后再写入数据库,可以在数据入库前将无效冗余的数据剔除,减少写库的次数,减轻业务系统和数据库的运行压力。
可选地,实时状态数据通过Redis进行数据过滤,具体包括:将实时状态数据与Redis中保存的过去状态数据进行逐一比对;如果实时状态数据相对过去状态数据发生变化,就使用实时状态数据更新Redis中保存的过去状态数据;如果实时状态数据相对过去状态数据没有发生变化,说明不需要更新该数据,那么将实时状态数据丢弃。
例如使用cardno(物联网卡的卡号)作为key(主键),流量信息作为info,每次同步都在Redis中做比较,如果新的流量信息info没有变化,则不需要把info信息写入数据库,大大减低了数据库的压力。
可选地,还包括步骤S106:将实时状态数据写入Elasticsearch引擎。
Elasticsearch引擎是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
在进行步骤S106时,每张物联网卡的实时状态数据在做数据过滤的同时也会写入到Elasticsearch引擎中;在需要做卡信息检索的时候,可以直接从Elasticsearch引擎中检索,而不需要从数据库里面读取,减轻数据库的运行压力,提高物联网卡管理系统的运行效率。
物联网卡的状态数据同步是一个很耗计算资源的过程,为了进一步减轻业务系统的计算压力,提高工作效率,可选地,状态数据同步服务采用分布式的微服务架构,将其分割为多个微服务,分布到不同的联网机器中运行,通过配置,指定每个微服务负责处理一定数量的物联网卡。
请参阅图2,本申请实施例2一种高性能的海量数据同步装置,包括:
策略配置模块100,用于从数据库500中获取物联网卡的过去状态数据;根据过去状态数据,配置数据同步策略;并将过去状态数据和数据同步策略传递给同步管理模块200;
同步管理模块200,用于根据过去状态数据和数据同步策略,计算同步频率,得到同步频率列表,并将同步频率列表传递给数据访问模块300;
数据访问模块300,用于根据同步频率列表,通过运营商接口700获取物联网卡的实时状态数据,并传递给Redis400;
Redis400,用于对实时状态数据进行数据过滤,并将过滤后的实时状态数据传递给数据库500;
数据库500,用于保存由Redis400过滤后的实时状态数据。
可选地,还包括:Elasticsearch引擎,用于写入实时状态数据。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
机译: 访问控制装置具有提供给海量数据存储器的海量数据存储接口,该接口被操作员移除,并且处理单元在操作条件下通过该接口从海量数据存储器读取访问授权数据
机译: 用于海量数据的高性能分布式主内存数据库管理系统的体系结构
机译: 一种海量数据时延容忍网络的传输方法及装置