2017-07-20 31 views
3

Vert.x和Netty有什麼區別?爲什麼要選擇Netty而不是Vert.x?Vert.x和Netty有什麼區別?

它們都是爲高負載I/O設計的事件驅動,非阻塞和異步框架。

Vert.x基於多反應堆模式(多線程JVM上的節點樣式事件循環),但Netty使用攔截鏈模式。 當攔截鏈模式比多反應堆模式有什麼優點時?

我只是快速瀏覽Netty的文檔,但似乎Vert.x對Netty有一些額外的功能。即Vertx是一個獨立的服務器,它是一個多邊交易平臺,提供HA和集羣開箱即用。

另外Vert.x比Netty有更好的基準測試。

P.S.免責聲明 - 我非常欣賞Vert.x,並不熟悉Netty。所以通過詢問Why should one ever prefer Netty over Vert.x?我只是想比較兩者。

+1

有關相關問題,請訪問tech.kinja.com/ http://tech.kinja.com/interview-with-norman-maurer-netty上netty和vertx的一些更精細的細節的有趣閱讀鏈接。 vert-x-1119968136 ref https://stackoverflow.com/questions/23780059/how-does-vert-x-achieve-superior-performance-compared-to-netty – MikeRoger

回答

13

區別是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> 

而Netty的版本Vert.x 3.5.0-SNAPSHOT是:4.1.8.Final

Vert.x是一個完整的工具包,並在上面可插拔模塊的生態系統Netty用於在JVM之上構建被動應用程序。