日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

什么是微服務(wù)架構(gòu),微服務(wù)框架( 二 )


如果你閱讀了Fowler的整篇文章,你會發(fā)現(xiàn),其中的指導(dǎo)建議是非常實用的 。在決定將所有組件組合到一起時,開發(fā)人員需要非常確信這些組件都會有所改變,并且規(guī)模也會發(fā)生變化 。服務(wù)粒度越粗,就越難以符合規(guī)定原則 。服務(wù)粒度越細(xì),就越能夠靈活地降低變化和負(fù)載所帶來的影響 。然而,利弊之間的權(quán)衡過程是非常復(fù)雜的,我們要在配置和資金模型的基礎(chǔ)上考慮到基礎(chǔ)設(shè)施的成本問題 。
在了解了微服務(wù)架構(gòu)后,我們來分析下微服務(wù)架構(gòu)又哪些缺點和難點 。微服務(wù)模塊拆分后,各微服務(wù)間集成復(fù)雜度指數(shù)級增加簡單舉例來說,一個企業(yè)已經(jīng)實施了5個業(yè)務(wù)系統(tǒng),業(yè)務(wù)系統(tǒng)之間有10個接口 。如果全部微服務(wù)化則可能設(shè)計到50個微服務(wù)模塊,上100個接口和集成點 ??上攵趶氐讓嵤┪⒎?wù)后,我們前期架構(gòu)設(shè)計,后期集成和管控的復(fù)雜度增加10倍以上 。
這種集成難度會遠(yuǎn)超大多數(shù)人想象,如果拿真實做的項目來說,如果談業(yè)務(wù)系統(tǒng)只有3個,而到微服務(wù)模塊級別則有接近60個,而實際涉及到的集成接口上1000個 。我們做任何一個復(fù)雜端到端業(yè)務(wù)的聯(lián)調(diào)基本就需要花2,3周甚至更長的時間 ?;ヂ?lián)網(wǎng)企業(yè)為何適合做微服務(wù)架構(gòu),其重要的一個原因就是互聯(lián)網(wǎng)企業(yè)如電商平臺,在進行了微服務(wù)化后各個模塊之間耦合性很低,并不會有太多的集成和協(xié)同點 。
或者簡單來說,各個微服務(wù)模塊更多的是向上面的PC端或APP端提供服務(wù)能力,而模塊橫向間接口協(xié)同很少 。正是在這種低耦合情況下,協(xié)同和集成相對來說容易 。而轉(zhuǎn)回到企業(yè)內(nèi)部你會發(fā)現(xiàn),在微服務(wù)模塊化后,各個模塊之間的集成點相當(dāng)多,特別是業(yè)務(wù)系統(tǒng)拆分到模塊或組件這一個級別后,很多原有內(nèi)部的集成和依賴點全部暴露出來了,你都需要去很好的管理 。
由于這里面有大量的橫向集成和協(xié)同點,因此導(dǎo)致的就是微服務(wù)模塊間的橫向集成異常復(fù)雜,遠(yuǎn)超很多互聯(lián)網(wǎng)應(yīng)用,這是實際你會面臨的問題 。微服務(wù)模塊拆分后,各微服務(wù)間集成復(fù)雜度指數(shù)級增加只談微服務(wù)架構(gòu)的松耦合和高擴展性,而不談開發(fā)和集成復(fù)雜度的都是耍流氓 。實際上當(dāng)前很多企業(yè)對微服務(wù)架構(gòu)并沒有如此迫切,互聯(lián)網(wǎng)很多企業(yè)推行微服務(wù)架構(gòu)更多的還是考慮到巨大的業(yè)務(wù)并發(fā)量下的系統(tǒng)彈性擴展能力,而實際大多數(shù)企業(yè)內(nèi)應(yīng)用往往并沒有如此海量并發(fā) 。
其次,即使在并發(fā)量增加的情況下通過進行代碼本身的優(yōu)化,數(shù)據(jù)庫調(diào)優(yōu)或者升級硬件服務(wù)器資源都可以較好的解決性能問題 。而做這些事情投入的成本遠(yuǎn)遠(yuǎn)小于微服務(wù)架構(gòu)帶來的開發(fā)復(fù)雜度增加成本,后期的運維管控成本 。要做到完全微服務(wù)模塊獨立,微服務(wù)架構(gòu)下最大的一個變化就是數(shù)據(jù)庫也拆分開了,原來的一個業(yè)務(wù)系統(tǒng)如果分為5個微服務(wù)模塊,那理論上就是5個獨立的后臺數(shù)據(jù)庫,而且數(shù)據(jù)庫間還不能隨便相互連接和訪問 。
只有這樣微服務(wù)模塊才能做到獨立部署和管理 。由于數(shù)據(jù)庫拆分帶來兩個問題,其一是我們原來很簡單的一個跨表查詢操作現(xiàn)在無法做了,我們必須調(diào)用兩個微服務(wù)模塊提供的服務(wù),查詢到數(shù)據(jù)后再到邏輯層進行組合 。其次最大的問題就是如果一個業(yè)務(wù)操作需要同時更新兩個微服務(wù)模塊的數(shù)據(jù),由于服務(wù)本身無狀態(tài),導(dǎo)致了這種分布式事務(wù)問題很難解決 。
企業(yè)內(nèi)業(yè)務(wù)系統(tǒng)很大一個特點就是業(yè)務(wù)邏輯和規(guī)則相對互聯(lián)網(wǎng)更加復(fù)雜,而且有更高的事務(wù)一致性要求 。正是由于這個原因,無法解決好分布式事務(wù)的問題都將直接導(dǎo)致后續(xù)數(shù)據(jù)不一致和業(yè)務(wù)錯誤 。原來通過調(diào)用項目內(nèi)一個API方法就能解決的問題,現(xiàn)在要調(diào)用遠(yuǎn)程WS接口才能解決,這本身就增加了開發(fā)和調(diào)試的復(fù)雜度 。一個微服務(wù)模塊與外部其它模塊的集成和協(xié)同越少,你會發(fā)現(xiàn)該微服務(wù)模塊和傳統(tǒng)業(yè)務(wù)系統(tǒng)開發(fā)沒太大區(qū)別,但是當(dāng)其涉及到完成任何一個功能都需要調(diào)用外部微服務(wù)模塊的服務(wù)接口時候,其開發(fā)模式和效率上就會帶來巨大的變化 。

推薦閱讀