簡單地說,API主導(dǎo)的連接方法可以被看作是API設(shè)計的一種分層方法(至少在本文中是這樣)。其中,系統(tǒng)API公開系統(tǒng)的資產(chǎn)數(shù)據(jù)信息;中間的是流程API,與系統(tǒng)API一起進行編排和組合;頂端的體驗API公開來自后端數(shù)據(jù)源的數(shù)據(jù),站群服務(wù)器,提供最終用戶體驗。這種API分層方法與細粒度SOA模式很好地結(jié)合在一起,通常,這兩者要么可以共存,要么細粒度SOA模式演化成基于細粒度SOA的分層API模式。
API主導(dǎo)的連接方法為細粒度SOA模式提供了一些層次結(jié)構(gòu),這些層次結(jié)構(gòu)允許對API或微服務(wù)進行一致的管理和治理。然而,基于細粒度SOA的分層API模式也存在一些與細粒度SOA 模式類似的深層問題(這很直觀):
在細粒度SOA模式執(zhí)行單個API調(diào)用的地方,基于細粒度SOA的分層API模式現(xiàn)在必須通過層執(zhí)行多個調(diào)用。從“網(wǎng)絡(luò)跳數(shù)”的角度來看,這種模式可能是低效的。但是,基于細粒度SOA的分層API模式中,層次結(jié)構(gòu)的存在并不強制跨越網(wǎng)絡(luò)來調(diào)用每個API。直接的跨層調(diào)用,而不是通過網(wǎng)絡(luò)調(diào)用是完全有效的;分層的目的是為了增加靈活性,同時以一種很好地分離關(guān)注點的方式構(gòu)建體系架構(gòu)。
在細粒度SOA模式管理大量服務(wù)的地方,使用分層API將會管理來自多個層次的大量細粒度服務(wù)。您的管理工具可能不再像以前那樣有效,因為它們可能無法可視化復(fù)雜的微服務(wù)視圖。
最終應(yīng)用程序的數(shù)據(jù)存儲一致性在分層API模式下實際上得到了改善,因為訪問數(shù)據(jù)的服務(wù)都是有組織,且集中地查詢或修改應(yīng)用程序的狀態(tài)。(例如:系統(tǒng)API)
實際上,對于大多數(shù)企業(yè)來說,基于細粒度SOA的分層API模式是一個很好的模式,但是,就像細粒度SOA模式一樣,在實踐過程中會出現(xiàn)困難。然而,這種困難通常在大范圍使用時才會顯現(xiàn)出來。因此,只有在預(yù)期或正在經(jīng)歷大規(guī)模的使用時,我們才應(yīng)該準(zhǔn)備其他的模式。
問題:
沒有一定層次結(jié)構(gòu)的微服務(wù)架構(gòu)是很難進行合理解釋的,因為沒有明顯的方法來對每個微服務(wù)的用途進行分類和可視化。
解決方案:
通過創(chuàng)建按用途分組的分層API(系統(tǒng)層、流程及領(lǐng)域模型層,以及體驗層),您可以更容易地管理微服務(wù)架構(gòu)的復(fù)雜性。
應(yīng)用:
將微服務(wù)架構(gòu)分為多個層。通常情況下,可以使用標(biāo)準(zhǔn)化,并具有類似用途的一組微服務(wù)以類似的方式工作,從而進一步使微服務(wù)架構(gòu)的復(fù)雜性合理化。
影響:
1.通過標(biāo)準(zhǔn)化和進一步分解微服務(wù)架構(gòu),可以提高快速變更的能力。
2.由于更專門化的層次結(jié)構(gòu),進程間服務(wù)調(diào)用的數(shù)量可能增加。
3.需要對服務(wù)監(jiān)控和可視化工具進行檢查,以確定它們是否能夠正確地與分層架構(gòu)一起工作。
目標(biāo):
1.快速的敏捷變更。
2.可伸縮性:理論上通過基于細粒度SOA的分層API模式可以提高可伸縮性,但實際上,除非有支持自動化的基礎(chǔ)設(shè)施,否則可伸縮性往往會降低。
主要特點:
1.為了實現(xiàn)快速變更,,可能存在低效的IPC(Inter-Process Communication,進程間通信)。
2.數(shù)據(jù)一致性和狀態(tài)管理能力較差,但允許高度重用。重用本身會抵消變更的速度。
3.由于與現(xiàn)存模式的相似性,已有的問題往往同樣會出現(xiàn)。
4.基于細粒度SOA的分層API模式在小范圍內(nèi)使用效果很好,在大規(guī)模情況下會出現(xiàn)困難。
5.由于采用了結(jié)構(gòu)化的體系架構(gòu)方法,所以具有很高的內(nèi)聚性。
6.重點放在服務(wù)顆粒度要細,但通常沒有考慮其能力。
7.基于細粒度SOA的分層API模式以集成為導(dǎo)向,每個微服務(wù)依賴于外部系統(tǒng)。這將會降低變更的速度。
基于細粒度SOA的分層API模式如何與SOA或API等現(xiàn)有系統(tǒng)共存?
基于細粒度SOA的分層API模式往往是與現(xiàn)有IT資產(chǎn)共存的最佳方式。由于分層減少了每個微服務(wù)的范圍,并約束了其用途,因此該模式能夠在不明顯降低變更速度的情況下,最好地連接和利用現(xiàn)有IT系統(tǒng)。然而,通過細粒度和分層的設(shè)計來協(xié)調(diào)變更可能是一個挑戰(zhàn)。您可能需要使用一定的技術(shù)手段來管理所有不同微服務(wù)之間的契約,或者使用完全自動化的測試技術(shù)來確保變更不會造成破壞。