我正在用golang编写一个低延迟、高吞吐量的网络。它在主goroutine中有接受器(接受传入的连接)。并且它将传入的连接传递给'n‘个工作者goroutines。
在这种情况下,为了不丢弃连接,我希望接受者goroutine优先于其他goroutine,这样连接就不会被丢弃。或者至少这个接受者goroutine不应该被其他worker goroutine驱逐。
我如何确保这一点?
发布于 2018-12-31 06:30:00
我已经在golang上创建了线程池。这应该很容易让人将某些goroutine优先于其他goroutine。
发布于 2018-12-23 00:58:01
如果您优先于接受连接而不是“完成工作”,请考虑随着时间的推移会发生什么。你将创建一个积压的工作,同时接受越来越多的连接,带来更多的工作要做。这只会增加服务器上的负载。
相反,要专注于高效地编写工作程序代码,以便快速完成工作,从而释放资源来处理新的连接。
如果您担心您的服务器无法处理工作负载,则应该考虑对客户端进行速率限制。
https://stackoverflow.com/questions/53890318
复制相似问题