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