`

使用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也也很麻烦。

 

 

  • 大小: 46.7 KB
  • 大小: 57.6 KB
  • 大小: 54.4 KB
  • 大小: 56.6 KB
  • 大小: 53 KB
0
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics