2 回答

TA貢獻1789條經(jīng)驗 獲得超8個贊
如果中間網(wǎng)絡(luò)路徑暫時消失,互聯(lián)網(wǎng)將無法工作??臻e網(wǎng)絡(luò)連接應(yīng)該能夠容忍暫時的網(wǎng)絡(luò)路徑消失。
當(dāng)任何一方斷開連接時,您看到服務(wù)器/客戶端連接中止的原因是因為從應(yīng)用程序?qū)樱ňW(wǎng)絡(luò)第 7 層)向下主動斷開連接。斷開物理電纜,僅切斷物理網(wǎng)絡(luò)層,其影響不一定向上級聯(lián),尤其是在空閑連接的情況下。
如果您的應(yīng)用程序規(guī)范堅持一定程度的“活躍性”——比如說一個事件,甚至每 30 秒一次心跳——你可以確保服務(wù)器總是向NOP
gRPC 流發(fā)送一個(心跳)。在這種情況下,服務(wù)器將在 30 秒內(nèi)經(jīng)歷網(wǎng)絡(luò)中斷(更糟)。
類似地,如果您擔(dān)心客戶端可能正在等待不再可訪問的連接,則可以在客戶端使用計時器循環(huán) go-routine 來取消連接上下文,如果記錄(甚至是心跳)沒有蜜蜂在最后 30 秒內(nèi)收到。

TA貢獻2080條經(jīng)驗 獲得超4個贊
gRPC 支持客戶端和服務(wù)器之間的 keepalive: https ://godoc.org/google.golang.org/grpc/keepalive
- 2 回答
- 0 關(guān)注
- 157 瀏覽
添加回答
舉報