即使你了解了Java NIO非阻塞功能的工作(怎么樣Selector
,Channel
, Buffer
等等),設計一個無阻塞服務器仍然很難。非阻塞IO包含了相比阻塞IO的要有難度。本章非阻塞服務器教程將討論非阻塞服務器的主要挑戰(zhàn),并為他們描述一些潛在的解決方案。
本教程中描述的想法是圍繞Java NIO設計的。但是,我認為,只要有這樣的構造,這些想法可以用其他語言重復使用Selector
。據(jù)我所知,這樣的結構是由底層操作系統(tǒng)提供的,所以很有可能您可以使用其他語言訪問此操作。
非阻塞服務器 - GitHub存儲庫
我創(chuàng)建了一個簡單的概念驗證概念,在本教程中提出的想法,并將其放在GitRebu存儲庫中,可供查看。這是GitHub信息庫:
https://github.com/jjenkov/java-nio-server
非阻塞IO管道
非阻塞IO管道是處理非阻塞IO組件的鏈。這包括以非阻塞方式讀寫IO。以下是簡化的非阻塞IO管道的流程圖: