Riak源码阅读手记二 左右开弓 启动

erlang riak 54chen 目标系统(target system) OTP系统定义里有这么一个东西:
可以被一般的erl脚本启动的系统叫基础目标系统;
除此之外还可以做运行时代码替换的系统叫简单目标系统;
如果还支持日志输出到文件、自动定时启动的话就叫做内嵌目标系统。

启动目标系统的方式 通过erlang/OTP标准的reltool工具生成的目标系统,可以用多种方式灵活启动。
第一种:

os> /usr/local/erl-target/bin/erl

这只启动了一个基础目标系统。基本没什么具体功能。

第二种:

os> /usr/local/erl-target/bin/erl -boot /usr/local/erl-target/releases/FIRST/start

用-boot参数,这可以启动一个简单目标系统。releases/RELEASES文件可用来做热替换。

第三种:

bin/start

这个脚本会去调用 bin/run_erl ,最终调用 bin/start_erl启动。run_erl是一个提供运行时日志输出到文件的封装。还提供了简单的机制attach到一个erlang shell。

自定义behaviour

-spec behaviour_info(atom()) -> 'undefined' | [{atom(), arity()}].
behaviour_info(callbacks) -> [{start,2}, % (Partition, Config)
{stop,1}, % (State)
{get,2}, % (State, BKey)
{put,3}, % (State, BKey, Val)
{list,1}, % (State)
{list_bucket,2}, % (State, Bucket)
{delete,2}, % (State, BKey)
{drop,1}, % (State)
{fold,3}, % (State, Folder, Acc), Folder({B,K},V,Acc)
{is_empty,1}, % (State)
{callback,3}]; % (State, Ref, Msg) -> behaviour_info(_Other) -> undefined.

上述就是一个自定义的behaviour,使用的时候:

-behaviour(xxx).
...

有点类似java的interface.


原创文章如转载,请注明:转载自五四陈科学院[http://www.54chen.com]

捐款订阅54chen
捐赠说明