當(dāng)進行企業(yè)內(nèi)部多個微服務(wù)模塊間的服務(wù)集成的時候,即使這些微服務(wù)模塊都不朝外部互聯(lián)網(wǎng)或APP應(yīng)用暴露服務(wù)或能力開放,我們?nèi)匀恍枰⒎?wù)網(wǎng)關(guān)來實現(xiàn)這些接口服務(wù)的統(tǒng)一管理,其核心需要管理的內(nèi)容仍然包括了服務(wù)注冊,服務(wù)訂購,服務(wù)安全,服務(wù)日志和運行監(jiān)控,負(fù)載均衡,流量控制,服務(wù)代理等基礎(chǔ)能力。
服務(wù)的注冊和接入
在采用類似SpringCloud等微服務(wù)開發(fā)框架后,在開發(fā)一個微服務(wù)模塊的時候,本身存在前端和后端分離的情況,即前端仍然需求通過接口來訪問后端的能力。同時某個微服務(wù)模塊還需要跨模塊訪問其它微服務(wù)模塊提供的能力。在這種場景下,我們更加希望是在同一個微服務(wù)模塊內(nèi)部,不存在分布式或跨資源的問題,這種接口訪問應(yīng)該是一種更加輕量高效的模式,比如本地化的Java API接口。而在跨微服務(wù)模塊訪問的時候,再將這種本地的API接口轉(zhuǎn)變?yōu)镽PC接口或Http Rest服務(wù)接口。
因此在微服務(wù)模塊進行服務(wù)注冊的時候,除了直接注冊可以遠(yuǎn)程訪問的Http Rest接口服務(wù)能力外,我們希望能夠直接對原生的Java API接口進行注冊,同時將API接口發(fā)布為Http Rest服務(wù)。同時對于微服務(wù)模塊在使用其它微服務(wù)模塊的接口服務(wù)的時候,又可能像調(diào)用本地API接口一樣進行使用。這個即是我前幾天有篇文章談的,將微服務(wù)網(wǎng)關(guān)實現(xiàn)為一種徹底去中心化的微服務(wù)網(wǎng)關(guān),同時在PaaS平臺鏡像制作或容器化部署的時候自動下發(fā)本地的SDK服務(wù)代理包。
通過這種方式,可以徹底將多個微服務(wù)模塊間通過Http Rest服務(wù)或SOAP服務(wù)進行協(xié)同的細(xì)節(jié)全部屏蔽。微服務(wù)模塊所有的接口提供或接口使用操作都類似一種本地化的API操作,同時由于微服務(wù)網(wǎng)關(guān)本身去中心化后,服務(wù)網(wǎng)關(guān)只需要提供服務(wù)注冊,服務(wù)訂購,基礎(chǔ)服務(wù)元數(shù)據(jù)配置信息維護等關(guān)鍵能力。其余的服務(wù)日志,安全,流控,包括負(fù)載均衡等能力全部可以下沉到本地的SDK代理包中完成,也減少了微服務(wù)網(wǎng)關(guān)成為中心化節(jié)點的可靠性,性能等諸多問題。
微服務(wù)架構(gòu)下不存在復(fù)雜的可視化服務(wù)設(shè)計操作,也不存在類似傳統(tǒng)ESB總線那樣復(fù)雜的協(xié)議轉(zhuǎn)換和數(shù)據(jù)映射,而是只需要提供較簡單的服務(wù)設(shè)計,API接口服務(wù)注冊和發(fā)布能力即可。一個服務(wù)在注冊和接入后仍然需要提供在線的服務(wù)測試工具和功能。
在采用容器化管理模式下,對于Kubernates本身就有對容器化資源進行負(fù)載均衡的能力,也就是實際上我們接入到微服務(wù)網(wǎng)關(guān)的地址應(yīng)該是從Kubernates負(fù)載后出來的地址。如果微服務(wù)網(wǎng)關(guān)本身也進行了集群化部署,這個時候微服務(wù)網(wǎng)關(guān)發(fā)布出來的地址是第二次負(fù)載均衡后的地址。當(dāng)然,如果是在去中心化架構(gòu)模式的下微服務(wù)網(wǎng)關(guān),應(yīng)該不存在微服務(wù)網(wǎng)關(guān)本身的集群化部署問題了。
服務(wù)訂購和服務(wù)消費
注意整個注冊的粒度是先應(yīng)用注冊,然后是微服務(wù)模塊注冊,然后才是微服務(wù)模塊里面的接口服務(wù)能力注冊,接口服務(wù)本身是由微服務(wù)模塊提供出來的。對于接口服務(wù)的訂購也是同樣的道理,需要授權(quán)和管理到微服務(wù)模塊級別,只有進行了服務(wù)訂購才能夠進行服務(wù)訪問,同時對于微服務(wù)模塊消費端都分配獨立的Token令牌信息。對于Token的安全機制,既可以使用靜態(tài)的Token,定時刷新;也可以使用每次接口服務(wù)調(diào)用都動態(tài)獲取的動態(tài)令牌(會一定影響接口服務(wù)性能)。
服務(wù)訂購成功后,消費端微服務(wù)模塊同樣可以利用在線的API接口服務(wù)測試工具對服務(wù)進行測試。同時服務(wù)訂購成功后服務(wù)管控平臺需要提供具體的服務(wù)訪問地址信息,Token信息,服務(wù)訪問說明信息等。如果是去中心化的微服務(wù)網(wǎng)關(guān),這里需要實現(xiàn)如何將訂購接口服務(wù)內(nèi)容動態(tài)實時下發(fā)到本地SDK服務(wù)代理包中。
有A,B兩個微服務(wù)模塊,如果A模塊要消費B模塊提供的微服務(wù)接口服務(wù)能力,這個時候A模塊本身不用關(guān)心B模塊具體提供的接口服務(wù)地址,同時也不要關(guān)心微服務(wù)網(wǎng)關(guān)進行封裝代理后的地址,而只需要訪問服務(wù)注冊庫去獲取地址信息,只不過這個地址信息可以緩存到本地而已。在這種場景下,A,B模塊在部署的時候唯一需要確認(rèn)的就是環(huán)境信息,即究竟是開發(fā)環(huán)境還是UAT測試環(huán)境,或者說生產(chǎn)環(huán)境,不同的環(huán)境即對應(yīng)訪問不同的服務(wù)地址信息。
服務(wù)日志和運行監(jiān)控
接口服務(wù)調(diào)用日志查詢是最基本的能力,這個需要在微服務(wù)網(wǎng)關(guān)或者說微服務(wù)治理平臺提供。對于每一次接口服務(wù)調(diào)用,最好的就是需要實現(xiàn)能夠根據(jù)服務(wù)實例號詳細(xì)的查詢到具體接口服務(wù)調(diào)用的輸入,輸出信息,包括出現(xiàn)錯誤后的詳細(xì)異常日志信息。服務(wù)調(diào)用開發(fā)時間,結(jié)束時間信息等。當(dāng)前微服務(wù)架構(gòu)下談的比較多的是服務(wù)鏈監(jiān)控能力,這個當(dāng)前也有不少的開源實現(xiàn)方案,在我博客文章中也有一篇文章專門談了如果自己來實現(xiàn)一種最簡單的服務(wù)鏈監(jiān)控和跟蹤。
服務(wù)運行統(tǒng)計分析是另外一個常用的功能,基本的統(tǒng)一原始仍然是服務(wù)運行次數(shù),運行時間,數(shù)據(jù)量,異常數(shù)等。而實際的統(tǒng)計維度則包括了按服務(wù),按服務(wù)類型,按應(yīng)用,按微服務(wù)模塊,按時間等各種統(tǒng)計維度。對于服務(wù)運行統(tǒng)計最好是實現(xiàn)一種靈活的自定義統(tǒng)計分析報表能力,開發(fā)者可以自己進行靈活的定制。實際的PaaS平臺整體的監(jiān)控包括了多個層次,最上層的是應(yīng)用監(jiān)控,然后是服務(wù)監(jiān)控,最下面的則是資源監(jiān)控,而資源監(jiān)控本身又包括了中間件容器資源,虛擬機,物理服務(wù)器等多個層面。而我們實際的述求是從應(yīng)用監(jiān)控發(fā)現(xiàn)的問題能夠?qū)崟r的追溯到服務(wù)或資源,而從資源監(jiān)控本身發(fā)現(xiàn)的預(yù)警又能夠協(xié)助我們?nèi)シ床闈撛诘膯栴}應(yīng)用模塊。
服務(wù)的預(yù)警策略和預(yù)警與服務(wù)流量控制功能往往需要配合使用。即當(dāng)觸發(fā)了服務(wù)預(yù)警或告警的時候,才進行服務(wù)流量控制。這種告警可以是大并發(fā)的服務(wù)異常調(diào)用,大數(shù)據(jù)量的服務(wù)調(diào)用,還可以是這些大并發(fā)調(diào)用引起的CPU和內(nèi)存消耗異常等。即一旦我們發(fā)現(xiàn)了影響到中間件資源穩(wěn)定運行的接口服務(wù),就需要對這個服務(wù)進行流控,或?qū)Ψ?wù)進行降級或隔離,以避免單個服務(wù)影響到整個中間件容器的運行。
服務(wù)治理門戶
服務(wù)治理門戶應(yīng)該包括在大的PaaS門戶里面,重要的還是實現(xiàn)面向開發(fā)者的服務(wù)注冊接入,服務(wù)消費訂購,服務(wù)監(jiān)控等各種自服務(wù)功能和能力。同時提供完整的服務(wù)目錄,服務(wù)接入和服務(wù)訂購說明,流程,規(guī)范,示例等。方面開發(fā)者快速的接入和消費服務(wù)。這塊功能和當(dāng)前類似京東,淘寶的OpenAPI平臺很類似。在一個企業(yè)構(gòu)建完整的容器化PaaS平臺的時候,實際上需要包括OpenAPI平臺部分的能力。
在談SOA服務(wù)管控治理的時候,我們經(jīng)常會談到通過SOA咨詢規(guī)劃實現(xiàn)一個完整的SOA服務(wù)資產(chǎn)庫和目錄庫,對于服務(wù)治理門戶即可以提供這部門服務(wù)目錄資產(chǎn)的完整查詢,查看和訪問能力。、即服務(wù)目錄除了提供完整的接口服務(wù)目錄列表外,還為服務(wù)消費者提供API功能簡介、開發(fā)指南、API調(diào)用說明、返回碼說明等文檔。提供查看單條API的詳細(xì)信息功能,用戶可查看指定API的名稱、調(diào)用路徑、功能說明等信息,同時提供在線的接口服務(wù)測試。
第三十四屆CIO班招生
北達軟EXIN網(wǎng)絡(luò)空間與IT安全基礎(chǔ)認(rèn)證培訓(xùn)
北達軟EXIN DevOps Professional認(rèn)證培訓(xùn)
責(zé)編:yangjun
免責(zé)聲明:本網(wǎng)站(http://www.www.gypb.net/)內(nèi)容主要來自原創(chuàng)、合作媒體供稿和第三方投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
本網(wǎng)站刊載的所有內(nèi)容(包括但不僅限文字、圖片、LOGO、音頻、視頻、軟件、程序等)版權(quán)歸原作者所有。任何單位或個人認(rèn)為本網(wǎng)站中的內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,請及時通知本站,予以刪除。