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

本文介绍了Erlang/OTP系统中不同类型的启动配置,包括基础目标系统、简单目标系统及内嵌目标系统的启动方式,并详细展示了自定义Behaviour的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载:http://www.54chen.com/_linux_/riak-cource-code.html

目标系统(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.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值