坚信科学,分享技术

>>>尝试更加利于阅读的2014版科学院,以后都在新版上写。

Tag Archives: nuclear

海纳百川——人人网海量存储系统Nuclear开发手记

此文为《程序员》杂志约稿,发表在2010年9月刊。怀念过去美好的时光和所有的UGC兄弟真挚友谊,谨以此文为个人职业发展阶段作一个美好的终结。以下是全文原稿。 2009年8月左右,由于业务扩展的需要,我们的团队开始了一个新项目的研发,其中需要完成一个存储系统,把评论数据聚合到一起同时还要提供线上的读写服务。这些评论来自不同的业务产品,数据量非常之巨大;同时对稳定性的要求非常高,因为如果出现宕机,将影响到大量的业务线。于是,我们开始了对此类系统的探索。 Nuclear 的由来 经过需求分析阶段,摆在我们面前的是五点要求:高可用、高可扩展、高性能、Key-Value存储、支持关系化查询。经过一段痛苦的系统选型分析,我们最终决定开发属于人人网的海量存储系统。Nuclear,正如其名,nuclear的未来将要肩负起整个评论系统存储的核反应般的压力爆发的重任。由于当时并没有这方面的经验,一切都是摸着石头过河,我们设计了好几期的雏形,一开始明显就是有问题的构架设计,慢慢地在学习和进步的过程中,团队的成员也在慢慢地成长,离我们的目标也越来越近。又因为业务模型的需要和方便分布到集群,这个系统慢慢演变,最后成为了一个可靠的分布式key- value存储系统。以下特将在研发过程中遇到的问题做一个总结。 Key-Value系统的优缺点 NoSQL系统在过去的一两年里,饱受了争议和技术界的目光。从原理上讲,基本上这类系统都会有一些相同的优点和缺点: 优点: 1. 只有高效的查询可用,性能是可想像的。 2. 容易分布到集群。 3. 可以很容易增加缓存层用来加

Continue reading

Posted in java, 架构研究 | Tagged , , | 16 Comments

54chen解读NoSQL代表Dynamo

本文已经首发于InfoQ中文站,版权所有,原文为《解读NoSQL技术代表之作Dynamo》,如需转载,请务必附带本声明,谢谢。 InfoQ中文站是一个面向中高端技术人员的在线独立社区,为Java、.NET、Ruby、SOA、敏捷、架构等领域提供及时而有深度的资讯、高端技术大会如QCon、免费迷你书下载如《架构师》等。 NoSQL在过去的一年里,逐渐已经成为了家喻户晓的东西,我(54chen)自从去年开始人人网的NoSQL系统Nuclear的研发以来,一直看着NoSQL越来越热,越来越引来大家的围观。受infoQ霍师傅之托,特作此文,一来作过去一年的总结,二来希望以平白的话语对NoSQL系统在国内的发展献绵薄之力。 1.我眼中的两种模式 NoSQL其实并不是什么妖魔鬼怪,相反的,NoSQL的真谛其实应该是Not Only SQL,其产生是在数据量和访问量的增大下,人为地去添加机器、切分数据到不同的机器,变得越来越困难,人力成本越来越高,于是便开始有了这样的项目,本意是提高数据存储的自动化程度,减少人为干预的时间,让负载更加均匀。在国际上,真正的代表之作有来自Google的 BigTable 和Amazon 的Dynamo,他们分别使用了不同的基本原理。 1.1 MapReduce 这是历史最久的一种模型,典型的代表是BigTable。Map表示映射,Reduce表示化简。MapReduce通过把对数据集的大规模操作分发给网络上的每个节点实现可靠性(Map);每个节点会周期性的把完成的工作和状态的更新报告回来(Reduce)。大多数分布式运算可以抽象为MapReduce操作。Ma

Continue reading

Posted in linux, 架构研究 | Tagged , | 8 Comments

[纯水]庆祝数据开始注入nuclear系统和哥学社整装待发

二零一零年的五月二十五号,更确定一点来说是五月二十六号这一天,经过半年将近一年的折腾,人人网分步式no-sql系统nuclear正式导入了线上的大型数据(之前也有一些数据在工作了,这次是相当大一部分数据)。 完全清楚nuclear的跳到下一段,Nuclear存储系统,是中国最大的SNS网站人人网下属UGC团队在遇到海量的UGC数据存储需求情况下,开发的在高性能、高可靠、可扩展方面有着优良表现的海量数据存储系统。它参考了dynamo设计文档,并且分析了现存开源no-sql系统的优劣,完整分析了 Cassandra、Voldemort代码的基础之上,在UGC小组的努力下,加入了自动平衡机器负载,简单切换底层引擎等特色而适用的功能,还有相关的附属功能,可以使一个系统从普通的DB轻易将数据移到nuclear集群中来。同时有丰富的管理功能,在使用过程中可以快速掌握任何一个节点的状态。 如果你是人人网用户,此刻你访问的数据也许已经来自于nuclear提供的动力支持,nuclear,让数据流动更智能。纯广告语。。。 特此庆祝,nuclear成功接入大型系统数据。 还是在五月二十六号这一天,哥学社(一个技术组织)第一次面向社会,在PHP兄弟连的技术期刊《草根》连载哥学社几大成员的技术文章,将于6月1日正式发布。 完全明白哥学社的跳到下一段,哥学社是一个自由博客组织,以提高原创技术博客质量,为成员博客增加更有效评论,由来自腾讯、百度、盛大、人人网、新浪、奇虎、TOM等各大企业的哥们共同起草发起,官方地址是http://www.blog-brother.com。 特此庆祝,哥学社正式壮大。

Continue reading

Posted in 生活备份 | Tagged , | 4 Comments

闲谈分布式key-value存储服务nuclear及其他

现在很多国内公司都纷纷开始了key-value的nosql存储方式,然而,从什么时候开始key-value会变得这么流行呢?是风靡一时,还是顺应时代的潮流?前后数一数,有豆瓣网的beandb、有新浪的SDD、小道消息还有腾讯的TDB以及人人网的nuclear。再数国外,吹起这阵风的原因是亚马逊的一篇文档,这篇文档讲述了在亚马逊的S3服务中所使用的存储系统dynamo实现方式,但遗憾的是dynamo并不开源。紧随其后,facebook来了位号称是当年亚马逊dynamo的开发人员之一的同志,实现了facebook的cassandra,并且值得表扬的是还将其开源了。与此同时,相同理论下产生的,还有linkedin的voldemort系统。 百家争鸣还是百家讲坛 分布式存储的目标,是解决大规模数据在数据量不断增长的情况下,让服务更加稳定,更容易扩展。 其主要具备以下几个特点: 1.高可靠性:系统能够长时间高效运行不迭机。严格的说即使坏了一部分机器也没事。 2.可扩展性:可以随意增加减少机器,不用担心额外的数据损失。 3.负载均衡:要保证每个节点的数据都是负载均衡的,不出现集中负载到一个节点的情况。 4.一致性:因为是分布式的节点,就需要保证节点与节点之间保存数据的一致。 鱼与熊掌不可兼得,这几点,往往完成了其中几点就会损失另外一点,要全部达到完美,是一件非常困难的事情。 在国内的几个存储来看,基本都是只实现了其中的一部分,再按照自己业务的需求,来加强其中更为关心的建设。 beansdb的最终一致性通过哈希树实现快速完整数据同步(短时间内数据可能不一致);可以在不中断服务的情况下进行容

Continue reading

Posted in java, linux | Tagged , | 2 Comments

人人网海量存储系统Nuclear介绍

经过这几个月大家共同的努力,Nuclear终于来到新的阶段。 山寨版本的Logo Nuclear存储系统:高性能、高可靠、可扩展的海量数据存储 请移步人人网UGC团队博客:http://ugc.renren.com/2010/01/21/ugc-nuclear-guide-use/ 人人网UGC团队博客正式在科学院亮像,欢迎网友订阅,专注UGC社区大负载研究与应用! http://ugc.renren.com http://ugc.fm 下面是一些补习班知识: TC Tokyo Cabinet 是一个DBM的实现。这里的数据库由一系列key-value对的记录构成。key和value都可以是任意长度的字节序列,既可以是二进制也可以是字符串。这里没有数据类型和数据表的概念。当做为Hash表数据库使用时,每个key必须是不同的,因此无法存储两个key相同的值。提供了以下访问方法:提供key,value参数来存储,按 key删除记录,按key来读取记录,另外,遍历key也被支持,虽然顺序是任意的不能被保证。这些方法跟Unix标准的DBM,例如GDBM,NDBM 等等是相同的,但是比它们的性能要好得多,因此可以替代它们。 Dynamo Dynamo 的可扩展性和可用性采用的都比较成熟的技术,数据分区并用改进的一致性哈希(consistent hashing)方式进行复制,利用数据对象的版本化实现一致性。复制时因为更新产生的一致性问题的维护采取类似 quorum 的机制以及去中心化的复制同步协议。 Dynamo 是完全去中心化的系统,人工管理工作很小。 Linkedln   Link

Continue reading

Posted in linux | Tagged , | 1 Comment