go網絡框架思路

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

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

(包含客戶端的連接socket和讀到的數據)

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

(包含客戶端的連接socket和要返回的數據)

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

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


生產者消費者模型。

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

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

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

通道中的數據類型以指針型爲主,防止過多的數據拷貝。


數據庫連接可以有連接池,第三方網絡連接也可以有連接池,或跟協程綁定的連接。


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

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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章