謝紅, 薛凱, 楊夢瑩
(1.新疆維吾爾自治區(qū)科技項(xiàng)目服務(wù)中心, 新疆 烏魯木齊 830013;2.新疆電子研究所股份有限公司, 新疆 烏魯木齊 830013)
隨著科技的進(jìn)步和發(fā)展,許多科技企業(yè)都擁有了自己的科研成果和創(chuàng)新服務(wù),也隨之出現(xiàn)很多成果技術(shù)轉(zhuǎn)移和創(chuàng)業(yè)輔導(dǎo)的需求。由于缺少統(tǒng)一系統(tǒng)的管理,出現(xiàn)了創(chuàng)新服務(wù)資源分散[1]、科技成果轉(zhuǎn)移轉(zhuǎn)化率低等問題[2-3]。針對解決這一問題,本文提出一種穩(wěn)定可靠的互聯(lián)網(wǎng)+和微服務(wù)模式下的管理科技創(chuàng)新服務(wù)資源的平臺(tái),并對平臺(tái)實(shí)現(xiàn)的過程做了詳細(xì)的闡述和分析。
互聯(lián)網(wǎng)+科技創(chuàng)新服務(wù)平臺(tái)的根本目的是實(shí)現(xiàn)科技創(chuàng)新服務(wù)資源的管理與整合。通過互聯(lián)網(wǎng)+的模式,改變傳統(tǒng)創(chuàng)新服務(wù)資源分散的問題。其次要進(jìn)行資源申請咨詢的流程管理,解決科技成果轉(zhuǎn)移轉(zhuǎn)化率低的問題。同時(shí)還可以在平臺(tái)看到創(chuàng)業(yè)創(chuàng)新服務(wù),培養(yǎng)創(chuàng)業(yè)創(chuàng)新企業(yè),發(fā)布科技創(chuàng)新資訊,從而提高科技創(chuàng)新能力。還需要考慮在大流量請求訪問過程中的平臺(tái)運(yùn)行穩(wěn)定性、可靠性和開發(fā)的可擴(kuò)展性。平臺(tái)功能結(jié)構(gòu)設(shè)計(jì)如圖1所示。
圖1 平臺(tái)功能結(jié)構(gòu)圖
該平臺(tái)主要包括下列特性。
第一,平臺(tái)用戶分為兩種,包括普通用戶和企業(yè)用戶。平臺(tái)登錄時(shí)會(huì)根據(jù)用戶分類的不同決定系統(tǒng)的相應(yīng)權(quán)限和不同的功能。
第二,在平臺(tái)當(dāng)中,有科技創(chuàng)新成果的企業(yè)用戶,可以在平臺(tái)發(fā)布自己的支持成果轉(zhuǎn)移的技術(shù)成果、科研設(shè)備信息、技術(shù)服務(wù)等,發(fā)布后可以在平臺(tái)中展示出來。需要這些需求的用戶則可以登錄平臺(tái)進(jìn)行瀏覽與查看。如果用戶有中意的內(nèi)容,可以通過留言的方式留下聯(lián)系方式和姓名,企業(yè)用戶可以看到成果下留言咨詢的用戶,就可以進(jìn)行線下的技術(shù)轉(zhuǎn)移流程,通過互聯(lián)網(wǎng)+的模式融合科技成果轉(zhuǎn)化流程,提高科技成果轉(zhuǎn)移轉(zhuǎn)化率。
第三,在平臺(tái)展示創(chuàng)業(yè)輔導(dǎo)專家,創(chuàng)業(yè)項(xiàng)目路演,創(chuàng)投機(jī)構(gòu)的資訊,為需要?jiǎng)?chuàng)業(yè)的用戶提供幫助和指導(dǎo)。在平臺(tái)中還要展示科技創(chuàng)新服務(wù)的最新資訊、新聞、政策等,這些信息都由平臺(tái)及其后臺(tái)內(nèi)容管理員發(fā)布和審核,通過互聯(lián)網(wǎng)+模式做了很好的信息資源整合。
第四,為保證系統(tǒng)的穩(wěn)定性、可靠性和可擴(kuò)展性,平臺(tái)采用微服務(wù)架構(gòu)技術(shù),這種架構(gòu)技術(shù)將多個(gè)功能模塊分成不同的微服務(wù)進(jìn)行分布式部署,在高流量高并發(fā)的平臺(tái)使用環(huán)境下起到有效的作用,對擴(kuò)展性開發(fā)也有良好的支持作用。
在傳統(tǒng)的單體架構(gòu)下,將系統(tǒng)中所有的業(yè)務(wù)功能模塊都集中在一個(gè)項(xiàng)目中,最終全部編譯打包統(tǒng)一部署,如圖2所示。
圖2 單一架構(gòu)圖
功能模塊會(huì)利用同一塊存儲(chǔ)空間,相互之間通過API接口進(jìn)行調(diào)用交互。雖然開發(fā)簡單,可以集中式管理。但是在實(shí)際應(yīng)用中具有以下缺點(diǎn)。
(1)開發(fā)效率低維護(hù)差,因?yàn)榇a功能耦合度高,重復(fù)代碼多,修改或拓展某處功能代碼,有可能會(huì)影響到其他功能的使用或者需要等待其他功能的修改。修改完成需要重新部署構(gòu)建系統(tǒng),耗費(fèi)時(shí)間精力,無法快速交付客戶需求。
(2)穩(wěn)定性差,某一個(gè)功能模塊出現(xiàn)了微小的問題,都有可能導(dǎo)致整個(gè)項(xiàng)目無法運(yùn)行,需要停掉整個(gè)系統(tǒng)進(jìn)行問題排查。
(3)性能因素的考慮,因?yàn)樗械墓δ芾猛粔K存儲(chǔ)空間,如果某一應(yīng)用模塊出現(xiàn)高并發(fā)訪問,就會(huì)影響其他功能模塊的訪問性能,不適合復(fù)雜的應(yīng)用環(huán)境。
為克服上述缺點(diǎn),微服務(wù)架構(gòu)將一個(gè)單體架構(gòu)的應(yīng)用,按照所需的業(yè)務(wù)劃分成相互獨(dú)立運(yùn)行的程序即微服務(wù)[4-6],如圖3所示。
圖3 微服務(wù)架構(gòu)圖
這些微服務(wù)之間通過Service Mesh(服務(wù)網(wǎng)格)進(jìn)行通信,從而完成整個(gè)系統(tǒng)的業(yè)務(wù)邏輯。每個(gè)微服務(wù)可以采用不同的編程語言,使用不同的存儲(chǔ)技術(shù)。利用各自獨(dú)立的存儲(chǔ)空間,也可以進(jìn)行各自獨(dú)立部署。這樣做具有以下優(yōu)點(diǎn)。
(1)每個(gè)微服務(wù)足夠內(nèi)聚,足夠小,代碼容易理解。每個(gè)微服務(wù)都可以有專門開發(fā)團(tuán)隊(duì)開發(fā),責(zé)任分明。如果某個(gè)微服務(wù)出現(xiàn)了問題,只需排查這一服務(wù)的問題,降低了排查問題的成本,有效地提高開發(fā)效率。
(2)微服務(wù)架構(gòu)模式可以實(shí)現(xiàn)每個(gè)微服務(wù)經(jīng)過更改后的獨(dú)立部署。開發(fā)者不再需要協(xié)調(diào)會(huì)對本微服務(wù)造成影響的其他微服務(wù)變更部署,一經(jīng)測試即可立即部署,使得持續(xù)化部署成為可能。
(3)微服務(wù)架構(gòu)使得每個(gè)服務(wù)得到了獨(dú)立的擴(kuò)展性,可以僅滿足每個(gè)微服務(wù)自己的特定性能需求,進(jìn)行硬件的配置,或者為提高穩(wěn)定性增加微服務(wù)的實(shí)例數(shù)。并且微服務(wù)的代碼框架擴(kuò)展與升級也不會(huì)相互影響,提高了系統(tǒng)的可擴(kuò)展性,更適合復(fù)雜的應(yīng)用環(huán)境。
由圖3的架構(gòu)圖可以看出,每個(gè)微服務(wù)的服務(wù)是由Service Mesh(服務(wù)網(wǎng)格)[7]進(jìn)行通信的。Service Mesh可以看作是微服務(wù)之間的新一代的通信協(xié)議,用于處理服務(wù)與服務(wù)之間通信的專用基礎(chǔ)設(shè)施層。本平臺(tái)使用一種目前最受歡迎的Sidecar模式的Service Mesh,如圖4所示。
圖4 SideCar模式的Service Mesh
每一個(gè)微服務(wù)都同步部署有一個(gè)Sidecar,微服務(wù)與微服務(wù)之間的通信代碼都寫在了Sidecar這個(gè)代理服務(wù)里面,Sidecar還可以為微服務(wù)提供熔斷機(jī)制、微服務(wù)降級、微服務(wù)限流、微服務(wù)索引、微服務(wù)發(fā)現(xiàn)、負(fù)載均衡、流量監(jiān)控、日志系統(tǒng)、鏈路跟蹤、動(dòng)態(tài)擴(kuò)容等一系列便于管理服務(wù)的功能。在Flow Control里面可以設(shè)置網(wǎng)關(guān),網(wǎng)關(guān)用來控制微服務(wù)之間的權(quán)限。Service Mesh對應(yīng)用程序透明無侵入,屬于輕量級的網(wǎng)絡(luò)代理,在微服務(wù)開發(fā)領(lǐng)域受到歡迎。
微服務(wù)的目標(biāo)是通過將系統(tǒng)分解成較小的可組合的部分,以便在需要的時(shí)候可以進(jìn)行獨(dú)立的部署和開發(fā)測試,這種方便的系統(tǒng)架構(gòu)越來越受到開發(fā)者的歡迎。
互聯(lián)網(wǎng)+科技創(chuàng)新服務(wù)平臺(tái)是基于微服務(wù)的在線服務(wù)平臺(tái),如圖5所示。
圖5 互聯(lián)網(wǎng)+科技創(chuàng)新服務(wù)平臺(tái)微服務(wù)模式設(shè)計(jì)圖
按照功能邏輯劃分為6個(gè)微服務(wù),下面通過分別闡述本平臺(tái)設(shè)計(jì)的每個(gè)微服務(wù),來說明本平臺(tái)的設(shè)計(jì)思路。
用戶登錄與注冊微服務(wù):該微服務(wù)用于平臺(tái)用戶的登錄與注冊。用戶會(huì)被分為企業(yè)用戶和普通用戶,該微服務(wù)還會(huì)提供接口來判斷用戶類別,來驗(yàn)證用戶的平臺(tái)使用權(quán)限。
企業(yè)信息發(fā)布微服務(wù):該微服務(wù)是平臺(tái)的核心微服務(wù),主要實(shí)現(xiàn)科技企業(yè)用戶發(fā)布自己能支持成果轉(zhuǎn)移、成果使用的技術(shù)成果和科研設(shè)備信息,以及所能提供的創(chuàng)新服務(wù)還有科技企業(yè)自己擁有的專家人才信息。該服務(wù)需要與用戶登錄與注冊微服務(wù)交互,判斷用戶是否為企業(yè)用戶,才能進(jìn)行信息的發(fā)布操作。企業(yè)用戶將科技創(chuàng)新服務(wù)等信息發(fā)布后,經(jīng)過審核,將會(huì)在平臺(tái)中展示出來,供給所需要的用戶瀏覽與咨詢。
咨詢留言與創(chuàng)新服務(wù)申請微服務(wù):如果用戶在平臺(tái)中瀏覽到了自己所需要的科技創(chuàng)新服務(wù)和創(chuàng)業(yè)服務(wù)信息,需要通過這個(gè)微服務(wù)進(jìn)行咨詢與申請,用戶在所需要的科技創(chuàng)新服務(wù)下留下自己的聯(lián)系方式,發(fā)布這個(gè)服務(wù)的企業(yè)用戶就會(huì)看到,并會(huì)進(jìn)行相應(yīng)的流程處理。該微服務(wù)需要與用戶登錄與注冊微服務(wù)交互,來判斷用戶的登錄狀態(tài)。與企業(yè)信息發(fā)布微服務(wù)和平臺(tái)內(nèi)容發(fā)布微服務(wù)交互,獲得企業(yè)發(fā)布和平臺(tái)發(fā)布的創(chuàng)新服務(wù)等信息。與創(chuàng)業(yè)服務(wù)微服務(wù)交互,獲得平臺(tái)發(fā)布的創(chuàng)業(yè)服務(wù)信息。
創(chuàng)業(yè)服務(wù)微服務(wù):該微服務(wù)展示創(chuàng)業(yè)輔導(dǎo)專家、創(chuàng)業(yè)路演、創(chuàng)投機(jī)構(gòu)的資訊供給需要?jiǎng)?chuàng)業(yè)咨詢的用戶瀏覽與咨詢。與平臺(tái)內(nèi)容發(fā)布微服務(wù)交互,獲得平臺(tái)發(fā)布的創(chuàng)業(yè)資訊信息。和咨詢留言與創(chuàng)新服務(wù)申請微服務(wù)交互,給申請的用戶提供創(chuàng)業(yè)服務(wù)的資訊信息。
平臺(tái)內(nèi)容發(fā)布微服務(wù):該微服務(wù)主要功能是實(shí)現(xiàn)平臺(tái)后臺(tái)內(nèi)容管理員進(jìn)行發(fā)布創(chuàng)業(yè)服務(wù)資訊,科技創(chuàng)新資訊新聞等內(nèi)容。與創(chuàng)業(yè)服務(wù)微服務(wù)和科技創(chuàng)新資訊微服務(wù)交互提供內(nèi)容展示,和咨詢留言與創(chuàng)新服務(wù)申請微服務(wù)交互,為需要申請的用戶提供咨詢服務(wù)。
科技創(chuàng)新資訊微服務(wù):該微服務(wù)的主要功能是展示科技創(chuàng)新的新聞和政策等一些資訊,供需要的平臺(tái)用戶瀏覽查看。與平臺(tái)內(nèi)容發(fā)布微服務(wù)交互,獲得平臺(tái)內(nèi)容發(fā)布的資訊信息。
在這些微服務(wù)中,為了保證系統(tǒng)在大流量請求中可靠穩(wěn)定的運(yùn)行。通過在Service Mesh里面的代碼設(shè)置,給需要穩(wěn)定性方面的用戶登錄與注冊微服務(wù)、企業(yè)信息發(fā)布微服務(wù)、咨詢留言與創(chuàng)新申請微服務(wù)提供負(fù)載均衡,動(dòng)態(tài)擴(kuò)容,微服務(wù)限流,熔斷機(jī)制功能。為了便于監(jiān)控微服務(wù)之間是否健康運(yùn)行,為平臺(tái)內(nèi)的所有微服務(wù)增加了流量監(jiān)控、日志管理、鏈路追蹤等功能。這些微服務(wù)通過互相交互信息,能夠整合管理科技創(chuàng)新服務(wù)信息,完成整個(gè)技術(shù)轉(zhuǎn)移、創(chuàng)新服務(wù)、創(chuàng)業(yè)服務(wù)的服務(wù)流程,并且保證了平臺(tái)功能的獨(dú)立性、可維護(hù)性和性能穩(wěn)定性。
用戶登錄和注冊功能構(gòu)建了Users類。用戶注冊填寫的信息,包括是否為企業(yè)用戶和普通用戶的分類信息,都會(huì)構(gòu)建Users類的對象,再調(diào)用對象里的Add()方法將信息保存在數(shù)據(jù)庫中。用戶登錄時(shí)則會(huì)通過用戶名和密碼的驗(yàn)證構(gòu)建出Users類的對象,再用這個(gè)對象獲得其他微服務(wù)傳來的信息,進(jìn)行一系列的權(quán)限操作。
企業(yè)信息發(fā)布微服務(wù)、創(chuàng)業(yè)服務(wù)微服務(wù)、平臺(tái)內(nèi)容發(fā)布微服務(wù)、科技創(chuàng)新資訊微服務(wù),這4個(gè)微服務(wù)主要邏輯是發(fā)布審核與顯示的功能。實(shí)現(xiàn)方法是構(gòu)建了Article的實(shí)體類,通過用戶填寫需要發(fā)布的相關(guān)內(nèi)容,構(gòu)建成Article的對象,調(diào)用對象中的Audit()進(jìn)行審核,調(diào)用對象里的Add()方法將信息保存在相應(yīng)的數(shù)據(jù)表中。并且Article對象給需要的微服務(wù)提供讀數(shù)據(jù)的接口GetArticle(),完成其他微服務(wù)之間的交互提供功能服務(wù)。
構(gòu)建了FeedBack類,用戶填寫留言后將會(huì)構(gòu)建FeedBack類的對象,與每個(gè)信息發(fā)布類微服務(wù)做綁定,調(diào)用對象中的Add()方法將內(nèi)容和微服務(wù)綁定關(guān)系保存到數(shù)據(jù)庫中。信息發(fā)布類微服務(wù)可通過綁定關(guān)系,調(diào)用FeedBack類對象的交互方法GetFeedBack(),得到相應(yīng)的留言咨詢,提供創(chuàng)新服務(wù)。
Service Mesh是微服務(wù)之間交互的“路由”,平臺(tái)中微服務(wù)之間的Service Mesh是基于Istio項(xiàng)目實(shí)現(xiàn)的,Istio是一個(gè)適用于微服務(wù)的開源解決方案。在服務(wù)器上部署Istio項(xiàng)目后,再將項(xiàng)目中每個(gè)微服務(wù)部署到Istio下,Istio就可以為它們提供信息通信、負(fù)載均衡、服務(wù)發(fā)現(xiàn)、流量管理等功能,減輕了開發(fā)工作。
本平臺(tái)已上線,搭建在新疆維吾爾自治區(qū)科技項(xiàng)目服務(wù)中心,給全疆范圍內(nèi)的科技企業(yè)提供創(chuàng)新服務(wù)支持,目前處在試運(yùn)行階段。以軟件開發(fā)者的角度,微服務(wù)分布式的架構(gòu)更容易分配工作,并且由于每個(gè)微服務(wù)可以由不同代碼語言進(jìn)行編寫,便于更大范圍地收納開發(fā)人才,減輕開發(fā)工作負(fù)擔(dān)。用戶反映系統(tǒng)運(yùn)行穩(wěn)定,響應(yīng)速度快。平臺(tái)為科技創(chuàng)新服務(wù)提供了穩(wěn)定可靠的服務(wù)。
文中根據(jù)互聯(lián)網(wǎng)+科技創(chuàng)新服務(wù)平臺(tái)的功能模塊特點(diǎn),將平臺(tái)與微服務(wù)技術(shù)相結(jié)合,對本平臺(tái)的微服務(wù)平臺(tái)框架進(jìn)行了分析和設(shè)計(jì),并列出了每個(gè)微服務(wù)之間需要交互的功能。通過微服務(wù)架構(gòu)模式下的平臺(tái)開發(fā)和設(shè)計(jì),我們更深刻地認(rèn)識到,微服務(wù)架構(gòu)模式對科技創(chuàng)新服務(wù)平臺(tái)的開發(fā)和部署上提供了很好的穩(wěn)定性、可靠性和可拓展性,平臺(tái)在科技成果轉(zhuǎn)移和資源整合的方向上也提供了很好的應(yīng)用方案。微服務(wù)架構(gòu)是很實(shí)用的一種平臺(tái)架構(gòu),這種模式給很多復(fù)雜功能以及需要應(yīng)對大流量訪問的系統(tǒng)提供了技術(shù)保障,是分布式系統(tǒng)框架的一種新的方向。