go网络框架思路

xiaoxiao2021-02-28  85

主协程:负责接收客户端的连接,放至连接通道中去。

读协程组:负责从连接通道中取连接,并读到客户端的数据,读完后放至工作数据通道中去。

(包含客户端的连接socket和读到的数据)

工作协程组:负责从工作数据通道中取数据,做相应工作,比如:网络相关,数据库相关等操作,工作协程组将返回数据准好后放至写数据通道中去。

(包含客户端的连接socket和要返回的数据)

写协程组:负责从写数据通道中拿写数据,负返回给客户端。如果是短连接就关闭socket,如果是长连接不关闭。

读,写,处理完全分离。这样设计达到异步处理。

生产者消费者模型。

通道也可以建多个以组id,组成员实例id来区分。

协程也可以建多个以组id,组成员实例id来区分。

消息传送的时候以id来区分发送至哪组通道的哪个通道。

通道中的数据类型以指针型为主,防止过多的数据拷贝。

数据库连接可以有连接池,第三方网络连接也可以有连接池,或跟协程绑定的连接。

前端处理过程如上,后端可以与前端建立长连接,达到复用连接。

如果是同步处理只能是在协程中读取客户端请求,做相关处理工作,做完后将结果返回给客户端。

转载请注明原文地址: https://www.6miu.com/read-2650121.html

最新回复(0)