1. 程式人生 > >go網路框架思路

go網路框架思路

主協程:負責接收客戶端的連線,放至連線通道中去。

讀協程組:負責從連線通道中取連線,並讀到客戶端的資料,讀完後放至工作資料通道中去。

(包含客戶端的連線socket和讀到的資料)

工作協程組:負責從工作資料通道中取資料,做相應工作,比如:網路相關,資料庫相關等操作,工作協程組將返回資料準好後放至寫資料通道中去。

(包含客戶端的連線socket和要返回的資料)

寫協程組:負責從寫資料通道中拿寫資料,負返回給客戶端。如果是短連線就關閉socket,如果是長連線不關閉。

讀,寫,處理完全分離。這樣設計達到非同步處理。


生產者消費者模型。

通道也可以建多個以組id,組成員例項id來區分。

協程也可以建多個以組id,組成員例項id來區分。

訊息傳送的時候以id來區分發送至哪組通道的哪個通道。

通道中的資料型別以指標型為主,防止過多的資料拷貝。


資料庫連線可以有連線池,第三方網路連線也可以有連線池,或跟協程繫結的連線。


前端處理過程如上,後端可以與前端建立長連線,達到複用連線。

如果是同步處理只能是在協程中讀取客戶端請求,做相關處理工作,做完後將結果返回給客戶端。