基于golang实现的376.1规约采集前置程序

go3761

       https://github.com/jonenine/go3761
       实现了稳定而高效的网络通讯层和灵活的规约配置层,可作为物联网行业部署在云端的采集前置程序的原型。

    网络层架构

       网络层分为io goroutine和worker goroutine,有点类似于netty的网络模型。当accept连接之后就启动一个goroutine来接收数据,一旦接收到数据,goroutine退出,同时将handler连同数据(事件)通过channel发给worker进行处理,在一个固定数量的worker group(池)内进行解帧和其他业务处理。处理之后再启动一个新的goroutine来接收数据。

       以前采取io goroutine同时接收数据和处理数据的做法,虽然性能也不错。发现一段时间后golang的后台线程疯狂增加,而采用这种类似于reactor的模式不但提高了性能,也克服了后台线程飞涨的问题。

    性能测试

       性能测试结果还是不错的:

       在windows上似乎很难突破c10k后性能急剧下降的限制,并发数超过1万是没问题(可以并发连接到到很大),但并发超过1万后性能急剧下降,比如并发1万

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值