对Riak Core的探索 (0)

haogongju、人人IT网、59n南龙、360doc不要抄我的烂博客了,私人备忘用。

[size=x-large]〇、介绍[/size]

riak是basho(访问这里:[url=http://wiki.basho.com]关于basho[/url])参照dynamo(pdf格式的论文在[url=http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf]这里[/url],html格式的看[url=http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html]这里[/url],中文翻译见[url=http://hi.baidu.com/quest2run/blog/item/38e1328e3c7a5404b21bba6e.html]这里[/url])实现的一个分布式NoSQL数据存储系统,在实现过程中开发者们发现有必要也有可能把分布式系统管理层与数据存储层分离开来,前者就形成了现在的Riak Core。

Riak Core是riak系统实现过程中最重要的产品,此外还有其它副产品,如用与构建erlang应用系统的Make工具:rebar,一个日志工具lager,REST的webmachine,一个kv数据库bitcask,对leveldb的一个erlang包装elevedb,每个单独拿出来都是很了不起的产品。
我觉得围绕着riak的一系列产品,一个[url=http://wiki.basho.com/Community-Developed-Libraries-and-Projects.html]生态系统[/url]开始形成了。

Riak Core并不涉及到数据的物理存储。例如一个系统的访问量很大,需要一个集群来处理用户的访问请求,而每个用户请求会话是有状态的。理想情况下集群的每个机器应该能平摊用户访问请求,而且最好每个用户固定由某个机器处理,以尽量减少会话在不同机器间的迁移。同时,在某台机器宕掉时也要能无缝的将用户会话迁移到别的机器上。这种情况与数据存储无关,但是可以借助dynamo的设计思想用Riak Core实现。

我觉得Riak Core似乎可以帮助传统关系数据库实现高可伸缩性,外带并行处理能力。如果用传统关系数据库做存储,关系表的主键都能用uuid的话,当然事务处理还是很棘手。有时间我再仔细想想:UUID+RDBM+riak_core=high scalable RDBM, with parallel SQL


简单的说,Riak Core是一个基于dynamo的分布式应用系统开发框架。如果要开发一个分布式的应用系统的(或者说,某种云平台),开发者可以考虑基于Riak Core开发。因为分布式相关领域的技术实现都有它完成,开发者可以集中精力考虑自己系统的业务逻辑。


[size=x-large]例子和demo[/size]

学习使用Riak Core最好的文档是try-try-try(访问[url=https://github.com/rzezeski/try-try-try]这里[/url]),这是一个完整step by step的Riak Core应用开发指南。而且比较详细的介绍了Riak Core分布式系统架构中的一些关键概念,如vnode。

try-try-try的学习顺序是:
[list=1]
[*] riak-core-first-multinode 借助rebar构建一个hello world级的Riak Core应用,使用了一个第三方提供的Riak Core模版: [url=https://github.com/websterclay/rebar_riak_core]rebar_riak_core[/url]
[*] riak-core-the-vnode 用一个例子解释vnode
[*] riak-core-the-coordinator
[*] riak-core-conflict-resolution
[*] riak-search-inline-fields
[/list]

基于try-try-try,有人对其中的例子做了些改进,见[url=https://github.com/benmmurphy/ecnty]这里[/url]

还有这些例子:
SockJS (using Cowboy) -> riak_core:
https://github.com/jbrisbin/sockjs-riak_core-vnode-dispatcher

Misultin (plain HTTP, no websockets) -> riak_core:
https://github.com/jbrisbin/misultin-riak-core-vnode-dispatcher

RabbitMQ/AMQP -> riak_core:
https://github.com/jbrisbin/rabbitmq-riak_core-vnode-dispatcher

另外,还有一个可用来学习和模仿的应用是riak_id,代码见[url=https://github.com/seancribbs/riak_id]这里[/url],它模仿了Twitter的Snowflake,这是一个用于大规模生成唯一id的网络服务,关于后者看[url=https://github.com/twitter/snowflake]这里[/url]。


注:cryolite不保证blog文章的稳定性和信息的时效性,如有时间和需要本文会随时更新和修改。


关于dynamo,还有一个erlang的[url=https://github.com/cliffmoon/dynomite]开源实现dynomite[/url],不过早已不更新了。

其它参考文档:
[list=1]
[*] Riak Core介绍 http://basho.com/blog/technical/2010/07/30/introducing-riak-core/
[*] riak内幕 http://www.erlang-factory.com/upload/presentations/255/RiakInside.pdf
[*] A Tour of Basho's Source at GitHub http://www.erlang-factory.com/upload/presentations/387/fritchie.basho-github-repo-tour.pdf
[*] 论文重读: Amazon Dynamo http://blog.ddup.us/?p=185
[/list]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值