论文部分内容阅读
随着人们对网络需求的日益增长,从功能到使用,甚至到用户的习惯,各大网络公司全方位兼顾,从产品界面甚至体验角度考虑的服务已接近完美。如亚马逊可以为我们推荐想看的书,Google可以推荐相关网站,淘宝知道我们喜欢的产品,腾讯QQ可以猜出我们认识谁,而最近较为火的微信更是可以将通讯录和QQ好友推荐加为朋友。然而这些都需要大量数据分析才能实现,数据从MB、GB到TB甚至到现在的PB,面对如此大量级数据就不得不解决存储问题。传统的数据库已然不能胜任如此大量级、多样化、分散性的数据存储。国外的Google、Microsoft、Amazon,国内的BTA(Baidu、Tencent、阿里巴巴)作为国内外行业巨头,也把海量数据处理的研究作为后端核心技术之一。如何才能提供更高稳定性、更大可用性的服务成为各企业面临的瓶颈;如何解决数据丢失、破坏和数据延时问题,已迫在眉睫。本文基于Level db设计了一个适用于企业级大数据的集群化系统。利用Level db的高效、稳定等优点,配合Zookeeper、Twemproxy,从而实现了一个适用于海量数据存储的可靠性高、可用性强的企业级数据存储系统。为了尽量避免高请求压力时容易造成的并发性单点故障,采用了Master-slaver的部署方式,利用代理服务器将一个大数据库切分成多个数据库后分别存储在不同的server上,这样每个子数据库存在不同的服务器上,当某子服务器出现宕机现象,那么也就只失去了数据集的一部分。采用一主两从的方式部署子集群,每份数据存储三份副本利用冗余存储的方式来防止数据丢失,也就是即使两台服务器都不能正常工作,仍然能提供完整的数据集,保证整个的cluster正常工作。采用以Fast Paxos算法为基础的高效可靠的Zookeeper协同工作系统,维护配置信息、选举leader等保证在分布式环境中文件写入的一致性等。通过在某知名互联网企业的线上环境进行测试,分析数据结果,系统无论从吞吐量还是稳定性上都符合预期。正如硬币正反面一样,利用Twemproxy使得HA有了相应的提高,相反因为Twemproxy也需要硬件资源的支持所以增加了部分硬件开支,而且Twemproxy也损耗了一些Level db的性能。虽然实验数据已符合预期,但是可以通过今后学习研究,通过减少Level db性能损失从而完善整个系统。