傳統(tǒng)企業(yè)平臺都是煙囪式的系統(tǒng)架構(gòu),企業(yè)內(nèi)部為了迎合業(yè)務(wù)發(fā)展不停的打造各種系統(tǒng),導致各系統(tǒng)間的重復功能建設(shè)和維護帶來的重復投資。重復投資不僅消耗的是人力,財力還有時間。但打通煙囪式系統(tǒng)間交互的集成和協(xié)作成本高昂,各大企業(yè)不得不借助ESB產(chǎn)品,構(gòu)建企業(yè)服務(wù)總線,打通各系統(tǒng)間的交互問題。
但這種借助ESB“中心化”的服務(wù)架構(gòu)缺點也有不少,“中心化”架構(gòu)的所有服務(wù)調(diào)用者和服務(wù)提供者之間的交互都必須通過這個中心點,而這個中心點的能力是很難進行擴展的,導致這中心會成為一個瓶頸。
2015年阿里巴巴集團啟動了中臺戰(zhàn)略,目標是要構(gòu)建符合互聯(lián)網(wǎng)大數(shù)據(jù)時代的,具有創(chuàng)新性、靈活性的“大中臺、小前臺”的機制,即作為前臺的一線業(yè)務(wù)會更敏捷、更快速的適用瞬息萬變的市場,而中臺將集合整個集團的運營數(shù)據(jù)能力,產(chǎn)品技術(shù)能力,對各前臺業(yè)務(wù)形成強有力的支撐。整體內(nèi)容如下:
起初,阿里只有一個淘寶事業(yè)部,后來成立了天貓事業(yè)部,此時淘寶的技術(shù)團隊同時支撐著這兩個事業(yè)部。當時的淘寶和天貓的電商系統(tǒng)像我們很多大型企業(yè)的一樣是分為兩套獨立的煙囪式體系,兩套體系中都包含的有商品、交易、支付、評價、物流等功能。因為上述原因,阿里集團又成立了共享業(yè)務(wù)事業(yè)部,其成員主要來自之前的淘寶技術(shù)團隊,同時將兩套電商業(yè)務(wù)做了梳理和沉淀,將兩個平臺中公共的、通用的業(yè)務(wù)功能沉淀到共享事業(yè)部,避免重復建設(shè)和維護。后來上線的聚劃算、1688、菜鳥物流等業(yè)務(wù),均是基于這個“大中臺,小前臺”思路建設(shè)的。如下圖所示:
? “大中臺、小前臺”架構(gòu)主要集中在業(yè)務(wù)共享服務(wù)層,業(yè)務(wù)共享服務(wù)團隊,有獨立的團隊來做,也更利于業(yè)務(wù)的沉淀,降低研發(fā)成本,提高研發(fā)效率。打破了產(chǎn)品壁壘,之前是系統(tǒng)之間要數(shù)據(jù),現(xiàn)在是都去找共享服務(wù)中心要數(shù)據(jù),共享服務(wù)中心提供統(tǒng)一的,標準的數(shù)據(jù)。減少了系統(tǒng)間交互、團隊間協(xié)作的成本。站在巨人的肩膀上。新產(chǎn)品研發(fā)不用考慮之前已有的東西,可以快速孵化新的產(chǎn)品,試錯成本低,產(chǎn)品敢于創(chuàng)新,敢于擁抱變化,原來追競爭對手都很困難,現(xiàn)在相當于競爭對手的產(chǎn)品經(jīng)理不停的給我們提供新點子。可持續(xù)發(fā)展,技術(shù)和業(yè)務(wù)能力能夠沉淀積累。
微服務(wù)體現(xiàn)去中心化、天然分布式,與阿里的中臺戰(zhàn)略思想類似,是戰(zhàn)略的具體實現(xiàn)方式的一種?,F(xiàn)有架構(gòu)師可以學習這種模式來解決企業(yè)本身的應(yīng)用高并發(fā)、高可用、運維等難題,也是現(xiàn)有互聯(lián)網(wǎng)經(jīng)典架構(gòu),畢竟是經(jīng)過阿里實踐過的,除了BAT,Uber、網(wǎng)易、美團、京東等互聯(lián)網(wǎng)公司都在很早前就實現(xiàn)了平臺微服務(wù)化。
在傳統(tǒng)單體或SOA架構(gòu)下,應(yīng)用如果頻繁升級更新,開發(fā)團隊非常痛苦。企業(yè)的業(yè)務(wù)應(yīng)用經(jīng)過多年IT建設(shè),系統(tǒng)非常龐大,要改動其中任何一小部分,都需要重新部署整個應(yīng)用,敏捷開發(fā)和快速交付無從談起。
傳統(tǒng)企業(yè)在長期的IT建設(shè)過程中,通常大量使用外包團隊,這導致采用的技術(shù)棧之間差異較大,統(tǒng)一管控和運維要求更高。需要運維7*24小時全天候值守、在線升級,并快速響應(yīng)。
在此時脫穎而出的微服務(wù)技術(shù),面對上述困惑幾乎渾身優(yōu)點:獨立開發(fā)、獨立部署、獨立發(fā)布,去中心化管理,支持高并發(fā)高可用,支持豐富技術(shù)棧,企業(yè)可以根據(jù)需要靈活技術(shù)選型。
微服務(wù)架構(gòu)中所包含的內(nèi)容:
? 微服務(wù)是將企業(yè)通用服務(wù)按業(yè)務(wù)化分成一個個單體服務(wù),增強可用性、服務(wù)易擴展、減少開發(fā)成本、減少服務(wù)發(fā)布對整個平臺的影響。微服務(wù)是一種思想,實現(xiàn)有很多方式,企業(yè)轉(zhuǎn)由單個系統(tǒng)轉(zhuǎn)向微服務(wù)就要考慮很多問題,比如技術(shù)選型、業(yè)務(wù)拆分問題、高可用、服務(wù)通信、服務(wù)發(fā)現(xiàn)和治理、集群容錯、配置管理、數(shù)據(jù)一致性問題、康威定律、分布式調(diào)用跟蹤、CI/CD、微服務(wù)測試,以及調(diào)度和部署等等,這并非一些簡單招數(shù)能夠化解。
微服務(wù)框架必須能夠達到借助虛擬化平臺,能夠按需創(chuàng)建機器并調(diào)整大小,借助基礎(chǔ)設(shè)施的自動化從一臺機器擴展到多臺,擁有業(yè)務(wù)監(jiān)控預(yù)警、異常熔斷等等功能,現(xiàn)有框架有Dubbo和SpringCloud,Dubbo是RPC服務(wù)治理框架,和SpringCloud一樣具備服務(wù)注冊、發(fā)現(xiàn)、路由、負載均衡等能力。
首先做一個簡單的功能對比:
從上圖可以看出Dubbo的功能只是Spring Cloud體系的一部分,Dubbo已停更了幾年,雖然最近宣布加強了開源支持,但對于其它框架來說已經(jīng)非常滯后了。
需要說明的是 Dubbo 是 SOA 時代的產(chǎn)物,它的關(guān)注點主要在于服務(wù)的調(diào)用,流量分發(fā)、流量監(jiān)控和熔斷。而 Spring Cloud 誕生于微服務(wù)架構(gòu)時代,考慮的是微服務(wù)治理的方方面面,另外由于依托了 Spirng、Spirng Boot 的優(yōu)勢之上,兩個框架在開始目標就不一致,Dubbo 定位服務(wù)治理、Spirng Cloud 是一個生態(tài)。
相信更多的架構(gòu)師為選擇Spring Cloud生態(tài),引用網(wǎng)友的理由:
1)從兩個公司的背景來談:Dubbo,是阿里巴巴服務(wù)化治理的核心框架,并被廣泛應(yīng)用于中國各互聯(lián)網(wǎng)公司;Spring Cloud是大名鼎鼎的Spring家族的產(chǎn)品。阿里巴巴是一個商業(yè)公司,雖然也開源了很多的頂級的項目,但從整體戰(zhàn)略上來講,仍然是服務(wù)于自身的業(yè)務(wù)為主。Spring專注于企業(yè)級開源框架的研發(fā),不論是在中國還是在世界上使用都非常廣泛,開發(fā)出通用、開源、穩(wěn)健的開源框架就是他們的主業(yè)。
2)從社區(qū)活躍度這個角度來對比,Dubbo雖然也是一個非常優(yōu)秀的服務(wù)治理框架,并且在服務(wù)治理、灰度發(fā)布、流量分發(fā)這方面做的比Spring Cloud還好,除過當當網(wǎng)在基礎(chǔ)上增加了rest支持外,已有兩年多的時間幾乎都沒有任何更新了。在使用過程中出現(xiàn)問題,提交到github的Issue也少有回復。
相反Spring Cloud自從發(fā)展到現(xiàn)在,仍然在不斷的高速發(fā)展,從github上提交代碼的頻度和發(fā)布版本的時間間隔就可以看出,現(xiàn)在Spring Cloud即將發(fā)布2.0版本,到了后期會更加完善和穩(wěn)定。
3) 從整個大的平臺架構(gòu)來講,dubbo框架只是專注于服務(wù)之間的治理,如果我們需要使用配置中心、分布式跟蹤這些內(nèi)容都需要自己去集成,這樣無形中使用dubbo的難度就會增加。Spring Cloud幾乎考慮了服務(wù)治理的方方面面,更有Spring Boot這個大將的支持,開發(fā)起來非常的便利和簡單。
4)從技術(shù)發(fā)展的角度來講,Dubbo剛出來的那會技術(shù)理念還是非常先進,解決了各大互聯(lián)網(wǎng)公司服務(wù)治理的問題,中國的各中小公司也從中受益不少。經(jīng)過了這么多年的發(fā)展,互聯(lián)網(wǎng)行業(yè)也是涌現(xiàn)了更多先進的技術(shù)和理念,Dubbo一直停滯不前,自然有些掉隊,有時候我個人也會感到有點可惜,如果Dubbo一直沿著當初的那個路線發(fā)展,并且延伸到周邊,今天可能又是另一番景象了。
Spring 推出Spring Boot/Cloud也是因為自身的很多原因。Spring最初推崇的輕量級框架,隨著不斷的發(fā)展也越來越龐大,隨著集成項目越來越多,配置文件也越來越混亂,慢慢的背離最初的理念。隨著這么多年的發(fā)展,微服務(wù)、分布式鏈路跟蹤等更多新的技術(shù)理念的出現(xiàn),Spring急需一款框架來改善以前的開發(fā)模式,因此才會出現(xiàn)Spring Boot/Cloud項目,我們現(xiàn)在訪問Spring官網(wǎng),會發(fā)現(xiàn)Spring Boot和Spring Cloud已經(jīng)放到首頁最重點突出的三個項目中的前兩個,可見Spring對這兩個框架的重視程度。
因此可以看到SpringCloud良好的生態(tài)是非常重要的,這里只講到至SpringCloud實現(xiàn)微服務(wù),具體SpringCloud微服務(wù)的詳情后面再介紹不做多講,還有與微服務(wù)緊密相關(guān)的容器技術(shù)也是相當重要的,還有微服務(wù)的DevOps自動化運維到智能化運維后面再作主題介紹。
? 最后要說的是由于服務(wù)能力的集中管控,很大程度會促進我們一體化運維的能力,但在“大中臺、小前臺”的模式下,每一個服務(wù)都負責對N多個前端業(yè)務(wù)應(yīng)用提供支持,這就要求運維在信息安全、備份、監(jiān)控等方面要有更強的能力,這也將改變企業(yè)的組織架構(gòu)調(diào)整。
? 以上是每一位架構(gòu)師都需要不斷學習的內(nèi)容,相關(guān)衍生出來的內(nèi)容更多,這里只作拋磚引玉,文中部分引用了圈內(nèi)大咖的內(nèi)容 ,在此感謝他們的付出。
聯(lián)系客服