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%!
我第一次看到这个测试结果时,非常吃惊,甚至有些不相信,后来仔细阅读一些文章、讨论组和源码,最近也和Julien做了沟通,才理解了背后的原因,能取得这样的好成绩确实实至名归。
Vert.x技术原理
Vert.x最初是红帽大牛TimFox受到Node.js的启发,设计出的一个基于Netty的高性能开发框架。
基本技术原理如图:
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到其他分布式主机上。
目前,整个生态系统已经非常完备了。
在QCon上海,Vert.x议题会讲什么
这次Julien会讲两个议题,分别是:
Reactive applications with Eclipse Vert.x (https://2018.qconshanghai.com/presentation/855)
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微服务,高性能中间件设计的朋友们不要错过。
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的高性能响应式开发框架的主要内容,如果未能解决你的问题,请参考以下文章