选择Vert.x的3个理由

Vert.x是用于JVM的轻量级高性能应用程序平台

Vert.x是用于JVM的轻量级高性能应用程序平台

现代Web应用程序和移动客户端的兴起重新定义了Web服务器的期望。 Node.js是第一个识别范式转换并提供解决方案的技术。

应用程序平台Vert.x借鉴了Node.js的一些创新,并使其在JVM上可用,将新鲜的想法与最复杂,最快的运行时环境之一结合在一起。 Vert.x附带了一系列令人兴奋的功能,这些功能对于开发Web应用程序的任何人都非常有趣。

非阻塞,事件驱动的运行时

Vert.x提供了非阻塞的 , 事件驱动的运行时。 如果服务器必须执行需要等待响应的任务(例如,从数据库请求数据),则有两种方法可以实现:阻塞和非阻塞。

传统方法是同步或阻塞调用。 程序流暂停并等待答案返回。 为了能够并行处理多个请求,服务器将在不同的线程中执行每个请求。 优点是相对简单的编程模型,但是如果线程数量变大,不利的一面是大量开销。

第二种解决方案是非阻塞调用。 调用者无需等待答案,而是继续执行,但是提供了一个回调,一旦数据到达,该回调将被执行。 这种方法需要一个(稍微)更复杂的编程模型,但开销却少得多。 通常,当需要并行处理大量请求时,非阻塞方法会带来更好的性能。

易于使用的并发性和可伸缩性

Vert.x应用程序由松散耦合的组件组成,可以对其进行重新排列以适应不断增长的性能要求

Vert.x应用程序由松散耦合的组件组成,可以对其进行重新排列以适应不断增长的性能要求

Vert.x应用程序是使用类似于Actor的并发模型编写的。 一个应用程序由几个独立运行的组件(即所谓的Verticles)组成。 一个Verticle运行单线程,并通过在全局事件总线上交换消息来与其他Verticles通信。

由于它们不共享状态,因此Verticles可以并行运行。 结果是编写多线程应用程序的一种易于使用的方法。 您可以创建几个负责同一任务的Verticles,并且运行时将在其中分配工作负载,这意味着您可以毫不费力地充分利用所有CPU内核。

顶点也可以分布在多台计算机之间。 这对于应用程序代码是透明的。 Verticles使用相同的机制进行通信,就好像它们将在同一台计算机上运行一样。 这使得扩展应用程序变得非常容易。

Vert.x支持JVM上最流行的语言。正在支持Scala和Clojure。

Vert.x支持JVM上最流行的语言。 正在支持Scala和Clojure。

多种语言

与许多其他应用程序平台不同,Vert.x是多语言的。 应用程序可以用几种语言编写。 甚至可以在同一应用程序中使用不同的语言。 此时,可以使用Java,Python,Groovy,Ruby和JavaScript,并且即将支持Scala和Clojure。

结论

Vert.x是一个相对较年轻的平台,因此其生态系统不如更成熟的平台丰富。 但是,对于最常见的任务,还有扩展可用。 Vert.x的优势令人惊讶。 它的无阻塞,事件驱动性质非常适合现代Web应用程序。 Vert.x使编写并发应用程序变得容易,该应用程序可以轻松地从一台低端计算机扩展到具有多个高端服务器的集群。 再加上您可以为JVM使用最流行的语言,并使Web开发人员梦想成真的事实!

参考:从Mike博客博客的JCG合作伙伴 Michael Heinrichs 选择Vert.x的3个理由 。

翻译自: https://www.javacodegeeks.com/2014/03/3-reasons-to-choose-vert-x.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/365142.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring和mybatis的整合开发(基于MapperScannerConfigurer的整合开发(适用于复杂项目,接口较多的情况))...

在实际项目中,Dao层会包含很多接口,这样会导致spring配置文件过于臃肿。这时就需要采用扫描包的形式来配置mybaits中的映射器。 采用MapperScannerConfigurer来实现。 MapperScannerConfigurer类在spring配置文件中可以配置以下几个属性: 1.b…

页面加载前执行函数

window.onpageshow function(){ var token gg.core.cookie.getValue("token"); console.log(token); if(token ""||token null){ window.location login.html; return; }};转载于:https://www.cnblogs.com/tuhazi/p/987825…

表格对角线两边打字_表格斜线一分为二怎么打字(excel斜杠分割表格打字)

在整理表格的时候,相信许多朋友都会涉及到表格斜线的制作。比如单斜线和双斜线来区分不同维度项目。下面我们就来学习一下,如何通过Excel快速来添加我们的表格斜线。案例一:两步快速制作单表格单斜线第一步:首先在单元格中依次输入…

FROONT – 超棒的可视化响应式网页设计工具

FROONT 是一个基于 Web 的设计工具,在浏览器中运行,使得各类可视化设计的人员都能进行响应式的网页设计,即使是那些没有任何编码技能的设计师。FROONT 使得响应式网页设计能够可视化操作,能够在浏览器中使用直观的拖放工具进行设计…

avalon.js 转义html,avalon模块的内建适配器

text bindings,第一个传参将强制转换为字符串,假值为"",然后变成目标节点的innerText!今天的天气为: $.require("ready,more/avalon", function(){var viewModel {myMessage: $.observable()};$.applyBindin…

参数化的JUnit测试

有时,您会遇到一个问题,就是尖叫使用“参数化”测试,而不是多次复制/粘贴相同的方法。 测试方法基本上是相同的,唯一改变的是传入的数据。在这种情况下,请考虑创建一个利用JUnit中的“ Parameterized ”类的测试用例。…

OO-第一单元总结

经过了前三次作业和两次实验的引导,我的编程思路在逐步从面向过程转向面向对象。也对面向对象有了初步的理解。虽然第一次实验由于自己没有及时完成导致没有提交过有些遗憾,但是第二次实验还是提交了几次的(虽然由于时间原因并没有做好本地测…

kafka数据 落盘_Kafka数据可靠性保证三板斧-ACK/ISR/HW

点击上方蓝色字体,选择“设为星标”回复”资源“获取更多资源点击右侧关注,大数据开发领域最强公众号!点击右侧关注,暴走大数据!为保证producer发送的数据,能可靠的发送到指定的topic,topic的每…

2013年五大主流浏览器 HTML5 和 CSS3 兼容性大比拼

转眼又已过去了一年,在这一年里,Firefox 和 Chrome 在拼升级,版本号不断飙升;IE10 随着 Windows 8 在去年10月底正式发布,在 JavaScript 性能和对 HTML5 和 CSS3 的支持方面让人眼前一亮。这篇文章给大家带来《五大主流…

一句话引发的思考 - synchronized/super

https://blog.csdn.net/cool__wang/article/details/52459380#commentBox 转载于:https://www.cnblogs.com/rainydayfmb/p/9883864.html

计算机科学方向的会议或期刊,计算机顶会和顶刊_计算机顶会_顶会

《计算机应用研究》正刊和增刊什么区别,是不是增刊不是正规的核心期刊,求...展开全部《计算机应用研究》是核心期刊,其增刊一年只出版一或两期,和月刊一样具有相同复的正式出版刊号。正刊和增刊的区别如下:1、目的用途…

PAT L3-007 天梯地图

https://pintia.cn/problem-sets/994805046380707840/problems/994805051153825792 本题要求你实现一个天梯赛专属在线地图,队员输入自己学校所在地和赛场地点后,该地图应该推荐两条路线:一条是最快到达路线;一条是最短距离的路线…

JavaFX中的塔防(4)

好的,到目前为止,我们已经创建了一个TileMap,将其显示在屏幕上,并使其在第一部分中可编辑。 在第二部分中,我们使用A *算法实现了攻击路径的计算,并使敌人跟随该路径。 在第三部分中,我们创建了…

Two.js – 为现代浏览器而生的 2D 绘图 API

Two.js 是面向现代 Web 浏览器的一个二维绘图 API。Two.js 可以用于多个场合:SVG,Canvas 和 WebGL,旨在使平面形状和动画的创建更方便,更简洁。 Two.js 有一个内置的动画循环,可搭配其他动画库。Two.js 包含可伸缩矢量…

apache arm 交叉编译_MacOS 下交叉编译的折腾笔记

这是这个系列 “折腾笔记” 的第一篇,希望能用更直白的方式去展现交叉编译的时候做了些什么。因此,这个教程并不是最佳实践,但是可以让小伙伴们有一个更直白的理解。之后,我会把笔记的重点放在 bazel 上交叉编译的最佳实践&#x…

python - 使用traceback获取详细的异常信息

try: 1/0except Exception,e: print e 输出结果是integer division or modulo by zero,只知道是报了这个错,但是却不知道在哪个文件哪个函数哪一行报的错。下面使用traceback模块 import tracebacktry: 1/0except Exception,e: traceback.print_exc() 输…

计算机科学研究生规划,2019计算机考研备考:计算机科学与技术研究方向及复习规划...

考研之路永远都不是轻松着度过的,想要在这条道路上稳稳妥妥的走完,并到达设立在远处的目标,了解目标专业的各项考研备考信息是第一步。新东方在线为大家整理了2019计算机考研备考:计算机科学与技术研究方向及复习规划,…

快速的远程服务测试

测试与远程服务交互的代码通常很困难。 有很多折衷因素会影响您可以编写哪些测试以及要编写的测试数量。 在大多数情况下,您对从服务中获取的数据的控制为零,这使得断言至少很难说。 不久前,我使用VCR库针对远程服务编写了一些Ruby测试。 VC…

树-二叉树、满二叉树和完全二叉树

树-二叉树、满二叉树和完全二叉树 二叉树的定义: (1)当n0时,为空树; (2)当n>0时,是由一个根结点和称为根结点的左、右子树构成,并且两颗子树互不相交。 满二叉树&…

Codrops 优秀教程:基于 CSS3 的全屏网页过渡特效

向大家分享一个来自 Codrops 的基于 CSS3 实现的全屏网页过渡特效。页面初始布局是四个盒子,点击其中一个会扩张到全屏,其它的会淡出隐藏;关闭当前视图的时候又恢复到初始状态。 您可能感兴趣的相关文章-prefix-free:帮你从 CSS 前…