[英]Netty based non-blocking REST framework
我正在開發一個需要高可伸縮性的RESTfull應用程序。 我正在考慮基於Netty的RESTfull應用程序框架。 我瀏覽了一些可用的選項,並嘗試將它們作為非阻塞實現提供。 以下是我的發現:
在得到上述發現之前,我想使用一些隨時可用的框架並更快地完成工作。
我知道這是一個基於意見的問題。 但是,我仍然非常需要幫助為我的應用程序選擇正確的框架。 如果以防萬一,沒有基於Netty的REST框架:在我的應用程序中使用基於Netty的低級NIO代碼是否明智? 任何幫助贊賞。 提前致謝。
如果你真的想要非阻塞,你需要從頭開始進行非阻塞,並擁有適當的REST客戶端 。 否則,如我的評論中所述,性能差異可以忽略不計,並且在許多情況下NIO(帶線程共享的Netty)更糟糕。
我知道只有兩個庫從頭開始進行非阻塞Vert.x和一些Finagle (它缺少其他東西,如非阻塞數據訪問)。
您還應該了解可以使用JAX-RS支持NIO的Tomcat和其他各種servlet容器。 問題是,即使支持NIO,它仍然是每個請求的單個線程。 只有Play,Finagle,Vert.x和純Netty(不管NIO)支持不同的共享線程模型,因此具有不同的並發機制。
這是我知道的REST應用程序的微框架列表:
請隨時評論答案 - 我會更新答案以添加更多內容。
你看過Play嗎?
看來你傾向於使用Netty但是如果你願意環顧一下非常簡單的Grizzly + Jersey設置可能會表現得很好。 哎呀,一個簡單的Glassfish 4.0 JAX-RS應用程序也可以運行得很好。
您可以在Spring Framework 4.2.5.RELEASE中查看AsyncRestTemplate 。 它可以在Netty之上使用。
注意:默認情況下,AsyncRestTemplate依賴於標准JDK工具來建立HTTP連接。 您可以通過使用接受AsyncClientHttpRequestFactory的構造函數切換到使用不同的HTTP庫,例如Apache HttpComponents,Netty和OkHttp。
還有一個框架使用Netty和RxJava,它叫做datamill
如果您對使用功能性反應式風格構建Web應用程序感興趣,那么應該考慮它。
Spring 5附帶了一個名為WebFlux的反應式Web框架。 您可以選擇Netty或Undertow等多個服務器。 一個反應性非阻塞WebClient也被添加到Spring,它也支持反應性Mongo,Redis和Cassandra(我想更多即將推出)。
春天的引導,“春天的觀點”,也將獲得基於Spring 5的新版本(2.0)。在撰寫本文時,它預計將在2月份發布。
有關Spring的反應堆棧的更多信息: https : //docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html
Undertow 3.0將成為Netty(而不是XNIO)的首選 。 一個完美,超輕,簡單的API,用於構建REST API服務器之類的應用程序。 我幾乎用於任何Java微服務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.