基于云计算实现缓存的加载或持久化的系统及方法技术方案

技术编号:14821382 阅读:54 留言:0更新日期:2017-03-15 19:49
本发明专利技术涉及一种基于云计算实现缓存的加载或持久化的系统,其中包括调度模块、缓存模块、数据源模块和事件模块,所述的调度模块分别与所述的缓存模块、数据源模块和事件模块相连接;还包括一种基于云计算实现缓存的加载或持久化的方法。采用了该发明专利技术中的基于云计算实现缓存的加载或持久化的系统及方法,系统架构简单,不依赖于某种缓存实现或者某种具体类型的数据源,在云计算环境下能自动选择服务节点加载和持久化缓存数据,适用于不同类型的数据源硬编码,具有广泛的应用范围。

【技术实现步骤摘要】

本专利技术涉及计算机软件
,尤其涉及云计算
,具体是指一种基于云计算实现缓存的加载或持久化的系统及方法
技术介绍
缓存作为一种有效提高性能的技术已经被广泛采用,使用缓存的一个难点在于保证缓存中的数据正确性,即保证缓存的数据和数据源的数据一致性。在传统单机环境下,从数据源加载数据和将数据持久化到数据源都由单机应用完成,实现相对简单。但是在云计算环境下,保证缓存的数据和数据源的数据一致性更有挑战,在云计算环境下,一般的数据都通过专门的微服务来访问,为保证可用性,微服务都采用多节点部署,意味着不能再简单的由每个节点来加载和持久化数据。另外云计算环境下,资源多由自动分配,所以将加载和持久化绑定到某个节点也不可行。缓存的数据加载是使用缓存的基础,需要一套成熟的技术和方法来支撑。现在各系统使用缓存时加载和持久化过程呈现多样化的特点,有些系统采用人工初始化的方法,这类系统主要针对的是静态数据,初始化完成后数据长期不会变化,如果需要变化需要人工重新初始化。对于非静态数据,目前大多数采用硬编码的方式,针对不同系统,不同类型的数据源做不同的适配,对于云计算环境下还需要单独的配置指定某个节点完成加载或持久化动作,没有一种统一的规划和技术方案。现有的实现方式存在以下不足:1、实施周期长,而且因为实施人员的水品参差不齐也给测试带来更大的工作量;2、对于云计算环境下,需要指定固定的节点来完成加载或持久化动作,一旦该节点出现问题,就不能保证缓存数据的时效性;3、针对不同类型的数据源硬编码过多,不能达到很好复用的效果。
技术实现思路
本专利技术的目的是克服了上述现有技术的缺点,提供了一种能够实现在云计算环境下自动选择服务节点加载和持久化缓存数据的系统及方法。为了实现上述目的,本专利技术的具有如下构成:一种基于云计算实现缓存的加载或持久化的系统,包括调度模块、缓存模块、数据源模块和事件模块,所述的调度模块分别与所述的缓存模块、数据源模块和事件模块相连接。较佳地,所述的调度模块包括:分布式选举单元,用于对每个缓存的数据集选举一个leader,由该leader执行将缓存的数据项从数据源加载到缓存中,并且由该leader将缓存中的数据持久化到数据源中;任务工作池单元,该任务工作池单元为一用于管理加载和持久化执行的线程,并支持弹性调整执行线程数量,在忙时增加处理线程,在闲时释放处理线程。较佳地,所述的缓存模块包括:缓存接口单元,定义该缓存的加载或持久化的系统与在各缓存实现之间的交互接口,通过该缓存接口单元与具体的缓存实现进行解耦,从而支持多重缓存实现,如Redis、memcache等;缓存适配单元,用于针对具体的缓存存储对缓存SPI的实现。较佳地,所述的数据源模块包括:数据定义单元,用于定义缓存的数据集来源,所述的数据来源包括配置文件、关系型数据库和外部系统,并且定义数据的加载和持久化策略,所述的数据的加载和持久化策略包括定时加载和持久化策略和通知加载和持久化策略,其中,加载和持久化方法包括同步和异步两种;数据源适配单元,用于从数据读取数据,并将数据写到数据源,该数据源适配单元可以根据需要扩展多个,分别针对不同的数据源。较佳地,所述的事件模块包括:事件中心单元,leader节点通过该事件中心单元接收非leader节点的状态变化通知。还包括一种通过上述系统基于云计算实现缓存的加载或持久化的方法,所述的方法包括以下步骤:(1)定义缓存提供者;(2)定义缓存数据集以及加载或持久化策略;(3)自动调度加载或持久化;(4)发布数据变化事件。较佳地,所述的步骤(1)包括以下步骤:(1-1)根据缓存提供者配置文件模板新建缓存提供者配置文件,扩展名为:.chpx;(1-2)在所述的缓存提供者配置文件中按照模板增加缓存实例定义;(1-3)为所述的缓存实例定义配置id属性,所配置的id值必须全局唯一;(1-4)为所述的缓存实例定义配置provider属性,provider属性的值是一种缓存SPI接口的实现,如redis缓存SPI实现;(1-5)为所述的缓存实例定义配置私有属性,如果是本地缓存,则配置缓存大小;如果是远程缓存,则配置远程缓存的地址、端口、用户名和密码。较佳地,所述的步骤(2)包括以下步骤:(2-1)根据缓存数据集配置文件模板新建缓存数据集配置文件,扩展名为:.chsx;(2-2)在所述的缓存数据集配置文件中按照模板增加缓存数据集的定义;(2-3)为所述的缓存数据集定义配置命名空间属性和数据集名称属性,所述的命名空间属性和所述的数据集名称属性组合生成一个唯一的id,组合规则为:命名空间+“.”+数据集名称;(2-4)为所述的缓存数据定义配置数据源类型,如果是数据源类型是文件型,则配置文件路径,如果是关系型数据库类型,则配置关系型数据库的服务器地址和端口;(2-5)为所述的缓存数据定义配置加载或持久化策略。更佳地,所述的步骤(2-5)包括以下步骤:(2-5-1)为所述的缓存数据集定义配置场景类型:“加载”或“持久化”,如果是“加载”场景类型,则继续步骤(2-5-2),如果是“持久化”场景类型,则继续步骤(2-5-3);(2-5-2)为所述的缓存数据集定义配置read实现类,其中read实现类从上述配置的数据源中读取数据,继续步骤(2-5-4);(2-5-3)为所述的缓存数据集定义配置write实现类,其中write实现类从将缓存中变化的内容持久化到上述的数据源中;(2-5-4)为所述的缓存数据集定义配置调度策略,可设置的值为固定频率刷新、懒加载和缓冲区大小阈值,如果设置的值为固定刷新频率,则继续设置刷新周期,如果设置的值为缓冲区大小,则继续设置缓冲区的阈值;(2-5-5)为所述的缓存数据集定义配置动作模式,可设置的值为同步和异步。较佳地,所述的步骤(3)包括以下步骤:(3-1)加载缓存提供者配置文件;(3-2)加载缓存数据集配置文件;(3-3)针对每个缓存数据集选择一个leader节点来执行加载或持久化动作,在有更新时判断当前节点类型,如果是非leader节点,则继续步骤(3-4),如果是leader节点,则继续步骤(3-5);(3-4)非leader节点当缓存,通过上述事件子系统通知leader节点有变化的key,继续步骤(3-3);(3-5)leader节点根据上述配置的加载或持久化策略来加载或持久化数据,继续步骤(3-3)。更佳地,其特征在于,所述的步骤(3-1)包括以下步骤:(3-1-1)扫描指定目录下所有以.chpx为扩展名的文件,调用解析器解析成缓存数据配置模型对象;(3-1-2)将模型对象注册到缓存提供者manager中,在系统停止时通过manager释放资源;(3-1-3)如果模型对象指示的缓存提供者为远程缓存,则启动该模型,建立与远程缓存的连接。更佳地,所述的步骤(3-2)包括以下步骤:(3-2-1)扫描指定目录下的所有以.chsx为扩展名的文件,调用解析器解析成配置模型对象;(3-2-2)将模型对象注册到缓存数据集manager中,在系统停止时通过manager释放资源。更佳地,所述的针对每个缓存数据集选择一个leader节点来执行加载或持久化动作,具体为:(3-3-1)生成一个唯一的节点id,目前生成id的方式为uu本文档来自技高网...
基于云计算实现缓存的加载或持久化的系统及方法

【技术保护点】
一种基于云计算实现缓存的加载或持久化的系统,其特征在于,所述的系统包括调度模块、缓存模块、数据源模块和事件模块,所述的调度模块分别与所述的缓存模块、数据源模块和事件模块相连接。

【技术特征摘要】
1.一种基于云计算实现缓存的加载或持久化的系统,其特征在于,所述的系统包括调度模块、缓存模块、数据源模块和事件模块,所述的调度模块分别与所述的缓存模块、数据源模块和事件模块相连接。2.根据权利要求1所述的基于云计算实现缓存的加载或持久化的系统,其特征在于,所述的调度模块包括:分布式选举单元,用于对每个缓存的数据集选举一个leader,由该leader执行将缓存的数据项从数据源加载到缓存中,并且由该leader将缓存中的数据持久化到数据源中;任务工作池单元,该任务工作池单元为一用于管理加载和持久化执行的线程,并支持弹性调整执行线程数量,在忙时增加处理线程,在闲时释放处理线程。3.根据权利要求1所述的基于云计算实现缓存的加载或持久化的系统,其特征在于,所述的缓存模块包括:缓存接口单元,定义所述的系统与各缓存实现之间的交互接口,且通过该缓存接口单元与具体的缓存实现进行解耦;缓存适配单元,用于针对具体的缓存存储对缓存SPI的实现。4.根据权利要求1所述的基于云计算实现缓存的加载或持久化的系统,其特征在于,所述的数据源模块包括:数据定义单元,用于定义缓存的数据集来源,所述的数据来源包括配置文件、关系型数据库和外部系统,并且定义数据的加载和持久化策略,所述的数据的加载和持久化策略包括定时加载和持久化策略和通知加载和持久化策略,其中,加载和持久化方法包括同步和异步两种;数据源适配单元,用于从数据读取数据,并将数据写到数据源,该数据源适配单元可以根据需要扩展多个,分别针对不同的数据源。5.根据权利要求1所述的基于云计算实现缓存的加载或持久化的系统,其特征在于,所述的事件模块包括:事件中心单元,leader节点通过该事件中心单元接收非leader节点的状态变化通知。6.一种通过权利要求1所述的系统基于云计算实现缓存的加载或持久化的方法,其特征在于,所述的方法包括以下步骤:(1)定义缓存提供者;(2)定义缓存数据集以及加载或持久化策略;(3)自动调度加载或持久化;(4)发布数据变化事件。7.根据权利要求6所述的基于云计算实现缓存的加载或持久化的方法,其特征在于,所述的步骤(1)包括以下步骤:(1-1)根据缓存提供者配置文件模板新建缓存提供者配置文件,扩展名为:.chpx;(1-2)在所述的缓存提供者配置文件中按照模板增加缓存实例定义;(1-3)为所述的缓存实例定义配置id属性,所配置的id值必须全局唯一;(1-4)为所述的缓存实例定义配置provider属性,provider属性的值是一种缓存SPI接口的实现,如redis缓存SPI实现;(1-5)为所述的缓存实例定义配置私有属性,如果是本地缓存,则配置缓存大小;如果是远程缓存,则配置远程缓存的地址、端口、用户名和密码。8.根据权利要求6所述的基于云计算实现缓存的加载或持久化的方法,其特征在于,所述的步骤(2)包括以下步骤:(2-1)根据缓存数据集配置文件模板新建缓存数据集配置文件,扩展名为:.chsx;(2-2)在所述的缓存数据集配置文件中按照模板增加缓存数据集的定义;(2-3)为所述的缓存数据集定义配置命名空间属性和数据集名称属性,所述的命名空间属性和所述的数据集名称属性组合生成一个唯一的id,组合规则为:命名空间+“.”+数据集名称;(2-4)为所述的缓存数据定义配置数据源类型,如果是数据源类型是文件型,则配置文件路径,如果是关系型数据库类型,则配置关系型数据库的服务器地址和端口;(2-5)为所述的缓存数据定义配置加载或持久化策略。9.根据权利要求8所述的基于云计算实现缓存的加载或持久化的方法,其特征在于,所述的步骤(2-5)包括以下步骤:(2-5-1)为所述的缓存数据集定义配置场景类型:“加载”或“持久化”,如果是“加载”场景类型,则继续步骤(2-5-2),如果是“持久化”场景类型,则继续步骤(2-5-3);(2-5-2)为所述的缓存数据集定义配置read实现类,其中read实现类从上述配置的数据源中读取数据,继续步骤(2-5-4);(2-5-3)为所述的缓存数据集定义配置write实现类,其中write实现类从将缓存中变化的内容持久化到上述的数据源中;(2-5-4)为所述的缓存数据集定义配置调度策略,可设置的值为固定频率刷新、懒加载和缓冲区大小阈值,如果设置的值为固定刷新频率,则继续设置刷新周期,如果设置的值为缓冲区大小,则继续设置缓冲区的阈值;(2-5-5)为所述的缓存数据集定义配置动作模式,...

【专利技术属性】
技术研发人员:田向阳
申请(专利权)人:普元信息技术股份有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1