学习主要内容:
这周学习主要是围绕《Erlang And OTP in Action》这本书展开,主要学习了本书中的PART II:Building A Production System。
1.深入学习了application skeleton。
2.深入学习了gen_server模型、logging。
3.练习完成了书中的一个例子——Simple Cache(SC)。
这周计划:
1.将PART II中的东西学习完。
2.能够和康师哥交流一次。
收获:
以simple Cache为例来说明。
1.知道了application的目录结构,知道了每一个模块应该如何去完成。
application skeleton
simple_cache/
├── doc
├── ebin
│ └── simple_cache.app
├── Emakefile
├── include
├── priv
└── src
├── sc_app.erl
├── sc_element.erl
├── sc_store.erl
├── sc_sup.erl
└── simple_cache.erl
2.对gen_server的behaviour比之前有了更深入一层的理解。
概括一下就是:
Canonical module layout for a behaviour consists of four sections,they are header, API, behaviour interface, internal functions.
另外,在gen_server behaviour中,这个概念比较重要:
gen_server:call() module:handle_call/3 发送同步消息,需要回复
gen_server:cast() module:handle_cast/2 发送异步消息,不需要回复
3.在调试Simple Cache的过程当中,其中有关监督时间的一个问题。
在gen_server中有一个时间是用来表示这个进程可以存活的时间的。
在supersivour中的重启策略中,也有一个时间,比如,sc_sup.erl中有
RestartStrategy = {simple_one_for_one, 4, 30}
这个时间表示的是如果在30 seconds内重启次数超过4次的话,那么所有的进程都将退出,而且这个监督者进程supervisour也会退出,交给下一个更高级别的supervisour进行下一步的动作。
附件中为Simple Cache写的一个例子。
<simple_cache.tar.gz>