但它們可能到處在重復(fù)單元測,另外集成測試存在彼此重復(fù)。更糟糕的是,當(dāng)集成測試失敗時,你不知道哪里出了問題,不能及時準(zhǔn)確定位問題。.Rainsberger后來還在博客上發(fā)表了《IntegrationTestsAreaScam》,文章借用強(qiáng)有力的數(shù)據(jù)分析來證實自己的觀點。他提出的佳實踐是:用契約測試或協(xié)議測試來做集成測試!MartinFowller在2012年的測試金字塔理論中也指出:應(yīng)該引入面向應(yīng)用程序服務(wù)層的中間層測試,這些測試既保持了端到端測試的諸多優(yōu)勢,又避免了許多與UI框架相關(guān)的復(fù)雜性。在Web應(yīng)用程序中,中間層測試相當(dāng)于API層測試,而位于金字塔頂層的UI測試則相當(dāng)于Selenium測試。ThoughtWorks技術(shù)雷達(dá)于2016年已經(jīng)正式采納消費者驅(qū)動契約測試。We’vedecidedtobringconsumer-drivencontracttestingbackfromthearchiveforthiseditioneventhoughwehadallowedittofadeinthepast.微服務(wù)架構(gòu)的盛行促使越來越多的開發(fā)團(tuán)隊開始引入CDCT,逐漸淡化UI測試。團(tuán)隊的測試策略正在發(fā)生不同的演變:引入了CDCT并擺出了正確的姿勢,便可弱化UI測試,甚至可以使用少量的人工測試來代替自動化UI測試。CDCT幫助我們緩解了UI測試的痛點,但也要當(dāng)心走極端。通常跟微服務(wù)相對的是單體應(yīng)用,即將所有功能都打包成在一個單元的應(yīng)用程序。山東平臺微服務(wù)架構(gòu)設(shè)計
我們來看下其具體架構(gòu)拓?fù)涫疽鈭D:其實,無論是基于那種技術(shù)架構(gòu),其本質(zhì)都具備相應(yīng)的優(yōu)缺點,,畢竟,存在即是合理的?;诓煌臉I(yè)務(wù)場景,通常我們需選用不同的應(yīng)用架構(gòu)、技術(shù)框架,然而,對于技術(shù)要素的選型,前沿性并不是的考量因素,也就是說不一定使用新的架構(gòu)、技術(shù)解決我們的業(yè)務(wù)痛點,需要結(jié)合公司的實際情況進(jìn)行綜合決策?;谏鲜龅膮⒖技軜?gòu)拓?fù)?,我們可以基于分層的思維模型對微服務(wù)的架構(gòu)進(jìn)行技術(shù)選型,具體可從以下幾方面進(jìn)行:API網(wǎng)關(guān)隨著微服務(wù)架構(gòu)概念的提出,API網(wǎng)關(guān)成為了微服務(wù)架構(gòu)的一個標(biāo)配組件,無時無刻在我們的應(yīng)用系統(tǒng)架構(gòu)中起著舉足輕重的作用。通常,網(wǎng)關(guān)在我們的架構(gòu)中主要包含以下功能,具體如下圖所示:目前市面上或者業(yè)務(wù)場景落地解決方案中,常見的開源網(wǎng)關(guān)大致上按照語言分類有如下幾類,具體如下圖所示:若我們依據(jù)使用范圍、成熟度以及落地場景等維度來劃分,目前主流網(wǎng)關(guān)技術(shù)應(yīng)用涉及以下4種:OpenResty、Kong、Zuul/Zuul2、SpringCloudGateway,此外,隨著Go語言在微服務(wù)領(lǐng)域的快速崛起以及應(yīng)用,F(xiàn)agongziAPI網(wǎng)關(guān)近也獲得不少關(guān)注。因此,若我們的開發(fā)平臺基于Java語言的,可選擇性較多,同時。山東平臺微服務(wù)架構(gòu)設(shè)計微服務(wù)的基本思想在于考慮圍繞著業(yè)務(wù)領(lǐng)域組件來創(chuàng)建應(yīng)用,這些應(yīng)用可地進(jìn)行開發(fā)、管理和加速。
單個微服務(wù)擁有自己的進(jìn)程,進(jìn)程本身就可以動態(tài)的啟停,為無縫升級的打好了基礎(chǔ),但誰來啟動和停止進(jìn)程,什么時機(jī),選擇在哪臺設(shè)備上做這件事情才是無縫升級的關(guān)鍵。這個能力并不是微服務(wù)本身提供的,而是需要背后強(qiáng)大的版本管理和部署能力。多個相同的微服務(wù)可以做負(fù)載均衡,提高性能和可靠性。正是因為相同微服務(wù)可以有多個不同實例,讓服務(wù)按需動態(tài)伸縮成為可能,在高峰期可以啟動更多的相同的微服務(wù)實例為更多用戶服務(wù),以此提高響應(yīng)速度。同時這種機(jī)制也提供了高可靠性,在某個微服務(wù)故障后,其他相同的微服務(wù)可以接替其工作,對外表現(xiàn)為某個設(shè)備故障后業(yè)務(wù)不中斷。同樣的道理,微服務(wù)本身是不會去關(guān)心系統(tǒng)負(fù)載的,那么什么時候應(yīng)該啟動更多的微服務(wù),多個微服務(wù)的流量應(yīng)該如何調(diào)度和分發(fā),這背后也有一套復(fù)雜的負(fù)載監(jiān)控和均衡的系統(tǒng)在起作用。微服務(wù)可以部署和對外提供服務(wù),微服務(wù)的業(yè)務(wù)上線和下線是動態(tài)的,當(dāng)一個新的微服務(wù)上線時,用戶是如何訪問到這種新的服務(wù)?這就需要有一個統(tǒng)一的入口,新的服務(wù)可以動態(tài)的注冊到這個入口上,用戶每次訪問時可以從這個入口拿到系統(tǒng)所有服務(wù)的訪問地址。這個統(tǒng)一的系統(tǒng)入口并不是微服務(wù)本身的一部分。
微服務(wù)也指一種種松耦合的、有一定的有界上下文的面向服務(wù)架構(gòu)。也就是說,如果每個服務(wù)都要同時修改,那么它們就不是微服務(wù),因為它們緊耦合在一起;如果你需要掌握一個服務(wù)太多的上下文場景使用條件,那么它就是一個有上下文邊界的服務(wù),這個定義來自DDD領(lǐng)域驅(qū)動設(shè)計。相對于單體架構(gòu)和SOA,它的主要特點是組件化、松耦合、自治、去中心化,體現(xiàn)在以下幾個方面:一組小的服務(wù)服務(wù)粒度要小,而每個服務(wù)是針對一個單一職責(zé)的業(yè)務(wù)能力的封裝,專注做好一件事情。部署運行和擴(kuò)展每個服務(wù)能夠被部署并運行在一個進(jìn)程內(nèi)。這種運行和部署方式能夠賦予系統(tǒng)靈活的代碼組織方式和發(fā)布節(jié)奏,使得快速交付和應(yīng)對變化成為可能。開發(fā)和演化技術(shù)選型靈活,不受遺留系統(tǒng)技術(shù)約束。合適的業(yè)務(wù)問題選擇合適的技術(shù)可以演化。服務(wù)與服務(wù)之間采取與語言無關(guān)的API進(jìn)行集成。相對單體架構(gòu),微服務(wù)架構(gòu)是更面向業(yè)務(wù)創(chuàng)新的一種架構(gòu)模式。團(tuán)隊和自治團(tuán)隊對服務(wù)的整個生命周期負(fù)責(zé),工作在的上下文中,自己決策自己治理,而不需要統(tǒng)一的指揮中心。團(tuán)隊和團(tuán)隊之間通過松散的社區(qū)部落進(jìn)行銜接。我們可以看到整個微服務(wù)的思想就如我們現(xiàn)在面對信息、知識是一樣的:通過解耦我們所做的事情。而在微服務(wù)背景下,每個服務(wù)單獨構(gòu)建,就有了選擇不同技術(shù)棧的機(jī)會,允許用更合適的工具去做不同的事情。
從這些契約可以生成存根,此后消費者團(tuán)隊可以在構(gòu)建過程中重復(fù)使用它們。消費者和生產(chǎn)者都需要驗證契約。CDCT強(qiáng)調(diào)契約由消費者來驅(qū)動,并由雙方共同遵守,是共同遵守。那么如何保證共同遵守呢?敏捷宣言中提到可工作的軟件優(yōu)于面面俱到的文檔。引入Contract概念的測試會定義一個Contract文檔(JSON協(xié)議文件)。對于消費方,該文檔被用作測試斷言依據(jù),文檔被轉(zhuǎn)換成一個可工作的軟件(可執(zhí)行的測試套件:修改文檔會導(dǎo)致測試失敗)。而對于服務(wù)提供方,因為測試的斷言與Contract文檔沒有強(qiáng)制關(guān)聯(lián),它多只能是一個面面俱到的文檔。所以,只有當(dāng)雙方都將文檔轉(zhuǎn)換成可工作的軟件時,文檔的修改便會導(dǎo)致任意一方測試失敗,文檔才真正成為雙方共同遵守的契約(可工作的軟件總是可靠的,文檔卻有可能已經(jīng)過期)。消費者驅(qū)動契約測試中存在一個契約,雙方基于契約生成可工作的測試套件:CDCT具備了引入Contract概念集成測試的諸多優(yōu)點,并且通過可工作的測試套件保證了契約的一致性和實時性。9.技術(shù)實踐運籌帷幄之中,決勝千里之外。三國明星諸葛亮負(fù)責(zé)運籌帷幄,關(guān)、張、趙等武將負(fù)責(zé)沖鋒陷陣,從而決勝千里之外的硝煙戰(zhàn)場。團(tuán)隊確定了測試策略之后,應(yīng)當(dāng)交由工具來實施執(zhí)行。微服務(wù)應(yīng)用樂于采用簡單輕量級協(xié)議,比如REST,而不是WS-,在微服務(wù)內(nèi)部避免使用ESB以及ESB類似功能。衡水分布式微服務(wù)架構(gòu)模式
微服務(wù)架構(gòu)是一項在云中部署應(yīng)用和服務(wù)的新技術(shù)。山東平臺微服務(wù)架構(gòu)設(shè)計
注重高效的可擴(kuò)展的數(shù)據(jù)中心:其它您可能感興趣的文章:云計算參考架構(gòu)幾例微服務(wù)與Docker介紹互聯(lián)網(wǎng)直播平臺架構(gòu)案例一高可用架構(gòu)案例一某互聯(lián)網(wǎng)公司廣告平臺技術(shù)架構(gòu)某大型電商云平臺實踐云計算參考架構(gòu)幾例移動應(yīng)用App測試與質(zhì)量管理一的軟件測試ERP廠商的SSO單點登錄解決方案介紹一軟件項目風(fēng)險管理介紹企業(yè)項目化管理介紹智能企業(yè)與信息化之一由企業(yè)家基本素質(zhì)想到的敏捷軟件質(zhì)量保證的方法與實踐構(gòu)建高效的研發(fā)與自動化運維IT運維監(jiān)控解決方案介紹IT持續(xù)集成之質(zhì)量管理人才公司環(huán)境與企業(yè)文化企業(yè)績效管理系統(tǒng)之平衡記分卡企業(yè)文化、團(tuán)隊文化與知識共享高效能的團(tuán)隊建設(shè)餐飲連鎖公司IT信息化解決方案一如有想了解更多軟件研發(fā),系統(tǒng)IT集成,企業(yè)信息化,項目管理,企業(yè)管理等資訊,請關(guān)注我的微信訂閱號:作者:PetterLiu出處:/wintersun/本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。該文章也同時發(fā)布在我的博客中-PetterLiuBlog。山東平臺微服務(wù)架構(gòu)設(shè)計
首匯信息技術(shù)河北有限公司坐落在新石北路368號金石創(chuàng)新大廈105室,是一家專業(yè)的計算機(jī)硬件技術(shù)研發(fā)、技術(shù)咨詢、技術(shù)服務(wù);計算機(jī)系統(tǒng)集成服務(wù);貨物或技術(shù)進(jìn)出口(國家限制和禁止的除外);互聯(lián)網(wǎng)信息服務(wù)(憑許可證經(jīng)營);設(shè)計、制作、代理國內(nèi)廣告業(yè)務(wù);發(fā)布國內(nèi)戶外廣告業(yè)務(wù);汽車配件、機(jī)械設(shè)備、五金產(chǎn)品、電子產(chǎn)品、化工產(chǎn)品(危險化學(xué)品及易制毒化學(xué)品除外、無存儲)、橡膠制品(醫(yī)用橡膠制品除外)、通信設(shè)備(衛(wèi)星電視廣播地面接收設(shè)施除外)、儀器儀表、安全技術(shù)防范設(shè)備、辦公設(shè)備的批發(fā)、零售。(依法需經(jīng)批準(zhǔn)的項目,經(jīng)相關(guān)部門批準(zhǔn)后方可開展經(jīng)營活動)公司。公司目前擁有專業(yè)的技術(shù)員工,為員工提供廣闊的發(fā)展平臺與成長空間,為客戶提供高質(zhì)的產(chǎn)品服務(wù),深受員工與客戶好評。誠實、守信是對企業(yè)的經(jīng)營要求,也是我們做人的基本準(zhǔn)則。公司致力于打造***的信息化中臺系統(tǒng)規(guī)劃,中臺ERP服務(wù)平臺。公司深耕信息化中臺系統(tǒng)規(guī)劃,中臺ERP服務(wù)平臺,正積蓄著更大的能量,向更廣闊的空間、更寬泛的領(lǐng)域拓展。