Erlang 104 OTP
笔记系列
Erlang环境和顺序编程
Erlang并发编程
Erlang分布式编程
Yaws
Erlang/OTP
日期 变更说明
2014-12-21 A Outline, 1
Agenda

0 Scope
围绕OTP设计原则,分别记录行为模式、监督树概念、应用、发布和部署,以及[3]中一个产品级缓存解决方案。
1 OTP Design Principles
Erlang Doc: OTP Design Principles User's Guide
OTP设计原则阐述的是如何以进程、模块和目录组织Erlang代码。
1.1 监督树(Supervision Trees)
Erlang/OTP中监督树是一种进程组织模型,该模型的两个核心实体是:工作者(worker)和监督者(supervisor)。
工作者:执行计算类实际工作的进程;
监督者:监督工作者行为的进程,发生异常时可以重启工作者;
监督树:将代码按照工作者和监督者组织成层次结构,借此试图设计和实现高容错性的软件。
下面是一个监督树示例,正方形表示监督者,圆形表示工作者。

1.2 行为模式(Behaviours)
在监督树中,很多进程有着类似的结构,正式的说,它们的行为遵循类似的模式。例如,监督者之间的区别可能只是它们负责监督的工作者不同,工作者则表现出类似于server/client、有限状态机(finite state machine)或事件处理器(event handler)的基本行为。
Erlang/OTP给出的方案是将进程的代码分为两部分:一部分是通用的(由行为模块负责实现),另一部分是各进程的特殊处理部分(由回调(callback)模块负责实现)。
行为模块隶属于Erlang/OTP。标准的Erlang/OTP行为包括:
gen_server 实现server/client中的server
gen_fsm 实现有限状态机
gen_event 实现事件处理功能
supervisor 实现监督树中监督者
要实现监督者模式,只需要实现监督者行为模块导出的预先定义的一系列回调函数。有点类似于template method设计模式啊,更重要的是,Erlang/OTP负责管理诸如监督者进程与工作者进程通信、交互等复杂而枯燥的功能的代码实现、调试、产品级优化等等“脏活儿”,而我们只需要开开信息的关注于业务级的实现细节。
1.3 应用(Applications)
实现一些特定功能的组件在Erlang/OTP的词汇中被称为应用(applicaiton)。例如Mnesia、Debugger等。最小的Erlang/OTP系统由Kernel和STDLIB应用构成。
应用的概念适用于程序结构(进程)和目录结构(模块)。
最简单的一类应用不含任何进程,仅由函数模块构成,这类应用称为库应用(library application),例如STDLIB。
涉及进程的应用可以通过使用标准行为的监督树实现。
1.4 发布(Releases)
发布(release)是一个完整的系统,系统中包含Erlang/OTP应用和用户特定的应用。
如何在目标环境(target environment)中安装发布在系统原则的目标系统一节中阐述(见 Erlang Doc: System Principles User's Guide)。
1.5 发布处理(Release Handling)
发布处理的含义是在运行系统中如何在不同发布版本中升级/降级。
2 行为模式
3 应用
4监督树式容错
5 发布和部署
6 Erlang中的集成
参考文献
[1] Cesarini F., Thompson S.著,慕尼黑Isar工作组 杨剑译.
Erlang编程指南.
北京: 机械工业出版社.2011.
[2] Armstrong J.著,牛化成 译.
Erlang程序设计(第2版).(Programming Erlang, Second Edition – Software for a Concurrent World).
北京: 人民邮电出版社.2014.
[3] Logan M., Merritt E., Carlsson R.著,连城 译.
Erlang/OTP并发编程实战.(Erlang and OTP in Action).
北京: 人民邮电出版社.2012.
Code: https://github.com/erlware/Erlang-and-OTP-in-Action-Source
Erlang 104 OTP的更多相关文章
- Erlang Materials Outline
Motivation 因The Erlang Run-Time System迟迟没有出版,不等了. 梳理一下学习Erlang过程中的学习笔记,以准备一个关于Erlang的small but tight ...
- Erlang Rebar 使用指南之三:Rebar和OTP程序约定和命令
Erlang Rebar 使用指南之三:Rebar和OTP程序约定和命令 全文目录: https://github.com/rebar/rebar/wiki 本章位置: https://github. ...
- erlang OTP gen_server 图解分析
http://www.hoterran.info/otp-gen_server-sourcecode 在阅读erlang的otp源码gen_server.erl的时候,一直想写点什么,用一种最好的方式 ...
- [Erlang 0115] 2014值得期待的Erlang两本新书
在2014年的开头就有这样一个令人振奋的好消息,Erlang有一本新书即将出版 <The Erlang Runtime System>,其作者happi在2013年3月份公布了这本书的写作 ...
- Erlang 102 Erlang并发编程
笔记系列 Erlang环境和顺序编程Erlang并发编程Erlang分布式编程YawsErlang/OTP 日期 变更说明 2014-11-02 A outline 2014 ...
- 不是语言之争--Go vs Erlang
因为 云巴 系统对高并发.低延迟的需求,我们对各个语言.平台做了很多的调研比较工作.这自然就包括致力于开发高并发应用的 Go 和 Erlang. 并发 Go 对高并发的支持通过 goroutine 实 ...
- Erlang官方站点
YOUR ERLANG COMMUNITY SITE Welcome to erlangcentral.org, the Erlang community site where you can rea ...
- 2014值得期待的Erlang两本新书
在2014年的开头就有这样一个令人振奋的好消息,Erlang有一本新书即将出版 <The Erlang Runtime System>,其作者happi在2013年3月份发布了这本书的写作 ...
- Go vs Erlang - 转
From http://zhang.hu/go-vs-erlang/ Go vs Erlang 因为 云巴 系统对高并发.低延迟的需求,我们对各个语言.平台做了很多的调研比较工作.这自然就包括致力于开 ...
随机推荐
- (转) C/C++中const关键字详解
文章转自 http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777416.html 为什么使用const?采用符号常量写出的代码更容易维 ...
- springMVC,mybatis配置事务
首先应该对context:include-filter和context:exclude-filter有一个了解,include是包含这个,而不是只包含,下面会有例子看看: 这是我最开始配置的MVC的配 ...
- iOS开发 百度坐标点的计算
BMKMapPoint point1 = BMKMapPointForCoordinate(_userGps); BMKMapPoint point2 = BMKMapPointForCoordina ...
- laravel Ajax post方式的使用
以jquery ajax 的post的方式为例 验证邮箱输入格式是否正确 html <div class="fl"> <input type="emai ...
- LayoutInflater和inflate()
LayoutInflater LayoutInflater抽象类是用来加载XML布局文件(UI界面)的. 作用: 1.对于一个没有被载入或者想要动态载入的界面,都需要使用LayoutInflater. ...
- Selenium WebDriver中一些鼠标和键盘事件的使用
转自:http://www.ithov.com/linux/133271.shtml 在使用 Selenium WebDriver 做自动化测试的时候,会经常模拟鼠标和键盘的一些行为.比如使用鼠标单击 ...
- bugfree安装
1.下载xampp文件:xampp-linux-x64-5.5.30-3-installer.run 2.安装此文件,用root账号安装,安装命令:./xampp-linux-x64-5.5.30-3 ...
- 读javascript高级程序设计09-BOM
一.window 1.在全局作用域中定义的变量和函数会被归在window对象. var a=1,b=2; function add(a,b){ return a+b; } console.log(wi ...
- H5页面左图右边文字如何布局
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- 20135203齐岳信息安全系统设计基础——实验四&实验五实验报告
见20135217孙小博的博客:http://www.cnblogs.com/sunxiaobo/p/4991861.html