聚搜云(m.gzjcsc123.com)是上海聚搜信息技術(shù)有限公司旗下品牌,坐落于魔都上海,服務(wù)于全球、2019年成為阿里云代理商生態(tài)合作伙伴。與阿里云代理商、騰訊云、華為云、西部數(shù)碼、美橙互聯(lián)、谷歌云、AWS亞馬遜云國(guó)際站代理商、聚搜云,長(zhǎng)期戰(zhàn)略合作的計(jì)劃!阿里云國(guó)際站代理商專業(yè)的云服務(wù)商!
微服務(wù)體系結(jié)構(gòu)將軟件構(gòu)建為協(xié)作服務(wù)的套件。
微服務(wù)體系結(jié)構(gòu)是在體系結(jié)構(gòu)級(jí)別應(yīng)用單一責(zé)任原則的自然結(jié)果。與傳統(tǒng)的單片體系結(jié)構(gòu)相比,這帶來(lái)了許多好處,例如不同組件的獨(dú)立可部署性、語(yǔ)言、平臺(tái)和技術(shù)獨(dú)立性、不同的可伸縮性軸以及增加的體系結(jié)構(gòu)靈活性。
就規(guī)模而言,沒(méi)有硬性規(guī)定。通常,微服務(wù)的數(shù)量級(jí)為數(shù)百行,但根據(jù)它們所封裝的職責(zé),也可以達(dá)到數(shù)十行或數(shù)千行。一個(gè)好的,盡管不具體的經(jīng)驗(yàn)法則是盡可能小,但盡可能大,以表示他們擁有的領(lǐng)域概念?!拔⒎?wù)應(yīng)該有多大?”有更多細(xì)節(jié)。
微服務(wù)通常使用HTTP上的REST進(jìn)行集成。通過(guò)這種方式,業(yè)務(wù)域概念被建模為由每個(gè)服務(wù)管理的一個(gè)或多個(gè)資源。在最成熟的RESTful系統(tǒng)中,資源是使用超媒體控件鏈接的,這樣每個(gè)資源的位置對(duì)服務(wù)的使用者是不透明的。參見(jiàn)Richardson成熟度模型了解更多細(xì)節(jié)。
有時(shí)會(huì)使用其他集成機(jī)制,如輕量級(jí)消息傳遞協(xié)議、發(fā)布-訂閱模型或替代傳輸,如Protobuf或Thrift。
每個(gè)微服務(wù)可能提供,也可能不提供某種形式的用戶界面。
微服務(wù)通??梢苑殖深?lèi)似的模塊
通常,微服務(wù)顯示由部分或所有顯示層組成的類(lèi)似內(nèi)部結(jié)構(gòu)。
所采用的任何測(cè)試策略都應(yīng)該旨在為服務(wù)的每一層以及層與層之間提供覆蓋,同時(shí)保持輕量級(jí)。
資源充當(dāng)服務(wù)公開(kāi)的應(yīng)用程序協(xié)議和消息到表示域的對(duì)象之間的映射器。通常,它們是瘦的,負(fù)責(zé)檢查請(qǐng)求的完整性,并根據(jù)業(yè)務(wù)事務(wù)的結(jié)果提供特定于協(xié)議的響應(yīng)。
幾乎所有的服務(wù)邏輯都駐留在表示業(yè)務(wù)域的域模型中。在這些對(duì)象中,服務(wù)跨多個(gè)域活動(dòng)進(jìn)行協(xié)調(diào),而存儲(chǔ)庫(kù)作用于域?qū)嶓w的集合,并且通常支持持久性。
如果一個(gè)服務(wù)有另一個(gè)服務(wù)作為協(xié)作者,則需要一些邏輯來(lái)與外部服務(wù)通信。網(wǎng)關(guān)用遠(yuǎn)程服務(wù)封裝消息傳遞,對(duì)來(lái)自域?qū)ο蟮恼?qǐng)求和響應(yīng)進(jìn)行編組。它很可能使用理解底層協(xié)議的客戶機(jī)來(lái)處理請(qǐng)求-響應(yīng)周期。
除非在最瑣碎的情況下,或者當(dāng)服務(wù)充當(dāng)跨其他服務(wù)擁有的資源的聚合器時(shí),微服務(wù)將需要能夠在請(qǐng)求之間持久保存來(lái)自域的對(duì)象。這通常是通過(guò)使用對(duì)象關(guān)系映射或更輕量級(jí)的數(shù)據(jù)映射器來(lái)實(shí)現(xiàn)的,具體取決于持久性需求的復(fù)雜性。
微服務(wù)通過(guò)網(wǎng)絡(luò)相互連接,并利用“外部”數(shù)據(jù)存儲(chǔ)
微服務(wù)通過(guò)在每個(gè)相關(guān)模塊之間傳遞消息以形成響應(yīng)來(lái)處理請(qǐng)求。一個(gè)特定的請(qǐng)求可能需要與服務(wù)、網(wǎng)關(guān)或存儲(chǔ)庫(kù)交互,因此模塊之間的連接是松散定義的。
自動(dòng)化測(cè)試應(yīng)該以盡可能精細(xì)的粒度為每一個(gè)通信提供覆蓋。因此,每個(gè)測(cè)試都提供了一個(gè)集中且快速的反饋循環(huán)。
資源接收到請(qǐng)求,一旦驗(yàn)證,就調(diào)用域開(kāi)始處理請(qǐng)求。
如果必須協(xié)調(diào)許多模塊來(lái)完成業(yè)務(wù)事務(wù),則資源將委托給服務(wù)。否則,它直接與相關(guān)模塊通信。
到外部服務(wù)的連接需要特別注意,因?yàn)樗鼈兛缭搅司W(wǎng)絡(luò)邊界。系統(tǒng)應(yīng)該對(duì)遠(yuǎn)程組件的中斷具有彈性。網(wǎng)關(guān)包含處理此類(lèi)錯(cuò)誤情況的邏輯。
通常,與外部服務(wù)的通信比進(jìn)程通信中的等效通信更粗粒度,以防止API的閑聊和延遲。
類(lèi)似地,與外部數(shù)據(jù)存儲(chǔ)的通信具有不同的設(shè)計(jì)考慮因素。雖然服務(wù)與數(shù)據(jù)存儲(chǔ)的邏輯耦合比與外部服務(wù)的邏輯耦合更緊密,但數(shù)據(jù)存儲(chǔ)仍然存在于網(wǎng)絡(luò)邊界之上,這會(huì)導(dǎo)致延遲和中斷的風(fēng)險(xiǎn)。
網(wǎng)絡(luò)分區(qū)的存在會(huì)影響所采用的測(cè)試風(fēng)格。這些模塊的測(cè)試可能需要較長(zhǎng)的執(zhí)行時(shí)間,并且可能會(huì)因?yàn)閳F(tuán)隊(duì)控制之外的原因而失敗。
多個(gè)服務(wù)作為一個(gè)系統(tǒng)一起工作,以提供有業(yè)務(wù)價(jià)值的功能
通常,一個(gè)團(tuán)隊(duì)將充當(dāng)一個(gè)或多個(gè)微服務(wù)的監(jiān)護(hù)人。這些服務(wù)交換消息以處理更大的業(yè)務(wù)請(qǐng)求。就交換格式而言,JSON目前是最流行的,盡管有許多替代方案,其中XML是最常見(jiàn)的。
在某些情況下,異步發(fā)布-訂閱通信機(jī)制比同步點(diǎn)對(duì)點(diǎn)機(jī)制更適合用例。作為實(shí)現(xiàn)微服務(wù)之間發(fā)布-訂閱的輕量級(jí)方法,Atom聯(lián)合格式正變得越來(lái)越流行。
由于業(yè)務(wù)請(qǐng)求跨越由網(wǎng)絡(luò)分區(qū)分隔的多個(gè)組件,因此必須考慮系統(tǒng)中可能的故障模式。諸如超時(shí)、斷路器和隔墻等技術(shù)可以幫助保持整個(gè)系統(tǒng)的正常運(yùn)行時(shí)間,盡管組件中斷。
在較大的系統(tǒng)中,通常有多個(gè)團(tuán)隊(duì),每個(gè)團(tuán)隊(duì)負(fù)責(zé)不同的邊界上下文。
外部服務(wù)的測(cè)試關(guān)注點(diǎn)可能與您團(tuán)隊(duì)控制下的服務(wù)的測(cè)試關(guān)注點(diǎn)不同,因?yàn)閷?duì)于外部團(tuán)隊(duì)服務(wù)的接口和可用性的保證更少。
