vert.x 放弃 spring为什么用的人不多

Vert.x入门体验
Vert.x()是一个基于JVM、轻量级、高性能的应用平台,非常适用于最新的移动端后台、互联网、企业应用架构.
二、安装配置
访问Vert.x官网 下载Vert.x包vert.x-3.1.0-full.zip
配置环境变量
创建环境变量VERTX_HOME=C:\vertx
将%VERTX_HOME%\bin 追加到path变量上。
通过vertx -version命令查看版本号
3.1 Vertx-Java命令行运行
//EchoServer.java
import io.vertx.core.AbstractV
public class EchoServer extends AbstractVerticle {
public void start() {
vertx.createHttpServer().requestHandler(req -& {
req.response()
.putHeader(&content-type&, &text/plain&)
.end(&Hello from Vert.x!&);
}).listen(8080);
vertx run EchoServer.java
curl http://localhost:8080/
3.2 Vertx-Java main方法方式运行
&dependencies&
&dependency&
&groupId&io.vertx&/groupId&
&artifactId&vertx-core&/artifactId&
&version&3.1.0&/version&
&/dependency&
&/dependencies&
//App.java
import io.vertx.core.V
public class App {
public static void main(String[] args) {
Vertx.vertx().createHttpServer().requestHandler(req -& req.response().
end(&Hello World!&)).listen(8080);
In IDE, Run AS Java Application
curl http://localhost:8080/
3.3 Vertx-JavaScript命令行运行
//echo_server.js
vertx.createHttpServer().requestHandler(function (req) {
req.response().putHeader(&content-type&, &text/html&).end(&&html&&body&&h1&
Hello from vert.x!&/h1&&/body&&/html&&);
}).listen(8080);
vertx run echo_server.js
curl http://localhost:8080/
四、更多参考
关于Java框架Vert.x的几点思考
阅读(...) 评论()Vert&x学习--性能对比
Vert.x,一个很强大的高性能分布式框架,套用官网的说法: “Vert.x is a lightweight, high performance application platform for the JVM that's designed
for modern mobile, web, and enterprise applications.” Vert.x的中文资料不多,学习主要从官网文档、示例及youtube的一些视频入手。 开始前先做个与servlet(基于tomcat)的性能对比,运行echo服务(源码: ): 测试服务器是我的surface pro 2,i5低电版、4G内存、固态硬盘,测试工具为jmeter。 先看500线程50次循环:
此时tomcat开发220多个线程,有4%多的错误率,吞吐量为544/s
然后再看1000线程50次循环:
此时错误率升到了24%,90%用户访问超过了2s,已经超过极限了。 最后看一下2000线程50次循环:
打开了nio后tomcat上的结果,早知nio打开后性能提升很大,果不其然!
最后这个是vert.x的结果了,vert.x只开了18个线程,结果上看略高于打开nio后的tomcat,但要说明的是我的压测机配置不够,分配2000线程时占满了CPU,而服务器没什么资源压力,换高配的机子来运行jmeter的话肯定更好。
这是一个不严谨的对比,但结果还是有一定参考价值: 1.nio对性能的提升很关键,vert.x的io基于netty,而它正是用nio2; 2.vert.x的性能的确很彪悍,事件驱动、nio2!
如果有时间可以进一步对比一下用jetty运行的servlet、nodejs、vert.x的netServer。
人气:1046
Copyright (C) , All Rights Reserved.
版权所有 闽ICP备号
processed in 0.036 (s). 13 q(s)关于Java框架Vert.x的几点思考
发表于 17:18|
作者白小勇
摘要:Vert.x是一个基于JVM、轻量级、高性能的应用平台,非常适用于最新的移动端后台、互联网、企业应用架构。Vert.x基于全异步Java服务器Netty,并扩展出了很多有用的特性。
Vert.x简介在Java20周年之际,Java用户对Java的抱怨与日俱增,比如内存管理、笨重的JavaEE等。而Java依然在TIOBE编程语言排行榜上艰难的维持第一名的位置,随着一些新编程语言的兴起,这个领域目前呈现一种混战的态势。在这种背景下,Java届的小鲜肉框架——Vert.x于日发布了3.0-milestone5版本,距离计划6月22日发布Vert.x3.0.0-final越来越近了,Vert.x用户组的粉丝们近期已经迫不及待地在宇宙中心(注:北京五道口)组织了一次Vert.x中国用户组Meetup,针对Vert.x工程化开发问题以及Vert.x3新特性展开了探讨。Vert.x(http://vertx.io/)是一个基于JVM、轻量级、高性能的应用平台,非常适用于最新的移动端后台、互联网、企业应用架构。Vert.x基于全异步Java服务器Netty,并扩展出了很多有用的特性。Vert.x的亮点有:同时支持多种编程语言——目前已经支持了Java、JavaScript、Ruby、Python、Groovy、Clojure、Ceylon等。对程序员来说,直接好处就是可以使用各种语言丰富的LIB,同时也不再为编程语言选型而纠结;异步无锁编程——经典的多线程编程模型能满足很多Web开发场景,但随着移动互联网并发连接数的猛增,多线程并发控制模型性能难以扩展,同时要想控制好并发锁需要较高的技巧,目前Reactor异步编程模型开始跑马圈地,而Vert.x就是这种异步无锁编程的一个首选;对各种IO的丰富支持——目前Vert.x的异步模型已支持TCP、UDP、FileSystem、DNS、EventBus、Sockjs等;极好的分布式开发支持——Vert.x通过EventBus事件总线,可以轻松编写分布式解耦的程序,具有很好的扩展性;生态体系日趋成熟——Vert.x归入Eclipse基金会门下,异步驱动已经支持了Postgres、MySQL、MongoDB、Redis等常用组件,并且有若干Vert.x在生产环境中的应用案例。Reactor模式和传统Java框架的多线程模型相比,Vert.x Netty是
Reactor模式的Java实现。考古了一下Reactor模式,
其理论最早由Washington University的Douglas C.
Schmidt教授在1995年提出,在《Proactor - An Object
Behavioral Pattern for Demultiplexing and Dispatching
Handlers for Asynchronous Events 》这篇论文中做了
完整介绍。&图1-6是对其关键原理部分展开分析。图1 一个经典Web Server在收到Web浏览器请求后的处理过程图2 一个经典Web Server使用多线程模型,并发处理来自多个Web浏
览器的请求图3 Web浏览器连接到一个Reactor模式的Web Server处理过程。利
用了Initiation Dispatcher组件,把耗时的IO操作事件注册到Initiation
Dispatcher组件图4 Web浏览器访问一个Reactor模式的Web Server处理过程。耗时IO
操作由其它线程执行,IO执行完成后通知Initiation Dispatcher,再回到
Http Handler执行图5 Web浏览器连接一个Proactor模式的Web Server处理过程。和Reactor的主要区别是耗时IO操作交给操作系统异步IO库执行(例如
GNU/Linux aio),操作系统异步IO库执行完毕后,通过异步IO通知机制(例如epoll)触发Completion Dispatch,再交给Http Handler执行图6 Web浏览器访问一个Proactor模式的Web Server处理过程。和Reactor的主要区别是耗时IO操作交给操作系统异步IO库执行(例如
GNU/Linux aio),操作系统异步IO库执行完毕后,通过异步IO通知机制(例如epoll)触发Completion Dispatch,再交给Http Handler执行事实上,Vert.x/Netty的Reactor实现部分是在Netty
4.0如上述所示的代码中实现,和上述图中能对应的几个类是io.netty.channel.nio.NioEventLoop,io.netty.
channel.epoll.EpollEventLoop,java.nio.channels.spi.SelectorProvide。Vert.x3.0的更新
Vert.x3.0是对Vert.x2.x的重大升级,不仅仅是package从org.vertx到io.vertx的全面替换,一些重要的核心类也都做了破坏式的重构,几乎很难从vert.x2程序升级到vert.x3.0程序。建议新项目直接从Vert.x3.0开始。以下是Vert.x3的一些功能升级:Vert.x2.x中的模块体系去掉了。目前Vert.x3.0推荐用Maven的模块体系,当然不仅限于Maven;支持其他语言在Vert.x上的代码生成;Vert.x3.0项目构建,从Gradle改为Maven;为了更好地利用Java8的Lambdas表达式,只支持Java8;默认采用扁平的classpath结构;Verticle工厂方式简化;支持用编程的方式实例化Verticle、以及部署Verticle实例;当你阻塞Eventloop主线程时警告,阻塞Reactor主线程是一种错误的使用方式;移除了PlatformManager模块;集群管理可以用编程的方式调用支持集群节点之间的共享数据;完全重写了HTTPclient,更完善;WebSocketAPI改善;SSL/TLS的改善;Eventbus的API改善;支持Eventbus代理;增加了扩展项目集'ext'stack;增加了MongoService,支持MongoDB的纯异步驱动;实现ReactiveStreams;对reactive-streams的实现;支持Options类的使用,可以构造函数带参数进去;
更完整的样例工程。请见:综述综合来看,Vert.x3还未正式发布,但其主体功能已经开发完毕并趋于稳定,在应用开发中已经可以考虑使用。程序员在适应了异步回调式的编程方式后,相信很快可能感受到Reactor模式的性能红利和Vert.x的魅力。也许Vert.x会给Java和应用框架领域带来不一样的惊喜。白小勇作者简介:白小勇,炼石网络CipherGateway创始人、CEO,专注公有云安全。曾就职
于中国数码集团负责研发CMS、在用友工程负责研发ERP和代码
生成器平台、用友电信事业部研发平台总监,毕业于北京理工大
学。关注领域:密码应用、数据处理引擎技术、云平台、快速应
用开发平台。PS:对Vert.x感兴趣的开发者朋友,可以移步去,现场与大牛们零距离探讨技术问题,聆听Vert.x的最佳实践,您也可以成为vert.x模块的贡献者。本文选自程序员电子版2015年5月B刊,该期更多文章请查看。2000年创刊至今所有文章目录请查看。欢迎(含iPad版、Android版、PDF版)。
推荐阅读相关主题:
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章71被浏览12,620分享邀请回答162 条评论分享收藏感谢收起关于Java框架Vert.x的几点思考
发表于 17:18|
作者白小勇
摘要:Vert.x是一个基于JVM、轻量级、高性能的应用平台,非常适用于最新的移动端后台、互联网、企业应用架构。Vert.x基于全异步Java服务器Netty,并扩展出了很多有用的特性。
Vert.x简介在Java20周年之际,Java用户对Java的抱怨与日俱增,比如内存管理、笨重的JavaEE等。而Java依然在TIOBE编程语言排行榜上艰难的维持第一名的位置,随着一些新编程语言的兴起,这个领域目前呈现一种混战的态势。在这种背景下,Java届的小鲜肉框架——Vert.x于日发布了3.0-milestone5版本,距离计划6月22日发布Vert.x3.0.0-final越来越近了,Vert.x用户组的粉丝们近期已经迫不及待地在宇宙中心(注:北京五道口)组织了一次Vert.x中国用户组Meetup,针对Vert.x工程化开发问题以及Vert.x3新特性展开了探讨。Vert.x(http://vertx.io/)是一个基于JVM、轻量级、高性能的应用平台,非常适用于最新的移动端后台、互联网、企业应用架构。Vert.x基于全异步Java服务器Netty,并扩展出了很多有用的特性。Vert.x的亮点有:同时支持多种编程语言——目前已经支持了Java、JavaScript、Ruby、Python、Groovy、Clojure、Ceylon等。对程序员来说,直接好处就是可以使用各种语言丰富的LIB,同时也不再为编程语言选型而纠结;异步无锁编程——经典的多线程编程模型能满足很多Web开发场景,但随着移动互联网并发连接数的猛增,多线程并发控制模型性能难以扩展,同时要想控制好并发锁需要较高的技巧,目前Reactor异步编程模型开始跑马圈地,而Vert.x就是这种异步无锁编程的一个首选;对各种IO的丰富支持——目前Vert.x的异步模型已支持TCP、UDP、FileSystem、DNS、EventBus、Sockjs等;极好的分布式开发支持——Vert.x通过EventBus事件总线,可以轻松编写分布式解耦的程序,具有很好的扩展性;生态体系日趋成熟——Vert.x归入Eclipse基金会门下,异步驱动已经支持了Postgres、MySQL、MongoDB、Redis等常用组件,并且有若干Vert.x在生产环境中的应用案例。Reactor模式和传统Java框架的多线程模型相比,Vert.x Netty是
Reactor模式的Java实现。考古了一下Reactor模式,
其理论最早由Washington University的Douglas C.
Schmidt教授在1995年提出,在《Proactor - An Object
Behavioral Pattern for Demultiplexing and Dispatching
Handlers for Asynchronous Events 》这篇论文中做了
完整介绍。&图1-6是对其关键原理部分展开分析。图1 一个经典Web Server在收到Web浏览器请求后的处理过程图2 一个经典Web Server使用多线程模型,并发处理来自多个Web浏
览器的请求图3 Web浏览器连接到一个Reactor模式的Web Server处理过程。利
用了Initiation Dispatcher组件,把耗时的IO操作事件注册到Initiation
Dispatcher组件图4 Web浏览器访问一个Reactor模式的Web Server处理过程。耗时IO
操作由其它线程执行,IO执行完成后通知Initiation Dispatcher,再回到
Http Handler执行图5 Web浏览器连接一个Proactor模式的Web Server处理过程。和Reactor的主要区别是耗时IO操作交给操作系统异步IO库执行(例如
GNU/Linux aio),操作系统异步IO库执行完毕后,通过异步IO通知机制(例如epoll)触发Completion Dispatch,再交给Http Handler执行图6 Web浏览器访问一个Proactor模式的Web Server处理过程。和Reactor的主要区别是耗时IO操作交给操作系统异步IO库执行(例如
GNU/Linux aio),操作系统异步IO库执行完毕后,通过异步IO通知机制(例如epoll)触发Completion Dispatch,再交给Http Handler执行事实上,Vert.x/Netty的Reactor实现部分是在Netty
4.0如上述所示的代码中实现,和上述图中能对应的几个类是io.netty.channel.nio.NioEventLoop,io.netty.
channel.epoll.EpollEventLoop,java.nio.channels.spi.SelectorProvide。Vert.x3.0的更新
Vert.x3.0是对Vert.x2.x的重大升级,不仅仅是package从org.vertx到io.vertx的全面替换,一些重要的核心类也都做了破坏式的重构,几乎很难从vert.x2程序升级到vert.x3.0程序。建议新项目直接从Vert.x3.0开始。以下是Vert.x3的一些功能升级:Vert.x2.x中的模块体系去掉了。目前Vert.x3.0推荐用Maven的模块体系,当然不仅限于Maven;支持其他语言在Vert.x上的代码生成;Vert.x3.0项目构建,从Gradle改为Maven;为了更好地利用Java8的Lambdas表达式,只支持Java8;默认采用扁平的classpath结构;Verticle工厂方式简化;支持用编程的方式实例化Verticle、以及部署Verticle实例;当你阻塞Eventloop主线程时警告,阻塞Reactor主线程是一种错误的使用方式;移除了PlatformManager模块;集群管理可以用编程的方式调用支持集群节点之间的共享数据;完全重写了HTTPclient,更完善;WebSocketAPI改善;SSL/TLS的改善;Eventbus的API改善;支持Eventbus代理;增加了扩展项目集'ext'stack;增加了MongoService,支持MongoDB的纯异步驱动;实现ReactiveStreams;对reactive-streams的实现;支持Options类的使用,可以构造函数带参数进去;
更完整的样例工程。请见:综述综合来看,Vert.x3还未正式发布,但其主体功能已经开发完毕并趋于稳定,在应用开发中已经可以考虑使用。程序员在适应了异步回调式的编程方式后,相信很快可能感受到Reactor模式的性能红利和Vert.x的魅力。也许Vert.x会给Java和应用框架领域带来不一样的惊喜。白小勇作者简介:白小勇,炼石网络CipherGateway创始人、CEO,专注公有云安全。曾就职
于中国数码集团负责研发CMS、在用友工程负责研发ERP和代码
生成器平台、用友电信事业部研发平台总监,毕业于北京理工大
学。关注领域:密码应用、数据处理引擎技术、云平台、快速应
用开发平台。PS:对Vert.x感兴趣的开发者朋友,可以移步去,现场与大牛们零距离探讨技术问题,聆听Vert.x的最佳实践,您也可以成为vert.x模块的贡献者。本文选自程序员电子版2015年5月B刊,该期更多文章请查看。2000年创刊至今所有文章目录请查看。欢迎(含iPad版、Android版、PDF版)。
推荐阅读相关主题:
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章}

我要回帖

更多关于 vert.x中国用户组 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信