海南銀行微服務(wù)架構(gòu)開(kāi)發(fā)

來(lái)源: 發(fā)布時(shí)間:2022-04-17

    ThoughtWorks也在極力倡導(dǎo)開(kāi)發(fā)、設(shè)計(jì)、部署、運(yùn)維一體化的DEVOPS文化理念,并通過(guò)豐富的咨詢和交付成果來(lái)幫助企業(yè)研發(fā)團(tuán)隊(duì)更好地實(shí)施微服務(wù)架構(gòu)的開(kāi)發(fā)。那么在編碼測(cè)試方面,又有什么招來(lái)保證微服務(wù)架構(gòu)下系統(tǒng)的質(zhì)量?本文將從開(kāi)發(fā)測(cè)試的視角來(lái)探討如何在微服務(wù)架構(gòu)下通過(guò)不一樣的測(cè)試策略來(lái)盡可能的保證系統(tǒng)的質(zhì)量。2.單體應(yīng)用測(cè)試實(shí)踐當(dāng)我們的意識(shí)中只存在一樣?xùn)|西的時(shí)候,我們便可以不假思索的拿來(lái)就用。在單體時(shí)代,對(duì)于開(kāi)發(fā)-測(cè)試-部署,業(yè)界已經(jīng)具備了一套很成熟的解決方案?;谶@種方案,當(dāng)一個(gè)敏捷開(kāi)發(fā)的小Team開(kāi)始構(gòu)建一個(gè)應(yīng)用之前,CI搭建的過(guò)程也會(huì)變得非常簡(jiǎn)單:CI只需要從一個(gè)代碼庫(kù)中去pull代碼,然后編譯-測(cè)試-部署,它的流程可以簡(jiǎn)化成:在這種單線流水線模式下,如果團(tuán)隊(duì)的自動(dòng)化實(shí)踐做得很好,開(kāi)發(fā)人員只需要關(guān)注自己編寫代碼時(shí)所編寫的測(cè)試的質(zhì)量和數(shù)量。整個(gè)應(yīng)用的測(cè)試策略簡(jiǎn)單直接:保證足夠的單元測(cè)試的覆蓋率,保持一定數(shù)量的Servcie測(cè)試,添加一些重要業(yè)務(wù)流程的E2E測(cè)試。3.微服務(wù)測(cè)試的演變微服務(wù)架構(gòu)是一種演進(jìn)式架構(gòu),開(kāi)發(fā)團(tuán)隊(duì)跟領(lǐng)域**在一起進(jìn)行業(yè)務(wù)分析(EventStorming),從而劃分出的服務(wù),系統(tǒng)一開(kāi)始確定為服務(wù)的數(shù)量可能是幾個(gè)。UI服務(wù)其它服務(wù)來(lái)更新Web頁(yè)面。所有服務(wù)都是采用異步的,基于消息的通訊。海南銀行微服務(wù)架構(gòu)開(kāi)發(fā)

    微服務(wù)架構(gòu)是更面向業(yè)務(wù)創(chuàng)新的一種架構(gòu)模式。團(tuán)隊(duì)和自治團(tuán)隊(duì)對(duì)服務(wù)的整個(gè)生命周期負(fù)責(zé),工作在的上下文中,自己決策自己治理,而不需要統(tǒng)一的指揮中心。團(tuán)隊(duì)和團(tuán)隊(duì)之間通過(guò)松散的社區(qū)部落進(jìn)行銜接。微服務(wù)架構(gòu)設(shè)計(jì)簡(jiǎn)圖如下如上圖所示,微服務(wù)架構(gòu)可拆分為以下幾個(gè)基本組件1.注冊(cè)中心注冊(cè)中心記錄服務(wù)調(diào)度策略與服務(wù)接口的路由信息,網(wǎng)關(guān)根據(jù)注冊(cè)中心配置的服務(wù)調(diào)度信息實(shí)現(xiàn)負(fù)載均衡。注冊(cè)中心的服務(wù)配置信息可由具體服務(wù)上報(bào),也可由注冊(cè)中心主動(dòng)去具體服務(wù)查詢,對(duì)于大的集群建議由具體服務(wù)上報(bào)自身信息到注冊(cè)中心,一般情況下可由注冊(cè)中心主動(dòng)去查詢服務(wù)配置信息,這樣具體服務(wù)不用關(guān)心注冊(cè)中心,只提供自身配置信息查詢接口。2.對(duì)外網(wǎng)關(guān)對(duì)外網(wǎng)關(guān)是內(nèi)部服務(wù)集中出口,決定外部流量的走向,將流量分發(fā)到相應(yīng)的服務(wù),并且實(shí)現(xiàn)負(fù)載均衡策略。3.內(nèi)部網(wǎng)關(guān)內(nèi)部網(wǎng)關(guān),為內(nèi)部服務(wù)提供集中調(diào)用的地址,網(wǎng)絡(luò)隔離,不對(duì)外開(kāi)放。添加內(nèi)部網(wǎng)關(guān)主要是方便統(tǒng)一服務(wù)間相互調(diào)用,以及服務(wù)接口權(quán)限控制。很多架構(gòu)人員認(rèn)為內(nèi)部服務(wù)相互調(diào)用應(yīng)該是直聯(lián)方式,不應(yīng)該通過(guò)網(wǎng)關(guān)中轉(zhuǎn)。但筆者認(rèn)為內(nèi)部網(wǎng)關(guān)與服務(wù)都處在內(nèi)網(wǎng)環(huán)境,添加一個(gè)集中調(diào)度網(wǎng)關(guān)不存在性能問(wèn)題。浙江平臺(tái)微服務(wù)架構(gòu)設(shè)置微服務(wù)架構(gòu)模式有很多好處。首先,通過(guò)分解巨大單體式應(yīng)用為多個(gè)服務(wù)方法解決了復(fù)雜性問(wèn)題。

    能更好控制接口訪問(wèn)權(quán)限與負(fù)載均衡,不然內(nèi)部服務(wù)要關(guān)心訪問(wèn)權(quán)限與負(fù)載均衡等非業(yè)務(wù)問(wèn)題。4.配置中心配置中心主要管理通用配置,比如緩存配置、數(shù)據(jù)庫(kù)連接配置、消息隊(duì)列連接配置等,避免業(yè)務(wù)服務(wù)重復(fù)配置的問(wèn)題,將繁瑣、分散的配置簡(jiǎn)單化、集中化。5.監(jiān)控平臺(tái)監(jiān)控整個(gè)服務(wù)集群的運(yùn)行狀態(tài)、流量情況等,提供異常報(bào)警功能,做到異常結(jié)點(diǎn)的可視化監(jiān)管。6.日志平臺(tái)業(yè)務(wù)日志集中化管理,可以通過(guò)kafka等消息隊(duì)列收集業(yè)務(wù)服務(wù)的日志,進(jìn)行集中管理與分析統(tǒng)計(jì)。7.緩存集群緩存高頻數(shù)據(jù),有效減輕數(shù)據(jù)庫(kù)的負(fù)擔(dān),提升系統(tǒng)并發(fā)處理能力與穩(wěn)定性。8.數(shù)據(jù)庫(kù)集群業(yè)務(wù)數(shù)據(jù)終落地保存在數(shù)據(jù)庫(kù),也是緩存數(shù)據(jù)的來(lái)源,不同業(yè)務(wù)服務(wù)好有單獨(dú)的數(shù)據(jù)庫(kù)與緩存,做好冷熱數(shù)據(jù)分離,定期轉(zhuǎn)存歷史數(shù)據(jù)以減少在線數(shù)據(jù)量。9.業(yè)務(wù)服務(wù)微服務(wù)架構(gòu)下系統(tǒng)是由一組小的業(yè)務(wù)集群共同完成的,按業(yè)務(wù)與數(shù)據(jù)將系統(tǒng)拆分成不同的服務(wù),每個(gè)服務(wù)實(shí)現(xiàn)特定功能,在管理上實(shí)現(xiàn)自治,可橫向拓展。

    微服務(wù)軟件架構(gòu)是一個(gè)包含各種組織的系統(tǒng)組織,這些組件包括Web服務(wù)器,應(yīng)用服務(wù)器,數(shù)據(jù)庫(kù),存儲(chǔ),通訊層),它們彼此或和環(huán)境存在關(guān)系。系統(tǒng)架構(gòu)的目標(biāo)是解決利益相關(guān)者的關(guān)注點(diǎn)。Conway’slaw:Organizationswhichdesignsystems[...]areconstrainedtoproducedesignswhicharecopiesofthecommunicationstructuresoftheseorganizations.(設(shè)計(jì)系統(tǒng)的組織,其產(chǎn)生的設(shè)計(jì)和架構(gòu)等價(jià)于組織間的溝通結(jié)構(gòu)。)Monolithic架構(gòu)Monolithic比較適合小項(xiàng)目,優(yōu)點(diǎn)是:開(kāi)發(fā)簡(jiǎn)單直接,集中式管理,基本不會(huì)重復(fù)開(kāi)發(fā)功能都在本地,沒(méi)有分布式的管理開(kāi)銷和調(diào)用開(kāi)銷。它的缺點(diǎn)也非常明顯,特別對(duì)于互聯(lián)網(wǎng)公司來(lái)說(shuō)(不一一列舉了):開(kāi)發(fā)效率低:所有的開(kāi)發(fā)在一個(gè)項(xiàng)目改代碼,遞交代碼相互等待,代碼不斷代碼維護(hù)難:代碼功能耦合在一起,新人不知道何從下手部署不靈活:構(gòu)建時(shí)間長(zhǎng),任何小修改必須重新構(gòu)建整個(gè)項(xiàng)目,這個(gè)過(guò)程往往很長(zhǎng)穩(wěn)定性不高:一個(gè)微不足道的小問(wèn)題,可以導(dǎo)致整個(gè)應(yīng)用掛掉擴(kuò)展性不夠:無(wú)法滿足高并發(fā)情況下的業(yè)務(wù)需求微服務(wù)架構(gòu)微服務(wù)是指開(kāi)發(fā)一個(gè)單個(gè)小型的但有業(yè)務(wù)功能的服務(wù),每個(gè)服務(wù)都有自己的處理和輕量通訊機(jī)制,可以部署在單個(gè)或多個(gè)服務(wù)器上。微服務(wù)也指一種種松耦合的、有一定的有界上下文的面向服務(wù)架構(gòu)。

    當(dāng)一個(gè)微服務(wù)架構(gòu)系統(tǒng)中服務(wù)個(gè)數(shù)量達(dá)到一定之后,很多開(kāi)發(fā)團(tuán)隊(duì)對(duì)UI測(cè)試開(kāi)始望而卻步,因?yàn)樵谝粋€(gè)存在多個(gè)服務(wù)的系統(tǒng)中(即便單體應(yīng)用系統(tǒng))做集成測(cè)試,會(huì)面臨諸多痛點(diǎn):需要維護(hù)完整的運(yùn)行環(huán)境,成本很高。環(huán)境不穩(wěn)定(UI不穩(wěn)定)導(dǎo)致測(cè)試隨機(jī)掛,功能增強(qiáng)很容易破壞大量測(cè)試。問(wèn)題難定位,修復(fù)時(shí)間太長(zhǎng),影響Pipeline的推進(jìn)。運(yùn)行速度慢,反饋周期長(zhǎng)。存在重復(fù)測(cè)試已測(cè)試的功能。這些痛點(diǎn)在很大程度上會(huì)削減一個(gè)開(kāi)發(fā)團(tuán)隊(duì)的生產(chǎn)力,某些企業(yè)會(huì)雇一個(gè)QA進(jìn)行重復(fù)的人工測(cè)試從而解放開(kāi)發(fā)人員的生產(chǎn)力。這種措施有悖于追求的理念,并沒(méi)有從本質(zhì)上解決系統(tǒng)的集成的質(zhì)量問(wèn)題。既然UI測(cè)試已經(jīng)不適用引進(jìn)了微服務(wù)架構(gòu)的開(kāi)發(fā)團(tuán)隊(duì),要如何保證服務(wù)集成的質(zhì)量,我們還需要在自動(dòng)化測(cè)試道路上另辟蹊徑。,我們不妨退一步思考,將集成的范圍縮小保證服務(wù)倆倆的集成的可靠性。有了這個(gè)想法,我們開(kāi)始對(duì)服務(wù)倆倆配對(duì)做集成測(cè)試。測(cè)試架構(gòu)演變成:我們需要真實(shí)運(yùn)行待測(cè)試的服務(wù),并且對(duì)其他服務(wù)使用替身。不難看出這種方式存在以下問(wèn)題:需要運(yùn)行待集成的真實(shí)服務(wù),存在環(huán)境不穩(wěn)定導(dǎo)致維護(hù)成本增加。需要Mock掉其他服務(wù),增加了額外的工作量。存在大量重復(fù)測(cè)試已經(jīng)測(cè)試的功能。盡管也是模塊化邏輯,但是終它還是會(huì)打包并部署為單體式應(yīng)用。具體的格式依賴于應(yīng)用語(yǔ)言和框架。北京路由微服務(wù)架構(gòu)設(shè)計(jì)

團(tuán)隊(duì)對(duì)服務(wù)的整個(gè)生命周期負(fù)責(zé),工作在的上下文中,自己決策自己治理,而不需要統(tǒng)一的指揮中心。海南銀行微服務(wù)架構(gòu)開(kāi)發(fā)

    請(qǐng)求總數(shù)下限:在快照時(shí)間窗內(nèi),必須滿足請(qǐng)求總數(shù)下限才有資格根據(jù)熔斷。默認(rèn)為20,意味著在10秒內(nèi),如果該hystrix命令的調(diào)用此時(shí)不足20次,即時(shí)所有的請(qǐng)求都超時(shí)或其他原因失敗,斷路器都不會(huì)打開(kāi)。錯(cuò)誤百分比下限:當(dāng)請(qǐng)求總數(shù)在快照時(shí)間窗內(nèi)超過(guò)了下限,比如發(fā)生了30次調(diào)用,如果在這30次調(diào)用中,有16次發(fā)生了超時(shí)異常,也就是超過(guò)50%的錯(cuò)誤百分比,在默認(rèn)設(shè)定50%下限情況下,這時(shí)候就會(huì)將斷路器打開(kāi)。那么當(dāng)斷路器打開(kāi)之后會(huì)發(fā)生什么呢?我們先來(lái)說(shuō)說(shuō)斷路器未打開(kāi)之前,對(duì)于之前那個(gè)示例的情況就是每個(gè)請(qǐng)求都會(huì)在當(dāng)hystrix超時(shí)之后返回fallback,每個(gè)請(qǐng)求時(shí)間延遲就是近似hystrix的超時(shí)時(shí)間,如果設(shè)置為5秒,那么每個(gè)請(qǐng)求就都要延遲5秒才會(huì)返回。當(dāng)熔斷器在10秒內(nèi)發(fā)現(xiàn)請(qǐng)求總數(shù)超過(guò)20,并且錯(cuò)誤百分比超過(guò)50%,這個(gè)時(shí)候熔斷器打開(kāi)。打開(kāi)之后,再有請(qǐng)求調(diào)用的時(shí)候,將不會(huì)調(diào)用主邏輯,而是直接調(diào)用降級(jí)邏輯,這個(gè)時(shí)候就不會(huì)等待5秒之后才返回fallback。通過(guò)斷路器,實(shí)現(xiàn)了自動(dòng)地發(fā)現(xiàn)錯(cuò)誤并將降級(jí)邏輯切換為主邏輯,減少響應(yīng)延遲的效果。在斷路器打開(kāi)之后,處理邏輯并沒(méi)有結(jié)束,我們的降級(jí)邏輯已經(jīng)被成了主邏輯,那么原來(lái)的主邏輯要如何恢復(fù)呢?對(duì)于這一問(wèn)題。海南銀行微服務(wù)架構(gòu)開(kāi)發(fā)

首匯信息技術(shù)河北有限公司位于新石北路368號(hào)金石創(chuàng)新大廈105室,擁有一支專業(yè)的技術(shù)團(tuán)隊(duì)。中臺(tái)系統(tǒng)是首匯信息技術(shù)河北有限公司的主營(yíng)品牌,是專業(yè)的計(jì)算機(jī)硬件技術(shù)研發(fā)、技術(shù)咨詢、技術(shù)服務(wù);計(jì)算機(jī)系統(tǒng)集成服務(wù);貨物或技術(shù)進(jìn)出口(國(guó)家限制和禁止的除外);互聯(lián)網(wǎng)信息服務(wù)(憑許可證經(jīng)營(yíng));設(shè)計(jì)、制作、代理國(guó)內(nèi)廣告業(yè)務(wù);發(fā)布國(guó)內(nèi)戶外廣告業(yè)務(wù);汽車配件、機(jī)械設(shè)備、五金產(chǎn)品、電子產(chǎn)品、化工產(chǎn)品(危險(xiǎn)化學(xué)品及易制毒化學(xué)品除外、無(wú)存儲(chǔ))、橡膠制品(醫(yī)用橡膠制品除外)、通信設(shè)備(衛(wèi)星電視廣播地面接收設(shè)施除外)、儀器儀表、安全技術(shù)防范設(shè)備、辦公設(shè)備的批發(fā)、零售。(依法需經(jīng)批準(zhǔn)的項(xiàng)目,經(jīng)相關(guān)部門批準(zhǔn)后方可開(kāi)展經(jīng)營(yíng)活動(dòng))公司,擁有自己**的技術(shù)體系。我公司擁有強(qiáng)大的技術(shù)實(shí)力,多年來(lái)一直專注于計(jì)算機(jī)硬件技術(shù)研發(fā)、技術(shù)咨詢、技術(shù)服務(wù);計(jì)算機(jī)系統(tǒng)集成服務(wù);貨物或技術(shù)進(jìn)出口(國(guó)家限制和禁止的除外);互聯(lián)網(wǎng)信息服務(wù)(憑許可證經(jīng)營(yíng));設(shè)計(jì)、制作、代理國(guó)內(nèi)廣告業(yè)務(wù);發(fā)布國(guó)內(nèi)戶外廣告業(yè)務(wù);汽車配件、機(jī)械設(shè)備、五金產(chǎn)品、電子產(chǎn)品、化工產(chǎn)品(危險(xiǎn)化學(xué)品及易制毒化學(xué)品除外、無(wú)存儲(chǔ))、橡膠制品(醫(yī)用橡膠制品除外)、通信設(shè)備(衛(wèi)星電視廣播地面接收設(shè)施除外)、儀器儀表、安全技術(shù)防范設(shè)備、辦公設(shè)備的批發(fā)、零售。(依法需經(jīng)批準(zhǔn)的項(xiàng)目,經(jīng)相關(guān)部門批準(zhǔn)后方可開(kāi)展經(jīng)營(yíng)活動(dòng))的發(fā)展和創(chuàng)新,打造高指標(biāo)產(chǎn)品和服務(wù)。自公司成立以來(lái),一直秉承“以質(zhì)量求生存,以信譽(yù)求發(fā)展”的經(jīng)營(yíng)理念,始終堅(jiān)持以客戶的需求和滿意為重點(diǎn),為客戶提供良好的信息化中臺(tái)系統(tǒng)規(guī)劃,中臺(tái)ERP服務(wù)平臺(tái),從而使公司不斷發(fā)展壯大。