- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《Erlang OTP》.docx
Erlang OTP
文档版本跟踪日期变更说明备注2014-12-21A outline, 1说明:A(新增)、M(修改)、D(删除)
0 Scope
围绕OTP设计原则,分别记录行为模式、监督树概念、应用、发布和部署,以及[3]中一个产品级缓存解决方案。
1 OTP Design Principles
Erlang Doc: OTP Design Principles Users 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 Users Guide)。
1.5 发布处理(Release Handling)
发布处理的含义是在运行系统中如何在不同发布版本中升级/降级。
2 行为模式
如1.2节中所述,Erlang/OTP将通用的处理与随应用逻辑而变的特殊处理分开,提供产品级质量的通用处理实现,让用户专注于应用逻辑的处理。这些特殊的处理被纳入回调模块这个概念中,回调(callback)有着丰富的涵义,粗略的讲,回调是一段在基础设施/框架中预期会执行的代码,基础设施用户可以指定自定义的回调函数,但关于回调何时执行、在什么地方执行一般没有充分的控制权。
行为模式概念解析
[3]中指出,行为模式的涵义包括:
(1) 行为模式接口(interface)
一组特定的函数和相关的调用规范(契约)。
(2) 行为模式实现(implementation)
导出了接口所需的全部函数的回调模块;
实现模块应该包含属性-behaviour(…).,编译器依据该属性检查模块是否导出了行为接口所需的所有函数。
(3) 行为模式容器(container)
容器是一个进程,执行的是库模块中的代码,会调用与行为模式实现相对应的回调模块来处理
您可能关注的文档
- 《DM8168 DDR3接口的PCB布线指南》.docx
- 《DMH非标型-1m3干热灭菌器(2PK221-002)性能确认方案》.docx
- 《Don’t mark my paper》.ppt
- 《Dopamine》.pdf
- 《Doumen-GB-M01 Six Sigma Overview》.pdf
- 《DOWEX MARATHON A Ion Exchange Resin》.pdf
- 《DOWEX MARATHON WBA-2 Engineering Information》.pdf
- 《DOWEX™ MARATHON™ 11 Ion Exchange Resin Engineering Information》.pdf
- 《DOWEX™ MARATHON™ Industrial Water Softening. Ion Exchange Resins》.pdf
- 《Dr. Steingroever-How Can A Telco Effectively Monetize Broadband_Markus_Steingroever_Detecon1》.ppt
文档评论(0)