坚信科学,分享技术

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

Tag Archives: dynamo

riak源码阅读手记一 初出茅庐 项目入口

简介 basho(相扑)是一家美国的技术公司,专营数据存储和管理软件,11年6月30日获得了750万美元的融资。basho将riak开源,通过收取riak的维护和管理界面软件的使用费用来赚钱,和resin的公司类似。 今天主要研究的是,basho旗下的riak:一个类dynamo系统的kv存储。riak使用了erlang进行开发,将代码精简到极致。 rebar riak的代码使用了一个叫做rebar(钢筋)的erlang构建工具,使用起来真的很方便,其使用方法建议参考这篇文章:http://www.linezing.com/blog/?p=347。每个项目下,都有一个叫做rebar.config的文件,里面用erlang语法记录了这个项目需要的目录、环境、版本、以及依赖的包在github上的位置。真的很方便。riak项目中,rebar和reltool被大量使用。reltool使用方法参见 http://erlangdisplay.iteye.com/blog/508944 riak的总控工程:https://github.com/basho/riak。 看rebar.config定义的依赖部分: {deps, [ {cluster_info, "1.1.*", {git, "git://github.com/basho/cluster_info", {branch, "master"}}}, %% 这个模块提供了一个松散易扩展的导出集群节点状态的办法。可以收集的信息包括:时间、所有的erlang进程的静态统计、网络连接情况、cpu和内存、大队列进程、内部内存调

Continue reading

Posted in 资料文档 | Tagged , , | Leave a comment

海纳百川——人人网海量存储系统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