摘要:微服務(wù)架構(gòu)允許我們?cè)賱?chuàng)建新應(yīng)用時(shí)自由選擇不同的技術(shù)和編程語言。個(gè)用戶時(shí),性能顯著降低,而仍然是完美的。總結(jié)使用相同的硬件,應(yīng)用程序可以提供兩倍于具有數(shù)據(jù)庫的應(yīng)用的并發(fā)用戶數(shù)。
Ivan Nikitsenka
微服務(wù)架構(gòu)允許我們?cè)賱?chuàng)建新應(yīng)用時(shí)自由選擇不同的技術(shù)和編程語言。不過究竟哪種語言更適合我們當(dāng)下的硬件?回答這個(gè)問題,需要搞明白Java和Go編寫的相同應(yīng)用程序之間的性能差異。
先決條件No additional performance enhancements should be applied. Use minimum configurations with default frameworks and libraries settings.
No ORM frameworks. Use pure DB drivers and the same SQL queries. Postgres JDBC 4.2 driver for Java and github.com/lib/pq for Go.
不采用其他性能增強(qiáng)功能
使用默認(rèn)框架和庫設(shè)置的最小配置
沒有ORM框架
使用純DB驅(qū)動(dòng)程序和相同的SQL查詢
用于Java的Postgres JDBC 4.2驅(qū)動(dòng)程序和用于Go的github.com/lib/pq
怎么做使用DB(Postgres)數(shù)據(jù)存儲(chǔ)創(chuàng)建簡(jiǎn)單的Java/Go REST API應(yīng)用程序
使用JMeter或類似工具創(chuàng)建負(fù)載測(cè)試
在多帶帶的AWS實(shí)例上運(yùn)行應(yīng)用程序,加載測(cè)試和數(shù)據(jù)庫
收集負(fù)載測(cè)試結(jié)果
被測(cè)系統(tǒng)作為被測(cè)系統(tǒng),這里準(zhǔn)備了兩個(gè)銀行應(yīng)用:bank-java和bank-go。
APIs:
POST / client / new / {balance} - 創(chuàng)建具有初始余額的新客戶
POST /交易 - 將資金從一個(gè)賬戶轉(zhuǎn)移到另一個(gè)賬戶
GET / client / {id} / balance - 返回客戶端的當(dāng)前余額
框架和依賴關(guān)系在選擇框架和庫時(shí),這里使用了最新、最流行和最簡(jiǎn)單的框架和庫來盡快準(zhǔn)備好應(yīng)用程序。
Bank-java:Java 10、Spring Boot 2.0.4、spring-web 5.0.8、PostgreSQL JDBC 4.2.4
Bank-go:Go 1.8,gorilla / mux,github.com / lib / pq。
銀行應(yīng)用源碼Bank-java: https://github.com/nikitsenka...
Bank-go: https://github.com/nikitsenka...
測(cè)試項(xiàng)目測(cè)試項(xiàng)目Bank-test使用動(dòng)態(tài)變化的用戶數(shù)(從1,000到10,000)執(zhí)行對(duì)銀行API的調(diào)用,驗(yàn)證響應(yīng)并收集統(tǒng)計(jì)信息。
測(cè)試環(huán)境這里用AWS并創(chuàng)建了兩個(gè)AWS EC2實(shí)例:
Bank-go t2.micro (Variable ECUs, 1 vCPUs, 2.5 GHz, Intel Xeon Family, 1 GiB memory, EBS only)
Bank-java t2.micro (Variable ECUs, 1 vCPUs, 2.5 GHz, Intel Xeon Family, 1 GiB memory, EBS only)
Postgres d2.xlarge (14 ECUs, 4 vCPUs, 2.4 GHz, Intel Xeon E52676v3, 30.5 GiB memory, 3 x 2048 GiB Storage Capacity)
Bank-test t2.2xlarge (Variable ECUs, 8 vCPUs, 2.3 GHz, Intel Broadwell E5-2686v4, 32 GiB memory, EBS only)
結(jié)果完整結(jié)果請(qǐng)查看 here
結(jié)果小結(jié)兩個(gè)應(yīng)用與1,000個(gè)并發(fā)用戶完美配合。2,000個(gè)用戶時(shí),Go性能顯著降低,而Java仍然是完美的。從3,000個(gè)用戶及以上用戶開始,兩個(gè)應(yīng)用都顯示出不可接受的響應(yīng)時(shí)間,并且錯(cuò)誤響應(yīng)的數(shù)量顯著增加。
總結(jié)使用相同的硬件,Java REST API應(yīng)用程序可以提供兩倍于具有PostgreSQL數(shù)據(jù)庫的Go應(yīng)用的并發(fā)用戶數(shù)。
關(guān)于RainbondRainbond(云幫)是"以應(yīng)用為中心”的開源PaaS, 深度整合基于Kubernetes的容器管理、ServiceMesh微服務(wù)架構(gòu)最佳實(shí)踐、多類型CI/CD應(yīng)用構(gòu)建與交付、多數(shù)據(jù)中心資源管理等技術(shù), 為用戶提供云原生應(yīng)用全生命周期解決方案,構(gòu)建應(yīng)用與基礎(chǔ)設(shè)施、應(yīng)用與應(yīng)用、基礎(chǔ)設(shè)施與基礎(chǔ)設(shè)施之間互聯(lián)互通的生態(tài)體系, 滿足支撐業(yè)務(wù)高速發(fā)展所需的敏捷開發(fā)、高效運(yùn)維和精益管理需求。
網(wǎng)站
Github
碼云
演示環(huán)境
文檔
社區(qū)
微信群: 添加微信“zqg5258423”并接受邀請(qǐng)入群
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/8867.html
摘要:降級(jí)往往會(huì)指定不同的級(jí)別,面臨不同的異常等級(jí)執(zhí)行不同的處理。談?wù)勀銓?duì)和的認(rèn)識(shí)兩者關(guān)系具體可以看公眾號(hào)阿里巴巴中間件的這篇文章獨(dú)家解讀從微服務(wù)框架到微服務(wù)生態(tài)與并不是競(jìng)爭(zhēng)關(guān)系,作為成熟的框架,其易用性擴(kuò)展性和健壯性已得到業(yè)界的認(rèn)可。 該文已加入筆主的開源項(xiàng)目——JavaGuide(一份涵蓋大部分Java程序員所需要掌握的核心知識(shí)的文檔類項(xiàng)目),地址:https://github.com/...
摘要:降級(jí)往往會(huì)指定不同的級(jí)別,面臨不同的異常等級(jí)執(zhí)行不同的處理。談?wù)勀銓?duì)和的認(rèn)識(shí)兩者關(guān)系具體可以看公眾號(hào)阿里巴巴中間件的這篇文章獨(dú)家解讀從微服務(wù)框架到微服務(wù)生態(tài)與并不是競(jìng)爭(zhēng)關(guān)系,作為成熟的框架,其易用性擴(kuò)展性和健壯性已得到業(yè)界的認(rèn)可。 該文已加入筆主的開源項(xiàng)目——JavaGuide(一份涵蓋大部分Java程序員所需要掌握的核心知識(shí)的文檔類項(xiàng)目),地址:https://github.com/...
摘要:在結(jié)構(gòu)上引入了頭結(jié)點(diǎn)和尾節(jié)點(diǎn),他們分別指向隊(duì)列的頭和尾,嘗試獲取鎖入隊(duì)服務(wù)教程在它提出十多年后的今天,已經(jīng)成為最重要的應(yīng)用技術(shù)之一。隨著編程經(jīng)驗(yàn)的日積月累,越來越感覺到了解虛擬機(jī)相關(guān)要領(lǐng)的重要性。 JVM 源碼分析之 Jstat 工具原理完全解讀 http://click.aliyun.com/m/8315/ JVM 源碼分析之 Jstat 工具原理完全解讀 http:...
摘要:可簡(jiǎn)單地認(rèn)為它是的擴(kuò)展,負(fù)載均衡自然成為不可或缺的特性。是基于開發(fā)的服務(wù)代理組件,在使用場(chǎng)景中,它與和整合,打造具備服務(wù)動(dòng)態(tài)更新和負(fù)載均衡能力的服務(wù)網(wǎng)關(guān)。類似的特性在項(xiàng)目也有體現(xiàn),它是另一種高性能代理的方案,提供服務(wù)發(fā)現(xiàn)健康和負(fù)載均衡。 摘要: Cloud Native 應(yīng)用架構(gòu)隨著云技術(shù)的發(fā)展受到業(yè)界特別重視和關(guān)注,尤其是 CNCF(Cloud Native Computing Fo...
摘要:后端好書閱讀與推薦系列文章后端好書閱讀與推薦后端好書閱讀與推薦續(xù)后端好書閱讀與推薦續(xù)二后端好書閱讀與推薦續(xù)三后端好書閱讀與推薦續(xù)四這里依然記錄一下每本書的亮點(diǎn)與自己讀書心得和體會(huì),分享并求拍磚。 后端好書閱讀與推薦系列文章:后端好書閱讀與推薦后端好書閱讀與推薦(續(xù))后端好書閱讀與推薦(續(xù)二)后端好書閱讀與推薦(續(xù)三)后端好書閱讀與推薦(續(xù)四) 這里依然記錄一下每本書的亮點(diǎn)與自己讀書心得...
閱讀 790·2023-04-25 17:33
閱讀 3645·2021-07-29 14:49
閱讀 2491·2019-08-30 15:53
閱讀 3445·2019-08-29 16:27
閱讀 2013·2019-08-29 16:11
閱讀 1041·2019-08-29 14:17
閱讀 2451·2019-08-29 13:47
閱讀 2028·2019-08-29 13:28