微服务精华问答 | 微服务如何测试?
戳藍(lán)字“CSDN云計(jì)算”關(guān)注我們哦!
微服務(wù)(Microservice Architecture)是近幾年流行的一種架構(gòu)思想,關(guān)于它的概念很難一言以蔽之。今天,就讓我們來看看關(guān)于微服務(wù)更加有深度的問題吧。
1
Q:微服務(wù)如何測(cè)試?
A:當(dāng)涉及到測(cè)試時(shí),微服務(wù)有一系列有趣的優(yōu)點(diǎn)和缺點(diǎn)。一方面,測(cè)試代表定義明確功能的小型服務(wù)的單元測(cè)試可能比測(cè)試整個(gè)單一應(yīng)用程序容易得多。另一方面,驗(yàn)證由許多微服務(wù)組成的整個(gè)應(yīng)用程序的質(zhì)量可能代表了大量的測(cè)試復(fù)雜性:不是運(yùn)行單個(gè)命令來測(cè)試在一個(gè)進(jìn)程中運(yùn)行的代碼,而是大量的集成相關(guān)組件先健康地運(yùn)行,并在整個(gè)測(cè)試過程中保持運(yùn)行。
這種新的微服務(wù)是否可以單獨(dú)進(jìn)行測(cè)試(使用單元測(cè)試或模擬依賴關(guān)系),還可以在更加實(shí)際的“集成”或“分段”環(huán)境中進(jìn)行測(cè)試,在這種環(huán)境中,它將與生產(chǎn)中涉及的相同類型的服務(wù)相連接。測(cè)試是否包含性能驗(yàn)證和失敗模式?所有的測(cè)試都會(huì)自動(dòng)完成嗎?還是人類必須參與運(yùn)行并檢查測(cè)試結(jié)果?以一種簡(jiǎn)單,快速和自動(dòng)化的方式進(jìn)行微服務(wù)測(cè)試將鼓勵(lì)開發(fā)人員維護(hù)并防止“ 破窗 ”問題。
Q:微服務(wù)將如何配置?
A:一旦新的微服務(wù)投入生產(chǎn),它的內(nèi)部行為會(huì)受到什么影響?這包括基礎(chǔ)結(jié)構(gòu)的更改(例如,更改池中線程的最小數(shù)量)和一些應(yīng)用程序級(jí)別的更改(例如,通過翻轉(zhuǎn)功能標(biāo)志來啟用新功能)。對(duì)于所有這些變化,了解服務(wù)是否需要重新啟動(dòng)才能生效是至關(guān)重要的。
當(dāng)然,如果可能的話,構(gòu)建一個(gè)在其生命周期中完全不需要改變配置的服務(wù)將是最理想的方法。
Q:系統(tǒng)的其他部分如何消耗?
A:構(gòu)建微服務(wù)沒有多大意義,除非系統(tǒng)的其他組件使用它,因此理解它們?nèi)绾问褂梦⒎?wù)是至關(guān)重要的。
這些其他組件將同步或異步地與新的微服務(wù)交互嗎?是否應(yīng)該鼓勵(lì)他們將響應(yīng)緩存一段時(shí)間?什么是重試和冪等性?新微服務(wù)的正常運(yùn)行時(shí)間SLA是否與系統(tǒng)中其他組件的正常運(yùn)行時(shí)間SLA相匹配?
對(duì)于新微服務(wù)將提供的響應(yīng)延遲,應(yīng)該有明確的預(yù)期,使用微服務(wù)的組件應(yīng)該知道這些預(yù)期。這樣,當(dāng)這些期望沒有滿足時(shí),系統(tǒng)的其他部分可以決定觸發(fā)超時(shí)、觸發(fā)斷路器或故障轉(zhuǎn)移到服務(wù)的另一個(gè)實(shí)例。
Q:如何保證微服務(wù)的安全性?
A:除非是在高安全性環(huán)境中,否則大多數(shù)部署在防火墻后的微服務(wù)都不需要過分關(guān)注服務(wù)間安全性。在微服務(wù)之間添加大量的安全檢查可以增加顯著的操作復(fù)雜性,使生產(chǎn)問題很難調(diào)試和修復(fù)。由于維護(hù)、部署和保護(hù)一些正確簽名的證書所需要的工作,甚至使用HTTP上的HTTPS進(jìn)行服務(wù)間通信也可能是一個(gè)重要的維護(hù)開銷。通常,更好的方法是允許流量在微服務(wù)之間暢通無阻,同時(shí)仍然應(yīng)用合理的應(yīng)用程序級(jí)別的身份驗(yàn)證和授權(quán)級(jí)別,當(dāng)然還要保持非常安全的邊界。
因此,系統(tǒng)中的其他組件很可能能夠向微服務(wù)發(fā)送請(qǐng)求而不出問題,但它們可能仍然需要傳遞一些身份驗(yàn)證數(shù)據(jù),這些數(shù)據(jù)表示發(fā)起外部用戶,以便實(shí)際批準(zhǔn)和處理請(qǐng)求。這絕不應(yīng)該是明文密碼數(shù)據(jù),但它可以使用諸如JWT,OAuth,SAML或Auth0之類的技術(shù)。無論采用何種方法,該技術(shù)都必須非常清楚地記錄下來,并且最好在客戶端庫(kù)或示例代碼中捕獲,以便其他開發(fā)人員可以輕松使用新的微服務(wù)。
Q:微服務(wù)將如何被發(fā)現(xiàn)?
A:當(dāng)一個(gè)新的微服務(wù)啟動(dòng)時(shí),系統(tǒng)中的其他組件如何找到它?發(fā)現(xiàn)過程越簡(jiǎn)單,它的靈活性就越低,之后會(huì)遇到更多的問題。例如,最簡(jiǎn)單的方法(同時(shí)也是一種脆弱的方法)是將微服務(wù)的地址硬編碼到依賴它的其他組件的代碼或配置中。這可能會(huì)一直工作到服務(wù)的地址必須更改,或者直到服務(wù)的多個(gè)實(shí)例在其他區(qū)域可用為止。這當(dāng)然不是一種推薦的方法。
使用諸如DNS名稱之類的間接技術(shù)來隱藏微服務(wù)的地址會(huì)更好一些,但是這也有它自己的缺點(diǎn):找到一個(gè)合適的TTL值,迫使名字重做決議,使DNS緩存行為一致,等。通過設(shè)計(jì),域名沒有考慮服務(wù)的可用性,這可能導(dǎo)致應(yīng)用程序組件遵循一條通往一個(gè)IP地址,沒有監(jiān)聽,浪費(fèi)時(shí)間,導(dǎo)致運(yùn)行噪音,他們?cè)噲D找到一個(gè)工作實(shí)例。它也會(huì)讓開發(fā)人員感到非常困難,因?yàn)槭褂肈NS作為路由機(jī)制通常會(huì)導(dǎo)致開發(fā)人員的/ etc / hosts文件的臨時(shí)修改。
在復(fù)雜的領(lǐng)域,高度可用的數(shù)據(jù)存儲(chǔ)或數(shù)據(jù)同步服務(wù)(例如ZooKeeper)可能被用作微服務(wù)的注冊(cè)表,這些服務(wù)目前仍然運(yùn)行良好。但仍需要更多的技術(shù)投資,并且還應(yīng)該謹(jǐn)慎對(duì)待,以確保發(fā)現(xiàn)服務(wù)本身不會(huì)成為單點(diǎn)故障(SPOF)。當(dāng)微服務(wù)啟動(dòng)時(shí),它們將自己注冊(cè)到這個(gè)注冊(cè)服務(wù)中,當(dāng)它們關(guān)閉時(shí),它們將自己刪除。如果它們意外終止或陷入死鎖,也必須自動(dòng)從注冊(cè)表中刪除它們。記住,發(fā)現(xiàn)不僅僅是發(fā)現(xiàn)正在運(yùn)行的東西——發(fā)現(xiàn)什么是不可用的也是很重要的。
小伙伴們沖鴨,后臺(tái)留言區(qū)等著你!
關(guān)于微服務(wù),今天你學(xué)到了什么?還有哪些不懂的?除此還對(duì)哪些話題感興趣?快來留言區(qū)打卡啦!留言方式:打開第XX天,答:……
同時(shí)歡迎大家搜集更多問題,投稿給我們!風(fēng)里雨里留言區(qū)里等你~
-
福利
掃描添加小編微信,備注“姓名+公司職位”,加入【云計(jì)算學(xué)習(xí)交流群】,和志同道合的朋友們共同打卡學(xué)習(xí)!
推薦閱讀:
K8S安全軍規(guī)101:對(duì)CNCF最佳實(shí)踐的擴(kuò)充
50個(gè)最有價(jià)值的數(shù)據(jù)可視化圖表(推薦收藏)
微服務(wù)、Kubernetes和無服務(wù)器之后,即將發(fā)生的……
月入5萬,程序員夫人們過上"貴婦"生活了嗎?
為什么說穩(wěn)定幣才是諾獎(jiǎng)得主哈耶克想要的非國(guó)家貨幣?
“扔瓶子”有套路?日本高中生開發(fā)機(jī)器人,手殘黨們有救了
那些簡(jiǎn)歷造假拿 Offer 的程序員,后來都怎么樣了?
喜歡就點(diǎn)擊“好看”吧
總結(jié)
以上是生活随笔為你收集整理的微服务精华问答 | 微服务如何测试?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 凉拌冰菜的拼盘名字是什么?
- 下一篇: 云漫圈 | 敢怼我们程序员?哼,有你好看