开发golang的守护程序,比如网关之类的,需要多进程吗?为什么?

如题~

已邀请:

pathbox

赞同来自:

单进程 也可以, 一个进程 创建出多个 goroutine 跑守护程序。 不过,当这个进程关了或挂了,就影响到所有goroutine了

tupunco

赞同来自:

多个的话需要做负载, 前端搞个 Nginx 或者 客户端软负载.

cabing

赞同来自:

貌似明白了。谢谢pathbox tupunco


有点不明白的是多个进程去启动go的协程,和单进程去启动go的协程,如果是非关联的任务处理效率会提高吗?按照golang的理论是协程已经应用到了多核,是不是不会提高呢?

pathbox

赞同来自:

我选择 就开CPU核心数量的进程,然后 再进程中开goroutine 这也是go推荐的。goroutine的切换比进程的切换消耗小多了,goroutine本身的消耗就比进程少。

tupunco

赞同来自:

你如果并发非常高的时候, 可以考虑多进程. 如果量不搞, 还是把业务做好是关键.
前提你的进程之间没有共享数据的问题.
多个进程可以提高可靠性, 并且间接提高效率.
GC 是有周期的, 内存占用越多, 扫描越慢(个人猜测). .NET 进程是有内存限制的, Go 的不太懂, 感觉大差不差.
毕竟再叼的胃, 也有吃饱的时候.

要回复问题请先登录注册