W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Bootstrapping是什么?它在Netty中有什么作用呢?Bootstrapping(引導(dǎo)) 是出現(xiàn)在Netty 配置程序的過程中,Bootstrapping在給服務(wù)器綁定指定窗口或者要連接客戶端的時(shí)候會(huì)使用到。
Bootstrapping 有以下兩種類型:
不管程序使用哪種協(xié)議,創(chuàng)建的是一個(gè)客戶端還是服務(wù)器,“引導(dǎo)”都是必須要使用到的。
面向連接 vs. 無連接
請(qǐng)記住,這個(gè)討論適用于 TCP 協(xié)議,它是“面向連接”的。這樣協(xié)議保證該連接的端點(diǎn)之間的消息的有序輸送。無連接協(xié)議發(fā)送的消息,無法保證順序和成功性
兩種 Bootstrapping 之間有一些相似之處,也有一些不同。Bootstrap 和 ServerBootstrap 之間的差異如下:
Table 3.1 Comparison of Bootstrap classes
分類 | Bootstrap | ServerBootstrap |
網(wǎng)絡(luò)功能 | 連接到遠(yuǎn)程主機(jī)和端口 | 綁定本地端口 |
EventLoopGroup 數(shù)量 | 1 | 2 |
Bootstrap用來連接遠(yuǎn)程主機(jī),有1個(gè)EventLoopGroup
ServerBootstrap用來綁定本地端口,有2個(gè)EventLoopGroup
事件組(Groups),傳輸(transports)和處理程序(handlers)分別在本章后面講述,我們?cè)谶@里只討論兩種"引導(dǎo)"的差異(Bootstrap和ServerBootstrap)。第一個(gè)差異很明顯,“ServerBootstrap”監(jiān)聽在服務(wù)器監(jiān)聽一個(gè)端口輪詢客戶端的“Bootstrap”或DatagramChannel是否連接服務(wù)器。通常需要調(diào)用“Bootstrap”類的connect()方法,但是也可以先調(diào)用bind()再調(diào)用connect()進(jìn)行連接,之后使用的Channel包含在bind()返回的ChannelFuture中。
一個(gè) ServerBootstrap 可以認(rèn)為有2個(gè) Channel 集合,第一個(gè)集合包含一個(gè)單例 ServerChannel,代表持有一個(gè)綁定了本地端口的 socket;第二集合包含所有創(chuàng)建的 Channel,處理服務(wù)器所接收到的客戶端進(jìn)來的連接。下圖形象的描述了這種情況:
Figure 3.2 Server with two EventLoopGroups
與 ServerChannel 相關(guān) EventLoopGroup 分配一個(gè) EventLoop 是 負(fù)責(zé)創(chuàng)建 Channels 用于傳入的連接請(qǐng)求。一旦連接接受,第二個(gè)EventLoopGroup 分配一個(gè) EventLoop 給它的 Channel。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: