使用J2SE进行服务器架构技术选型的变迁

    

虽然现在对大多数程序员来讲,基本不会再有使用Java开发一个服务器这样的任务,但是,这方面的技术研究一下,对自己的技术提高还是非常有帮助的。说不定啥时候能派上用场。

使用Java(J2SE)来设计服务器产品(不使用开源或其他已有产品)的架构,随着Java的不断发展,这几年也发生了很大变化。在JDK1.4之前,使用Java构建服务器应用本身就很少,所以这里也就不提了,我们从JDK1.4开始说。

第一阶段:

要点是:一个连接一个线程



 

阶段2:

服务器端采用了线程池



 

阶段1和阶段2虽然简单,但是很实用,在很多场景下仍然是第一选择。而且编程模型业内非常简单。

阶段3:采用非阻塞IO,多路复用技术,又有两种不同的方式





 
 
 


 

这种方式很重要的一点就是在IO事件发生时得到通知,由程序进行处理。

NIO给编程带来了很大的复杂度,使用NIO开发非常不容易,也很容易犯错误,所以,采用别人的框架是一个简单而自然的选择,采用grizzly和mina都很不错,对通用的场景都能满足要求。这里提醒一下,不管mina和grizzly,都有一些你不想用的特性,干扰你想用的功能,需要小心对待,最好自己也能处理mina和grizzly的bug,改进这些框架的功能。

再有,给予NIO来开发SSL也很复杂。

第四阶段:使用AIO技术



 

AIO最大的特性就是事前先设置好事件的回调函数,事件发生时自动调用回调。而且,得到的通知是“IO操作完成”,而不是NIO的“IO操作即将开始”。

使用AIO,在上层开发SSL也也很麻烦。

猜你喜欢

转载自windshome.iteye.com/blog/1837558
今日推荐