java - Vert.x 和 Netty 有什么区别?

标签 java multithreading netty nio vert.x

<分区>

Vert.x 和 Netty 有什么区别?为什么人们应该更喜欢 Netty 而不是 Vert.x?

它们都是为高负载 I/O 设计的事件驱动、非阻塞和异步框架。

Vert.x 基于多 react 器模式(多线程 JVM 上的 Node 样式事件循环),但 Netty 使用拦截器链模式。 什么时候拦截器链模式比多 react 器模式有任何优势?

我只是快速浏览了一下 Netty 的文档,但似乎 Vert.x 比 Netty 有一些额外的功能。 IE。 Vertx 是一个独立的服务器,它是一个多语言的,提供开箱即用的 HA 和集群。

此外,Vert.x 的基准测试也比 Netty 好一点。

附言免责声明 - 我非常欣赏 Vert.x,但不熟悉 Netty。因此,通过询问 为什么人们更喜欢 Netty 而不是 Vert.x? 我只是想比较两者。

最佳答案

不同之处在于 Vert.x 基于 Netty。如果你看一下 pom.xmlvertx-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 的 Netty 版本 3.5.0-SNAPSHOT 是:4.1.8.Final

Vert.x是 Netty 之上的可插拔模块的完整工具包和生态系统,用于在 JVM 之上构建响应式(Reactive)应用程序。

关于java - Vert.x 和 Netty 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45214442/

相关文章:

java - Netty 和预定执行器服务

java - 两种类型的向下转型之间的区别

c# - Application.LoadComponent 的线程错误( key 已存在)

linux - 缓存一致性及其解决方案

c++ - 在命名空间 std 中找不到 GCC std::thread

java - 我应该如何配置 Netty 来处理高请求量?

http - Netty http 服务器响应

java - 只有最后一个元素在 listView 中多次显示

java - 当我点击运行时,eclipse 总是走错路径

java - 如何在多线程环境中生成PreparedStatement?