golang 安全的tcp server_化繁为简,写一个简单好用的server

为什么要造轮子

目前很著名的轮子有libevent,boost等高并发的网络库,可以说著名的网络库我都用过,用过才知道当要实现一些定制化的功能时并不方便,不但要了解底层源码,而且还要进行适当的改造,总有种黑盒开发的感觉,所以在15年我就开始自己封装一些epoll,select模型,当时基于多路复用用reactor模式封装了betternet,虽然稳定性不如成熟的网络库,但是可以根据需求灵活修改网络层和应用层,这是难能可贵的。市面上也有一些成型的即时通信server,使用过kbengine,origine等集成度较高的server,当要实现一些心跳,逻辑检测,连接管理等需求时,还是要修改底层的源码,感觉很糟糕。18年接触golang,net包里封装的网络模型和协程管理,很完善的调度策略让我眼前一亮,所以考虑能不能基于golang的官方net包做一些框架上的设计,搭建一个高可用的网络服务。19年基于net包实现了wentby这个服务器,并发和稳定性都不错,最近又翻看了原来的代码,觉得很多地方可以精简一下,而且不想为了兼容别人的开发习惯降低服务器的效率,也不想增加复杂度,所以干脆做一个精简的server给自己用,只要他稳定高效就可以了,线程安全这种问题交由开发者考虑。读了redis网络服务那块也就500行,简约而不简单。

简单的设计

我的想法是尽可能减少线程切换的开销,尽可能精简的处理消息,同时也尽可能减少资源的开销,我的

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值