最佳實(shí)踐
使用場(chǎng)景一:數(shù)據(jù)通信
兩臺(tái)(多臺(tái))機(jī)器使用 Netty 怎樣進(jìn)行通信,大體可分為三種:
1)使用長(zhǎng)連接通道不斷開的形式進(jìn)行通信,也就是服務(wù)器和客戶端的通道一直處于開啟狀態(tài)。如果服務(wù)器的性能足夠好,并且客戶端的數(shù)量也比較少的情況下,推薦使用這種方式。
2)采用短連接的方式,一次性批量提交數(shù)據(jù)。把數(shù)據(jù)保存在本地臨時(shí)緩沖區(qū)或者臨時(shí)表里,當(dāng)達(dá)到臨界值時(shí)進(jìn)行一次性批量提交,又或者根據(jù)定時(shí)任務(wù)輪詢提交。弊端是,不能實(shí)時(shí)傳輸,在對(duì)實(shí)時(shí)性要求不高的場(chǎng)景下推薦這種方式。
3)使用一種特殊的長(zhǎng)連接,在指定某一時(shí)間之內(nèi),如果服務(wù)器和某臺(tái)客戶端沒有任何通信,則斷開連接,當(dāng)下次客戶端向服務(wù)器發(fā)送請(qǐng)求的時(shí)候,再次建立連接。這種模式需要考慮兩個(gè)因素:
- 如何在超時(shí)(即服務(wù)器和客戶端沒有任何通信)后關(guān)閉通道?關(guān)閉通道后又如何再次建立連接?
- 客戶端宕機(jī)時(shí),無需考慮,下次客戶端重啟之后就可以與服務(wù)器建立連接。但是當(dāng)服務(wù)器宕機(jī)時(shí),客戶端如何與服務(wù)器進(jìn)行連接呢?