Erlang学习记录,主要是翻译Erlang OTP, 动手实践,以及自己的理解分享。
Erlang OTP overview
OTP 定义了如何根据进程,模块和目录来构造Erlang 代码.
后面是Erlang OTP的一些重要概念。

1. Supervision tree

在Erlang/OTP中最基本的概念就是监督树。这是一个基于workers 和 supervisors的想法的进程结构模型。workers是实现计算,做实际工作的进程。supervisors是监控workers行为的进程。如果发生错误,supervisor可以重启worker。Supervision tree 将代码分层成workers和supervisors, 使得设计和编程容错软件成为可能。

Erlang 学习记录

2. Behaviours

在一个监督树中,许多进程有相似的行为,它们遵循相似的模板。例如,supervision在结构上是相似的,仅有的区别是它们监督的子进程不一样。worker可以是C/S模式中的服务器,有限状态机,事件处理器等等。
Behaviour是这些常见模式的模块化/标准化。它将一个进程代码划分为了通用部分(behaviour module)和特定部分(callback module).
behaviour module 是Erlang/OTP的一部分。实现supervision这类进程,用户只需要实现callback module去导出一系列预定义的函数,例如回调函数。
标准的Erlang/OTP 的behavours有

  • gen_server
    c/s关系中的服务器
  • gen_statem
    状态机
  • gen_event
    事件管理
  • supervision
    监督

3. Applications

Erlang/OTP 附带了一些组件,每一个实现一些特定的功能,标准术语成为application。比如Mnesia - 数据库服务,Debugger - debug erlang 程序。
基于Erlang/OTP最小系统由Kernel(运行erlang必要的方法)和STDLIB(Erlang标准库)两个applications组成

Application概念在程序结构(process)和目录结构(module)都有应用。最简单的application可以没有进程但要有模块集合,例如library application - STDLIB。
一个监督树进程使用标准的behaviour是很容易实现的。
application具体编程方法见后续Application章节。

4. Releases

Release是由Erlang/OTP应用程序的子集和 一组特定于用户应用程序组成的完整的系统。
详情参见后续Release章节。

5. Release Handling

Release handling是指在运行的系统上,对不同release之间的升级和降级,详情参见后续 Release Handling章节。

相关文章: