`
cryolite
  • 浏览: 580527 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

对Riak Core的探索 (0)

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

〇、介绍

riak是basho(访问这里:关于basho)参照dynamo(pdf格式的论文在这里,html格式的看这里,中文翻译见这里)实现的一个分布式NoSQL数据存储系统,在实现过程中开发者们发现有必要也有可能把分布式系统管理层与数据存储层分离开来,前者就形成了现在的Riak Core。

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

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

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


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


例子和demo

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

try-try-try的学习顺序是:
  1. riak-core-first-multinode  借助rebar构建一个hello world级的Riak Core应用,使用了一个第三方提供的Riak Core模版: rebar_riak_core
  2. riak-core-the-vnode 用一个例子解释vnode
  3. riak-core-the-coordinator
  4. riak-core-conflict-resolution
  5. riak-search-inline-fields


基于try-try-try,有人对其中的例子做了些改进,见这里

还有这些例子:
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,代码见这里,它模仿了Twitter的Snowflake,这是一个用于大规模生成唯一id的网络服务,关于后者看这里




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


关于dynamo,还有一个erlang的开源实现dynomite,不过早已不更新了。

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

相关推荐

    riak_core:Riak使用的分布式系统基础架构

    里亚克核心 Riak Core是分布式系统框架,是分发数据和扩展规模的基础。 更一般而言,可以将其视为构建分布式,可伸缩,容错应用程序的工具包。 对于Riak Core的一些介绍性阅读(这不是纯粹的代码), 有一个古老但...

    Laravel开发-laravel-riak

    在本文中,我们将深入探讨如何在 Laravel 框架中集成和使用 Riak 数据库,主要关注连接配置、缓存管理以及会话存储。Riak 是一个分布式键值存储系统,提供高可用性、可扩展性和容错性,特别适合大数据量的应用场景。...

    Laravel开发-laravel-riak-auth

    了解如何测试Riak与Laravel的交互对调试和维护此系统至关重要。 7. **性能优化**:由于Riak的分布式特性,`laravel-riak-auth`可能会涉及一些性能优化策略,如数据分布策略、读写一致性设置等,以最大化系统性能。 ...

    Riak 学习文档

    选择 Riak 主要是因为它能应对大规模历史消息数据,这种数据结构非常适合键值对存储,且Riak 的集群配置简单,易于扩展。 **Riak 的核心特性** 1. **分布式存储**:Riak 是一个分布式数据库,数据分散在多个节点上...

    riak-ruby-client, 用于 ruby的Riak客户端.zip

    riak-ruby-client, 用于 ruby的Riak客户端 ) 客户端( Riak客户机)riak-client 是一个富 ruby 客户端/工具箱,分布在,数据库中,包含典型操作的基本包装。在 http://basho.github.io/riak-ruby-client/ 可以使用详尽...

    riak_pg, 带riak_core的分布式进程组.zip

    riak_pg, 带riak_core的分布式进程组 概述带riak_core的分布式进程组。用法将进程加入组( 不需要预先声明)join(term(), pid()) -> ok | {error, timeout}.如何删除?leave

    riak-session-manager.zip

    riak-session-manager 是使用 Riak 来存储 Tomcat session 信息的项目。 配置方法:   <?xml version="1.0" encoding="UTF-8"?> <Manager className="com.jbrisbin.vpc.riak.session.RiakManager" ...

    flaviodb:实现固定消息流存储的 Riak Core 示例项目

    数据库设置钢筋 riak_core 模板git clone https://github.com/basho/rebar_riak_core.gitcd rebar_riak_coremake install创建项目模板mkdir flaviodbcd flaviodb# download rebar and set executable ...

    riak-Erlang.rar

    4. 键值存储:Riak以键值对的形式存储数据,支持JSON、BSON等数据格式,方便与其他应用程序集成。 5. 查询语言:虽然主要为键值存储,但Riak还支持查询语言 Riak Search 和 Riak KV MapReduce,允许用户执行更复杂的...

    riak_perf_analysis:探索Riak性能的工具和实验

    5. **配置分析**:项目可能还包括了分析Riak配置参数的工具,这些参数对系统性能有着直接影响。通过调整这些参数,我们可以优化Riak的配置,以适应不同的工作负载和硬件环境。 6. **实验性特性测试**:在"riak_perf...

    riak_core_tutorial

    riak_core_tutorial目录 3.4. 5.7.8.10.1112.环境要跳过设置环境,已经为本教程准备了一个环境: riak_core_env 。 在接下来的章节中,我假设您已运行环境并在链接中提到的RIAK_CORE_ENV/synced/目录中完成所有工作...

    riak-java-client:Java的Riak客户端

    Riak Java客户端 Riak Java客户端支持与 (开放源代码,分布式数据库)进行通信,该数据库专注于高可用性,水平可伸缩性和可预测的延迟。 Riak和此代码均由维护。 Java客户端的最新版本同时支持Riak KV 2.0+和Riak...

    riak-cli:Riak 命令行客户端

    带有 NodeJS 的 Riak 命令行工具。 有更好的解决方案,请参考 ->使用带有curl的Riak http api查询riak真的很烦人! 于是工具诞生了。 干杯! 这是一个 Riak 终端查询工具,提供基本的 POST/PUT/DELETE/GET 等方法。...

    server_monitoring_riak:使用Riak作为后端的服务器监视

    使用Riak作为后端的服务器监视 该项目是我的学士学位工作的一部分: “ NoSQL数据库和应用程序的比较分析” 米兰比可卡大学 关联者:安德烈·毛里诺(Andrea Maurino) 联合主持人:Blerina ...如果您对Riak配置有任何

    前端开源库-riak-js

    它支持多种数据模型,包括键值对、文档和图形数据库。 2. **riak-js特点** - **Node.js支持**:riak-js是为Node.js环境量身打造的,利用Node.js的异步I/O特性,实现高效的数据操作。 - **简单API**:提供简洁的...

    riak-formula:安装和管理 Riak

    同时,"riak-cs-control" 是一个管理工具,它提供了对 Riak CS 集群的监控和管理功能。"stanchion" 是 Riak CS 的一部分,用于处理跨数据中心的数据一致性,确保全局唯一标识符(Global IDs)。 在安装和管理 Riak ...

    dstwkr:基于riak_core的分布式worker应用

    "dstwkr" 是一个基于 "riak_core" 技术构建的分布式worker应用程序。从标题来看,我们能理解到这是一款设计用于处理分布式任务的工作节点,它利用了 Riak Core 的核心功能来实现高可用性和可扩展性。 【描述解析】 ...

    Laravel开发-laravel-riak .zip

    在本压缩包“Laravel开发-laravel-riak .zip”中,主要涉及的是使用 Laravel 框架集成 Riak 数据库的开发实践。Laravel 是一个基于 PHP 的优雅、强大的 Web 开发框架,它提供了丰富的工具来简化 Web 应用程序的构建...

    riak:Riak是Basho Technologies的去中心化数据存储

    欢迎来到Riak。 概述 Riak是分布式,分散式数据存储系统。 在Wiki中,您将找到设置和使用Riak的“快速入门”指导。 有关更多信息,请浏览以下文件: 自述文件:此文件 许可证:Riak的发布许可证 doc / admin.org...

    Riak是以_Erlang_编写的一个高度可扩展的分布式数据存储,Riak的实现是基于Amazon的_mumu-riak.zip

    Riak是以_Erlang_编写的一个高度可扩展的分布式数据存储,Riak的实现是基于Amazon的_mumu-riak

Global site tag (gtag.js) - Google Analytics