应该大家对nio,bio的通讯模式非常理解了吧。在这里我们就不对nio与bio的优劣势进行细分讲解,本章文章主要讲解的是web服务框架。大家都知道,nio与bio是一种通讯处理的方法,那么,他们相对应的服务器有哪些呢?下面我们来给大家一一讲解。
作为bio的代表作,大家用的很多的java web服务器非tomcat莫属。而对于nio服务器,大家可能就相对了解较少了。那么今天逐步给大家简单说说java中nio的通讯框架主流有mina和netty这两个通讯框架,将jdk中nio部分都做了新的封装,这里我们不讲他们如何使用,如果有感兴趣的同学可以自己去学习这两套通讯框架的应用。
mina:https://blog.csdn.net/yoara/article/details/37324821
netty:https://www.imooc.com/article/27677
那么我们为什么会聊nio的通讯服务器呢?近年来,移动网络,社交网络和电商的兴起,使各大服务提供商的客户端请求数量激增,传统服务器架构已不堪重负,致使基于事件和异步的解决方案备受追捧。在这期间出现了非常多的优秀服务,大家可能一些都使用过,比如nginx,nodejs。但是java呢?tomcat中有nio模式,但是它与真的nio实现有非常大的区别。今天就跟大家推荐一款依托于web框架。VERT.X。
vertx框架基于事件和异步,依托于全异步java服务器netty,并扩展了很多其他特性,以其轻量、高性能、支持多语言开发而备受开发者青睐。
概念:vert.x 是事件驱动的,其处理请求的高性能也是基于其事件机制。
event loop:事件循环,由vert.x启动的事件处理器线程,也是vert.x醒目对外开放的入口,vertx由此接收请求事件。一个vertx有一个货多个事件循环线程组成,线程最大数量为主机有效的cpu核数。
Event Loop Vertical:事件的业务处理线程,存在于Event Loop中,用于处理非阻塞短任务。
Worker Vertical : 事件的业务处理线程,用于处理长任务阻塞任务。
Event Bus:即事件总线,是Vert.x事件模型中最核心的部分,所有的事件都经由事件总线进行分发,包括Vertical之间的通信事件。
Vert.x Module : Vert.x项目模块,一个应用通常由多个模块组成,每个模块一般包含多个Vertical。
结合按网上很多netty与tomcat的对比,我们得到一个结论netty在小数据传输上
1.在高并发处理中,netty优于tomcat。
2.netty+http在性能上和可靠性和还是不错的, 且可以nginx搭配使用。
3. tomcat bio模式下,大量并发(高于tomcat配置的最大连接数)。会导致较高的请求错误
今天框架的基本简介就到这里。希望能在web服务器上选型对大家有所帮助 |
|