如果用go写一个高性能点的聊天服务器应该怎么写?
接触go没多久,在网上看了看tcp聊天服务器,大概实现就是:遇到有用户连接就直接开一个goruntine,这样的性能是否算高呢?假设只是一台4核8gb机器。大概能启动多少goruntine?怎么样能充分利用cpu资源,是设置GOMAXPROCS吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
golang跟Erlang一样,都是轻量级的线程,只不过golang叫协程(goroutine),而erlang叫做进程,但这些轻量级的线程或进程都是派生在真实的POSIX 线程之下的“伪线程”。 原文说的没错,go相比其他的IO开发模型,特点就是可读性好,创建的goroutine都是轻量级的,特别适用于长连接的用户,做聊天跟erlang一样都是非常适合的。
至于设置CPU资源,只需要设置最大的CPU核数即可,1.5以前的GO设置runtime.GOMAXPROCS为CPU数目即可。
goroutine跟CPU关系不大,主要看内存,聊天如果不涉及特别复杂的业务的话,应该是属于IO敏感的,而非CPU敏感的。
其实,还是看你聊天的模型,是TCP的还是UDP的,是有状态的还是无状态的,状态是保存在server端还是client端的,这些定了才好说用什么模型更合适。