Netty中 Bootstrapping 的作用

2018-08-08 10:27 更新

Bootstrapping是什么?它在Netty中有什么作用呢?Bootstrapping(引導(dǎo)) 是出現(xiàn)在Netty 配置程序的過程中,Bootstrapping在給服務(wù)器綁定指定窗口或者要連接客戶端的時(shí)候會(huì)使用到。

Bootstrapping 有以下兩種類型:

  • 一種是用于客戶端的Bootstrap
  • 一種是用于服務(wù)端的ServerBootstrap

不管程序使用哪種協(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

分類BootstrapServerBootstrap
網(wǎng)絡(luò)功能連接到遠(yuǎn)程主機(jī)和端口綁定本地端口
EventLoopGroup 數(shù)量12

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%203

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。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)