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. 使用时不用指定副本位置
自动选择合适的副本
限制
处理大文件有一定的性能问题