最近喜欢上ERLANG语言,个人坚信学习优秀的开源代码才是学习新语言的最快途径。
现在我分享下我是如何学习ranch源码的,cowboy是个优秀的开源库,网上对于其分析也有很多,如果一下分析有不足之处,见谅!
对于ranch源码的分析分为3个阶段。
第一个阶段为启动ranch app的过程。
第二个阶段为启动socket监听的过程。
第三个阶段为接收数据进行解析的过程。
下图的3个颜色代表3个阶段
ranch高效的个人分析:
1、ranch-acceptor的socket监控时通过多进程对同一个socket进行监控,实际使用的就是gen_tcp模块的接口,erlang自身很好的实现了此功能。
2、对于没一次连接都是独立的,所以使用新的进程去解析请求消息,充分利用了erlang的多核支持的优势。(erlang擅长小计算多任务)