我有一個在Play 2應用程序中實現的API服務,目前api可以在5臺服務器上每秒處理5-7000個請求。我最近對Spray.IO和Play2進行了基準測試,幾乎看到了簡單http請求的3倍性能。spray.io http服務器裏面Play2應用程序上下文
我不希望重新實現Spray中的所有內容,但是如果我可以以某種方式在我的Play應用程序中嵌入噴霧式HTTP服務器,而不是將其用於服務器http請求。
這可能嗎?這裏有一個例子嗎?
我有一個在Play 2應用程序中實現的API服務,目前api可以在5臺服務器上每秒處理5-7000個請求。我最近對Spray.IO和Play2進行了基準測試,幾乎看到了簡單http請求的3倍性能。spray.io http服務器裏面Play2應用程序上下文
我不希望重新實現Spray中的所有內容,但是如果我可以以某種方式在我的Play應用程序中嵌入噴霧式HTTP服務器,而不是將其用於服務器http請求。
這可能嗎?這裏有一個例子嗎?
我可以說噴霧實際上是是是基於網頁開發的最快的基於JVM的工具包,您可以查看官方blog上的最新基準。
至於這個問題。如果您想爲小型HTTP服務器編寫自己的實現,那麼您應該檢查spray-can http based api,spray-io只是Akka IO和Java NIO之間的一個層。我並不擅長Play,但作爲一種方式,我會提倡使用Spray http服務器創建多構建sbt配置或單獨項目,並通過REST API連接它們。
def receive = {
case HttpRequest(GET, Uri.Path("/ping"), _, _, _) =>
sender ! HttpResponse(entity = "PONG")
}
在遊戲方面,你應該使用阿卡或播放的路由文件:因爲它是基於阿卡演員在最簡單的情況會是什麼樣子在接收方法一堆案件
架構將是非常簡單的用於描述路線。
也檢查出噴霧routing api。實施和使用起來要容易得多,看起來與Spray可以給你的文件非常相似,但是更靈活和可讀。
噴霧還有很多非常詳細的例子在他們的Github repo:spray-can和spray-routing。
BTW噴霧團隊還提供播放模板引擎的前端,並把它稱爲Twirl所以移植你的應用程序噴霧不會花費太多時間
我們看到,播放速率以及一個完整的堆棧框架:
http://www.techempower.com/benchmarks/#section=data-r6&hw=i7&test=db&c=1&d=2&a=1
我們看到,有取捨,即你想要去的快,生產力較低的開發人員通常會開發人員的生產力方面。您需要知道Play是否會達到您的應用程序所要求的性能。
順便說一下,我們一直專注於並繼續專注於提高Play的性能。
我希望這有助於。
這個特定的終端對性能非常敏感(實時出價),它主要是一些數學/內存數據結構和Web服務。 – Lerchmo
其實,Play框架will soon be using Spray I/O是它的http serverices。 所以它看起來像你將能夠擁有兩全其美!
你知道框架是否真的是瓶頸嗎?當然,如果框架/ Web服務器速度很快,但對於普通應用程序來說,它更有助於彌補瓶頸的應用程序本身。最後,您總是需要進行分析以找到加速應用程序的機會,因此從分析開始,並且如果您發現某些操作似乎很慢,請報告。 – jrudolph