Vert.x是一个基于JVM、轻量级、高性能的应用平台,非常适用于最新的移动端后台、互联网、企业应用架构。Vert.x基于全异步Java服务器Netty,并扩展出了很多有用的特性。日前,笔者采访了刘小溪,请他分享对Vert.x的实战心得。(推荐阅读: 如何基于Vert.x实现远程调用? )
值得一提的是,由CSDN举办的 SDCC 2015 (中国软件开发者嘉年华) 将于11月19-21日隆重召开,届时,Maxleap.com高级Java工程师刘小溪将在编程语言专场分享《Vert.x3的异步框架实战》。欢迎前来现场聆听,
Maxleap.com高级Java工程师 刘小溪
CSDN:首先请自我介绍下自己,以前目前所负责的领域以及所在公司。
刘小溪: 我是Maxleap的高级开发工程师,喜欢倒腾一些有意思的技术框架,对新的技术以及语言非常有兴趣, 以前在shopex担任架构师,目前在Maxleap负责基础架构以及服务框架这块技术,同时也会对Vert.x的社区提供一些开源上的支持。
Maxleap是一家提供一站式移动应用后端服务的初创公司,致力于帮助企业快速发展移动应用业务。 不同于国内外其他后端云服务提供商,MaxLeap云服务涵盖移动应用业务的各个环节,从研发到运营,市场营销,用户管理及客户支持等方面,最大程度的帮助企业降低成本,加速上线并且优化运营。
CSDN:你是如何走上技术这条路的?对Java有着怎样的情怀?
刘小溪: 走上技术这条路应该是兴趣使然,而兴趣被激发应该是小时候玩游戏机产生的,玩久了就突然想知道这东西是怎么做出来的。 后来接触到计算机可以折腾的东西就更多了,自然而然就走上技术这条路。 对于Java其实没有太多的执着,选择什么语言开发,大部分时候取决于做什么东西,以及在什么样的Team。
比如偶尔写写一些CLI小工具,我会选择部署简单,零依赖的语言Golang,写一些内部监控,数据解析但又可以基于 JVM的脚本,我会选择Clojure这种函数式语言,因为这些脚本逻辑基本没有副作用,且对数据类型不敏感。 而我们团队主要使用Java8去实现业务,且依赖Vert.x这个JVM全异步通信框架。
CSDN:Java框架种类繁多,为何单单对 Vert.x情有独钟?
刘小溪: Java框架的确很多,很多Java框架甚至有些臃肿,且Jar包之间依赖复杂,这也不能全怪Java。毕竟Java对大型企业开发是比较友好的,企业开发优先关注业务实现复杂度以及代码可维护性,随后是性能。
Vert.x是一个纯技术性的框架,短小精悍,可以看成是JVM上的Node.js,最典型的就是他的全异步编程,对业务逻辑的割裂非常严重,但是性能却非常的出色,同时他只依赖Netty4与Jackson,如果需要使用集群模式可以考虑再引入Hazelcast/Zookeeper做分布式通信协调。
而我选择Vert.x是因为当时项目急需基于Netty4封装一个高性能的异步通信模块,自己写了一半发现还不如直接使用Vert.x来的方便,最后简单的通读了一遍Vert.x源码觉得自己可以hold住这个项目就使用了。
CSDN:Vert.x有哪些新特性?与其他的Java框架相比,Vert.x有哪些优缺点?
刘小溪: 我从Vert.x1就开始关注这个项目,一直到现在的Vert.x3.1,这三年间,Vert.x发展的非常快。
相比较老的版本,新版本在稳定性以及API友好上提升更大了。Vert.x将自己的Core独立出来,其余的模块可以单独的开发,从而形成一个Vert.x生态,比如Vert.x3.1里最有意思的模块就是vertx-sync,他使用了quasar这个基于JVM的fiber库,从而将异步回调代码变得更简单,基本可以转成传统的同步代码,当然这当中还是有些学习成本的。
Vert.x的优点是模块可插拔,全异步编程,分布式,IO无阻塞,低依赖,友好的API。 其缺点上面已经提到了:异步。 传统Java企业开发人员习惯了一个线程处理完成业务逻辑,以及Spring等框架提供的事务封装,反而会对这种异步编程比较感冒。另外一些第三方Java库并没有提供异步接口,这里如果要与Vert.x结合的话,需要自己做一层包装。 除此之外如果遇到复杂的业务你需要了解RxJava等Reactive框架,来重构你的业务。
CSDN:Vert.x的发展现状如何?社区的运营情况如何?
刘小溪: Vert.x在Java圈子里比较小众,很多人并不知道。Github上的start差不多已经有4100多。但是国外用的公司还是挺多的,比如英孚教育,以及jClarity,Hulu等。google group上的提问也非常多,目前有3名全职的Redhat开发人员负责这个项目,此外3.2的发布时间预计在圣诞节前。
CSDN:你目前还会关注哪些新技术?
刘小溪: 个人兴趣比较广泛,还没打算聚焦在某一个点上,因为我觉得我宽度还不够,所以基本我在公司会考虑全栈,比如React.js/om,存储最近也在看HDFS/HBase,然后分布式计算框架Spark也有涉及。DevOps也挺感兴趣,所以也在将公司的所有服务全部Docker化,并通过Mesos定义资源,Marathon来负责调度。 未来几年也会专注与某一个或者两个点上,全力挖深度。
CSDN:给学习Vert.x的开发者一些建议吧。
刘小溪: Vert.x的文档其实非常的丰富,也有大量的example可以参考,另外一些简单的模块也可以参考,对于异步编程比较感冒的同学,建议可以多请教前端开发人员或者Node.js的开发人员。 如果想再深入一点,可以学习Java8的CompletableFuture类,再复杂一点的涉及到Reactive编程的建议看看RxJava。 喜欢冒险的同学可以试试vertx-sync,但是建议先理解Fiber的概念,以及Quasar实现Fiber的原理以及方法。
总之我觉得学习一件新事物最简单的办法就是持续实践他,然后思考总结。
CSDN:在本次SDCC大会上想分享的话题是?
刘小溪: 本次大会我会与大家分享关于Vert.x3的一些实践,以及Maxleap是怎么使用Vert.x的。
CSDN:你最期待在本次SDCC 2015上听到哪些内容?
刘小溪: 比较期待分布式数据库,以及服务治理,架构等方面的内容,特别是一些在线项目的调优以及运维。
强大的讲师团队(部分)
由CSDN举办的 SDCC 2015中国软件开发者嘉年华 将于11月19-21日在北京举行,本次大会涵盖:新型数据库、编程语言、工具与平台、产品与设计、前端开发、算法、微信开发、架构实践、安全等九大分 论坛,届时国外知名讲师将分享所在领域的最佳实践。 【点击这里抢票】
相关报道: