問題描述golang實際開發當中,grpc的Dial,是否需要關閉,如果不需要關閉的話就能放到init()中完成。感覺頻繁的連接關閉還不如保持連接池長連。相關代碼func init() {
once.Do(func() { var err error
conn, err = grpc.Dial(config.ServerURL, grpc.WithInsecure()) if err != nil {
logger.Err(err, "Gateway Dial 錯誤")
} //微服務當中進行grpc進行通信,是否需要頻繁的對conn進行close跟connect確保資源被釋放?
//還是保持tcp長連不斷開?
//如果需要defer就不能放init()
//defer conn.Close()
})
}
1 回答

慕桂英3389331
TA貢獻2036條經驗 獲得超8個贊
不需要關閉的,可以放到一個池子里,用的時候取。
這個時候分為兩種情況。
第一種是從池子里可以取到,則用,用完放回去。
第二種情況是取不到,這個時候,new一個,但是用完之后放回去,這個時候分為兩種情況
池子已經是滿的,此時關閉。
池子未滿,放入池子。
大概就是這樣,很多grpc的plugin都是這么實現的,可以去看看。
希望能給你提供一些思路。
- 1 回答
- 0 關注
- 1412 瀏覽
添加回答
舉報
0/150
提交
取消