Vert.x和Netty有什么区别?为什么人们更喜欢Netty而不是Vert.x?
它们都是为高负载I / O设计的事件驱动,非阻塞和异步框架。
Vert.x基于Multi-Reactor模式(多线程JVM上的Node风格事件循环),但Netty使用Interceptor Chain Pattern。 当Interceptor Chain Pattern比Multi-Reactor模式有任何好处时?
我只是快速浏览一下Netty的文档,但看起来Vert.x在Netty上有一些额外的功能。即Vertx是一个独立的服务器,它是一个多语言,提供HA和开箱即用的集群。
Vert.x也比Netty有更好的基准。
P.S。免责声明 - 我非常欣赏Vert.x,并且不熟悉Netty。因此,通过询问Why should one ever prefer Netty over Vert.x?
我只是想比较它们。
答案 0 :(得分:22)
不同之处在于Vert.x是基于 Netty的。如果你看一下pom.xml
中的vertx-core,你会发现:
<!-- We depend on the specific Netty dependencies not netty-all to reduce the size of fatjars -->
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-common</artifactId>
<version>${netty.version}</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-buffer</artifactId>
<version>${netty.version}</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-transport</artifactId>
<version>${netty.version}</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-handler</artifactId>
<version>${netty.version}</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-handler-proxy</artifactId>
<version>${netty.version}</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-codec-http</artifactId>
<version>${netty.version}</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-codec-http2</artifactId>
<version>${netty.version}</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-resolver</artifactId>
<version>${netty.version}</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-resolver-dns</artifactId>
<version>${netty.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
Vert.x 3.5.0-SNAPSHOT
的Netty版本为:4.1.8.Final
Vert.x是Netty之上的可插拔模块的完整工具包和生态系统,用于在JVM之上构建响应式应用程序。