對(duì)兩者的東西進(jìn)行區(qū)分以及比較,有時(shí)候是源于兩者有許多的共同之處。兩者概念上不同,可解決的問(wèn)題的復(fù)雜程度不一樣。但是區(qū)分兩者的不同之處是更有易于實(shí)現(xiàn)微服務(wù)架構(gòu)和分布式架構(gòu)的最大價(jià)值。用戶選擇使用何種架構(gòu)的時(shí)候,得需要根據(jù)自己的實(shí)際情況進(jìn)行選擇。
從概念理解,分布式服務(wù)架構(gòu)強(qiáng)調(diào)的是服務(wù)化以及服務(wù)的分散化,微服務(wù)則更強(qiáng)調(diào)服務(wù)的專(zhuān)業(yè)化和精細(xì)分工;從實(shí)踐的角度來(lái)看,微服務(wù)架構(gòu)通常是分布式服務(wù)架構(gòu),反之則未必成立。所以,選擇微服務(wù)通常意味著需要解決分布式架構(gòu)的各種難題。
微服務(wù)架構(gòu)是團(tuán)隊(duì)面對(duì)互聯(lián)網(wǎng)產(chǎn)品爆發(fā)式增長(zhǎng)的最優(yōu)選擇,要解決的是快速迭代、高可靠和高可用等問(wèn)題,把復(fù)雜度很高的產(chǎn)品拆分成一些較小的模塊,并遵循康威定律,每一個(gè)模塊用5-9個(gè)小團(tuán)隊(duì)來(lái)維護(hù),這樣可以減少溝通成本,提高協(xié)作效率,更好地實(shí)現(xiàn)快速迭代和彈性擴(kuò)展。比如網(wǎng)易考拉,先用網(wǎng)易內(nèi)部的私有云以及容器服務(wù)、負(fù)載均衡等解決并發(fā)流量的問(wèn)題,再借助網(wǎng)易云輕舟微服務(wù),拆分了 400 多個(gè)工程(模塊),進(jìn)一步提升迭代速度和擴(kuò)展能力,通過(guò)服務(wù)治理、系統(tǒng)運(yùn)維自動(dòng)化等,可以提升可靠性和可用性。這是先有分布化后有服務(wù)化的例子。
網(wǎng)易考拉微服務(wù)改造及效果
既沒(méi)有規(guī)模又不需要太多變化的業(yè)務(wù),如果采用微服務(wù)架構(gòu)改造,引入各種復(fù)雜性,比如部署工作量的增加、復(fù)雜鏈路的監(jiān)控難題,這就是為微服務(wù)而微服務(wù),只會(huì)得不償失。
當(dāng)然,復(fù)雜業(yè)務(wù)拆分可能無(wú)法一步到位,因?yàn)閺?fù)雜,每個(gè)業(yè)務(wù)并不一定只能拆成一個(gè)組件,龐大的業(yè)務(wù)拆分出相對(duì)獨(dú)立和龐大的業(yè)務(wù),但如果業(yè)務(wù)較小而又比較多,且類(lèi)型相似,也可以不用著急拆分。再舉網(wǎng)易考拉的例子,工程數(shù)量由最初的 7 到后來(lái)的 150+ 再到目前的 400+,都是根據(jù)實(shí)際情況決定的。中間的狀態(tài),可能不是嚴(yán)格意義上的微服務(wù)架構(gòu),但屬于分布式服務(wù)架構(gòu)——不過(guò)這不是那么重要,重要的是符合業(yè)務(wù)發(fā)展階段的需求。醫(yī)院的急診,既看發(fā)熱又看胃痛,固然分工沒(méi)那么精細(xì),但我們也不能說(shuō)就是錯(cuò)的。
這是對(duì)微服務(wù)架構(gòu)和分布式架構(gòu)的區(qū)別與聯(lián)系簡(jiǎn)要地介紹,不過(guò)都是為對(duì)象是服務(wù)的,但通過(guò)一些對(duì)象的使用的情況來(lái)看的話,它于不同的服務(wù)對(duì)象所帶來(lái)的效果是不一樣的。因?yàn)樗鼈冃枰紤]兩者的數(shù)量以及服務(wù)對(duì)象以及業(yè)務(wù)的需求。想要了解更多關(guān)于軟件研發(fā)的信息,請(qǐng)繼續(xù)關(guān)注中培偉業(yè)。