vertx

目前最快的 Java 框架居然是它?真的最快,秒射~

℡╲_俬逩灬. 提交于 2020-02-23 09:13:14
如果您搜索“ 最佳网络框架 ”,您可能会偶然发现Techempower基准测试,其中排名超过300个框架,在那里你可能已经注意到 Vert.x是排名最高的 。 Vert.x是一个多语言 Web 框架,它支持 Java ,Kotlin,Scala,Ruby和Javascript支持的语言之间的共同功能。无论语言如何,Vert.x都在Java虚拟机(JVM)上运行。模块化和轻量级,它面向微服务开发。 Techempower基准测试衡量从数据库更新,获取和交付数据的性能。每秒提供的请求越多越好。在这种涉及很少计算的IO场景中,任何非阻塞框架都会有优势。近年来,这种范式几乎与Node.js不可分割,Node.js通过其单线程事件循环来推广它。 与Node类似,Vert.x运行单个事件循环。但Vert.x也利用了 JVM 。Node运行在单个核心上,而Vert.x维护的线程池大小可以与可用核心数相匹配。凭借更强的并发支持,Vert.x不仅适用于IO,也适用于需要并行计算的CPU繁重流程。 然而,事件循环只是故事的一半。另一半与Vert.x几乎没有关系。Java必备的 15 个框架,推荐看下。 要连接到数据库,客户端需要连接器驱动程序。在 Java 领域,Sql最常见的驱动程序是JDBC。问题是,这个驱动程序阻塞了。它在套接字级别阻塞。一个线程总会卡在那里,直到它返回一个响应。 毋庸置疑

io.vertx.core.impl.BlockedThreadChecker 警告: Thread Thread[vert.x-eventloop-thread-0,5,main] has been blocked VertxException: Thread blocked

做~自己de王妃 提交于 2020-02-02 02:57:47
io.vertx.core.impl.BlockedThreadChecker 警告: Thread Thread[vert.x-eventloop-thread-0,5,main] has been blocked for 2204 ms, time limit is 2000 二月 02, 2020 1:10:01 上午 io.vertx.core.impl.BlockedThreadChecker 警告: Thread Thread[vert.x-eventloop-thread-0,5,main] has been blocked for 3210 ms, time limit is 2000 二月 02, 2020 1:10:02 上午 io.vertx.core.impl.BlockedThreadChecker 警告: Thread Thread[vert.x-eventloop-thread-0,5,main] has been blocked for 4210 ms, time limit is 2000 二月 02, 2020 1:10:03 上午 io.vertx.core.impl.BlockedThreadChecker 警告: Thread Thread[vert.x-eventloop-thread-0,5,main] has been blocked

Vertx的命令行

偶尔善良 提交于 2020-01-24 04:23:11
IntelliJ----创建一个运行配置(Application), 用io.vertx.core.Launcher类作为主类,在程序参数输入:run your-verticle-fully-qualified-name--redeploy=**/*.class --launcher-class=io.vertx.core.Launcher。为了触发重布署,需要显示生成项目或者模块(Build menu->Make project)。 run your-verticle-fully-qualified-name--redeploy=**/*.class --launcher-class=io.vertx.core.Launcher Vertx的命令行 vertx命令被用于命令行与Vert.x进行交互。这是在运行Vert.x的 verticle的主要方式。为了运行命令行,需要下载并安装Vert.x发行版,并添加安装路径中的bin路径到PATH环境变量。同时必须确认安装了Java8的JDK,并在命令行可执行。 注意:需要JDK是为了支持运行时编译java代码。 运行Verticles 可以使用vertx run命令从命令行直接运行一个原生的Vert.x veticles。有一两个run命令的例子。 vertx run my-verticle.js (1) vertx run my

vertx-jersey

早过忘川 提交于 2020-01-24 04:22:59
允许 在vert.x中 创建JAX-RS Jersey 资源。 入门 将vertx-jersey依赖项添加到您的项目中 <dependency> <groupId>com.englishtown.vertx</groupId> <artifactId>vertx-jersey</artifactId> <version>4.7.0</version> </dependency> 有关 入门, 请参见 maven-simplest 。 还有其他 示例模块, 涵盖:注入,过滤器,序列化,摇动等。 有多种方法启动Jersey服务器: 1.运行vertx-jersey即服务 作为服务运行可能是最简单的入门方法。 在命令行中: vertx run service:com.englishtown.vertx:vertx-jersey:4.7.0 -conf config.json 以编程方式: vertx.deployVerticle("service:com.englishtown.vertx:vertx-jersey:4.7.0", config); 请参阅 maven-service 示例。 注意:作为服务运行时, vertx-hk2 必须 位于类路径上。 2.运行垂直 您可以从命令行运行JerseyVerticle,而不是作为服务运行: vertx run java-hk2:com

Kotlin & Vertx 构建web服务

孤街醉人 提交于 2020-01-11 07:40:25
感想 Kotlin 是一门好语言,值得大家了解一下。 Vertx 是一个好框架,也值得大家了解一下。 Kotlin 写过js,也写过一点点go,主力一直是java。用了kotlin,貌似找到了常用语言的平衡点了。 Kotlin 拥有一些偏函数式的语法(java8 也引入了一些),提供了相当多便捷的api与一些高阶函数。从两天的试用,以及今天搞得这个 Vertx web 项目,从中体会到最爽的有两点: 支持“带接收者得函数字面值”(允许你直接指定函数的receiver的类型)这一特性。这个特性,在go里面经常看到。然而,java没有,java8也没有... 支持扩展函数(或许是我见识短,这功能爆炸了) 一直很期待可以指定receiver这个功能。有了这个特性,那么写的函数,可以直接被调用者使用。 Vertx vertx 风格和node的express框架思想一致的,换了一种java的实现。不得不说,node的express 启发了很多其他语言的web框架设计。java的vertx,以及go里面的很多web框架(martin...),很多都有express的影子(难道是我先入为主?) 相比传统的基于Servlet的java web框架,vertx这种基于封装底层通信的框架,在速度上和内存占用上比较有优势。曾经为了在768M内存的docker容器上跑web应用

Vertx简介

北慕城南 提交于 2020-01-11 02:31:29
今天看了一篇很不错的关于Vertx的简介,转载下。 原文链接:http://www.csdn.net/article/2015-12-21/2826533?utm_source=tuicool&utm_medium=referral Vert.x的由来 Vert.x诞生于2011年,当时叫node.x,不过后来因为某些原因改名位Vert.x。经过三年多的发展,现在已经到了3.2版本,社区也越来越活跃,在最新的官网Vertx.io上,作者用一句话介绍了它,JVM上的Reative开发套件。Vert.x目前是见过最功能最强大,第三方库依赖最少的Java框架,它只依赖Netty4以及Jacskon,另外如果你需要建立分布式的Vert.x则再依赖HazelCast这个分布式框架,注意Vert.x3必须基于Java8。由于基于JVM,所以Vert.x可以用其他语言来实现你的业务。默认官方维护的语言是Groovy,JavaScript以及 JRuby。 Vert.x是一个异步无阻塞的网络框架,其参照物是node.js。基本上node.js能干的事情,Vert.x都能干。Vert.x利用Netty4的EventLoop来做单线程的事件循环,所以跑在Vert.x上的业务不能做CPU密集型的运算,这样会导致整个线程被阻塞。 图1是一个简单的通过Vert.x起HTTP服务的例子(Java实现)

使用Vertx构建微服务

孤人 提交于 2020-01-08 08:17:37
Vertx Vert.x is a tool-kit for building reactive applications on the JVM.(Vertx是运行在JVM上用来构建reactive application的工具集) Vertx Design 响应式的(Responsive):一个响应式系统需要在合理的时间内处理请求。 弹性的(Resilient):一个响应式系统必须在遇到异常(崩溃,超时, 500 错误等等)的时候保持响应的能力,所以它必须要为异常处理 而设计。 可伸缩的(Elastic):一个响应式系统必须在不同的负载情况下都要保持响应能力,所以它必须能伸能缩,并且可以利用最少的资源来处理负载。 消息驱动(Message driven):一个响应式系统的各个组件之间通过 异步消息传递 来进行交互。 支持多种语言:只要能运行在JVM上的语言,基本都支持。 简单的并发模型:就像写单线程代码一样简单,多线程并发由Vertx控制。 支持Event Bus:在同一个vertx集群,各个verticle 实例间可以通过event bus通信。同时也支持跨进程的TCP Event Bus ( tcp-eventbus-bridge ) Vertx与Netty的关系:Vertx使用Netty处理所有的IO。 Vertx 术语 Verticle Vertx部署和运行的代码

vertx打成jar包发布工程,访问静态页面

帅比萌擦擦* 提交于 2020-01-08 00:45:11
1:添加pom依赖,配置打包插件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.li</groupId> <artifactId>vertxJarPackTest</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <dependencies> <!-- vertx --> <dependency> <groupId>io.vertx</groupId> <artifactId>vertx-core</artifactId> <version>3.5.0</version> </dependency> <dependency> <groupId>io.vertx</groupId> <artifactId>vertx-web<

记录vert.x的几个BUG

浪尽此生 提交于 2019-12-31 19:29:24
vert.x本身也有一些bug,用的过程当中发现了,一定会去找到根本原因,能修复的就直接修复了,修复不了的就想办法跳过。 我这边用的是3.5.2。版本有点旧了,至于新的有没有修复,我也就不去探究了,简单记录一下。 注意:修复框架的代码,一定要做好注释和笔记,以应对升级框架版本的情况。 HTTP请求方法不正确的时候状态码是404,应该是405 发布一个接口,定义的是get,你却用post调用,vertx返回的是404,准确一些应该是405。我直接说怎么修复的吧。 第一个类:io.vertx.ext.web.impl.RouteImpl 具体的方法是: synchronized boolean matches ( RoutingContextImplBase context , String mountPoint , boolean failure ) 。 大约在230行。 这个方法是用来判断当前请求是否匹配你定义发布的接口,非常关键的方法。 有下面一行代码: if ( ! methods . isEmpty ( ) && ! methods . contains ( request . method ( ) ) ) { return false ; } 我发布了一个路由,而且定义了一些方法,但是你请求的方法并不在里面,直接返回false。外层在处理的时候,它就会认为没有找到

Vert-x-通过异步的方式使用JDBC连接SQL

我的未来我决定 提交于 2019-12-06 21:09:37
欢迎关注 http://quanke.name/ 交流群: 231419585 转载请注明出处,谢谢 在这篇文章中,我们将会看到怎样在vert.x应用中使用 HSQL ,当然也可以使用任意JDBC,以及使用vertx-jdbc-client提供的异步的API,这篇文章的代码在 github 上。 异步? vert.x一个很重要的特点就是它的异步性。使用异步的API,不需要等结果返回,当有结果返回时,vert.x会主动通知。为了说明这个,我们来看一个简单的例子。 我们假设有个 add 方法。一般来说,会像 int r = add(1, 1) 这样来使用它。这是一个同步的API,所以你必须等到返回结果。异步的API会是这样: add(1, 1, r -> { /*do something with the result*/}) 。在这个版本中,你传入了一个Handler,当结果计算出来时才被调用。这个方法不返回任何东西,实现如下: public void add(int a, int b, Handler<Integer> resultHandler) { int r = a + b; resultHandler.handle(r); } 为了避免混淆概念,异步API并不是多线程。像我们在add例子里看到的,并没有涉及多线程。 异步JDBC 看了一些基本的异步的API,现在了解下