V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tencoldays
V2EX  ›  程序员

eSockd(Erlang TCP/SSL 服务器框架)1.0-beta 发布

  •  
  •   tencoldays · 2015-03-04 16:16:56 +08:00 · 4973 次点击
    这是一个创建于 3312 天前的主题,其中的信息可能已经有所发展或是发生改变。
    项目地址:

    https://github.com/emqtt/esockd

    版本功能:

    1. 异步非阻塞TCP/SSL Socket服务器框架

    2. 支持Acceptor池与异步Accept

    3. 支持最大连接数管理


    Q: 为什么不用Ranch?

    A: 如果你深入理解下Erlang的TCP服务器结构,比如inet httpd、rabbitmq、ejabberd,就知道Ranch框架不及格。比如两次controlling_proccess,SSL握手阻塞Acceptor,连接Supervisor和最大连接控制都写得如屎。

    当然,eSockd也可能如屎一般,但目前是我尽了很大努力拉出来的了...

    如果你发现不合理的地方,请邮件我: [email protected],或者Pull Request我
    6 条回复    2015-04-11 21:34:10 +08:00
    scys
        1
    scys  
       2015-03-04 16:32:41 +08:00
    槽点:eSockd也可能如屎一般,但目前是我尽了很大努力拉出来的了...

    好吧,冲你这句话,我还看看erlang去,学习下语言
    00
        2
    00  
       2015-04-09 22:10:09 +08:00
    厉害,单从repo 来看,repo 主对ranch、rabbitmq networking 非常熟悉。

    另,请教个小问题,为什么如此青睐 阻塞 模式,而不像ejabberd 那样使用 半阻塞 模式?
    tencoldays
        3
    tencoldays  
    OP
       2015-04-10 21:51:39 +08:00
    @00 ejabberd 那样使用 半阻塞 模式 是指?
    00
        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 ?
    tencoldays
        5
    tencoldays  
    OP
       2015-04-11 18:09:46 +08:00
    @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
    00
        6
    00  
       2015-04-11 21:34:10 +08:00
    @tencoldays
    多谢,只顾看源代码了,没仔细看example .
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1539 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 17:03 · PVG 01:03 · LAX 10:03 · JFK 13:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.