摘要:被測(cè)的網(wǎng)關(guān)都沒有添加額外業(yè)務(wù),只做反向代理吞吐量下圖是吞吐量的情況,可以看到均比直壓低一點(diǎn)點(diǎn),而和則要低得多。結(jié)論三者的表現(xiàn)均很不錯(cuò),其對(duì)于吞吐量和響應(yīng)時(shí)間的性能損耗很低,可以忽略不計(jì)。
用于實(shí)現(xiàn)API網(wǎng)關(guān)的技術(shù)有很多,大致分為這么幾類:
通用反向代理:Nginx、Haproxy、……
網(wǎng)絡(luò)編程框架:Netty、Servlet、……
API網(wǎng)關(guān)框架:Spring Cloud Gateway、Zuul、Zuul2、……
API網(wǎng)關(guān)最基本的功能就是反向代理,所以在對(duì)API網(wǎng)關(guān)做技術(shù)選型的時(shí)候需要著重考察其性能表現(xiàn),本文對(duì)Nginx、Haproxy、Netty、Spring Cloud Gateway、Zuul2做了性能測(cè)試,測(cè)試代碼可以在github獲得。
測(cè)試方法準(zhǔn)備了三臺(tái)2CPU 4G內(nèi)存的服務(wù)器,分別運(yùn)行Tomcat、API Gateway、Gatling(壓測(cè)工具)
先對(duì)Tomcat做壓測(cè),取Tomcat充分預(yù)熱后的壓測(cè)結(jié)果作為基準(zhǔn)。壓的是Tomcat自帶的example:/examples/jsp/jsp2/simpletag/book.jsp
在對(duì)Netty、Zuul2、Spring Cloud Gateway做壓測(cè)時(shí)候也是先壓個(gè)幾輪做預(yù)熱。
被測(cè)的API網(wǎng)關(guān)都沒有添加額外業(yè)務(wù),只做反向代理
吞吐量下圖是吞吐量的情況,可以看到Netty、Nginx、Haproxy均比直壓Tomcat低一點(diǎn)點(diǎn),而Spring Cloud Gateway和Zuul2則要低得多。
下面這張圖可以更明顯的看到吞吐量比較,Tomcat為100%因?yàn)樗腔鶞?zhǔn)值,Netty、Nginx、Haproxy的只比基準(zhǔn)值低8%,而Spring Cloud Gateway和Zuul2則只是基準(zhǔn)值的35%和34%(難兄難弟)。
平均響應(yīng)時(shí)間下圖可以看到Netty、Nginx、Haproxy的平均響應(yīng)時(shí)間與Tomcat差不多。但是Spring Cloud Gateway和Zuul2則是Tomcat的3倍多,不出所料。
下圖同樣是以Tomcat作為基準(zhǔn)值的比較:
響應(yīng)時(shí)間分布光看平均響應(yīng)時(shí)間是不夠的,我們還得看P50、P90、P99、P99.9以及Max響應(yīng)時(shí)間(可惜Gatling只能設(shè)置4個(gè)百分位,否則我還想看看P99.99的響應(yīng)時(shí)間)。
為何要觀察P99.9的響應(yīng)時(shí)間?光看P90不夠嗎?理由有兩個(gè):1)觀察P99、P99.9、P99.99的響應(yīng)時(shí)間可以觀察系統(tǒng)的在高壓情況下的穩(wěn)定性,如果這三個(gè)時(shí)間的增長(zhǎng)比較平滑那么說明該系統(tǒng)在高壓力情況下比較穩(wěn)定,如果這個(gè)曲線非常陡峭則說明不穩(wěn)定。
2)觀察P99、P99.9、P99.99的響應(yīng)時(shí)間能夠幫助你估算用戶體驗(yàn)。假設(shè)你有一個(gè)頁面會(huì)發(fā)出5次請(qǐng)求,那么這5次請(qǐng)求均落在P90以內(nèi)概率是多少?90%^5=59%,至少會(huì)經(jīng)歷一次 > P90響應(yīng)時(shí)間的概率是 100%-59%=41%,如果你的P90=10s,那么就意味著用戶有41%的概率會(huì)在加載頁面的時(shí)候超過10s,是不是很驚人?如果你的P99=10s,那么用戶只有5%的概率會(huì)在訪問頁面的時(shí)候超過10s。如果P99.9=10s,則有0.4%的概率。
關(guān)于如何正確測(cè)量系統(tǒng)可以看 “How NOT to Measure Latency” by Gil Tene
下面同樣是把結(jié)果與Tomcat基準(zhǔn)值做對(duì)比:
可以看到幾個(gè)很有趣的現(xiàn)象:
Haproxy、Nginx的P50、P90、P99、P99.9、Max都是逐漸遞增的。
Netty的P50、P90、P99、P99.9是很平坦的,Max則為基準(zhǔn)值的207%。
Spring Cloud Gateway和Zuul2則是相反的,它們的平面呈現(xiàn)下降趨勢(shì)。Spring Cloud Gateway的Max甚至還比基準(zhǔn)值低了一點(diǎn)點(diǎn)(94%),我相信這只是一個(gè)隨機(jī)出現(xiàn)的數(shù)字,不要太在意。
結(jié)論Nginx、Haproxy、Netty三者的表現(xiàn)均很不錯(cuò),其對(duì)于吞吐量和響應(yīng)時(shí)間的性能損耗很低,可以忽略不計(jì)。
但是目前最為火熱的Spring Cloud Gateway和Zuul2則表現(xiàn)得比較糟糕,因我沒有寫額外的業(yè)務(wù)邏輯這,可以推測(cè)這和它們的內(nèi)置邏輯有關(guān),那么大致有這么幾種可能:
內(nèi)置邏輯比較多
內(nèi)置邏輯算法存在問題,占用了太多CPU時(shí)間
內(nèi)置邏輯存在阻塞
內(nèi)置邏輯沒有用正確姿勢(shì)使用Netty(兩者皆基于Netty)
不管是上面的哪一種都需要再后續(xù)分析。
不過話說回來考慮選用那種作為API網(wǎng)關(guān)(的基礎(chǔ)技術(shù))不光要看性能,還要看:
是否易于擴(kuò)展自己的業(yè)務(wù)邏輯
API使用的便利性
代碼的可維護(hù)性
文檔是否齊全
...
性能只是我們手里的一個(gè)籌碼,當(dāng)我們知道這個(gè)東西性能到底幾何后,才可以與上面的這些做交換(trade-off)。比如Nginx和Haproxy的可擴(kuò)展性很差,那么我們可以使用Netty。如果你覺得Netty的API太底層了太難用了,那么可以考慮Spring Cloud Gateway或Zuul2。前提是你知道你會(huì)失去多少性能。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/40586.html
摘要:被測(cè)的網(wǎng)關(guān)都沒有添加額外業(yè)務(wù),只做反向代理吞吐量下圖是吞吐量的情況,可以看到均比直壓低一點(diǎn)點(diǎn),而和則要低得多。結(jié)論三者的表現(xiàn)均很不錯(cuò),其對(duì)于吞吐量和響應(yīng)時(shí)間的性能損耗很低,可以忽略不計(jì)。 用于實(shí)現(xiàn)API網(wǎng)關(guān)的技術(shù)有很多,大致分為這么幾類: 通用反向代理:Nginx、Haproxy、…… 網(wǎng)絡(luò)編程框架:Netty、Servlet、…… API網(wǎng)關(guān)框架:Spring Cloud Gate...
摘要:主流消息中間件介紹是由出品,是一個(gè)完全支持和規(guī)范的實(shí)現(xiàn)。主流消息中間件介紹是阿里開源的消息中間件,目前也已經(jīng)孵化為頂級(jí)項(xiàng)目。 showImg(https://img-blog.csdnimg.cn/20190509221741422.gif);showImg(https://img-blog.csdnimg.cn/20190718204938932.png?x-oss-process=...
摘要:作者簡(jiǎn)介戴嘉樂前百度高級(jí)研發(fā)工程師應(yīng)用實(shí)踐者布道師個(gè)人網(wǎng)站聯(lián)系方式微信號(hào)。二技術(shù)介紹對(duì)這項(xiàng)技術(shù)不熟悉的同學(xué),可以參考我之前一次演講分享的內(nèi)容戴嘉樂詳解的本質(zhì)技術(shù)架構(gòu)以及應(yīng)用。 作者簡(jiǎn)介:戴嘉樂( Mr.Maple ) | 前百度高級(jí)研發(fā)工程師 | IPFS應(yīng)用實(shí)踐者&布道師|個(gè)人網(wǎng)站:https://www.daijiale.cn聯(lián)系方式:微信號(hào):daijiale6239。 一、應(yīng)用背...
摘要:五參考文獻(xiàn)區(qū)塊鏈利用構(gòu)建自己的去中心化分布式系統(tǒng)相關(guān)文章和視頻推薦戴嘉樂入門基于和構(gòu)建自維護(hù)資源網(wǎng)關(guān)圓方圓學(xué)院匯集大批區(qū)塊鏈名師,打造精品的區(qū)塊鏈技術(shù)課程。 作者簡(jiǎn)介:戴嘉樂( Mr.Maple ) | 前百度高級(jí)研發(fā)工程師 | IPFS應(yīng)用實(shí)踐者&布道師|個(gè)人網(wǎng)站:https://www.daijiale.cn聯(lián)系方式:微信號(hào):daijiale6239。 一、背景 上篇文章[《(入門...
閱讀 1413·2021-10-14 09:43
閱讀 1006·2021-09-10 10:51
閱讀 1457·2021-09-01 10:42
閱讀 2200·2019-08-30 15:55
閱讀 595·2019-08-30 15:55
閱讀 2355·2019-08-30 14:21
閱讀 1728·2019-08-30 13:04
閱讀 3478·2019-08-29 13:09