一种具有任务分发功能的分布式缓存架构及缓存方法

文档序号:6631570阅读:248来源:国知局
一种具有任务分发功能的分布式缓存架构及缓存方法
【专利摘要】本发明公开了一种具有任务分发功能的分布式缓存架构,包括分布式任务调度系统、关系型数据库Mysql以及redis分布式缓存系统。本发明一种具有任务分发功能的动态分布式缓存架构,解决了传统数据库无法应对大数据量的处理和访问的情况。本发明公开的另一种采用上述分布式缓存架构的缓存方法,对于需要计算的场景能够做到自动的任务分发和容错,保证处理过程的可靠性。
【专利说明】一种具有任务分发功能的分布式缓存架构及缓存方法

【技术领域】
[0001]本发明属于大数据处理【技术领域】,涉及一种具有任务分发功能的分布式缓存架构方法。

【背景技术】
[0002]随着各种非结构数据越来越多,在数据存储和处理方面对于数据库的性能要求越来越高,读写操作量的需求也不断增加,传统关系型数据库在应对海量数据处理中显得吃力。如,关系型数据库在少量数据存储,高速访问,海量数据存储,分布式系统支持,数据一致性保证,方便的集群节点添加或删除等方面无法做到得心应手。
[0003]针对以上问题,典型的应用架构中有使用到mamcache这种内存对象缓存系统,然而,随着业务量的不断增加和访问量的持续增长,会遇到许多问题:
[0004](I)数据库需要不断的进行拆库拆表,mamcache也需要不断扩容,而扩容和维护工作要占据大量的开发时间。
[0005](2)memcache与数据库的数据存在一致性问题。
[0006]Oemcache数据的命中率低或者宕机的话,大量访问需要直接穿透到数据库,这对于诸如mysql这类数据库将无法支撑大量的直接访问。
[0007](4)跨机房cache同步问题。
[0008]而且,对于变化率非常快的数据而言,如果选择静态缓存方式(Memcached/Filesystem等)展示数据,可能在缓存的存取上会有很大的开销,并不能很好的满足需要。
[0009]具有任务分发功能的分布式缓存出于如下考虑,首先是缓存本身的水平线性扩展问题,其次是缓存大并发下的本身的性能问题,再次是避免缓存的单点故障问题(多副本和副本一致性)。分布式缓存的核心技术包括对内存本身的管理、内存的分配、管理和回收机制。其次是分布式管理和分布式算法,最后是缓存键值管理和路由。分布式缓存系统具有诸多优点:
[0010]I)高性能:当传统数据库面临大规模数据访问时,磁盘i/o往往成为性能瓶颈,从而导致过高的响应延迟.分布式缓存将高速内存作为数据对象的存储介质,数据以key/value形式存储,理想情况下可以获得DRAM级的读写性能;
[0011]2)动态扩展性:支持弹性扩展,通过动态增加或减少节点应对变化的数据访问负载,提供可预测的性能与扩展性;同时,最大限度地提高资源利用率;
[0012]3)高可用性:可用性包含数据可用性与服务可用性两方面.基于冗余机制实现高可用性,无单点失效(single point of failure),支持故障的自动发现,透明地实施故障切换,不会因服务器故障而导致缓存服务中断或数据丢失.动态扩展时自动均衡数据分区,同时保障缓存服务持续可用;
[0013]4)易用性:提供单一的数据与管理视图;API接口简单,且与拓扑结构无关;动态扩展或失效恢复时无需人工配置;自动选取备份节点;多数缓存系统提供了图形化的管理控制台,便于统一维护;
[0014]5)分布式代码执行(distributed code execut1n):将任务代码转移到各数据节点并行执行,客户端聚合返回结果,从而有效避免了缓存数据的移动与传输.


【发明内容】

[0015]本发明的目的是提供一种具有任务分发功能的分布式缓存架构,解决了传统数据库无法应对大数据量的处理和访问的情况。
[0016]本发明的另一目的是提供一种具有任务分发功能的分布式缓存方法,对于需要计算的场景能够做到自动的任务分发和容错,保证处理过程的可靠性。
[0017]本发明所采用的一种技术方案是,一种具有任务分发功能的分布式缓存架构,包括关系型数据库Mysql、redis分布式缓存系统以及与客户端通过网络连接的分布式任务调度系统。
[0018]本发明一种技术方案的特点还在于,
[0019]redis分布式缓存系统包括依次连接的缓存管理模块、分布式缓存模块、数据分布模块、替换算法模块、缓存同步模块、缓存通信模块、可靠性服务模块。
[0020]本发明所采用的另一种技术方案是,一种具有任务分发功能的分布式缓存方法,采用一种具有任务分发功能的分布式缓存架构,其结构为:包括关系型数据库Mysql、redis分布式缓存系统以及与客户端通过网络连接的分布式任务调度系统;
[0021]其中,redis分布式缓存系统包括依次连接的缓存管理模块、分布式缓存模块、数据分布模块、替换算法模块、缓存同步模块、缓存通信模块、可靠性服务模块。
[0022]采用上述分布式缓存系统的缓存方法,具体按照以下步骤实施:
[0023]步骤1,当用户有数据查询需求时,系统调用一致性哈希算法找到节点,并调用通信模块读取数据;
[0024]步骤2,如果通信模块找到数据,则将数据返回给用户;如果通信模块没有找到数据,则用户直接访问数据库进行数据读取,并执行步骤3 ;
[0025]步骤3,数据库将数据写入缓存主节点;
[0026]步骤4,数据库将缓存主节点中的数据和缓存从节点中的数据同步。
[0027]本发明另一种技术方案的特点还在于,
[0028]步骤4具体按照以下步骤实施:
[0029]步骤4.1,用户向数据库中写入一条数据;
[0030]步骤4.2,数据库的触发器启动,并启用Mysql udf ;
[0031]步骤4.3,启用 gearman udf,并启动 Gearman-worker ;
[0032]步骤4.4,更新redis分布式缓存系统中的数据。
[0033]本发明的有益效果是,
[0034]I)高效率:对于变化频率快的数据而言,采用redis这种动态内存缓存技术可以极大地减少在缓存存取上的系统开销;而且采用这种读写效率高的分布式缓存能够减轻关系型数据库Mysql的压力,代替其中由于读写频率较高而产生锁的部分。
[0035]2)实现了异步计算:可以将比较耗时的计算分配到分布式计算机集群处理,减少了站点服务器的压力和处理延迟现象。
[0036]3)高性能:当传统数据库面临大规模数据访问时,磁盘I/O往往成为性能瓶颈,从而导致过高的响应延迟,分布式缓存将高速内存作为数据对象的存储介质,数据以key/value形式存储,理想情况下可以获得DRAM级的读写性能;
[0037]4)动态扩展性:支持弹性扩展,通过动态增加或减少节点应对变化的数据访问负载,提供可预测的性能与扩展性,同时,最大限度地提高资源利用率;
[0038]3)高可用性:可用性包含数据可用性与服务可用性两方面,基于冗余机制实现高可用性,无单点失效(single point of failure),支持故障的自动发现,透明地实施故障切换,不会因服务器故障而导致缓存服务中断或数据丢失,动态扩展时自动均衡数据分区,同时保障缓存服务持续可用;
[0039]4)易用性:提供单一的数据与管理视图;API接口简单,且与拓扑结构无关;动态扩展或失效恢复时无需人工配置;自动选取备份节点;多数缓存系统提供了图形化的管理控制台,便于统一维护。

【专利附图】

【附图说明】
[0040]图1是本发明一种具有任务分发功能的分布式缓存架构的结构示意图;
[0041]图2是用本发明中分布式任务调度系统的结构示意图;
[0042]图3是本发明具有任务分发功能的分布式缓存方法中数据查询的流程示意图;
[0043]图4是本发明中数据库数据与缓存同步的方法的流程示意图。
[0044]图中,1.分布式任务调度系统,2.关系型数据库Mysql,3.redis分布式缓存系统,4.缓存管理模块,5.分布式缓存模块,6.数据分布模块,7.替换算法模块,8.缓存同步模块,9.缓存通信模块,10.可靠性服务模块。

【具体实施方式】
[0045]下面结合附图和【具体实施方式】对本发明进行详细说明。
[0046]本发明一种具有任务分发功能的分布式缓存架构,如图1所示,包括关系型数据库MySql2、rediS分布式缓存系统3以及与客户端通过网络连接的分布式任务调度系统I ;
[0047]如图2所示,redis分布式缓存系统3包括依次连接的缓存管理模块4、分布式缓存模块5、数据分布模块6、替换算法模块7、缓存同步模块8、缓存通信模块9、可靠性服务模块10。
[0048]本发明的缓存结构的工作原理为,首先启动分布式任务分发系统的服务器端;其次,用户编写好处理具体任务处理模块作为具体任务处理端,并启动;然后,由用户根据需求编写具体的调度系统客户端,并启动;最后,任务分发系统的服务器端接收客户端的请求并将其需要处理的业务分发给实际适合处理该业务的工作节点进行处理,处理完成后将结果经服务器端返回到客户端。
[0049]本发明中的分布式缓存结构中各个模块的作用如下:
[0050]数据分布模块6包括基于复制的数据分布模式和基于分区的数据分布模式。其中基于复制的数据分布模式适合于在数据读操作多于数据写操作应用场合;而基于分区的数据分布则更适合于写操作频繁的场合。
[0051]缓存同步模块8主要用于解决当原始数据库中的数据或者某台缓存服务器中的数据发生变化以后同步更新其他服务器中的缓存数据。
[0052]替换算法模块7,由于缓存服务器的硬件资源有限,因此当缓存的数据超过系统的内存大小时,就要选择缓存中的某一部分数据进行替换,为了提高缓存的命中率,需要使用合理的缓存替换算法来保证缓存中的数据具有较高的命中率。
[0053]缓存通信模块9,分布式缓存中各个缓存服务器是通过相互合作共同为上层应用提供缓存服务的,而各个缓存服务器需要通过通信协议来实现其服务器和客户端之间,以及各个缓存服务器之间的实时通信,使其协同工作,保障缓存系统的实时性和可靠性。
[0054]可靠性服务模块10,如果在内存快照被持久化到磁盘之前,缓存所在的服务器出现宕机,那么这些没有写入到磁盘的已修改数据都将丢失。为了保证数据的高可靠性,分布式缓存提供了一种数据持久化机制来保证数据的可靠性。
[0055]本发明的分布式缓存架构通过将redis分布式缓存系统和gearman相结合的方式,不仅可以实现对数据的缓存,而且能够实现对数据的持久化,对于需要计算的场景能够做到自动的任务分发和容错,保证处理过程的可靠性。
[0056]本发明另一种具有任务分发功能的分布式缓存方法,如图3所示,采用上述分布式缓存系统的缓存方法,具体按照以下步骤实施:
[0057]步骤1,当用户有数据查询需求时,系统调用一致性哈希算法找到节点,并调用通信模块读取数据;
[0058]步骤2,如果缓存通信模块9找到数据,则将数据返回给用户;如果缓存通信模块9没有找到数据,则用户直接访问数据库进行数据读取,并执行步骤3 ;
[0059]步骤3,数据库将数据写入缓存主节点;
[0060]步骤4,数据库将缓存主节点中的数据和缓存从节点中的数据同步。
[0061]如图4所示,步骤4具体按照以下步骤实施:
[0062]步骤4.1,用户向数据库中写入一条数据;
[0063]步骤4.2,数据库的触发器启动,并启用Mysql udf ;
[0064]步骤4.3,启用 gearman udf,并启动 Gearman-worker ;
[0065]步骤4.4,更新redis分布式缓存系统中的数据。
【权利要求】
1.一种具有任务分发功能的分布式缓存架构,其特征在于,包括关系型数据库MySql(2)、rediS分布式缓存系统(3)以及与客户端通过网络连接的分布式任务调度系统⑴。
2.根据权利要求1所述的一种具有任务分发功能的分布式缓存架构,其特征在于,所述的redis分布式缓存系统(3)包括依次连接的缓存管理模块(4)、分布式缓存模块(5)、数据分布模块(6)、替换算法模块(7)、缓存同步模块(8)、缓存通信模块(9)、可靠性服务模块(10)。
3.一种具有任务分发功能的分布式缓存方法,其特征在于,采用一种具有任务分发功能的分布式缓存架构,其结构为:包括关系型数据库Mysql (2)、redis分布式缓存系统(3)以及与客户端通过网络连接的分布式任务调度系统(I); 其中,所述的redis分布式缓存系统(3)包括依次连接的缓存管理模块(4)、分布式缓存模块(5)、数据分布模块(6)、替换算法模块(7)、缓存同步模块(8)、缓存通信模块(9)、可靠性服务模块(10)。 采用上述分布式缓存系统的缓存方法,具体按照以下步骤实施: 步骤1,当用户有数据查询需求时,系统调用一致性哈希算法找到节点,并调用通信模块读取数据; 步骤2,如果缓存通信模块(9)找到数据,则将数据返回给用户;如果缓存通信模块(9)没有找到数据,则用户直接访问数据库进行数据读取,并执行步骤3 ; 步骤3,数据库将数据写入缓存主节点; 步骤4,数据库将缓存主节点中的数据和缓存从节点中的数据同步。
4.根据权利要求2所述的一种具有任务分发功能的分布式缓存方法,其特征在于,所述步骤4具体按照以下步骤实施: 步骤4.1,用户向数据库中写入一条数据; 步骤4.2,数据库的触发器启动,并启用Mysql udf ; 步骤 4.3,启用 gearman udf,并启动 Gearman-worker ; 步骤4.4,更新redis分布式缓存系统中的数据。
【文档编号】G06F17/30GK104361030SQ201410578562
【公开日】2015年2月18日 申请日期:2014年10月24日 优先权日:2014年10月24日
【发明者】王茜, 葛新, 李安颖, 史晨昱, 梁小江 申请人:西安未来国际信息股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1