即使你了解了Java NIO非阻塞功能的工作(怎么樣SelectorChannel, Buffer等等),設(shè)計(jì)一個無阻塞服務(wù)器仍然很難。非阻塞IO包含了相比阻塞IO的要有難度。本章非阻塞服務(wù)器教程將討論非阻塞服務(wù)器的主要挑戰(zhàn),并為他們描述一些潛在的解決方案。

  本教程中描述的想法是圍繞Java NIO設(shè)計(jì)的。但是,我認(rèn)為,只要有這樣的構(gòu)造,這些想法可以用其他語言重復(fù)使用Selector。據(jù)我所知,這樣的結(jié)構(gòu)是由底層操作系統(tǒng)提供的,所以很有可能您可以使用其他語言訪問此操作。

非阻塞服務(wù)器 - GitHub存儲庫

  我創(chuàng)建了一個簡單的概念驗(yàn)證概念,在本教程中提出的想法,并將其放在GitRebu存儲庫中,可供查看。這是GitHub信息庫:

https://github.com/jjenkov/java-nio-server

非阻塞IO管道

  非阻塞IO管道是處理非阻塞IO組件的鏈。這包括以非阻塞方式讀寫IO。以下是簡化的非阻塞IO管道的流程圖: