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

对Riak Core的探索 (9) cheatsheet

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

常用API之与ring、节点有关的API
  • riak_core:vnode_modules()  查询安装的vnode模块
  • riak_core_ring_manager:get_raw_ring() 获取整个ring环,包括partition及其节点
  • riak_core_apl:get_apl(HashKey,  N, Service) 得到HashKey对应的Preference List
  • riak_core_ring:preflist(HashKey, Ring) 得到HashKey在环Ring上的Preference List


常用application管理API

erlang本身提供的application模块有许多API函数可用:
  • aplication:loaded_applications/0  察看当前有哪些应用已经装载
  • aplication:which_applications/0  察看当前有哪些应用已经启动
erlang以application组织系统,application由模块组成,多个共同组成一个系统。

已装载的application并不意味着它已经启动,这一般是在rel( 也即script)文件中指定

application又依赖其它applications,后者又依赖其它application。。。
例如
A依赖B、C:这意味着A要正常启动,B、C要先启动,
B又依赖X、Y:A要正常启动,Y、Z要先启动,
C又依赖Y、Z:C要正常启动,Y、Z要先启动,

以此类推。。。

一般在每个应用对应的.app文件中,有个applications的配置,其值是个列表(list),这个list就是该应用依赖的其它应用。在系统发布时(release),发布工具会自动将这个列表里的所以依赖应用都启动。

如果不是作为发布(release),在开发过程中经常要手动启动(application:start/1),但是这种启动是不会自动将列表中的依赖应用也启动的,会报如下错误:
1> application:which_applications().
[{stdlib,"ERTS  CXC 138 10","1.18.1"},
{kernel,"ERTS  CXC 138 10","2.15.1"}]
2> application:start(xxx).
{error,{not_started,lager}}

因此启动xxx应用之前要确保xxx的依赖应用lager先被启动(application:start/1),而lager应用又依赖compiler和syntax_tools应用,因此都得按照依赖关系一一启动:
3> application:start(lager).
{error,{not_started,compiler}}

在应用的app文件中会有一个applications属性,列出所有的依赖应用。

4> application:start(compiler).
ok
5> application:start(lager).  
{error,{not_started,syntax_tools}}
6> application:start(syntax_tools).
ok
7> application:start(lager).      
18:40:11.591 [info] Application lager started on node nonode@nohost
ok
8> application:start(xxx). 
18:40:13.739 [info] Application xxx started on node nonode@nohost
ok

在实际开发过程中,这种依赖的一一启动是很枯燥的,Riak Core的riak_core_util模块提供了这种依赖应用的管理:
riak_core_util:start_app_deps/1
这个函数检查应用依赖的其它应用,并确保所有依赖应用被启动。判断依赖应用:app文件中的applications属性。
分享到:
评论

相关推荐

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

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

    Laravel开发-laravel-riak

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

    Laravel开发-laravel-riak-auth

    在本文中,我们将深入探讨`Laravel开发-laravel-riak-auth`这一主题,这是一个针对Laravel框架的特定身份验证实现,它利用了Riak数据库。首先,我们需要理解Laravel和Riak的基本概念。 **Laravel**是PHP世界中最受...

    Riak 学习文档

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

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

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

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

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

    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-session-manager.zip

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

    riak_core_tutorial

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

    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-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 等方法。...

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

    9. **数据分布**:基于 Riak Core 的数据分片和复制策略,dstwkr 可能实现数据的智能分布,提高读写性能。 10. **冷却优化**:虽然描述中的“制冷应用”可能是个误解,但如果确实涉及到大规模数据处理,那么系统...

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

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

    riak-formula:安装和管理 Riak

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

    前端开源库-riak-js

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

    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