登录
首页 >  Golang >  Go问答

如果用go写一个高性能点的聊天服务器应该怎么写?

来源:SegmentFault

时间:2023-02-16 15:28:43 433浏览 收藏

本篇文章向大家介绍《如果用go写一个高性能点的聊天服务器应该怎么写?》,主要包括goroutine、gopher,具有一定的参考价值,需要的朋友可以参考一下。

问题内容

接触go没多久,在网上看了看tcp聊天服务器,大概实现就是:遇到有用户连接就直接开一个goruntine,这样的性能是否算高呢?假设只是一台4核8gb机器。大概能启动多少goruntine?怎么样能充分利用cpu资源,是设置GOMAXPROCS吗?

正确答案

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端的,这些定了才好说用什么模型更合适。

到这里,我们也就讲完了《如果用go写一个高性能点的聊天服务器应该怎么写?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于golang的知识点!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>