Application
Supervisor
worker(gen_server, gen_event, gen_fsm)
陷阱:
http://erlang.org/doc/efficiency_guide/commoncaveats.html
迁移到Erlang学习步骤:
语法的学习,容易
阅读开源项目代码,进阶
掌握调试、性能调优工具,进阶
理解Erlang虚拟机工作原理(熟悉操作系统原理)
通用服务器(gen_server)
服务器框架 + 回调模块
回调模块(业务逻辑)是纯粹的顺序代码,没有并发、分裂、发送、接受、注册,意味着我们可以完全不了解底层并发模型的情况下编写客户端-服务器模型。
场景:
维持长连接
管理外部依赖部件(rabbitmq/redis/couchbase/muysql)
RESTful API
Socket.io API
通用事件处理(gen_event)
事件处理器框架 + 回调模块
分离事件生成 和 事件处理。
错误记录器和警报处理器同样遵循事件处理器的模式。
场景:
日志系统(file_handler, syslog_handler)
实时统计系统(一个事件多维度统计)
有限状态机(gen_fsm)
事件->行为->状态
场景:
处理不走复杂的请求(流程复杂,两次交互以后;事件复杂,需要后台异步操作)
海量事务(一次发布千万级个对象;分片,上万个fsm被创建)
fsm本身被监控
监控树(supervisor)
树的上级进程监控下级进程,如果下级进程挂了就会重启它们。
应用程序(application)
.app应用程序信息文件
应用程序监视器(GUI)
appmon:start()