论文部分内容阅读
摘要:从云计算与分布式缓存技术的结合入手, 对现有分布式数据缓存技术进行了研究 ,为此我们打算改进一个分布式数据缓存框架,基于原框架已有的服务组件来进行设计,集成各个服务组件的自身优势,保证整个框架的可扩展性和可用性,实现数据的冗余备份、故障转移和负载均衡等功能特性,使用已有更加先进的技术,Redis、Kafka、MySQL与NoSQL混合模型等,提高原有框架的性能。
关键词:云计算;分布式数据缓存;缓存优化
1.引言
随着大数据时代的来临,分布式应用系统成为了发展的主流。作为云平台提升应用性能的一种重要手段,分布式数据缓存已经成为当今分布式应用开发中不可或缺的一个环节,越来越受到企业的广泛关注和研究。
2.系统流程
该框架的目標是针对大规模、高并发的应用需求,保证海量数据的处理效率和快速响应。本设计选用Redis缓存技术与混合数据库结合,Redis服务器作为数据库的前端,存放用户经常访问的热点资源,用户请求的数据如果存在则直接从缓存中取出返回给用户,若不存在则查询数据库,从数据库取出数据返回给用户的同时,存到Redis服务器。此模型中,Zookeeper主要负责监控Redis节点集群,将集群状态变化实时通知给缓存管理器,同时利用其分布式锁的机制实现了缓存节点故障切换的功能;缓存管理器实现了Redis客户端、均衡负载和动态调整数据到Redis节点的映射(利用Zookeeper的监控功能)等功能,它是一个统筹全局、任务调度的角色,架构中的消息中间件(Kafka) 的主要功能是充当数据的传输通道,它能以一种松散的方式就像粘合剂一样把各组件装配起来,构成一个整体的模型。
Redis以组为单位部署,每个组只有单个Redis服务器提供服务,其他的都作为备份服务器,当主服务器(提供服务的Redis)故障后,会从备份服务器中选举出新的主服务器(失败转移功能),各个组之间不进行通信,通过缓存管理器组件中的分布式算法即一致性hash算法来组成一个虚拟的集群,该集群对调用者来说是透明的和屏蔽的。本地缓存模块和缓存管理器都是部署在应用服务器中,数据库层的“分布式事务支持”是扩展模块,只有当数据持久化到数据库且需要分布式事务支持时才会启用,它是一个复杂和独立的功能模块。Epoll模块同样是-个扩展模块,它的作用是通过在Linux环境下提高服务器的I/O能力,间接地提升整个缓存系统的性能。本地缓存模块可以看作是系统的一个小型的一级缓存,用于加快应用的响应速度。当整个框架如图正确部署后,每个Redis组下的服务器都会在zookeeper上创建临时节点,如/${root}/${me mgroup-i}/${ip}结构形式,${root}表示zookeeper上设置的根节点名称,${memgroup-i}表示Redis的组节点名称,i表示相应的组编号,如memgroup-1就表示第一组Redis服务器,${ip}表示某个组下的Redis服务器的实际IP地址,当一个Redis组下的Redis服务器将IP注册到zookeeper上后,就会试着去创建如/${root}/${memgroup-i}/${ masterNode }结构的临时节点,且将该节点的value 置为其IP, ${masterNode }是一个固定的值,表示本组的主服务器,一个组下只会有一个Redis能成功创建该节点,创建失败的Redis自动成为备份服务器并监听该节点,当主Redis服务器故障后,备份服务器都会获得通知,然后重新去竞争创建该节点,从而自动地选举出新主服务器。缓存管理器会监听所有的Redis组的主服务器节点,如/${root}/${me mgroup-i}/${masterNode},它根据该节点的value获取到所有提供服务的Redis地址并调用基于虚拟节点的一致性hash算法完成分布式映射,当有主Redis地址发生变化时,缓存管理器会得到通知,然后取得变更后的IP地址,将映射到变更前的IP地址的虚拟节点重新映射到变更后的IP地址,从而实现了自动动态地Redis节点映射。消息中间件启动后会按照Redis的分组创建消息通道,通道标识名称如下结构形式:/${root}/S{memgroup-i},每个分组下的Memcached都会订阅相应组的消息通道,当有缓存数据更新时,只需将更新数据发送到对应的消息通道后,订阅了该消息.通道的Redis服务器都会收到需要更新的数据各自去完成缓存数据的更新。
3.结语
在当今的互联网应用中,系统的复杂程度越来越高,海量级的数据处理,已经成为了提升系统性能的关键一环,云计算的引入,有力地推动了IT领域的深刻变革,同时也给分布式缓存技术的发展带来了难得的机遇。本文基于已有分布式缓存框架,使用Redis、Kafka、MySQL与NoSQL混合模型等技术进行优化。相对于之前的系统,采用优化后的技术后,系统性能有着很大的提升。
参考文献:
[1] 高国强.对等网络分布式缓存机制研究:[华中科技大学博士学位论文].武汉:华中科技大学,2011,4-7
[2]屠要峰.云计算分布式缓存及其应用实践.通讯世界,2012,(10):69-71
[3]王润华,任化敏,周艳芳等.分布式系统开发利器--ZooKeeper研究.中国电子商情:通信市场,2012,(1):64-67
[4]胡俊.构建分布式系统的关键技术研究与实现:[南京邮电大学硕士学位论文].南京:南京邮电大学,2012,5-6
[5]李汝光,赵俊.基于ZooKeeper的分布式缓存的设计与实现.绵阳师范学院学报,2011,30(11):116-119
[6]高宁.IBM消息中间件WebSphere MQ的应用,电脑知识,2010,06(31):8877-8879
关键词:云计算;分布式数据缓存;缓存优化
1.引言
随着大数据时代的来临,分布式应用系统成为了发展的主流。作为云平台提升应用性能的一种重要手段,分布式数据缓存已经成为当今分布式应用开发中不可或缺的一个环节,越来越受到企业的广泛关注和研究。
2.系统流程
该框架的目標是针对大规模、高并发的应用需求,保证海量数据的处理效率和快速响应。本设计选用Redis缓存技术与混合数据库结合,Redis服务器作为数据库的前端,存放用户经常访问的热点资源,用户请求的数据如果存在则直接从缓存中取出返回给用户,若不存在则查询数据库,从数据库取出数据返回给用户的同时,存到Redis服务器。此模型中,Zookeeper主要负责监控Redis节点集群,将集群状态变化实时通知给缓存管理器,同时利用其分布式锁的机制实现了缓存节点故障切换的功能;缓存管理器实现了Redis客户端、均衡负载和动态调整数据到Redis节点的映射(利用Zookeeper的监控功能)等功能,它是一个统筹全局、任务调度的角色,架构中的消息中间件(Kafka) 的主要功能是充当数据的传输通道,它能以一种松散的方式就像粘合剂一样把各组件装配起来,构成一个整体的模型。
Redis以组为单位部署,每个组只有单个Redis服务器提供服务,其他的都作为备份服务器,当主服务器(提供服务的Redis)故障后,会从备份服务器中选举出新的主服务器(失败转移功能),各个组之间不进行通信,通过缓存管理器组件中的分布式算法即一致性hash算法来组成一个虚拟的集群,该集群对调用者来说是透明的和屏蔽的。本地缓存模块和缓存管理器都是部署在应用服务器中,数据库层的“分布式事务支持”是扩展模块,只有当数据持久化到数据库且需要分布式事务支持时才会启用,它是一个复杂和独立的功能模块。Epoll模块同样是-个扩展模块,它的作用是通过在Linux环境下提高服务器的I/O能力,间接地提升整个缓存系统的性能。本地缓存模块可以看作是系统的一个小型的一级缓存,用于加快应用的响应速度。当整个框架如图正确部署后,每个Redis组下的服务器都会在zookeeper上创建临时节点,如/${root}/${me mgroup-i}/${ip}结构形式,${root}表示zookeeper上设置的根节点名称,${memgroup-i}表示Redis的组节点名称,i表示相应的组编号,如memgroup-1就表示第一组Redis服务器,${ip}表示某个组下的Redis服务器的实际IP地址,当一个Redis组下的Redis服务器将IP注册到zookeeper上后,就会试着去创建如/${root}/${memgroup-i}/${ masterNode }结构的临时节点,且将该节点的value 置为其IP, ${masterNode }是一个固定的值,表示本组的主服务器,一个组下只会有一个Redis能成功创建该节点,创建失败的Redis自动成为备份服务器并监听该节点,当主Redis服务器故障后,备份服务器都会获得通知,然后重新去竞争创建该节点,从而自动地选举出新主服务器。缓存管理器会监听所有的Redis组的主服务器节点,如/${root}/${me mgroup-i}/${masterNode},它根据该节点的value获取到所有提供服务的Redis地址并调用基于虚拟节点的一致性hash算法完成分布式映射,当有主Redis地址发生变化时,缓存管理器会得到通知,然后取得变更后的IP地址,将映射到变更前的IP地址的虚拟节点重新映射到变更后的IP地址,从而实现了自动动态地Redis节点映射。消息中间件启动后会按照Redis的分组创建消息通道,通道标识名称如下结构形式:/${root}/S{memgroup-i},每个分组下的Memcached都会订阅相应组的消息通道,当有缓存数据更新时,只需将更新数据发送到对应的消息通道后,订阅了该消息.通道的Redis服务器都会收到需要更新的数据各自去完成缓存数据的更新。
3.结语
在当今的互联网应用中,系统的复杂程度越来越高,海量级的数据处理,已经成为了提升系统性能的关键一环,云计算的引入,有力地推动了IT领域的深刻变革,同时也给分布式缓存技术的发展带来了难得的机遇。本文基于已有分布式缓存框架,使用Redis、Kafka、MySQL与NoSQL混合模型等技术进行优化。相对于之前的系统,采用优化后的技术后,系统性能有着很大的提升。
参考文献:
[1] 高国强.对等网络分布式缓存机制研究:[华中科技大学博士学位论文].武汉:华中科技大学,2011,4-7
[2]屠要峰.云计算分布式缓存及其应用实践.通讯世界,2012,(10):69-71
[3]王润华,任化敏,周艳芳等.分布式系统开发利器--ZooKeeper研究.中国电子商情:通信市场,2012,(1):64-67
[4]胡俊.构建分布式系统的关键技术研究与实现:[南京邮电大学硕士学位论文].南京:南京邮电大学,2012,5-6
[5]李汝光,赵俊.基于ZooKeeper的分布式缓存的设计与实现.绵阳师范学院学报,2011,30(11):116-119
[6]高宁.IBM消息中间件WebSphere MQ的应用,电脑知识,2010,06(31):8877-8879