最近要看一下erlang链接池,以为ranch很不错。git
github上面有人写了ranch的代码阅读,能够看一下,连接在这里。github
1. ranch能够同时监听多个端口,每一个端口的链接信息能够单独配置。并发
每一个端口的监听信息经过ranch_server进程记录,而后获取信息能够从ets表读取。由于配置信息不多修改,而获取信息比较多。这样的读写分离比较方便并发。socket
2. 每一个链接能够设置最大链接数,经过ranch_conns_sup.erl模块控制。spa
每一个链接过来,链接池都会通知ranch_conns_sup进程更新进程数,而后根据如今的链接状况而决定是否进行下一次socket的链接。server
ranch_server记录并管理全部端口链接信息,ranch_conns_sup进程记录并管理单独端口中的链接池的信息,都是一对多的关系。进程