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