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 Core的一些介绍性阅读(这不是纯粹的代码), 有一个古老但...
riak_pg, 带riak_core的分布式进程组 概述带riak_core的分布式进程组。用法将进程加入组( 不需要预先声明)join(term(), pid()) -> ok | {error, timeout}.如何删除?leave
riak-ruby-client, 用于 ruby的Riak客户端 ) 客户端( Riak客户机)riak-client 是一个富 ruby 客户端/工具箱,分布在,数据库中,包含典型操作的基本包装。在 http://basho.github.io/riak-ruby-client/ 可以使用详尽...
Laravel开发-laravel-riak RIAK连接、缓存和会话的RIAK提供程序
学习使用Riak
数据库设置钢筋 riak_core 模板git clone https://github.com/basho/rebar_riak_core.gitcd rebar_riak_coremake install创建项目模板mkdir flaviodbcd flaviodb# download rebar and set executable ...
Laravel开发-laravel-riak-auth Laravel的RIAK身份验证提供程序
riak-session-manager 是使用 Riak 来存储 Tomcat session 信息的项目。 配置方法: <?xml version="1.0" encoding="UTF-8"?> <Manager className="com.jbrisbin.vpc.riak.session.RiakManager" ...
riak_core_tutorial目录 3.4. 5.7.8.10.1112.环境要跳过设置环境,已经为本教程准备了一个环境: riak_core_env 。 在接下来的章节中,我假设您已运行环境并在链接中提到的RIAK_CORE_ENV/synced/目录中完成所有工作...
带有 NodeJS 的 Riak 命令行工具。 有更好的解决方案,请参考 ->使用带有curl的Riak http api查询riak真的很烦人! 于是工具诞生了。 干杯! 这是一个 Riak 终端查询工具,提供基本的 POST/PUT/DELETE/GET 等方法。...
一些分析Riak性能的工具和实验。
使用Riak作为后端的服务器监视 该项目是我的学士学位工作的一部分: “ NoSQL数据库和应用程序的比较分析” 米兰比可卡大学 关联者:安德烈·毛里诺(Andrea Maurino) 联合主持人:Blerina ...如果您对Riak配置有任何
欢迎来到Riak。 概述 Riak是分布式,分散式数据存储系统。 在Wiki中,您将找到设置和使用Riak的“快速入门”指导。 有关更多信息,请浏览以下文件: 自述文件:此文件 许可证:Riak的发布许可证 doc / admin.org...
linux riak erlang,otp_src_20.3
riak-java-client, Java的Riak客户端 Java客户端客户端 客户端支持与 通信,它是一个开源的分布式数据库,专注于高可用性。水平可伸缩性和可以预测的可以预测的实时延时。 Riak和这段代码都由 Basho维护。Java客户端...
riak-manage riak管理工具集是一个管理Riak KV集群的项目。 是一个开放源代码的分布式数据库,专注于高可用性,水平可伸缩性和可预测的延迟。 关于此Beta项目的说明: 此软件不应在生产环境中使用。 该软件不能...
riak-admin 到目前为止的功能 显示桶的内容 单击时显示文档内容 编辑文档内容(json.object) 删除单个文档或存储桶的所有文档 用法 git clone git://github.com/frank06/riak-admin cd riak-admin && git ...
波纹 安装和管理 Riak 涟漪云存储 riak/cs.sls 将安装 riak-cs、riak-cs-control 和 stanchion 包。
Riak 测试核心 这是 basho 的 Riak Test 的一个分支,将其从应用程序重构为库,并从文件中删除 riak_kv 的直接依赖项/目标,使其更通用。 也就是说,原始代码几乎没有更改,请参阅下面的原始自述文件。 Riak测试 ...
Riak协议缓冲区消息 master : develop : 该存储库包含的基于协议缓冲区的接口的消息定义,以及消息类型的各种Erlang特定的实用程序模块。 它与Riak服务器和客户端分开分发,从而使其可用作受支持消息的独立表示...