在互聯(lián)網(wǎng)+的推動下,對外開放服務(wù)儼然已經(jīng)成為了企業(yè)加速實現(xiàn)互聯(lián)網(wǎng)化轉(zhuǎn)型的重要手段。在企業(yè)開放服務(wù)的道路上,技術(shù)與業(yè)務(wù)的實現(xiàn)已標(biāo)準(zhǔn)化:首先需實現(xiàn)其自身架構(gòu)服務(wù)化,并在此基礎(chǔ)上統(tǒng)一服務(wù)的開放協(xié)議接口、提供服務(wù)開放后的業(yè)務(wù)及數(shù)據(jù)安全性保障、保障服務(wù)開放后面臨的大數(shù)據(jù)高并發(fā)的業(yè)務(wù)支撐,最后對服務(wù)的使用情況提供全面的監(jiān)控與計量。所有這些由開放帶來的“復(fù)雜性”問題都可以由一套開放平臺來解決,而網(wǎng)關(guān)作為開放平臺中最重要的組件,其設(shè)計的好壞就顯得尤為重要了。
企業(yè)級服務(wù)網(wǎng)關(guān)應(yīng)具備的基本功能如下:
1.協(xié)議轉(zhuǎn)換與適配,在企業(yè)自身服務(wù)化建設(shè)過程中,可能由于開發(fā)團隊、開發(fā)周期、業(yè)務(wù)需求等方面的影響而采用不同的服務(wù)調(diào)用協(xié)議,如HTTP、WebService(WSDL、SOAP等)、RPC(Remote Procedure CallProtoc 所有由開放帶來的“復(fù)雜性”問題都可以由一套開放平臺來解決,而網(wǎng)關(guān)作為開放平臺中最重要的組件,其設(shè)計的好壞就顯得尤為重要了。
在互聯(lián)網(wǎng)+的推動下,對外開放服務(wù)儼然已經(jīng)成為了企業(yè)加速實現(xiàn)互聯(lián)網(wǎng)化轉(zhuǎn)型的重要手段。在企業(yè)開放服務(wù)的道路上,技術(shù)與業(yè)務(wù)的實現(xiàn)已標(biāo)準(zhǔn)化:首先需實現(xiàn)其自身架構(gòu)服務(wù)化,并在此基礎(chǔ)上統(tǒng)一服務(wù)的開放協(xié)議接口、提供服務(wù)開放后的業(yè)務(wù)及數(shù)據(jù)安全性保障、保障服務(wù)開放后面臨的大數(shù)據(jù)高并發(fā)的業(yè)務(wù)支撐,最后對服務(wù)的使用情況提供全面的監(jiān)控與計量。所有這些由開放帶來的“復(fù)雜性”問題都可以由一套開放平臺來解決,而網(wǎng)關(guān)作為開放平臺中最重要的組件,其設(shè)計的好壞就顯得尤為重要了。
企業(yè)級服務(wù)網(wǎng)關(guān)應(yīng)具備的基本功能如下:
1.協(xié)議轉(zhuǎn)換與適配,在企業(yè)自身服務(wù)化建設(shè)過程中,可能由于開發(fā)團隊、開發(fā)周期、業(yè)務(wù)需求等方面的影響而采用不同的服務(wù)調(diào)用協(xié)議,如HTTP、WebService(WSDL、SOAP等)、RPC(RemoteProcedureCallProtocol,遠(yuǎn)程過程調(diào)用協(xié)議)等。協(xié)議上的復(fù)雜性與多樣性勢必會增加開發(fā)者的開發(fā)成本和開發(fā)難度。服務(wù)網(wǎng)關(guān)應(yīng)具有協(xié)議轉(zhuǎn)換及適配功能,通過該功能就可以將注冊進(jìn)平臺中的服務(wù)進(jìn)行統(tǒng)一處理,主流的方案是將現(xiàn)有協(xié)議統(tǒng)一轉(zhuǎn)換成面向移動RestFul接口形式對外開放。這樣在用戶進(jìn)行服務(wù)請求時便不再需要考慮服務(wù)后端真正的接口實現(xiàn)情況,只需向服務(wù)網(wǎng)關(guān)發(fā)送一條簡單的RestFul請求就可以了,這大大提升了開發(fā)者開發(fā)應(yīng)用程序的便利性。同時該功能使原有服務(wù)接口在不做或只需做少量改動的情況下實現(xiàn)快速對外開放,并使原有接口很好的支持移動應(yīng)用,協(xié)助企業(yè)固有業(yè)務(wù)的移動端拓展。當(dāng)然,協(xié)議轉(zhuǎn)換不僅僅包擴請求過程的協(xié)議轉(zhuǎn)換,還包括應(yīng)答結(jié)果的協(xié)議轉(zhuǎn)換,例如XML與JSON返回結(jié)果的雙向轉(zhuǎn)換等,也是非常重要,開發(fā)者可以通過選擇返回結(jié)果的數(shù)據(jù)類型以與開發(fā)者應(yīng)用實現(xiàn)更良好的適配效果。
2.安全保障,互聯(lián)網(wǎng)是一個大而復(fù)雜的網(wǎng)絡(luò)環(huán)境,企業(yè)在將自身業(yè)務(wù)能力與數(shù)據(jù)以服務(wù)形式對外開放的過程中存在巨大機遇,同時也帶來了大量的安全隱患,例如開放后的業(yè)務(wù)更容易受到攻擊、只想對部分人開放的數(shù)據(jù)要防止數(shù)據(jù)泄露與竊取、服務(wù)要有可見性設(shè)定防止沒有權(quán)限用戶的調(diào)用等等。在構(gòu)建服務(wù)時網(wǎng)關(guān)的處理API請求過程中應(yīng)加入請求權(quán)限控制,權(quán)限控制的實現(xiàn)方式一般采用互聯(lián)網(wǎng)化的權(quán)限認(rèn)證協(xié)議如OAuth2.0、OAuth等。安全控制等級也分為IP等級、服務(wù)等級和資源等級。舉例來講,一個普通的RestFul請求發(fā)送到服務(wù)網(wǎng)關(guān)后,服務(wù)網(wǎng)關(guān)首先會解析請求來源IP,從IP等級上做安全控制,驗證為合法IP后會讀取請求自帶的訪問令牌(Accesstoken,通常有OAuth2.0獲取),通過驗證令牌的合法性來完成服務(wù)等級的訪問控制,前兩項驗證都通過后再將該服務(wù)下有權(quán)限的資源列表與請求資源做比對驗證,只有所有驗證條件都通過的情況下請求才會繼續(xù)進(jìn)行。當(dāng)然,由于業(yè)務(wù)對外開放所需安全性保障力度的不同,驗證過程又存在一定的復(fù)雜性與性能損耗,大多數(shù)服務(wù)網(wǎng)關(guān)的安全性驗證都作為可選(或按等級可選)配置來供用戶使用。
3.監(jiān)控與計量,企業(yè)將自身業(yè)務(wù)對外開放并不意味著只是簡單的將原有業(yè)務(wù)服務(wù)化并放在網(wǎng)絡(luò)中供用戶使用,企業(yè)大多關(guān)心自身業(yè)務(wù)開放后的用戶使用情況和市場的反饋結(jié)果。這就需要服務(wù)網(wǎng)關(guān)具備監(jiān)控與計量能力,每一次服務(wù)網(wǎng)關(guān)接收到請求后都要將請求來源、服務(wù)對象、請求資源、請求狀態(tài)等信息記錄下來,并在開放平臺的控制臺中做統(tǒng)計分析與報表展示,這樣企業(yè)便能夠根據(jù)實時的API使用情況分析報表做出更準(zhǔn)確的市場判斷,有助于企業(yè)指導(dǎo)API市場運營。
4.性能調(diào)優(yōu),在無服務(wù)網(wǎng)關(guān)的開放平臺中,企業(yè)各業(yè)務(wù)線的服務(wù)相對分散,用戶在調(diào)用時直接訪問服務(wù)后臺本身,性能瓶頸主要集中在各服務(wù)自身的后臺服務(wù)實現(xiàn)中。在使用了服務(wù)網(wǎng)關(guān)后,所有請求都由網(wǎng)關(guān)接收,并在做出相應(yīng)邏輯處理之后轉(zhuǎn)發(fā)給對應(yīng)的真實后臺。這一過程勢必帶來兩個方面的性能問題,一是在客戶端與后臺服務(wù)端之間增加了一堵“墻”之后,客戶端向服務(wù)端發(fā)送請求時受這堵“墻”的影響請求的時間會有所增長。怎樣將這堵“墻”做的“簿”就是優(yōu)化的關(guān)鍵了,開源的服務(wù)網(wǎng)關(guān)產(chǎn)品KONG的做法是服務(wù)網(wǎng)關(guān)本身只提供基本的路由功能,所有包括安全、統(tǒng)計、認(rèn)證等邏輯處理功能都以可配置插件的形式提供給有需要的用戶,當(dāng)然路由功能及所有邏輯處理模塊都有相應(yīng)的優(yōu)化方案,這里不做詳細(xì)討論。二是將原有的分散的服務(wù)集中、對外統(tǒng)一入口之后,也為網(wǎng)關(guān)帶來了高訪問量、高并發(fā)、大數(shù)據(jù)量的問題,而這類問題的性能優(yōu)化通常會采用分布式負(fù)載均衡或集群的方式來提高負(fù)載能力。針對網(wǎng)關(guān)跨數(shù)據(jù)中心訪問的情況,一般需要通過云的方式來建議保障。
服務(wù)網(wǎng)關(guān)在有效幫助企業(yè)實現(xiàn)對外開放的同時也面臨著如性能等一些問題的挑戰(zhàn)。市場上各類產(chǎn)品也有很多,從今年5月份剛剛開源的KONG到支持百億級并發(fā)的淘寶開放平臺,這些產(chǎn)品都可稱為服務(wù)網(wǎng)關(guān)的標(biāo)桿,相信在這些標(biāo)桿的指引下服務(wù)網(wǎng)關(guān)這類產(chǎn)品的發(fā)展會越發(fā)成熟
ol,遠(yuǎn)程過程調(diào)用協(xié)議)等。協(xié)議上的復(fù)雜性與多樣性勢必會增加開發(fā)者的開發(fā)成本和開發(fā)難度。服務(wù)網(wǎng)關(guān)應(yīng)具有協(xié)議轉(zhuǎn)換及適配功能,通過該功能就可以將注冊進(jìn)平臺中的服務(wù)進(jìn)行統(tǒng)一處理,主流的方案是將現(xiàn)有協(xié)議統(tǒng)一轉(zhuǎn)換成面向移動RestFul接口形式對外開放。這樣在用戶進(jìn)行服務(wù)請求時便不再需要考慮服務(wù)后端真正的接口實現(xiàn)情況,只需向服務(wù)網(wǎng)關(guān)發(fā)送一條簡單的RestFul請求就可以了,這大大提升了開發(fā)者開發(fā)應(yīng)用程序的便利性。同時該功能使原有服務(wù)接口在不做或只需做少量改動的情況下實現(xiàn)快速對外開放,并使原有接口很好的支持移動應(yīng)用,協(xié)助企業(yè)固有業(yè)務(wù)的移動端拓展。當(dāng)然,協(xié)議轉(zhuǎn)換不僅僅包擴請求過程的協(xié)議轉(zhuǎn)換,還包括應(yīng)答結(jié)果的協(xié)議轉(zhuǎn)換,例如XML與JSON返回結(jié)果的雙向轉(zhuǎn)換等,也是非常重要,開發(fā)者可以通過選擇返回結(jié)果的數(shù)據(jù)類型以與開發(fā)者應(yīng)用實現(xiàn)更良好的適配效果。
2.安全保障,互聯(lián)網(wǎng)是一個大而復(fù)雜的網(wǎng)絡(luò)環(huán)境,企業(yè)在將自身業(yè)務(wù)能力與數(shù)據(jù)以服務(wù)形式對外開放的過程中存在巨大機遇,同時也帶來了大量的安全隱患,例如開放后的業(yè)務(wù)更容易受到攻擊、只想對部分人開放的數(shù)據(jù)要防止數(shù)據(jù)泄露與竊取、服務(wù)要有可見性設(shè)定防止沒有權(quán)限用戶的調(diào)用等等。在構(gòu)建服務(wù)時網(wǎng)關(guān)的處理API請求過程中應(yīng)加入請求權(quán)限控制,權(quán)限控制的實現(xiàn)方式一般采用互聯(lián)網(wǎng)化的權(quán)限認(rèn)證協(xié)議如OAuth2.0、OAuth等。安全控制等級也分為IP等級、服務(wù)等級和資源等級。舉例來講,一個普通的RestFul請求發(fā)送到服務(wù)網(wǎng)關(guān)后,服務(wù)網(wǎng)關(guān)首先會解析請求來源IP,從IP等級上做安全控制,驗證為合法IP后會讀取請求自帶的訪問令牌(Accesstoken,通常有OAuth2.0獲取),通過驗證令牌的合法性來完成服務(wù)等級的訪問控制,前兩項驗證都通過后再將該服務(wù)下有權(quán)限的資源列表與請求資源做比對驗證,只有所有驗證條件都通過的情況下請求才會繼續(xù)進(jìn)行。當(dāng)然,由于業(yè)務(wù)對外開放所需安全性保障力度的不同,驗證過程又存在一定的復(fù)雜性與性能損耗,大多數(shù)服務(wù)網(wǎng)關(guān)的安全性驗證都作為可選(或按等級可選)配置來供用戶使用。
3.監(jiān)控與計量,企業(yè)將自身業(yè)務(wù)對外開放并不意味著只是簡單的將原有業(yè)務(wù)服務(wù)化并放在網(wǎng)絡(luò)中供用戶使用,企業(yè)大多關(guān)心自身業(yè)務(wù)開放后的用戶使用情況和市場的反饋結(jié)果。這就需要服務(wù)網(wǎng)關(guān)具備監(jiān)控與計量能力,每一次服務(wù)網(wǎng)關(guān)接收到請求后都要將請求來源、服務(wù)對象、請求資源、請求狀態(tài)等信息記錄下來,并在開放平臺的控制臺中做統(tǒng)計分析與報表展示,這樣企業(yè)便能夠根據(jù)實時的API使用情況分析報表做出更準(zhǔn)確的市場判斷,有助于企業(yè)指導(dǎo)API市場運營。
4.性能調(diào)優(yōu),在無服務(wù)網(wǎng)關(guān)的開放平臺中,企業(yè)各業(yè)務(wù)線的服務(wù)相對分散,用戶在調(diào)用時直接訪問服務(wù)后臺本身,性能瓶頸主要集中在各服務(wù)自身的后臺服務(wù)實現(xiàn)中。在使用了服務(wù)網(wǎng)關(guān)后,所有請求都由網(wǎng)關(guān)接收,并在做出相應(yīng)邏輯處理之后轉(zhuǎn)發(fā)給對應(yīng)的真實后臺。這一過程勢必帶來兩個方面的性能問題,一是在客戶端與后臺服務(wù)端之間增加了一堵“墻”之后,客戶端向服務(wù)端發(fā)送請求時受這堵“墻”的影響請求的時間會有所增長。怎樣將這堵“墻”做的“簿”就是優(yōu)化的關(guān)鍵了,開源的服務(wù)網(wǎng)關(guān)產(chǎn)品KONG的做法是服務(wù)網(wǎng)關(guān)本身只提供基本的路由功能,所有包括安全、統(tǒng)計、認(rèn)證等邏輯處理功能都以可配置插件的形式提供給有需要的用戶,當(dāng)然路由功能及所有邏輯處理模塊都有相應(yīng)的優(yōu)化方案,這里不做詳細(xì)討論。二是將原有的分散的服務(wù)集中、對外統(tǒng)一入口之后,也為網(wǎng)關(guān)帶來了高訪問量、高并發(fā)、大數(shù)據(jù)量的問題,而這類問題的性能優(yōu)化通常會采用分布式負(fù)載均衡或集群的方式來提高負(fù)載能力。針對網(wǎng)關(guān)跨數(shù)據(jù)中心訪問的情況,一般需要通過云的方式來建議保障。
服務(wù)網(wǎng)關(guān)在有效幫助企業(yè)實現(xiàn)對外開放的同時也面臨著如性能等一些問題的挑戰(zhàn)。市場上各類產(chǎn)品也有很多,從今年5月份剛剛開源的KONG到支持百億級并發(fā)的淘寶開放平臺,這些產(chǎn)品都可稱為服務(wù)網(wǎng)關(guān)的標(biāo)桿,相信在這些標(biāo)桿的指引下服務(wù)網(wǎng)關(guān)這類產(chǎn)品的發(fā)展會越發(fā)成熟