11月28-29日,由中國(guó)社會(huì)科學(xué)院信息化研究中心和北京國(guó)脈互聯(lián)信息顧問(wèn)有限公司聯(lián)合舉辦的“2018智慧中國(guó)年會(huì)”在北京隆重召開,以“數(shù)據(jù)賦能 智慧中國(guó)”為主題,共有來(lái)自全國(guó)部委、省、市、區(qū)縣電子政務(wù)、智慧城市、大數(shù)據(jù)主管領(lǐng)導(dǎo)、行業(yè)專家、企業(yè)代表、主流媒體千余人參會(huì)。
本文系國(guó)脈技術(shù)總監(jiān)潘超巧于11月29日上午在“2018智慧中國(guó)年會(huì)”分論壇--“微服務(wù)與數(shù)據(jù)賦能平臺(tái)構(gòu)建與實(shí)踐研討會(huì)”上的演講,內(nèi)容通過(guò)現(xiàn)場(chǎng)速記整理,未經(jīng)本人審核。
【國(guó)脈技術(shù)總監(jiān) 潘超巧】
伴隨著容器化的日臻成熟,微服務(wù)逐漸成為軟件開發(fā)的主流形態(tài),大量的分布式、領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的微服務(wù)被快速開發(fā)和部署,服務(wù)間呈現(xiàn)出搭積木的能力,使不同的業(yè)務(wù)通過(guò)重新組合數(shù)個(gè)微服務(wù),就能實(shí)現(xiàn)新的業(yè)務(wù)場(chǎng)景。被越來(lái)越多的開發(fā)者推崇,很多互聯(lián)網(wǎng)行業(yè)巨頭、開源社區(qū)等都開始了微服務(wù)實(shí)踐。阿里巴巴、華為、騰訊、360等很多互聯(lián)網(wǎng)公司都采用了微服務(wù)開發(fā)實(shí)現(xiàn)業(yè)務(wù)場(chǎng)景。
一、什么是微服務(wù)
有些人認(rèn)為微服務(wù)是“微信服務(wù)”的縮寫,因?yàn)楝F(xiàn)在微信比較火,其實(shí)不是。微服務(wù),是一種軟件架構(gòu)的形式。在這個(gè)架構(gòu)中,微就是“微小”的意思,在這個(gè)架構(gòu)中,復(fù)雜的應(yīng)用程序是由多個(gè)小而獨(dú)立的進(jìn)程組成,每一個(gè)進(jìn)程通過(guò)獨(dú)立于語(yǔ)言的接口進(jìn)行相互交流。這些服務(wù)較小、高度解耦且專注于完成一個(gè)小任務(wù), 使得用模塊化方法建設(shè)系統(tǒng)更容易,降低開發(fā)難度、增強(qiáng)擴(kuò)展性、便于敏捷開發(fā)。
下面我列了微服務(wù)的幾個(gè)特點(diǎn):①微服務(wù)有一套服務(wù)治理的解決方案,服務(wù)之間不耦合,可以隨時(shí)加入和剔除服務(wù)。②擁有獨(dú)立的基礎(chǔ)組件,業(yè)務(wù)單一、易于維護(hù)。③安全機(jī)制,微服務(wù)系統(tǒng)有一個(gè)完整的安全機(jī)制,包括用戶驗(yàn)證、權(quán)限驗(yàn)證、資源保護(hù)等。④每一個(gè)獨(dú)立的微服務(wù)都能夠集群化,且具有負(fù)載均衡的能力。⑤微服務(wù)的服務(wù)與服務(wù)之間,是通過(guò)HTTP協(xié)議或消息組件通信的,具有容錯(cuò)的能力。
二、為什么使用微服務(wù)
那么我們?yōu)槭裁匆褂梦⒎?wù)呢?我們可以先看一下左邊這個(gè)單體結(jié)構(gòu),一旦項(xiàng)目、功能變多,系統(tǒng)的耦合度也會(huì)逐漸增高,出現(xiàn)故障時(shí)無(wú)法隔離;系統(tǒng)復(fù)雜、錯(cuò)綜交互,改一個(gè)功能,往往整個(gè)系統(tǒng)都需要修改;同時(shí)多套系統(tǒng)時(shí),是重復(fù)地去制造各種輪子,比如軟件系統(tǒng)、數(shù)據(jù)庫(kù)、中間件等;是一個(gè)完全封閉的架構(gòu),升級(jí)和遷移的成本也非常高。
微服務(wù)做到了一個(gè)解耦、故障降級(jí)熔斷保護(hù)措施,就像保險(xiǎn)絲一樣;采用了模塊化開發(fā),開發(fā)運(yùn)維一體化,通過(guò)持續(xù)集成、持續(xù)交付、全自動(dòng)化地進(jìn)行部署;具有擴(kuò)展性、高可用,在升級(jí)擴(kuò)展中可以做到不中斷業(yè)務(wù)。
簡(jiǎn)單來(lái)說(shuō),微服務(wù)在應(yīng)用中有四個(gè)好處:①每個(gè)模塊都是獨(dú)立部署的,所以簡(jiǎn)單靈活。②每個(gè)服務(wù)專注和專業(yè)于它的內(nèi)容,可以高效、可靠地去做到相應(yīng)的服務(wù);同時(shí)每個(gè)小模塊、小服務(wù)都可以由一個(gè)小團(tuán)隊(duì)來(lái)負(fù)責(zé)。③微服務(wù)做到了單體的解耦,把耦合度降下來(lái)后,高內(nèi)聚、更容易擴(kuò)展。④采用微服務(wù)架構(gòu),開發(fā)語(yǔ)言沒(méi)有限制,你可以在這個(gè)服務(wù)里采用Java語(yǔ)言,在另一個(gè)服務(wù)里采用PHP語(yǔ)言,或者Python等其他語(yǔ)言,且開發(fā)工具也不受限制。
傳統(tǒng)單體的開發(fā)模式,從計(jì)劃到開發(fā)有許多個(gè)模塊,在技術(shù)部門統(tǒng)一進(jìn)行編譯、測(cè)試、發(fā)布,采用微服務(wù)的開發(fā)模式后,編譯可以由不同的小團(tuán)隊(duì)來(lái)進(jìn)行,因而多個(gè)部門就會(huì)形成一個(gè)線條狀的結(jié)構(gòu),可以走三條線,再加上持續(xù)交付的、自動(dòng)部署的、多個(gè)環(huán)境的更新部署,從理想化的角度來(lái)說(shuō),十個(gè)團(tuán)隊(duì)每年可以做到十萬(wàn)次部署。
三、微服務(wù)模塊化開發(fā)的好處
模塊化到底有哪些好處呢?其實(shí)我們可以把模塊化當(dāng)作一個(gè)拼裝的形式:①模塊可插拔,就像USB接口一樣,需要時(shí)插上,不需要時(shí)就拔除,不會(huì)產(chǎn)生相應(yīng)的問(wèn)題。②故障隔離,每個(gè)模塊都可以用一個(gè)分支去創(chuàng)建,不會(huì)造成代碼之間的沖突。③解耦,在模塊中增加或修改功能,只會(huì)影響當(dāng)前模塊,不會(huì)影響整個(gè)應(yīng)用。④動(dòng)態(tài)部署,在運(yùn)行時(shí)把模塊部署到應(yīng)用中,快速修復(fù)故障,提高發(fā)布效率。⑤平臺(tái)系列,成為行業(yè)一流大數(shù)據(jù)平臺(tái),每個(gè)平臺(tái)提供1-2項(xiàng)特色優(yōu)勢(shì)數(shù)據(jù)服務(wù)。⑥多版本部署,可以在運(yùn)行時(shí)同時(shí)部署某個(gè)模塊的新舊版本,進(jìn)行AB TEST。⑦減少資源消耗,通過(guò)部署模塊的方式減少應(yīng)用數(shù)量和機(jī)器數(shù)量。
原來(lái)分步式架構(gòu)在部署時(shí)比較麻煩,隨著科技的發(fā)展,Docker技術(shù)應(yīng)運(yùn)而生。Netflix云架構(gòu)總監(jiān)Adrian Cockcroft 說(shuō)過(guò)“微服務(wù)和Docker的結(jié)合是一種顛覆”。通過(guò)Docker技術(shù)的獨(dú)立性、顆粒度、快速創(chuàng)建和銷毀及完善的管理工具,可以實(shí)現(xiàn)微服務(wù)的快速部署與擴(kuò)容調(diào)度。我們現(xiàn)在做的項(xiàng)目,編程完成把JAR包打出來(lái)后,通過(guò)一個(gè)配置文件扔到Docker服務(wù)器上,阿里Docker云、有容云,丟上去運(yùn)行,整個(gè)分布式會(huì)自動(dòng)完成。微服務(wù)架構(gòu)和Docker技術(shù)的結(jié)合,可以解決很多問(wèn)題,譬如正在運(yùn)行的一個(gè)項(xiàng)目,CPU和內(nèi)存是正常的,突然用戶訪問(wèn)量增大之后,通過(guò)容器技術(shù),會(huì)自動(dòng)響應(yīng),將兩個(gè)容器擴(kuò)容為三個(gè),從而降低CPU的消耗量。
我的建議是,政府?dāng)?shù)據(jù)體系平臺(tái)架構(gòu)可以采用微服務(wù)架構(gòu)。當(dāng)前政府系統(tǒng)/軟件數(shù)量多、標(biāo)準(zhǔn)體系復(fù)雜,還有很多配套系統(tǒng)之間存在重復(fù)的功能,系統(tǒng)之間耦合度比較嚴(yán)重,升級(jí)遷移的時(shí)候成本非常高,應(yīng)用場(chǎng)景、參與的角色非常多。所以,大平臺(tái)、大系統(tǒng)需要采用微服務(wù)架構(gòu)來(lái)解決這些問(wèn)題。
四、微服務(wù)開發(fā)框架
我們可以看一下當(dāng)前主流的微服務(wù)框架:第一個(gè)是我們國(guó)脈采用的Spring Cloud,它是一個(gè)基于Spring Boot實(shí)現(xiàn)的云應(yīng)用開發(fā)工具,它為基于JVM的云應(yīng)用開發(fā)中的配置管理、服務(wù)發(fā)現(xiàn)、斷路器、智能路由、微代理、控制總線、全局鎖、決策競(jìng)選、分布式會(huì)話和集群狀態(tài)管理等操作提供了一種簡(jiǎn)單的開發(fā)方式。
第二個(gè)就是Dubbo,阿里巴巴公司開源的一個(gè)高性能優(yōu)秀的服務(wù)框架,使得應(yīng)用可通過(guò)高性能的 RPC 實(shí)現(xiàn)服務(wù)的輸出和輸入功能,可以和 Spring框架無(wú)縫集成,但目前從社區(qū)的活躍度來(lái)說(shuō),Spring Cloud更活躍,阿里的一些公司也在用Spring Cloud。第三個(gè)是剛剛出來(lái)的一個(gè)微服務(wù)架構(gòu)--LSTIO,是 Google、IBM、Lyft首個(gè)共同聯(lián)合開源的項(xiàng)目,提供了統(tǒng)一的連接,安全,管理和監(jiān)控微服務(wù)的方案。
接下來(lái)講一下典型的微服務(wù)架構(gòu),是通過(guò)輕量的http協(xié)議關(guān)聯(lián)各個(gè)服務(wù)之間的關(guān)系,通過(guò)服務(wù)注冊(cè)與發(fā)現(xiàn)的機(jī)制,加上消息隊(duì)列,來(lái)訪問(wèn)各類型數(shù)據(jù)庫(kù),包括運(yùn)維監(jiān)控、實(shí)時(shí)認(rèn)證等。這是基于K8S容器集群的微服務(wù)架構(gòu),是應(yīng)對(duì)大系統(tǒng)的,包括自動(dòng)部署服務(wù)、灰度發(fā)布服務(wù)、自動(dòng)水平擴(kuò)展服務(wù)、集群內(nèi)負(fù)載均衡服務(wù)等,可以看到它采用多個(gè)數(shù)據(jù)庫(kù)、多個(gè)緩存服務(wù)器等等。
五、基于微服務(wù)架構(gòu)的賦能平臺(tái)實(shí)踐
?。ㄒ唬?biāo)準(zhǔn)規(guī)范
下面講下我們當(dāng)前在做的一個(gè)賦能平臺(tái)實(shí)踐中的一些針對(duì)技術(shù)采用的標(biāo)準(zhǔn)規(guī)范。標(biāo)準(zhǔn)規(guī)范這塊我們分為六個(gè)層面:基礎(chǔ)設(shè)施、數(shù)據(jù)采集、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)處理、應(yīng)用支撐、門戶展現(xiàn)。基礎(chǔ)設(shè)施包括了存儲(chǔ)的設(shè)施、機(jī)房、計(jì)算機(jī)服務(wù)器等;數(shù)據(jù)采集,包括離線采集、實(shí)時(shí)采集、手工錄入等;數(shù)據(jù)存儲(chǔ)包括分步式數(shù)據(jù)庫(kù)、內(nèi)存數(shù)據(jù)庫(kù)、關(guān)系數(shù)據(jù)庫(kù);數(shù)據(jù)處理包括數(shù)據(jù)交換、清洗轉(zhuǎn)換、比對(duì)等,因?yàn)閿?shù)據(jù)入庫(kù)后要保證數(shù)據(jù)質(zhì)量,需要相關(guān)平臺(tái)支撐;最后到應(yīng)用決策,通過(guò)手機(jī)端、web端把相關(guān)內(nèi)容展示出來(lái)。
(二)運(yùn)維及安全管理保障
運(yùn)維安全管理保障方面,包括移動(dòng)設(shè)備監(jiān)控、移動(dòng)應(yīng)用管理、web應(yīng)用監(jiān)控和數(shù)據(jù)庫(kù)中間件監(jiān)控等。
?。ㄈ┘夹g(shù)路線
我們走的技術(shù)路線的整體結(jié)構(gòu)主要包括開發(fā)技術(shù)、模型標(biāo)準(zhǔn)、運(yùn)行環(huán)境、開發(fā)管理:①開發(fā)技術(shù),主要是J2EE,結(jié)合微服務(wù)的高效性;②模型標(biāo)準(zhǔn),就是我們倉(cāng)頡數(shù)源在做的元數(shù)據(jù)標(biāo)準(zhǔn),保證字段內(nèi)容標(biāo)準(zhǔn),加上跨語(yǔ)言的XML技術(shù)標(biāo)準(zhǔn);③運(yùn)行環(huán)境,包括容器技術(shù)、HTTP服務(wù)器等;④開發(fā)管理,開發(fā)運(yùn)營(yíng)一體化、可視化開發(fā)等。從而保證我們賦能平臺(tái)的穩(wěn)定運(yùn)營(yíng)。
?。ㄋ模〢PI網(wǎng)關(guān)接入-安全
我們通過(guò)API網(wǎng)關(guān)來(lái)保證系統(tǒng)的安全,因?yàn)樗媒涌?、訪問(wèn)、用戶都是先通過(guò)API網(wǎng)關(guān)來(lái)訪問(wèn)我們的各個(gè)服務(wù)數(shù)據(jù),API網(wǎng)關(guān)在我們整個(gè)架構(gòu)中起到了非常重要的作用,包括統(tǒng)一接入、流量管控、業(yè)務(wù)隔離、安全防護(hù)等,其中它們各司其責(zé)。
(五)功能結(jié)構(gòu)
最后是我們微服務(wù)賦能平臺(tái)的功能結(jié)構(gòu),包括了數(shù)據(jù)源、數(shù)據(jù)匯集、數(shù)據(jù)分析、數(shù)據(jù)應(yīng)用四個(gè)層面。數(shù)據(jù)源層,就是說(shuō)數(shù)據(jù)從哪來(lái),一個(gè)是外部采集,包括我們公司7大平臺(tái)采集錄入的數(shù)據(jù),還有一個(gè)是數(shù)據(jù)交換,我們OA系統(tǒng)里存在的一些數(shù)據(jù),通過(guò)接口打通進(jìn)行獲取,此外還有合作共享資源和其他數(shù)據(jù);這些數(shù)據(jù)拿到后,我們進(jìn)行質(zhì)量檢測(cè),包括編目、轉(zhuǎn)換、對(duì)比、清洗等;再到數(shù)據(jù)分析層,進(jìn)行可視化、聚合統(tǒng)計(jì)、關(guān)聯(lián)分析、全文檢索、模型訓(xùn)練、DSL分析引擎等技術(shù)操作;最終到應(yīng)用層,進(jìn)行運(yùn)維管控,可以給公司提供趨勢(shì)預(yù)測(cè)、業(yè)務(wù)分析等服務(wù)。我們國(guó)脈已基于微服務(wù)開發(fā)完成或正在進(jìn)行重構(gòu)的產(chǎn)品有IEP(智慧賦能平臺(tái))、倉(cāng)頡數(shù)源數(shù)據(jù)元公共服務(wù)平臺(tái)、數(shù)據(jù)基因5.0版本、國(guó)策數(shù)據(jù)庫(kù)等。
最后我總結(jié)一下,微服務(wù)可以為平臺(tái)整合提供強(qiáng)大的支撐;通過(guò)微服務(wù)的架構(gòu)理念,可以為平臺(tái)、組織、不同技術(shù)團(tuán)隊(duì)之間的融合,提供一個(gè)很好的技術(shù)框架基礎(chǔ);通過(guò)模塊化的開放模式,大幅提高產(chǎn)品的可靠性、可拓展性;通過(guò)與Docker容器的結(jié)合,可以實(shí)現(xiàn)分布式項(xiàng)目的快速部署與搭建;通過(guò)一體化運(yùn)維和持續(xù)集成、持續(xù)交互,可大大降低運(yùn)維成本。我們國(guó)脈正在努力,應(yīng)用微服務(wù)架構(gòu)做出更多產(chǎn)品和解決方案。謝謝大家!
附:國(guó)脈,是領(lǐng)先的大數(shù)據(jù)治理和數(shù)字政府專業(yè)提供商。創(chuàng)新提出“軟件+咨詢+平臺(tái)+數(shù)據(jù)+創(chuàng)新業(yè)務(wù)”五位一體服務(wù)模型,擁有數(shù)據(jù)基因和水巢DIPS兩大系列幾十項(xiàng)軟件產(chǎn)品,長(zhǎng)期為中國(guó)智慧城市、智慧政府和智慧企業(yè)提供專業(yè)咨詢規(guī)劃和數(shù)據(jù)服務(wù),廣泛服務(wù)于信息中心、大數(shù)據(jù)局、行政服務(wù)中心等政府客戶、中央企業(yè)和金融機(jī)構(gòu)。自2004年成立以來(lái),已在全國(guó)七大區(qū)域設(shè)立20余家分支機(jī)構(gòu)、5大技術(shù)研發(fā)基地,服務(wù)客戶2000余家,執(zhí)行項(xiàng)目5000余個(gè),連續(xù)多年開展中國(guó)政府網(wǎng)站、智慧城市、互聯(lián)網(wǎng)+政務(wù)、營(yíng)商環(huán)境等公益評(píng)估評(píng)選活動(dòng)。被業(yè)界譽(yù)為中國(guó)信息化民間智庫(kù)知名品牌、電子政務(wù)優(yōu)選咨詢機(jī)構(gòu),國(guó)內(nèi)首倡智慧政府理念,首創(chuàng)智慧城市、數(shù)據(jù)治理、互聯(lián)網(wǎng)+政務(wù)評(píng)價(jià)體系,首推數(shù)據(jù)資產(chǎn)普查、全口徑數(shù)據(jù)資源目錄、數(shù)據(jù)元標(biāo)準(zhǔn)化、數(shù)源確認(rèn)與供需對(duì)接、最多跑一次事項(xiàng)梳理、營(yíng)商通等產(chǎn)品,信息資源編目、公共數(shù)據(jù)普查等業(yè)務(wù)全國(guó)占有率和影響力名居榜首。
福利大放送:《數(shù)字政府周刊》、《數(shù)字政府白皮書2.0》、《第八屆(2018)中國(guó)智慧城市發(fā)展水平評(píng)估報(bào)告》、《第四屆中國(guó)“互聯(lián)網(wǎng)+政務(wù)”50強(qiáng)優(yōu)秀實(shí)踐案例評(píng)選研究報(bào)告》、《首屆(2018)中國(guó)營(yíng)商環(huán)境評(píng)估報(bào)告》可通過(guò)電子政務(wù)智庫(kù)公眾號(hào)及微店在線購(gòu)買,歡迎訂購(gòu)。
微信掃一掃即可購(gòu)買!