Go中异步TCP服务器的正确结构是什么?

时间:2016-05-05 14:02:10

标签: performance go tcp asyncsocket tcpserver

我有一个客户端发送大约500k请求(消息)/分钟。每条消息大约200字节到2KB。每条消息都将保存在数据库中(如Couchbase)。

在核心,端口,连接和goroutines方面构建Go TCP服务器以正确处理此负载的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

就像JimB提到的那样,TCP服务器不应该站起来并开始根据您的需求进行基准测试。一个简单的布局是等待传入的TCP连接,然后执行一个go例程来处理它。在那个goroutine中,你可以放置你想要的任何阻塞代码,在这种情况下写入数据库。以下是一个简单示例的链接:

whenever gem

一旦你开始工作,如果它不符合你的性能标准,你可以使它变得更加复杂。以下是使用工作池来处理每分钟1M HTTP请求的一个很好的示例。

Simple example