1
scys 2015-03-04 16:32:41 +08:00
槽点:eSockd也可能如屎一般,但目前是我尽了很大努力拉出来的了...
好吧,冲你这句话,我还看看erlang去,学习下语言 |
2
00 2015-04-09 22:10:09 +08:00
厉害,单从repo 来看,repo 主对ranch、rabbitmq networking 非常熟悉。
另,请教个小问题,为什么如此青睐 阻塞 模式,而不像ejabberd 那样使用 半阻塞 模式? |
3
tencoldays OP @00 ejabberd 那样使用 半阻塞 模式 是指?
|
4
00 2015-04-11 16:34:06 +08:00
@tencoldays
我看ejabberd 的代码,是在controlling_proccess 会将 socket 设置为active once . controlling_proccess 将socket 交给gen_server 进程去处理,也就是不需要显式地执行gen_tcp:recv 操作。 再另外,我用esockd 做了cowboy的 TCP层(替换了ranch),每秒能够处理的请求有10%左右的提升,而且,esockd 的CPU 消耗要比ranch 小。 关于“显式地执行gen_tcp:recv” 的方式,我猜测,您是想用esockd 来替换ranch ? |
5
tencoldays OP @00 理解你意思了。 esockd和ranch一样,只负责到TCP accept。一旦socket连接建立后,如何处理比如阻塞、半阻塞、非阻塞,是自行选择的。
这里有示例: https://github.com/emqtt/esockd/tree/master/examples active_once的: https://github.com/emqtt/esockd/blob/master/examples/gen_server/src/gen_echo_server.erl |
6
00 2015-04-11 21:34:10 +08:00
@tencoldays
多谢,只顾看源代码了,没仔细看example . |