前段时间,撸了个轮子 gev,主要就是基于 Reactor 模式的一个非阻塞 TCP 网络库,直接操作 epoll 和 kqueue,没有使用 net 标准库。
优点就是快和内存占用低,缺点就是 issue 里这位大佬说的:
go 使用协程+阻塞的模式来处理并发问题。这样的模式虽然对运行时要求很高,但对程序员却非常友好。这样的代码码也非常容易维护。 异步模式最大的问题就是回调嵌套,项目大了根本没法维护。我就是不想用回调方式写业务代码才转 go 的。 你认为这类 go 语言的异步框架有什么优势,要解决什么问题?
Issue 里有一些讨论,肯定的、否定的都有。 Issue 链接: https://github.com/Allenxuxu/gev/issues/4
个人觉得,这种异步库作为特殊场景的补充还是有价值的,内存占用低,速度也快,毕竟 Go 在 IOT 方面还是有很大希望的。也可能是因为我受 muduo 影响比较深,更加偏爱这种方式。。。
想听听大家怎么看呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.