微服務(wù),通常指的是一個(gè)支持持續(xù)開發(fā)、系統(tǒng)可擴(kuò)展、應(yīng)用程序解耦和多語言編程的架構(gòu)平臺(tái)。它在服務(wù)邊界的幫助下隔離了平臺(tái),這使得單獨(dú)使用和管理每個(gè)服務(wù)變得更加簡單。由于每個(gè)服務(wù)都是相互獨(dú)立的,這就使得添加高級(jí)功能或擴(kuò)展變得更加有效和容易。
微服務(wù)的核心特性:
每一個(gè)服務(wù)或單元都是輕量級(jí)、獨(dú)立和松耦合的。
每個(gè)服務(wù)都有其獨(dú)立的代碼庫,由一個(gè)小團(tuán)隊(duì)設(shè)計(jì)和開發(fā)。
每個(gè)服務(wù)都有其獨(dú)立的DevOps計(jì)劃(開發(fā)、測試、發(fā)布、擴(kuò)展和管理)
每個(gè)服務(wù)可以自由選擇自己的技術(shù)堆棧。
每個(gè)服務(wù)有自己的機(jī)制來保存他們的信息,這是最適合他們的模式。
服務(wù)間常使用REST協(xié)議相互通信。
微服務(wù)架構(gòu):主要優(yōu)勢
微服務(wù)創(chuàng)造了一種更加靈活和適應(yīng)性強(qiáng)的 IT 基礎(chǔ)設(shè)施。它使你可以只更改一項(xiàng)服務(wù),而無需更改基礎(chǔ)架構(gòu)部分。簡而言之,你可以配置和更改每項(xiàng)服務(wù),而不會(huì)干擾其他應(yīng)用程序或服務(wù)的功能方面。
以下是微服務(wù)架構(gòu)的一些關(guān)鍵優(yōu)勢:
快速交付借助分布式,微服務(wù)使團(tuán)隊(duì)能夠同時(shí)開發(fā)多個(gè)微服務(wù)。由于開發(fā)周期的縮短,微服務(wù)架構(gòu)使得執(zhí)行和更新應(yīng)用程序的速度更快。因此,軟件團(tuán)隊(duì)有更多的時(shí)間專注于他們的業(yè)務(wù)。
自主性高微服務(wù)架構(gòu)實(shí)現(xiàn)了自主開發(fā)、部署和運(yùn)行。因此,如果應(yīng)用程序遵循相同的方法,服務(wù)中的任何故障都不會(huì)影響應(yīng)用程序的其他服務(wù)。
職責(zé)單一由于較大的單體應(yīng)用被分解為多個(gè)更小的微服務(wù),每個(gè)微服務(wù)只負(fù)責(zé)特定范圍的功能,因此軟件開發(fā)人員可以毫不費(fèi)力地理解、升級(jí)和改進(jìn)這些部分;通過這種方式,可以獲得更快的開發(fā)周期。
更好的可擴(kuò)展性隨著對(duì)特定服務(wù)需求的發(fā)展,可以在各種基礎(chǔ)設(shè)施和服務(wù)器上執(zhí)行以滿足你的要求。例如,可以根據(jù)需求和并發(fā)情況,有針對(duì)性地?cái)U(kuò)縮容某個(gè)或某幾個(gè)服務(wù)。
易于開發(fā)這種應(yīng)用程序遵循模塊化方法,每個(gè)服務(wù)都比傳統(tǒng)的單體應(yīng)用程序略小。因此,實(shí)現(xiàn)單個(gè)服務(wù)要簡單得多。
為什么需要獨(dú)特的策略來測試微服務(wù)?
微服務(wù)與各個(gè)組織內(nèi)外的其他微服務(wù),都有著或多或少的通信,此外,微服務(wù)的開發(fā)團(tuán)隊(duì)之間進(jìn)行也需要大量協(xié)作。因此,微服務(wù)的測試,需要有一個(gè)不同于傳統(tǒng)單體應(yīng)用測試的策略。
微服務(wù)性能測試
微服務(wù)有很多好處,但是它也面臨著復(fù)雜的挑戰(zhàn)。由于服務(wù)間基于REST相互關(guān)聯(lián),相互調(diào)用通信,引發(fā)的性能開銷可能會(huì)使業(yè)務(wù)陷入困境。例如,在電子商城應(yīng)用中,如果用戶在查看商品詳情時(shí)等待過久,就會(huì)直接影響用戶下訂單的心情,并可能導(dǎo)致他們?nèi)テ渌胤劫徺I。無論情況如何,可靠性和性能都是軟件開發(fā)的重要因素,因此企業(yè)必須花費(fèi)必要的精力和時(shí)間進(jìn)行性能測試。
性能測試的重要性眾所周知,本文建議必須在兩個(gè)不同的層次上進(jìn)行:
系統(tǒng)級(jí)別(協(xié)同工作的微服務(wù))
微服務(wù)級(jí)別(單個(gè)微服務(wù))
測試的方法:持續(xù)監(jiān)控和自下而上
盡管我們認(rèn)識(shí)到最終用戶體驗(yàn)相當(dāng)重要,但我們不能等到應(yīng)用程序完全構(gòu)建后,才進(jìn)行性能測試,它偏離了左移方法。此外,如果在部署發(fā)布后,才發(fā)現(xiàn)任何重大的性能故障,也會(huì)對(duì)業(yè)務(wù)產(chǎn)生巨大影響。
另一方面,如果我們?cè)缙谶M(jìn)行微服務(wù)性能測試,我們可以在開發(fā)階段發(fā)現(xiàn)性能缺陷并立即解決。系統(tǒng)集成后,除集成因素外,API接口/用戶界面出現(xiàn)性能故障的可能性較小。如果我們出現(xiàn)了性能缺陷,使用自下而上的方法會(huì)有所幫助。
微服務(wù)架構(gòu)的重要之處在于,當(dāng)微服務(wù)崩潰、無響應(yīng)或不可用時(shí),它不會(huì)使整個(gè)應(yīng)用程序宕機(jī)。應(yīng)用程序性能監(jiān)控工具不僅提供系統(tǒng)的運(yùn)行狀態(tài),而且還通過閾值來主動(dòng)計(jì)算性能。它還可以在早期階段提示任何潛在的性能缺陷。
微服務(wù)性能(負(fù)載測試)測試工具
你必須使用高級(jí)負(fù)載測試服務(wù),來避免意外崩潰,而不是在你的微服務(wù)應(yīng)用程序上執(zhí)行一些非系統(tǒng)的測試。一些負(fù)載測試工具可以生成虛擬流量,模擬大量用戶負(fù)載進(jìn)行微服務(wù)測試。
以下是市場上一些最好的微服務(wù)負(fù)載測試工具:
nfluxDB–是用Go語言編寫的開源應(yīng)用程序之一。它是一個(gè)可靠、快速且易于查詢的時(shí)間序列數(shù)據(jù)庫。使用這種用于負(fù)載測試工具,你可以輕松發(fā)現(xiàn)瓶頸。
pache JMeter–是軟件開發(fā)人員最常用的測試工具。它也是一個(gè)開源應(yīng)用程序,滿足不同規(guī)模的軟件公司的需求。它還可以讓軟件開發(fā)者對(duì)微服務(wù)的功能行為進(jìn)行負(fù)載測試,計(jì)算不同用戶負(fù)載下的微服務(wù)性能。
mazon CloudWatch–是一種復(fù)雜的監(jiān)控服務(wù),用于監(jiān)控部署在Amazon Web Services上的應(yīng)用程序或微服務(wù)的資源使用情況。因此,如果你希望對(duì)微服務(wù)執(zhí)行負(fù)載測試,它可能是一種有益的工具。
rafana–也是指標(biāo)可視化和分析套件之一。你可以利用它來可視化時(shí)間序列數(shù)據(jù),以觀察你的微服務(wù)在實(shí)時(shí)流量中的表現(xiàn)。
總結(jié)
現(xiàn)在,使用微服務(wù)架構(gòu)的項(xiàng)目越來越多,對(duì)于 DevOps 團(tuán)隊(duì)來說,這意味著測試策略的改變。確保你的應(yīng)用程序能夠經(jīng)受住現(xiàn)實(shí)情況的考驗(yàn),需要提前進(jìn)行性能測試,并讓你的團(tuán)隊(duì)深入了解在系統(tǒng)發(fā)布之前需要微調(diào)的地方。
因此,選擇合適的微服務(wù)測試工具,進(jìn)行完善的測試,是必不可少的。
文章出處:【微信公眾號(hào):馬哥Linux運(yùn)維】
責(zé)任編輯:gt
-
服務(wù)器
+關(guān)注
關(guān)注
12文章
9129瀏覽量
85350 -
應(yīng)用程序
+關(guān)注
關(guān)注
37文章
3267瀏覽量
57686
原文標(biāo)題:微服務(wù)性能是如何測試的?
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論