Vert.x——基于JVM的高性能响应式开发框架

Posted QCon

tags:

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

今年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——基于JVM的高性能响应式开发框架


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


Vert.x技术原理


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


基本技术原理如图:

Vert.x——基于JVM的高性能响应式开发框架


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


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


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


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


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


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


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


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


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


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


Vert.x——基于JVM的高性能响应式开发框架


在QCon上海,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相关内容。


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


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


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



Vert.x——基于JVM的高性能响应式开发框架



QCon上海2018


一年一度的QCon上海站将于2018年10月18-20日在上海宝华万豪酒店召开,下面是您可能感兴趣的话题,点击“阅读原文”查看大会详情。


《构建Java API的艺术:Do's and Don'ts

讲师:前Oracle Java团队技术LeaderJonathan Giles

作为Java开发者,我们都是站在巨人的肩膀上,使用其他人开发的API,从而走的更远。有时我们也要提供自己的API供其他人使用。构建Java API也不是没有风险的,我们必须非常熟悉语言特性,必须理解破坏兼容性的影响,必须担负起创建完美的文档等责任,还有最重要的,我们必须保持克制。


Jonathan Giles将带来的这场演讲,将向开发者分享如何构建自己的API,不管是内部使用、开源项目还是商用库。重点谈的也是构建Java API,而不是REST API或其他内容。Jonathan有十多年的Java API构建经验,他最初在Sun和Oracle的Java团队,参与了 Java 7、8、9和10等版本的开发工作;最近他加入微软担任云开发者布道师,和工程师团队紧密协作,改进Azure上的Java API。


演讲将分享开发者应该遵循的技巧,以及应该避免的问题。


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

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

Vert.x 入门实战

基于Vert.x和RxJava 2构建通用的爬虫框架

vert.x详细介绍,全异步框架

Vert.x入门到实战—实现钉钉机器人内网穿透代理

JVM上的Reactive套件Vert.x启动过程源码解析