欧美肥老太交性视频,欧美老年人做爰视频,欧美老妇免费做爰视频

    1. <code id="1cg5a"><em id="1cg5a"></em></code><tr id="1cg5a"></tr>

    2. <center id="1cg5a"></center>

      <code id="1cg5a"><em id="1cg5a"></em></code>
      網絡建站知識

      精準傳達 ? 價值共享

      洞悉互聯網前沿資訊,探尋網站營銷規律

      重慶網站建設|RESTful與java框架的性能比較

      作者:Smileby陌少羽 | 2017-09-16 08:23 |點擊:

      在微服務流行的今天,我們會從縱向和橫向分解代碼的邏輯,將一些獨立的無狀態的代碼單元實現為微服務,可以將它們發布到一些分布式計算單元或者Docker中,并在機能需要的時候及時地創建更多的服務單元。


      微服務是一個概念,并沒有劃定服務的格局,但是良多廠商和框架都不約而同的采用RESTful的架構,盡管也有一些其它的機能很好的RPC框架。


      如何在Java生態圈選擇一個輕量級的RESTful框架?可以參考一些其他人的經驗, 好比我翻譯的: 最好的8個 Java RESTful 框架。


      就我個人而言,我選擇框架的理由很簡樸:


       


      簡樸,輕量級


      機能好


      不亂,可靠


      易于開發和維護


      我會首選遵循Java規范(JSR339)的框架,輕量級,便于發布到Docker容器中。 所以我不會選擇Spring boot, Spring MVC, CXF等比較重的框架,也不會選擇純netty這樣的太過底層,還得實現路由等基本功能框架。


      由于追求輕量級,便于發布到docker容器中,我也不會考察JBOSS, Tomcat這樣的JEE容器, 而是選用jetty, undertow這樣的嵌入式容器。


       


      所以,這里我挑選了幾個候選者:


       


      Jersey + Grizzly


      Jersey + Jetty


      Dropwizard


      RESTEasy + Netty


      RESTEasy + Undertow


      [Updated on 2015/11/18]


      我增加了更多的 RESTful 框架,有些不是Jax-RS的實現,但是也有很活躍的社區。


       


      Jersey + Jetty4


      Spring Boot


      純Netty


      Vert.x


      你會發現一些有趣的測試結果。


      Jersey 是Jax-RS的官方參考實現,可以很好的和其它JEE容器集成。RESTEasy是JBoss出品的框架,也很輕易的和其它容器集成。Dropwizard實際上集成了Jersey, Jetty以及其它的第三方庫好比它的Metrics,提供了一站式的開發,略微有些厚重。


       


      測試相關的代碼已經放在了GITHUB上: 代碼


       


      編譯代碼


       


      測試代碼是一個多模塊的Maven項目, 你直接運行maven clean package就可以天生各個jar,而且這些jar包含了所依靠的類,執行起來相稱簡樸。


      你也可以在每個模塊下運行mvn exec:java啟動服務,然后在瀏覽器中訪問 http://localhost:8080/rest/hello (對于Jersey + Jetty,地址是http://localhost:8080/hello)


       


      測試環境


       


      服務器


      AWS C3.2xlarge


       


      8 cores (E5-2666 v3 @ 2.90GHz)


      memory: 16G (服務只分配了4G內存)


      Java


      1.8.0_51


       


      測試工具


      wrk


      測試命令如: wrk -t16 -c1000 -d30s http://127.0.0.1:8080/rest/hello.


      針對每個case, 我使用16個線程,以及100/200/500/1000并發進行測試。


       


      服務啟動命令


       


      java -Xmx4g -Xms4g -jar jersey-grizzly2-1.0-SNAPSHOT.jar


      java -Xmx4g -Xms4g -jar jersey-jetty-1.0-SNAPSHOT.jar


      java -Xmx4g -Xms4g -jar dropwizard-1.0-SNAPSHOT.jar hello.yml 


      java -Xmx4g -Xms4g -jar resteasy-netty-1.0-SNAPSHOT.jar 


      java -Xmx4g -Xms4g -jar resteasy-undertow-1.0-SNAPSHOT.jar


      java -Xmx4g -Xms4g -jar springboot-1.0-SNAPSHOT.jar


      java -Xmx4g -Xms4g -jar resteasy-netty4-1.0-SNAPSHOT.jar 


      java -Xmx4g -Xms4g -jar nativenetty-1.0-SNAPSHOT.jar


      java -Xmx4g -Xms4g -jar vertx-verticles-1.0-SNAPSHOT.jar -instances 20


      測試結果


       


      測試結果數據可以查看這里: 測試數據,


      延遲基本在幾毫秒到10幾毫秒之間。


       


      圖形化測試結果(y軸為Requests/sec, x軸為并發量):


      <a href='http://www.100megs21.com' target='_blank'><u>重慶網站建設</u></a>|RESTful與java框架的性能比較


       


      結論


       


      從結果看,


       


      RESTEasy的機能要好于 Jersey,不管哪種嵌入式JEE容器。


      Jersey+Grizzly2和Jersey+Jetty, dropwizard機能差別不大


      dropwizard底層實際是Jersey+Jetty,機能結果也和Jersey+Jetty一樣


      RESTEasy+netty (netty3)的結果并沒有優于RESTEasy+undertow.這出乎我的意料,可能CPU和Memory占用上會好一些


      RESTEasy+netty4的機能遠遠低于RESTEasy+netty3,這出乎我的意料?;蛟S由于Netty線程池的改變。


      純netty的機能遠遠高于其它框架,一方面是因為沒有http router的邏輯,另一方面也顯示了Netty框架的優秀。假如不是實現很復雜的路由和良多的Service,不妨使用純Netty實現高機能。


      Spring Boot太厚重了,使用Spring MVC的語法,機能只有Jersey的一半。


      Vert.x底層使用Netty,可以使用Java 8 Lambda語法,也提供了其它語言的支持,但是機能看起來不是太好,而且跟著并發量增大吞吐率也隨之下降。先前的vert.x測試有題目,只用到了單核,謝謝@Stream網友的提醒,我在代碼中增加了vertx-verticles模塊,支持多核(java -jar vertx-verticles-1.0-SNAPSHOT.jar -instances 20)。 Vert.x機能也不錯。@heng


      當然測試也有一點遺憾,就是沒有記實測試時的CPU占用率和Memory占用率,以我個人的經驗,這方面Netty會占一些上風。

      如沒特殊注明,文章均為狐靈科技原創,轉載請注明??http://www.100megs21.com/jzzs/114.html
      多一份免費策劃方案,總有益處。

      請直接添加技術總監微信聯系咨詢

      網站設計 品牌營銷

      多一份參考,總有益處

      聯系狐靈科技,免費獲得專屬《策劃方案》及報價

      咨詢相關問題或預約面談,可以通過以下方式與我們聯系

      業務熱線:023-68168040 / 大客戶專線:15523356218

      欧美肥老太交性视频,欧美老年人做爰视频,欧美老妇免费做爰视频

        1. <code id="1cg5a"><em id="1cg5a"></em></code><tr id="1cg5a"></tr>

        2. <center id="1cg5a"></center>

          <code id="1cg5a"><em id="1cg5a"></em></code>