用户名: 密码:    

首页 - 系统厂商 - 技术 - 云计算
云计算分布式缓存及其应用实践
作者:中兴通讯股份有限公司 屠要峰/文    时间:2012-11-01 11:27:11  来源:  通讯世界www.tele.com.cn
浏览次数:10082

NOSQL技术产生的背景

NoSQL的历史最早可以追朔到Berkeley DB等嵌入式数据库的年代,互联网时代的NoSQL,源起于Google为解决大数据的存储与计算而提出的GFS + Bigtable + Map Reduce。随后Hadoop(Hdfs + Hbase + MapReduce)、Hypertable、Memcached、Tokyo cabinet、Redis、Dynamo、Cassandra等等NoSQL产品雨后春笋般的推出,使得NoSQL技术广泛应用于互联网各个领域。
关系型数据库具有功能强大,稳定性好,久经历史考验等优势,也积累了大量的成功案例。随着移动互联网的发展,关系数据库在很多应用场合出现了瓶颈。比如在磁盘IO上的瓶颈限制了系统的性能;可扩展性存在较大缺陷,分表分库、主从复制等方案对人员的技术能力要求高,而且在扩展时往往需要进行大规模的数据迁移,必须降低或者中断系统服务。
正是因为互联网行业的高速发展对大数据的需求,传统的关系型数据库无法满足,为NoSQL的发展起到了推波助澜的作用。NoSQL(Non relational,或者Not Only SQL),泛指非关系型数据库。其特点有:非关系、分布式、开源、水平扩展、模式自由、多副本、简单API接口、最终一致性(不支持ACID)、支持海量数据等。单从功能上讲,NoSQL的几乎所有的功能,在关系数据库上都能够满足,但是NoSQL以上的特点或优势,是传统关系型数据库所不具备的,使得NoSQL数据库可以做为关系数据库在某些方面(性能、扩展)的一个弥补。所以,在应用上,一般会把NoSQL和关系数据库进行结合使用,形成互补,灵活运用。
NoSQL是非关系型数据库的统称,其根据数据的存储模型和特点分为KV存储(key-value存储)、列存储、文档存储、对象存储等。其中KV存储模式因为其接口简单,性能优越,得到了广泛使用,比较典型的代表有开源的memcached、亚马逊的dynamo、淘宝的tair等。

分布式缓存发展状况

分布式缓存顾名思义,主要体现在“分布式”和“缓存”两个特点上面,其中分布式主要是指数据是分布式存储的,规模和容量可以做到很大,同时容量和性能是线性扩展的,应用不需要关心数据存储在那个节点上,对应用来说就是一个非常大的统一的存储池,在存储容量或性能不够时,只需要对分布式缓存系统本身进行节点的增加,对应用是透明的,不需要应用做任何修改;其次缓存特点是指分布式缓存的性能非常好,主要体现在并发可以做到很高,通常单节点的都可以达到几十万的并发,时延可以做到很低,通常是毫秒级别的延迟。
分布式缓存是云计算领域云存储的一种实现方式,一般是通过低成本的PC Server或刀片组成集群,通过多副本的方式保证数据的可靠性,是云计算的IssS层,对外提供可靠、廉价、海量和高性能的云存储服务。同时分布式缓存也是NoSQL数据库的一种,通常基于KV的接口,在数据共享、数据加速和海量数据存储方面有着广泛的应用。

分布式缓存关键技术

分布式缓存的关键技术主要体现在分布式缓存的架构组网、可扩展性、一致性、可靠性和性能方面的考虑。
1.分布式缓存架构
如图1所示,分布式缓存服务器集群采用无主架构,所有服务器节点地位完全一致,互相之间采用网状的全连接方式。数据在集群各节点均匀分布,集群数据处理能力随集群中节点数量的扩充线性增长。集群通过数据的多副本机制能够提高系统的可用性,某几台服务节点的宕机对应用的数据访问几乎没有影响。服务器节点能够根据应用的需求灵活配置数据是否持久化存储。
分布式缓存提供无中心化的操作控制台,同时支持基于命令行(telnet登录)的运维方式和基于B/S的图形化运维方式。通过操作维护台能够完成分布式缓存集群软件版本的安装、升级和配置,也能够登录到任何一个服务节点对集群的成员关系、访问负荷、数据分布进行监控和配置。
2.分布式缓存的可扩展性
分布式缓存构建了一个分布式锁同步系统来存放全局路由表,这张路由表是分布缓存集群路由管理的基准表,路由变更时必须要首先修改这张路由表中对应的路由记录。
分布式缓存通过路由表将数据空间划分为若干个分片,每个分片由若干个虚节点负责,同时通过路由记录标志出每个虚节点在集群物理节点上的分布情况。分布式缓存的路由管理结合了一致性hash和虚拟节点的特点,并加以改进,形成了以下方案:将2的32次方的Hash空间等分为若干分片(slice),每个slice由若干个虚节点(若干个副本)组成,同一slice中的虚节点由不同物理节点构成、不同slice间的虚节点可以由同一个物理节点构成,之所以分这么细是为了数据迁移时可以快速的变更每一条路由。配置时需要为每个物理节点分配权重、所有虚节点将按权重的比例关系分布到不同的物理节点上(即如果有3个物理节点的权重是1:2:3,则其上的虚节点个数按1:2:3的比例分布)。
在分布式缓存的容量或性能不能满足要求时,需要对分布式缓存进行扩展。扩展是通过增加新节点,然后把已有节点的负荷迁移到新增节点的方式实现的。主要包含两个步骤:
第一,进行数据迁移,把现有节点的负荷部分迁移到新增节点;
第二,进行路由表的修改,这样后续这部分负荷的访问就会访问新增节点。
整个过程对应用是透明的,在扩展新节点的时候不需要停止服务。
3.分布式缓存可靠性
分布式缓存系统通过使用副本机制保证数据的可靠性。使用N、R、W这3个参数来调整系统可靠性的要求。
其中N是一个数据的副本数,W是写多少副本后认为写成功,R是读多少副本后认为读成功。在W+R>N时,系统可靠性是有保障的。
(N,R,W)的值典型设置为(3,2,2),兼顾性能与可用性。R和W直接影响性能、扩展性、一致性,如果W设置为1,则一个实例中只要有一个节点可用,也不会影响写操作,如果R设置为1,只要有一个节点可用,也不会影响读请求,R和W值过小则影响一致性,过大也不好,这两个值要平衡。
根据NRW原则,显式的为单片路由配置的节点台数是N(成为该路由的主节点)。但如果故障,则要借用其它节点进行存取。规则是,各节点的IP按照大小构成一个有序的循环链表,根据路由上第一台节点的IP,向后查找活着的节点为备节点。
如果没有故障,路由的第一个节点是协同器,如果是协同器节点故障,客户端选择路由Slice上下一台活着的节点作为协同器。
协同器往后找N台活着的节点进行读写操作,满足NRW原则,读取R台或写入W台后成功,但最终要成功的在N台节点上进行读写操作才能保证数据的一致性。
当故障节点恢复时,与各节点建链。备节点发现前面有N台活着的节点,则将数据移交(HandOver)给刚从故障中恢复的节点。
4.分布式缓存数据一致性
数据一致性通过数据版本向量控制。当数据副本被复制到不同节点上时,通过版本向量来控制保证各个数据副本的一致性。版本向量由节点号和版本号组成,其中节点号表示副本所在节点的节点号,版本号每次修改时加1。
在进行写操作时,首先获取各个副本的版本号情况,确保写入数据后的版本号是一致的并且是最新的。读操作的时候,由协同器获取所有副本的版本号情况,如果版本号一致,则认为读取正确,否则需要进行版本号的比较分析,获取最新的数据给应用返回,同时需要把所有副本的数据更新到最新的数据版本。
单纯用版本向量比较,在节点反复产生故障时有数据更新或删除操作才会导致无法合并的不一致,所以引入时间的因素可以仲裁版本的新旧关系。全局时戳的形成类似时间服务器同步机制,多节点间定时协商,以最大的时戳为准,全局大致一致即可。也就是说,版本向量用来判断瞬间并发数据更新请求的新旧关系,全局时戳用来判断时间跨度较大的两个版本新旧关系。
5.分布式缓存的高性能
分布式缓存平台同时可以提供同步和异步接口。对于同步的接口,客户端应用调用时,需要等到服务端执行成功返回以后,才能给应用返回,而对于异步接口,应用调用时直接返回,然后通过回调函数的形式通知应用执行结果。同步应用受客户端线程个数的影响较大,而异步调用的性能主要受服务端的性能影响较大。
分布式缓存作为服务端程序,并发量是一个很重要的方面,而提升并发量的重要手段就是异步编程模型,所以在程序设计中,不要使用同步操作,能异步的都使用异步,包括网络和文件系统的调用等。批量的消息处理和操作的合并是解决消息积压的有效手段,比如对于同一数据的更新、删除、查询等操作,如果更新非常频繁,必然会引起消息积压,这时候可以通过批量处理的方式,进行合并操作,大大的提升系统的吞吐量和降低时延。锁操作也是系统程序中比较大的开销,应该充分的分析程序中的并发控制,在数据更新的时候可以使用Copy on write(MVCC)多版本控制的方式进行数据的更新,以减少锁的使用,如果一定要使用锁,那么也应该尽量降低锁的级别,特别忌讳使用全局性的锁。

分布式缓存应用场景

分布式缓存具有明显的技术优势。分布式的架构从架构上保证了良好的扩展性,当性能不够时,可以轻松的通过添加新节点的方法扩展性能;因为良好的扩展性,所以分布式缓存的容量可以随着节点规模的增大而线性的增加,容量不会成为系统的瓶颈;分布式缓存采用的是基于key-value的简单的存储方式,缓存的架构和以内存为基础的访问方式使得分布式缓存性能非常的高;分布式缓存所使用的多份副本复制的方法,避免单点故障;同时无中心化的架构和一致性HASH的数据分布算法,使得局部节点的损坏不会影响整体集群的可用性,把故障的影响降到最低。

1.在IPTV中的应用
IPTV作为一种电信级业务,其亮点在于它的交互性和实时性以及服务的广泛性,因此IPTV对服务质量和容量的要求是非常苛刻的。目前尽管IPTV在技术环节上已基本齐全,但依然存在这样那样的问题,特别是IPTV业务平台的架构的可扩展性,可靠性和容量的需求要求IPTV的业务平台必须是一种分布式的,可扩展的架构。如图2所示,通过在CP层,引入分布式缓存集群,常用的用户信息和节目信息存放在高速的分布式缓存中,这样就不需要每个请求访问数据库,数据库只用来存放配置,数据持久化存储和定时处理的数据,消除了DB访问和磁盘I/O所带来的瓶颈,每一个层次都是分布式的环境,有分布式缓存集群保证数据的可靠性和可扩展性,以及会话的共享,满足IPTV大规模部署的需求。
2.在物联网中的应用
物联网业务网关属于第三个层次,是实现物联网应用和物联网终端智能连接的桥梁;提供接入认证、智能路由、业务计费、能力接入、QoS服务保障等核心功能。支持GPRS、短信、有线接入等多种网络接入方式。物联网业务网关汇聚所有的M2M终端消息,除了支持标准协议终端的消息处理外,对非标准协议终端也提供IP层路由转发和业务鉴权功能。因此对业务网关的性能提出了极高的要求。物联网业务网关采用多模块架构,通过引入云计算平台核心部件分布式缓存,使其具有极高的吞吐率,保证了网关的高并发处理能力,通过分布式缓存的应用,使系统支持数据动态迁移,在个别节点故障不会造成事务的中断。
3.在定位中的应用
在定位应用中,随着用户位置的变更,产生海量位置消息,上报到定位中心服务器上。每秒超过20万次的实时的数据的读写,传统的数据库无法处理这么多访问,性能受到制约。通过基于分布式缓存的解决方案,并发和时延可以轻松满足;同时在数据的可靠性和安全性方面都有保障。

结束语

时代在进步,技术在更新。随着移动互联网、IPTV、物联网等应用的发展,当前的数据和应用规模已经远非一个关系型数据库就能满足需求的了。在移动互联网领域火爆的社交网站,购物网站,微博等应用都呈现了用户规模大,数据并发量大,用户对时延敏感的特点;物联网应用也是在向各个领域渗透,医疗卫生、交通轨道、智能家居等,成千上万的智能终端产生的数据量和并发量是惊人的;即使是在传统的电信领域,也出现了IPTV、定位等海量数据和高并发的应用。
分布式缓存作为集高性能、高可靠性、高扩展性于一身的缓存系统,恰好能够对症下药地解决这些难题,并将这些应用带进云计算的时代。也许在将来,云计算分布式缓存这一元素将会广泛存在,哪里有性能问题,哪里就会有分布式缓存。

标签:   中兴通讯  云计算  分布式缓存
相关新闻
·IBM宣布一项30亿美元的研究计划,用于解决
·云为先,微软夯实在华云计算战略布局
·PMC齐聚产业链领军企业解读中国数据中心革新
·引领商业转型 IBM发力北方市场
·全新理念 彻底开放 融入中国——IBM推出开
·推动云计算教学 激发人才创新活力——微软亚太
·IBM发布大型主机最新云计算产品——全新集成
·IBM发布“现代化主机”战略——定义云、分析
·Intersil推出新款数字电源模块,在帮助
查看所有评论


  发表评论
昵称: 验证码:
内容:
 
相关新闻
·中兴通讯中标中国移动国际信息港IDC一期配套
·中兴通讯助力阿尔及利亚进入4G时代
·中兴通讯打造业界最实用的应急通讯综合调度系统
·中兴通讯业内首推宽窄带融合警务“2+4”数字
·中兴通讯携手福建移动共获GTB无线创新大奖
·中兴通讯携手中国电信荣获GTB“无线网络基础
·德法院驳回美国SmartPhone公司对中兴
·中兴通讯成功赢得柬埔寨Sotelco公司2G
最新资讯
·极进网络荣获Info-Tech 研究集团网络访
·83%的零售CEO认为在满足全渠道购物需求方面
·Gartner预测2014年Chromeboo
·PMC获颁Celestica 2013 TCO
·Gartner: 传统应用程序开发实践将对移动
·Ixia 助力100GbE技术快速发展
·500家法院登录拍卖会 淘宝网助力司法拍卖
·淘宝拍卖会成中国最大在线拍卖平台
专题导读
聚焦:2014年ICT产业趋势大预
中国ICT市场将稳步成长,预计到2020年,中国IT与电信服务市场规
2013年第3季度财报分析
· 2013年第3季度3大运营商财报分析:持续推进业务
聚焦:SDN风暴
【综述】 · SDN:风暴继续 过去的一段时间,S
关于我们|联系方式|编辑特色|市场活动|增值服务|投稿须知|订阅须知
Copyright 2002-08 All Rights Reserved 《通讯世界》
E-mail: editor@tele.com.cn · 电话:010-58882983
京ICP备12027778号-5 ·

京公网安备 11010802021569号