Vert.x高性能的响应式开发框架

Posted 开源中间件

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vert.x高性能的响应式开发框架相关的知识,希望对你有一定的参考价值。

今年10月的QCon上海大会,我请来了Julien Viet,Vert.x项目开发Leader,在Java专题中做两个演讲。

届时他会给国内的开发者深入讲述Vert.x,一个高性能的基于Java响应式开发框架。


一 目前全球排名第一的高性能开发框架


把Vert.x称其为当前天下第一,并不夸张。

目前在计算机开发领域,有一个大家都认可的性能测试方案Techempower。 http://www.techempower.com/benchmarks/ 

它不限制语言,开发用的技术栈以及具体的实现方式,只要测试方法符合它的技术要求就可以。


从2013年开始,已经测试过16轮,很多各种语言的项目都取得过不错的成绩。

目前有六项性能测试类型:

  • JSON serialization(JSON序列化)

  • Single query(单行查询)

  • Multiple queries(多行查询)

  • Fortunes(一个比较符合业务的模型)

  • Data updates(数据更新)

  • Plaintext(纯文本)

这些测试能够很好的覆盖实际业务情况。


测试会在两种环境下运行,独立服务器和云计算环境,分别是一台Xeon 5120 CPU的强力服务器和微软的Azure云服务器。

在第16轮的测试中,Vert.x在涉及数据库访问的四项类型,即SingleQuery, MultipleQuery, Fortunes, DataUpdate中,独立服务器和云计算都取得了三项第一,一项第三的好成绩。

特别是在单行多行查询这两项,Vert.x居然能超出第二名30%到40%!

Vert.x高性能的响应式开发框架


我在第一次看到这个测试结果时,非常吃惊,甚至有些不相信,后来仔细阅读一些文章,讨论组,源码,最近和Julien沟通时才理解了背后的原因,能取得这样的好成绩实至名归。


二 Vert.x技术原理


Vert.x最初是红帽大牛TimFox受到Nodejs的启发,设计出一个基于Netty的高性能开发框架。


基本技术原理如图:

Vert.x内部有个核心EventBus,即事件总线,负责传递应用中不同组件产生的事件。


不同组件,也是工作单元,称为Verticle,持续的做好自己的工作,并通过EventBus和其他Verticle进行通信。这点也是Nodejs的精髓部分。


绝大多数Verticle需要确保自己不会阻塞,所以对于IO操作,如访问网络,查询数据库也都需要采用异步的方式,这点和经典事务方式非常不同。

Verticle之间不使用直接的方法调用,而是通过发送消息(事件)来进行通信,这里又和Akka的Actor模型很像。

通过上述原理实现的架构,整体是一个最有效率的运作体系。


目前Vert.x参与评测的技术方案中,访问数据库也不是使用标准的JDBC驱动,而是同一批工程师为Postgres数据库倾力打造的异步响应式驱动程序,能取得好成绩也是必然。


同时Vert.x还是一个非常友好的开发框架,充分融入了Java8的函数式编程方式,支持Rxjava2,gRPC等。

除了全异步调用方式,还很贴心的支持了同步模型,毕竟Java社区绝大多数三方库还主要是同步模型的。


Vert.x也支持集群方式,可以通过分布式缓存服务器,基于socket的消息复制等方式来扩展EventBus到其他分布式主机上。

目前,整个生态系统已经非常完备了。


三 QCon Shanghai大会Vert.x议题会讲什么


这次Julien会讲两个议题,

分别是 

  1. Reactive applications with Eclipse Vert.x (https://2018.qconshanghai.com/presentation/855) 

  2. Real-world HTTP performance benchmarking, lessons learned (https://2018.qconshanghai.com/presentation/856)


第一个议题会深入的介绍Vert.x这个框架,技术架构原理,对多语言的支持,整个生态,微服务设计和实现,以及Rxjava2相关内容。

第二个议题对性能进行深入分析讲解,是如何从200多个包括C语言的高性能框架中一路拼杀,终于脱颖而出的。


我必须骄傲的说,两场深入的Vert.x技术讲座,放在全世界范围都是第一次。Julien本人平时也不太外出宣讲,他能答应介绍一场我已经很高兴了,当我们在讨论有些非常棒的内容可能没法在40多分钟讲述清楚时,他提出可以讲两场,我实在很兴奋。


这是一个绝佳的学习和交流机会,希望国内关注Java微服务,高性能中间件设计的朋友们不要错过。


即使是缺席QConShanghai,也会有演讲稿和视频(一般都会有)后续放出,我也会找时间整理资料和撰写技术文章来让开发者更好的了解这个利器。


以上是关于Vert.x高性能的响应式开发框架的主要内容,如果未能解决你的问题,请参考以下文章

Vert.x 入门实战

Vert.x 响应式 Web 框架介绍使用

为何现在响应式编程在业务开发微服务开发不普及

深入浅出Vert.x架构

响应式Web开发框架DevExtreme v21.1

移动端Web开发 响应式布局及Bootstrap框架使用