微服務(wù)開發(fā)攻略之淺析微服務(wù)架構(gòu)
新北ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
最近這些年,微服務(wù)非?;?,那你有沒想過微服務(wù)的動(dòng)機(jī)是什么?其實(shí),最重要的動(dòng)機(jī)就是業(yè)務(wù)變化太快了。特別是移動(dòng)互聯(lián)網(wǎng)出現(xiàn)以后,各種各樣的業(yè)務(wù):共享單車、支付寶、微信支付等等,業(yè)務(wù)經(jīng)歷著飛速的變革與創(chuàng)新,所以就要求底層的應(yīng)用技術(shù)能夠支撐得上業(yè)務(wù)的快速變化。
我們看一下應(yīng)用架構(gòu)的變遷,其實(shí)也是從另一個(gè)角度來印證上文說的“快”。
第一代是單體架構(gòu),當(dāng)然它有很多,例如緊耦合、封閉架構(gòu)等各種各樣的問題。第二代是SOA架構(gòu),可能大型企業(yè)級的應(yīng)用里面會(huì)比較多,提供了很多種支持,實(shí)際上我們看到SOA架構(gòu)的時(shí)候,它已經(jīng)強(qiáng)調(diào)松耦合了。那么他強(qiáng)調(diào)這一點(diǎn)是為了什么?其中一點(diǎn)就是因?yàn)榭欤ó?dāng)然不是僅僅為了快)。到現(xiàn)在第三代微服務(wù)架構(gòu),它實(shí)際上是變得更加靈活了。在業(yè)務(wù)變化非??焖俚谋尘爸?,微服務(wù)架構(gòu)是一個(gè)非常好的解決方案,微服務(wù)的核心——敏捷、靈活、精準(zhǔn)彈性。微服務(wù)架構(gòu)出現(xiàn)的最大的意義是不斷地提高交付效率,縮短交付周期。
微服務(wù)最有名的人——Martin Fowler,在2015年提出了微服務(wù)的概念(實(shí)際上2009年Netflix就已經(jīng)開始實(shí)踐微服務(wù)了,但是當(dāng)時(shí)沒有微服務(wù)一詞)。2015年Martin Fowler明確的提出了微服務(wù)的概念并對它進(jìn)行了一些比較清晰的定義,最主要的就是:小、獨(dú)、輕、松。就是說微服務(wù)要小,模塊邊界要更清晰,支持獨(dú)立部署獨(dú)立演進(jìn),每個(gè)微服務(wù)都應(yīng)該可以獨(dú)立部署,獨(dú)立演進(jìn),獨(dú)立升級的。另外允許技術(shù)多樣性,就是在微服務(wù)構(gòu)成的一個(gè)整體的應(yīng)用系統(tǒng)里面,每一塊的業(yè)務(wù)要用你最適合的技術(shù)去實(shí)現(xiàn),而不是都統(tǒng)一用一種語言去實(shí)現(xiàn),這也是微服務(wù)非常重要的一個(gè)特點(diǎn)。
所有事情都有兩面性,那微服務(wù)也不是只有好處沒有壞處的,它也會(huì)帶來問題。其實(shí)很明顯,例如,從運(yùn)維人員的角度來看,原來只需要運(yùn)維一個(gè)應(yīng)用;把它拆開后,就需要運(yùn)維多個(gè)應(yīng)用,復(fù)雜性和難度一定是增加的。從開發(fā)人員的角度來看,原來寫程序的時(shí)候,單體應(yīng)用,方法之間的調(diào)用就可以解決很多業(yè)務(wù)的處理了;變成分布式以后,就要遠(yuǎn)程調(diào)用,不能用簡單的進(jìn)程內(nèi)的調(diào)用了。用遠(yuǎn)程調(diào)用它就會(huì)出現(xiàn)一些問題,比如會(huì)變慢、可靠性比進(jìn)程內(nèi)部的差等等。那開發(fā)人員就要去處理這些問題,要去為這些問題做準(zhǔn)備。還有一點(diǎn)也是非常重要的,就是數(shù)據(jù)一致性的問題。原來在單體應(yīng)用里面,可以用數(shù)據(jù)庫保持?jǐn)?shù)據(jù)的一致性(或者說用數(shù)據(jù)庫的事務(wù)去保證數(shù)據(jù)的一致性);但是到分布式系統(tǒng)以后,突然發(fā)現(xiàn)這種方式不行了。因?yàn)樵谖⒎?wù)架構(gòu)里面提倡的是數(shù)據(jù)分開,就是說每一個(gè)微服務(wù)都會(huì)有自己獨(dú)立的數(shù)據(jù)庫。Martin Fowler也講了允許技術(shù)的多樣性,到數(shù)據(jù)這一層也要用最合適的數(shù)據(jù)庫技術(shù)去構(gòu)建單獨(dú)的微服務(wù)。原來保證數(shù)據(jù)一致性都是關(guān)系型數(shù)據(jù)庫,直接用事物就好了。但是到了微服務(wù)就不一樣,可能有些微服務(wù)用的是關(guān)系型數(shù)據(jù)庫,但有些微服務(wù)用的是非關(guān)系型的數(shù)據(jù)庫。所以在這樣的前提下,去保證整個(gè)系統(tǒng)的數(shù)據(jù)一致性,也是帶來了很大的挑戰(zhàn)的。
以上大致介紹了什么是微服務(wù)架構(gòu),它有什么樣的特點(diǎn),又有什么樣的優(yōu)勢和挑戰(zhàn)。想了解更多微服務(wù)相關(guān)內(nèi)容嗎,華為云學(xué)院(https://edu.huaweicloud.com/)
已上線多門微服務(wù)相關(guān)課程,從基礎(chǔ)知識入門,到開發(fā)第一個(gè)微服務(wù),到微服務(wù)的上線、治理,帶你一站式攻克微服務(wù),敏捷開發(fā)微服務(wù)應(yīng)用,快來報(bào)名學(xué)習(xí)吧。