Go并发服务端架构思考
09 Oct 2017
|
one request one goroutine 模式
不断创建和销户 goroutine,有一定开销。
goroutine 池模式
限定goroutine上限,重复利用goroutine,避免重复的创建和销毁。
dispatcher-worker 模式 类生产者消费者模式
dispatcher相当于生产者,例如处理socket连接,把解析的报文都发往channel。worker_goroutine只处理业务报文的逻辑。要注意worker_goroutine之间的竞争问题。
╱ worker_goroutine_1
dispatcher_groutine —— channel —— worker_goroutine_2
╲ worker_goroutine_n
rpc 微服务模式
一个服务goroutine,同时发起n个rpc调用,通过select监控channel并设置统一的超时时间来控制。
╱ goroutine_rpc_server_1
server_goroutine(异步超时等待) —— goroutine_rpc_server_2
╲ goroutine_rpc_server_n