最近要看一下erlang连接池,觉得ranch很不错。
github上面有人写了ranch的代码阅读,可以看一下,链接在这里。
1. ranch可以同时监听多个端口,每个端口的连接信息可以单独配置。
每个端口的监听信息通过ranch_server进程记录,然后获取信息可以从ets表读取。因为配置信息很少修改,而获取信息比较多。这样的读写分离比较方便并发。
2. 每个连接可以设置最大连接数,通过ranch_conns_sup.erl模块控制。
每个连接过来,连接池都会通知ranch_conns_sup进程更新进程数,然后根据现在的连接情况而决定是否进行下一次socket的连接。
ranch_server记录并管理所有端口连接信息,ranch_conns_sup进程记录并管理单独端口中的连接池的信息,都是一对多的关系。
时间: 2024-10-08 09:03:11