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