数据分布缓存方法及系统的制作方法

文档序号:7894097阅读:119来源:国知局
专利名称:数据分布缓存方法及系统的制作方法
技术领域
本发明涉及数据管理技术领域,特别涉及一种数据分布缓存方法及系统。
背景技术

目前,在NGB(Next Generation Broadcasting network,下一代广播电视网)领域中,广播电视的播出系统在各个地区相互独立,通常情况下,每个地级行政区域都会建立一套相对独立的系统来支持本地的广播电视业务。而在上一级的省网架构下,为了满足省级广电系统对省内广电业务的统一管理,实现广电业务的互联互通及融合,需要对各个独立的系统进行整合,使用统一的业务管理系统。对于广电的业务,集中部署后需要分散用户数据访问的压力,于是需要实现分布式缓存的功能。在现有技术的实现方案中,一般采用统一的数据库进行管理,即把所有的用户或者业务数据存储在统一的数据库中,业务直接访问数据库,查询数据实现业务数据的展现。当业务数据达到一定规模后,对系统容量及性能要求极高,为避免系统吞吐量有限造成访问瓶颈,通常会进一步根据业务类型把不同的业务数据分别存储在不同的数据库中来提高系统容量及性能。当单个业务数据的规模也达到一定程度后,会对业务数据进行垂直拆分,把业务数据分布到多个不同的数据库中,业务接收请求后访问不同的数据库获取数据。然而,在实现本发明过程中,发明人发现,现有技术中业务数据仅根据业务类型进行划分,用户在访问数据时,需要根据请求的不同访问不同的数据库,由于省网架构下多数用户的实际访问距离较远,仅根据业务类型划分数据无法保证用户访问速度,因此现有技术中省网架构下广电业务访问效率相对低下。

发明内容
(一 )要解决的技术问题针对现有技术的缺点,本发明为了解决现有技术中访问效率低下的问题,提出了一种数据分布缓存方法及系统,有效减少了缓存数据对中心数据库内存的占用,提高了数据访问速度。( 二)技术方案为了实现上述目的,一方面,本发明提供了一种数据分布缓存方法,所述方法包括步骤SI,在生成业务数据或业务数据发生变化时,根据预先设定的配置策略对每一个数据增加节点ID信息,将数据存储在中心数据库中;S2,进行数据分发,将中心数据库中的业务数据取出,并根据每个数据所携带的节点ID信息,将数据分发到对应的节点服务器;S3,从节点服务器中取出分发到该节点的数据,同步到该节点的缓存中;S4,将每个用户群接入到一个特定的节点,用户通过该节点缓存访问业务数据。
优选地,所述中心数据库中统一存储全部业务数据。优选地,步骤SI中,所述配置策略包括在进行业务相关表设计时,增加业务无关的拆分字段,作为数据分布在各个节点的依据;
相同业务组的表设计填充相同的字段值;生成业务数据时,根据业务的属性配置填充对应的拆分字段的数据值;各个分布缓存节点在同步本节点的 数据时,把相同属性的拆分字段值同步到本节点的缓存中。优选地,步骤S2进一步包括步骤在中心数据库中的数据发生变动时,触发中心数据库中的触发器,触发器检查数据的变化类型,从配置表中查询变动的数据需要分发的节点ID,如果需要分发数据到某节点,则生成该对应节点的逻辑日志;将逻辑日志记录在数据同步表中;定期检查数据同步表中的数据,存在需要同步的逻辑日志时,从同步表中取出逻辑日志,把同一节点的逻辑日志批量组合起来,放在分发线程的工作队列中;将数据同步表的内容解析为相应的逻辑日志;从批量的日志信息中,解析出单条的逻辑日志,取出逻辑日志的内容,将修改更新到缓存中。优选地,步骤S3进一步包括步骤从配置文件中读取节点信息,通过节点信息查询同步条件表;查询同步数据的条件并组装同步查询数据的SQL语句;通过组装的SQL语句查询同步到本节点的数据,把查询的数据写入缓存中。优选地,步骤S4进一步包括步骤为每个分布节点指定对应的用户群体;在用户接入系统时,配置用户访问的服务器为该用户所在的分布节点;分布节点同步该用户的数据,为用户提供针对该用户的服务。另一方面,本发明还同时提供一种数据分布缓存系统,所述系统包括中心数据库和至少一个分布节点;其中,所述中心数据库由多个数据库单元组成,用于统一存储全部业务数据并为每个业务数据配置节点ID信息;每个所述分布节点包括分发集群和至少一个同步服务器,所述分发集群由分发服务器组成,用于将中心数据库中的业务数据取出,并根据每个数据所携带的节点ID信息,将数据分发到对应的同步服务器;所述同步服务器用于从分发服务器中取得分发到本地的数据,将其同步到本地的缓存中供用户访问。再一方面,本发明还同时提供一种数据分布缓存系统,所述系统包括数据存储模块,用于在生成业务数据或业务数据发生变化时,根据预先设定的配置策略对每一个数据增加节点ID信息,将数据存储在中心数据库中;数据分发模块,用于进行数据分发,将中心数据库中的业务数据取出,并根据每个数据所携带的节点ID信息,将数据分发到对应的节点服务器;
数据同步模块,用于从节点服务器中取出分发到该节点的数据,同步到该节点的缓存中;访问控制模块,用于将每个用户群接入到一个特定的节点,用户通过该节点缓存访问业务数据。优选地,所述数据存储模块中包括策略配 置模块,所述策略配置模块进一步包括字段设计模块,用于在进行业务相关表设计时,增加业务无关的拆分字段,作为数据分布在各个节点的依据;表拆分模块,用于将相同业务组的表设计填充相同的字段值;业务拆分模块,用于在生成业务数据时,根据业务的属性配置填充对应的拆分字段的数据值;同步策略模块,用于在各个分布缓存节点在同步本节点的数据时,把相同属性的拆分字段值同步到本节点的缓存中。优选地,所述数据分发模块进一步包括日志生成模块,用于在中心数据库中的数据发生变动时,触发中心数据库中的触发器,触发器检查数据的变化类型,从配置表中查询变动的数据需要分发的节点ID,如果需要分发数据到某节点,则生成该对应节点的逻辑日志;记录模块,用于将逻辑日志记录在数据同步表中;轮询模块,用于定期检查数据同步表中的数据,存在需要同步的逻辑日志时,从同步表中取出逻辑日志,把同一节点的逻辑日志批量组合起来,放在分发线程的工作队列中;表解析模块,用于将数据同步表的内容解析为相应的逻辑日志;日志解析模块,用于从批量的日志信息中,解析出单条的逻辑日志,取出逻辑日志的内容,将修改更新到缓存中。(三)有益效果本发明的方案中,把相同类别属性的数据划分为同一组数据,然后通过分发进程,把相同属性的业务数据分布到用户最近访问的缓存中,提供给业务数据使用,从而减少缓存数据对中心数据库内存的占用,提高数据的访问速度。


图I为本发明的实施例中数据分布缓存方法的处理流程示意图;图2为本发明的实施例中数据分布缓存系统的结构示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明的实施例中提供了一种数据分布缓存的处理方法,把相同类别属性的数据划分为同一组数据,然后通过分发进程,把相同属性的业务数据分布到用户最近访问的缓存中,提供给业务数据使用,从而减少缓存数据对中心数据库内存的占用,提高数据的访问速度。本发明同时也可以解决大数据量访问的问题,提供了一种海量数据的分布缓存的处理方法。参见图1,本发明的数据分布缓存方法包括步骤
SI,在生成业务数据或业务数据发生变化时,根据预先设定的配置策略对每一个数据增加节点ID信息,将数据存储在中心数据库中;S2,进行数据分发,将中心数据库中的业务数据取出,并根据每个数据所携带的节点ID信息,将数据分发到对应的节点服务器;S3,从节点服务器中取出分发到该节点的数据,同步到该节点的缓存中;S4,将每个用户群接入到一个特定的节点,用户通过该节点缓存访问业务数据。具体地,本发明的实施例中采用的方案如下在组网方面,采用中心组网的方式,即中心节点部署统一的数据库进行数据统一存储,各个分布缓存节点的数据首先持久化存储在中心节点的数据库中。分布式节点的数据为中心数据库中数据的一个子集,子集的数据可以根据业务的需要,在中心数据库进行配置确定子集里的数据,每个分布式节点的数据只是本节点所需的数据。数据发生变动后,各个分布节点的数据通过分发进程把变动的数据同步到各个分布节点中。业务需要访问数据时,直接读取分布节点中的业务数据来提供服务,而不用关心业务数据存储在数据库中的位置。根据上述描述,本发明的数据分布缓存方法的关键技术主要分为如下几个部分数据业务分布、数据同步分发和业务数据访问控制。首先,数据业务分布实现的主要功能是配置分布节点所需的数据,数据根据配置的方式分布到各个缓存节点。该步骤进一步包括如下步骤I、在进行业务相关表设计时,增加业务无关的字段,即拆分字段,作为数据分布在各个节点的依据;2、相同业务组的表可以设计填充相同的字段值;3、生成业务数据时,根据业务的属性配置填充对应的拆分字段的数据值;4、各个分布缓存节点在同步本节点的数据时,把相同属性的拆分字段值同步到本节点的缓存中。例如在省网的部署中,每个地市节点会有一个节点ID,该节点ID会对应一个业务无关的字段,如Splitld,该节点的数据需要拆分进行分布时,对数据填充SplitId的值,具有相同该SplitId值的数据就同步到同一个节点中。数据同步分发的主要功能是负责同步和分发数据,同步数据可以在节点初始化时,把数据同步到缓存中;而数据分发的功能则是在数据发生变动时,把属于某节点的数据分发到该对应的节点。于是,该步骤又细分为数据同步或数据分发,其中数据同步进一步包括步骤I、从配置文件中读取节点信息,通过节点信息查询同步条件表,同步条件表中包含如下信息节点ID、表ID、条件ID、同步条件值;2、查询同步数据的条件,查询的依据为通过节点ID、表ID、查询出同步的条件,条件信息为字符串形式,形式如“字段名=% d and字段名=% d”,% d对应的值存储在条件表中;
3、组装同步查询数据的SQL语句,组装方式通过把条件值写入条件字符串中,直接通过c语言的函数sprintf函数形成SQL语句;4、通过组装的SQL语句查询同步到本节点的数据,把查询的数据写入缓存中,即该节点对应的数据。而数据分发进一步包括步骤I、中心数据库中的数据发生变动时,触发中心数据库中的触发器,触发器检查数据的变化类型包括插入、更新、或者删除,从配置表中查询变动的数据需要分发的节点ID,如果需要分发数据到某节点,则生成该对应节点的逻辑日志;2、逻辑日志记录在数据同步表中,数据同步表包括如下信息序列ID、节点ID、表ID、操作类型、表名、主键值、主键字段名。3、分发节点的分发进程启动轮询线程,定期检查数据同步表中的数据,存在需要同步的逻辑日志时,从同步表中取出逻辑日志,把同一节点的逻辑日志批量组合起来,放在分发线程的工作队列中,等待工作线程把逻辑日志通过TCP连接发送到节点对应的缓存接收进程,工作线程逻辑日志发送成功后,删除同步表中已经同步成功的数据,并清空队列中的数据,然后轮询线程可以继续把同步的逻辑日志写入队列中;4、逻辑日志内容与数据同步表的内容存在相应的对应关系,通过对应关系将数据同步表的内容解析为相应的逻辑日志,解析的逻辑日志内容为序列ID、节点ID、表ID、操作类型、主键值、记录值;数据同步表解析为逻辑日志的方法为取出数据同步表记录,把对应的内容填入逻辑日志中,如表的序列ID对应逻辑日志的序列ID,主键ID对应主键值,逻辑日志的记录值则通过表名、主键值、主键字段名从数据库中取出,然后根据字段类型组装成为二进制的记录值;5、接收进程等待接收的逻辑日志信息,从批量的日志信息中,解析出单条的逻辑日志,取出逻辑日志的内容,将修改更新到缓存中;通过主键的设置,可以保证日志重复执行而不会产生数据不一致。最后,业务数据访问控制提供数据路由的方式,将业务定位在指定的业务服务器上,从而可以访问到对应的数据。在中心部署方式下,会在各个分布节点中,根据用户的属性,将用户接入到离用户最近的节点上,例如用户数据,每个用户将接入属于这个用户的节点,从而可以访问到属于本节点的数据。访问控制具体包括如下步骤I、每个分布节点服务指定的用户群体;2、用户接入系统时,配置访问的服务器为该用户所在的分布节点服务器;3、分布节点同步该用户的数据,从而可以提供对该用户的服务。、
由上述描述可知,本发明的数据分布缓存系统如图2所示,其主要包括中心数据库和至少一个分布节点(图2中以分布节点I和分布节点2两个分布节点为例),其中,所述中心数据库由多个数据库单元组成(图2中由数据库I至数据库η共η个数据库单元组成),用于统一存储全部业务数据并为每个业务数据配置节点ID信息;每个所述分布节点包括分发集群和至少一个同步服务器,所述分发集群由分发服务器组成,用于将中心数据库中的业务数据取出,并根据每个数据所携带的节点ID信息,将数据分发到对应的同步服务器;所述同步服务器用于从分发服务器中取得分发到本地的数据,将其同步到本地的缓存中供用户访问。其中,可以采用多个分发服务器以主备的方式构建分发集群,图2中,两个分发服务器(主机和备机)组成了 HA(HighAVailable,高可用性)集群系统。每个同步服务器的本地的缓存以数据库的形式管理各业务数据(图2中以shineDB为例管理多个业务数据业务I、业务2等)。此外,本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,包括上述实施例方法的各步骤,而所述的存储介质可以是=ROM/RAM、磁碟、光盘、存储卡等。因此,与本发明的方法相对应的,本发明还同时包括一种数据分布缓存系统,该系统通常以与方法各步骤相对应的功能模块的形式表示;所述系统包括数据存储模块、数据分发模块、数据同步模块和访问控制模块,其中,数据存储模块,用于在生成业务数据或业务数据发生变化时,根据预先设定的配 置策略对每一个数据增加节点ID信息,将数据存储在中心数据库中;数据分发模块,用于进行数据分发,将中心数据库中的业务数据取出,并根据每个数据所携带的节点ID信息,将数据分发到对应的节点服务器;数据同步模块,用于从节点服务器中取出分发到该节点的数据,同步到该节点的缓存中;访问控制模块,用于将每个用户群接入到一个特定的节点,用户通过该节点缓存访问业务数据。采用本发明的方案,具有以下明显优势I、通过本发明提供的分布缓存方法,可以方便地进行配置,将数据分布在不同的分布节点上,并为分布在该节点上的用户提供服务,从而减少在每个分布节点上的数据量,提闻数据访问的性能;2、本发明提供的数据划分方法和业务相互独立,并且提供了数据分布配置的方法,简化程序代码在配置上的实现,并且提供了一种简单的从物理数据库实时同步数据到分布缓存的方法;3、通过将数据分布到不同的节点,可以将系统独立为各个不相关的节点,从而减少各个节点的相互依赖,简化系统的实现,降低各个节点服务器的配置,降低系统组网的成本。以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的发明保护范围应由权利要求限定。
权利要求
1.一种数据分布缓存方法,其特征在于,所述方法包括步骤 SI,在生成业务数据或业务数据发生变化时,根据预先设定的配置策略对每一个数据增加节点ID信息,将数据存储在中心数据库中; S2,进行数据分发,将中心数据库中的业务数据取出,并根据每个数据所携带的节点ID信息,将数据分发到对应的节点服务器; S3,从节点服务器中取出分发到该节点的数据,同步到该节点的缓存中; S4,将每个用户群接入到一个特定的节点,用户通过该节点缓存访问业务数据。
2.根据权利要求I所述的方法,其特征在于,所述中心数据库中统一存储全部业务数据。
3.根据权利要求I所述的方法,其特征在于,步骤SI中,所述配置策略包括 在进行业务相关表设计时,增加业务无关的拆分字段,作为数据分布在各个节点的依据; 相同业务组的表设计填充相同的字段值; 生成业务数据时,根据业务的属性配置填充对应的拆分字段的数据值; 各个分布缓存节点在同步本节点的数据时,把相同属性的拆分字段值同步到本节点的缓存中。
4.根据权利要求I所述的方法,其特征在于,步骤S2进一步包括步骤 在中心数据库中的数据发生变动时,触发中心数据库中的触发器,触发器检查数据的变化类型,从配置表中查询变动的数据需要分发的节点ID,如果需要分发数据到某节点,则生成该对应节点的逻辑日志; 将逻辑日志记录在数据同步表中; 定期检查数据同步表中的数据,存在需要同步的逻辑日志时,从同步表中取出逻辑日志,把同一节点的逻辑日志批量组合起来,放在分发线程的工作队列中; 将数据同步表的内容解析为相应的逻辑日志; 从批量的日志信息中,解析出单条的逻辑日志,取出逻辑日志的内容,将修改更新到缓存中。
5.根据权利要求I所述的方法,其特征在于,步骤S3进一步包括步骤 从配置文件中读取节点信息,通过节点信息查询同步条件表; 查询同步数据的条件并组装同步查询数据的SQL语句; 通过组装的SQL语句查询同步到本节点的数据,把查询的数据写入缓存中。
6.根据权利要求I所述的方法,其特征在于,步骤S4进一步包括步骤 为每个分布节点指定对应的用户群体; 在用户接入系统时,配置用户访问的服务器为该用户所在的分布节点; 分布节点同步该用户的数据,为用户提供针对该用户的服务。
7.一种数据分布缓存系统,其特征在于,所述系统包括中心数据库和至少一个分布节点;其中, 所述中心数据库由多个数据库单元组成,用于统一存储全部业务数据并为每个业务数据配置节点ID信息; 每个所述分布节点包括分发集群和至少一个同步服务器,所述分发集群由分发服务器组成,用于将中心数据库中的业务数据取出,并根据每个数据所携带的节点ID信息,将数据分发到对应的同步服务器;所述同步服务器用于从分发服务器中取得分发到本地的数据,将其同步到本地的缓存中供用户访问。
8.一种数据分布缓存系统,其特征在于,所述系统包括 数据存储模块,用于在生成业务数据或业务数据发生变化时,根据预先设定的配置策略对每一个数据增加节点ID信息,将数据存储在中心数据库中; 数据分发模块,用于进行数据分发,将中心数据库中的业务数据取出,并根据每个数据所携带的节点ID信息,将数据分发到对应的节点服务器; 数据同步模块,用于从节点服务器中取出分发到该节点的数据,同步到该节点的缓存中; 访问控制模块,用于将每个用户群接入到一个特定的节点,用户通过该节点缓存访问业务数据。
9.根据权利要求8所述的系统,其特征在于,所述数据存储模块中包括策略配置模块,所述策略配置模块进一步包括 字段设计模块,用于在进行业务相关表设计时,增加业务无关的拆分字段,作为数据分布在各个节点的依据; 表拆分模块,用于将相同业务组的表设计填充相同的字段值; 业务拆分模块,用于在生成业务数据时,根据业务的属性配置填充对应的拆分字段的数据值; 同步策略模块,用于在各个分布缓存节点在同步本节点的数据时,把相同属性的拆分字段值同步到本节点的缓存中。
10.根据权利要求8所述的系统,其特征在于,所述数据分发模块进一步包括 日志生成模块,用于在中心数据库中的数据发生变动时,触发中心数据库中的触发器,触发器检查数据的变化类型,从配置表中查询变动的数据需要分发的节点ID,如果需要分发数据到某节点,则生成该对应节点的逻辑日志; 记录模块,用于将逻辑日志记录在数据同步表中; 轮询模块,用于定期检查数据同步表中的数据,存在需要同步的逻辑日志时,从同步表中取出逻辑日志,把同一节点的逻辑日志批量组合起来,放在分发线程的工作队列中;表解析模块,用于将数据同步表的内容解析为相应的逻辑日志; 日志解析模块,用于从批量的日志信息中,解析出单条的逻辑日志,取出逻辑日志的内容,将修改更新到缓存中。
全文摘要
本发明涉及数据管理技术领域,提供了一种数据分布缓存方法及系统。该方法包括步骤在生成业务数据或业务数据发生变化时,根据预先设定的配置策略对每一个数据增加节点ID信息,将数据存储在中心数据库中;将中心数据库中的业务数据取出,并根据每个数据所携带的节点ID信息,将数据分发到对应的节点服务器;从节点服务器中取出分发到该节点的数据,同步到该节点的缓存中;将每个用户群接入到一个特定的节点,用户通过该节点缓存访问业务数据。本发明把相同类别属性的数据划分为同一组,通过分发进程,把相同属性的业务数据分布到用户最近访问的缓存中,提供给业务数据使用,从而减少缓存数据对中心数据库内存的占用,提高数据的访问速度。
文档编号H04L29/08GK102638584SQ20121011822
公开日2012年8月15日 申请日期2012年4月20日 优先权日2012年4月20日
发明者纪开虎 申请人:青岛海信传媒网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1