1概要設(shè)計(jì)

Kafka SocketServer是基于Java NIO來開發(fā)的,采用了Reactor的模式,其中包含了1個(gè)Acceptor負(fù)責(zé)接受客戶端請(qǐng)求,N個(gè)Processor負(fù)責(zé)讀寫數(shù)據(jù),M個(gè)Handler來處理業(yè)務(wù)邏輯。在Acceptor和Processor,Processor和Handler之間都有隊(duì)列來緩沖請(qǐng)求。

1.1 kafka.network.Acceptor

這個(gè)類繼承了AbstractServerThread,實(shí)現(xiàn)了Runnable接口,因此它是一個(gè)線程類。它的主要職責(zé)是監(jiān)聽客戶端的連接請(qǐng)求,并建立和客戶端的數(shù)據(jù)傳輸通道,然后為這個(gè)客戶端指定一個(gè)Processor,它的工作就到此結(jié)束,這樣它就可以去響應(yīng)下一個(gè)客戶端的連接請(qǐng)求了。

它的run方法的主要邏輯如下:

  1. 首先在ServerSocketChannel上注冊(cè)O(shè)P_ACCEPT事件:serverChannel.register(nioSelector, SelectionKey.OP_ACCEPT)

  2. 然后開始等待客戶端的連接請(qǐng)求:

    網(wǎng)友評(píng)論