erlang浅谈(4)-OTP

来源:互联网 发布:finale 软件 编辑:程序博客网 时间:2024/06/05 23:08

1. OTP

OTP把分布式应用开发的一些常用场景,进程依赖管理,反应式,状态机,事件驱动模式框架化;另外,提供了一个分布式存储。

1.1. 框架

1. supervisor

监控树。

a) 配置要管理进程们启动参数

进程的所处模块,启动函数(也支持匿名函数),启动参数

b) 定制子进程的重启策略

  • l 当前进程挂掉了重启间隔时间
  • l 指定时间内重启最大频率
  • l 重启时是重启自己 || 所有的进程 || 配置时排在当前进程之后

2. gen_server

反应式框架。自身一个进程。

支持同步的call和异步的cast消息投递,也支持Pid!Message的原语方式(这点可以让其跟很多异步接口对接起来)

3. gen_fsm

有限状态机(本身没有状态,只能是有限)。自身一个进程。

State(S) x Event(E) -> Actions(A), State(S')

发送消息给该进程,它会回调{CurrentStateName}/2函数,CurrentStateName就是当前状态;如果是调用all_state相关的接口,会回调专门的handle_event等相关函数。

4. gen_event

消息中心。 

运行的过程:

a) 启动交换器进程,监听指定消息

b) 注册消息回调

c) 发送消息

d) 交换器进程回调注册的模块相应接口

1.2. mnesia

分布式的数据库管理

1. 支持多个列

2. 支持多个副本

副本的策略有:

  • ram (所有数据都在内存)
  • ram_disk(数据存在内存和磁盘)
  • disk(数据只放在磁盘)

3. 支持表分片

4. 使用时不用指定副本位置

自动选择合适的副本



限制

处理大文件有一定的性能问题



原创粉丝点击