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