小沃的开发很少使用java因为我一直觉得java的spring框架太重了,以前使用php或是使用nodejs做开发时,也是很少使用第三方框架。之前有用过go语言开发中间件,当时也是保持同样的态度,只使用原生框架。
但是,在小沃的客户中,依旧有很多希望使用java开发,原因就在于java的历史性很强,语言本身的bug少,会这门语言的人也多。因此小沃也一直在寻找一个轻量级高并发的java web框架。最近小沃总算是找到了。一个叫做vert.x的框架进入了小沃的视线。
这个框架的特点与之前的nodejs,go一样,都是异步IO。因此在高并发的情况下,性能很好。据说是主流的java web server------tomcat的5倍呢。
Vert.x是一个异步无阻塞的网络框架,其参照物是node.js。基本上node.js能干的事情,Vert.x都能干。Vert.x利用Netty4的EventLoop来做单线程的事件循环,所以跑在Vert.x上的业务不能做CPU密集型的运算,这样会导致整个线程被阻塞。
vertx通过事件循环(EventLoop)来调起存储在异步任务队列(CallBackQueue)中的任务,大大降低了传统阻塞模型中线程对于操作系统的开销。因此相比较传统的阻塞模型,异步模型能够很大层度的提高系统的并发量。
当然,由于是java语言,实际上也是可以开线程的。Vert.x除了异步之外,还提供了非常多的吸引人的技术,比如EventBus,通过EventBus可以非常简单的实现分布式消息,进而为分布式系统调用,微服务奠定基础。除此之外,还提供了对多种客户端的支持,比如Redis,RabbitMQ,Kafka等等。
不依赖中间件(小沃最喜欢的一点)
Vert.x的底层依赖Netty,因此在使用Vert.x构建Web项目时,不依赖中间件。像Node一样,可以直接创建一个HttServer。就像我们上面第一个例子,可以直接运行main方法,启动一个Http服务,而不需要使用类似于Tomcat的中间件。不依赖中间件进行开发,相对会更灵活一些,安全性也会更高一些。
完善的生态
Vert.x和Spring的对比,有一种使用MacOS和Windows对比的感觉。Vert.x和庞大的Spring家族体系不同,Vert.x提供数据库操作,Redis操作,Web客户端操作,NoSQL数据库的一些操作等常用的结构,很清新,很简洁,但足够使用。
最后,如果有客户想要用java开发产品,也可以联系小沃哦。