◆彭永勇 曾 強(qiáng)
?
基于互聯(lián)網(wǎng)應(yīng)用模式的企業(yè)統(tǒng)一身份網(wǎng)關(guān)技術(shù)實(shí)踐
◆彭永勇 曾 強(qiáng)
(四川中電啟明星信息技術(shù)有限公司 四川 610225)
針對(duì)企業(yè)大量的私有云、公用云服務(wù)調(diào)用亂象、不能統(tǒng)一調(diào)用方式、無(wú)法對(duì)服務(wù)監(jiān)控等多種問(wèn)題,本文提出了基于互聯(lián)網(wǎng)模式的企業(yè)級(jí)統(tǒng)一應(yīng)用網(wǎng)關(guān)模式實(shí)踐,通過(guò)統(tǒng)一服務(wù)調(diào)用入口、統(tǒng)一服務(wù)請(qǐng)求協(xié)議、統(tǒng)一監(jiān)控處理技術(shù),有效提升企業(yè)服務(wù)管理能力。
安全;可信;服務(wù)消費(fèi);服務(wù)注冊(cè);網(wǎng)關(guān)
隨著企業(yè)信息化的不斷發(fā)展,越來(lái)越多的應(yīng)用在企業(yè)中構(gòu)建和運(yùn)行,移動(dòng)應(yīng)用、企業(yè)內(nèi)部應(yīng)用、互聯(lián)網(wǎng)應(yīng)用,使得后臺(tái)服務(wù)支持的對(duì)象,從以前單一的Web應(yīng)用,擴(kuò)展到多種使用場(chǎng)景,且每種使用場(chǎng)景對(duì)后臺(tái)服務(wù)的要求都不盡相同。這不僅增加了后臺(tái)服務(wù)的響應(yīng)量,還增加了后臺(tái)服務(wù)的復(fù)雜性。另外隨著互聯(lián)網(wǎng)的不斷發(fā)展,網(wǎng)關(guān)應(yīng)用必須要連接著企業(yè)內(nèi)外網(wǎng)服務(wù),作為企業(yè)應(yīng)用服務(wù)的統(tǒng)一入口,另外微服務(wù)架構(gòu)概念的提出,網(wǎng)關(guān)成為了微服務(wù)架構(gòu)的一個(gè)標(biāo)配組件。如果沒(méi)有網(wǎng)關(guān)的存在,那么企業(yè)需要解決如下問(wèn)題:
(1)內(nèi)外服務(wù)隔離;
(2)多方服務(wù)的解耦;
(3)服務(wù)安全問(wèn)題;
(4)服務(wù)監(jiān)控問(wèn)題;
(5)服務(wù)限流問(wèn)題。
基于以上問(wèn)題,本文提出了基于互聯(lián)網(wǎng)模式的企業(yè)級(jí)統(tǒng)一應(yīng)用網(wǎng)關(guān)模式實(shí)踐,克服了現(xiàn)有企業(yè)服務(wù)多樣化、服務(wù)安全性等困難,通過(guò)構(gòu)建一套適應(yīng)多客戶端應(yīng)用調(diào)用場(chǎng)景、支持公用云和私有云服務(wù)請(qǐng)求網(wǎng)關(guān)。
目前比較傳統(tǒng)的網(wǎng)關(guān)實(shí)現(xiàn)技術(shù)主要有基于線程的并發(fā)模型和事件驅(qū)動(dòng)的并發(fā)模型,雖然也能夠?qū)崿F(xiàn)網(wǎng)關(guān)基本功能,但都有各自的問(wèn)題,首先基于線程的并發(fā)模型方式弊端是隨著線程(進(jìn)程)數(shù)的上升,操作系統(tǒng)在這些線程(進(jìn)程)之間的頻繁切換,將急劇降低系統(tǒng)的性能,另外基于事件驅(qū)動(dòng)的并發(fā)模型要求每一個(gè)狀態(tài)的操作是短暫的并且是非阻塞的,針對(duì)狀態(tài)的管理以及擴(kuò)展性差,以下對(duì)兩種模式進(jìn)行說(shuō)明。
基于線程的并發(fā)模型(Thread-based concurrency)(如圖1),為每一個(gè)請(qǐng)求分配一個(gè)線程或進(jìn)程。這種模型編程簡(jiǎn)單,可以將處理一個(gè)完整請(qǐng)求的代碼編寫在一個(gè)代碼路徑中。隨著線程(進(jìn)程)數(shù)的上升,操作系統(tǒng)在這些線程(進(jìn)程)之間的頻繁切換,將急劇降低系統(tǒng)的性能(如圖2)。
圖1 基于線程的并發(fā)模型
這種模型中(如圖3),每一個(gè)請(qǐng)求在系統(tǒng)被表示成一個(gè)有限狀態(tài)機(jī)(FSM)。每一個(gè)FSM的狀態(tài)表示請(qǐng)求的一系列的操作。服務(wù)器由一組線程/進(jìn)程(一般是 one per CPU)循環(huán)處理各種來(lái)自隊(duì)列的事件(Event)。此方式在狀態(tài)管理以及橫向擴(kuò)展性顯得不足,需要引入第三方組件進(jìn)行管理,另外出錯(cuò)不好排查(如圖4)。
經(jīng)統(tǒng)計(jì),校園足球研究的第一作者101人,來(lái)自47個(gè)單位,90%為高等學(xué)校,其中體育院校有10所.發(fā)文3篇以上的有11個(gè)單位(見(jiàn)表5),共發(fā)表文獻(xiàn)50篇,占發(fā)文總量的40.32%.其中上海體院學(xué)院發(fā)文最多,發(fā)表論文11篇,其次為沈陽(yáng)體育學(xué)院,發(fā)表論文7篇.由表5可以看出,校園足球的研究主要集中在體育院校和師范大學(xué)、綜合性大學(xué)的體育院系.
圖2 該模型下系統(tǒng)性能效果
圖3 基于事件驅(qū)動(dòng)的并發(fā)模型
圖4 該模型下系統(tǒng)性能效果
因此本文提出了第三種基于互聯(lián)網(wǎng)關(guān)模式,能夠適應(yīng)企業(yè)級(jí)公有云、私有云服務(wù)的互聯(lián)網(wǎng)網(wǎng)關(guān)模式。
本設(shè)計(jì)通過(guò)在互聯(lián)網(wǎng)構(gòu)建一套網(wǎng)關(guān)服務(wù)、支持移動(dòng)應(yīng)用、WEB應(yīng)用、合作商應(yīng)用調(diào)用,通過(guò)安全加密過(guò)后的路由標(biāo)識(shí),將服務(wù)路由至企業(yè)內(nèi)網(wǎng)、外網(wǎng)服務(wù)。
保證高可用一般做法是解決單點(diǎn)故障給系統(tǒng)整體帶來(lái)的影響。在產(chǎn)品設(shè)計(jì)時(shí),為確保高可用,考慮了如下幾點(diǎn)要素:
(1)無(wú)狀態(tài)設(shè)計(jì)原則:網(wǎng)關(guān)層為保證高可用、易于伸縮、快速啟動(dòng),需要設(shè)計(jì)成無(wú)狀態(tài)的。用戶的狀態(tài)數(shù)據(jù)通常使用session對(duì)象來(lái)封裝,網(wǎng)關(guān)層要設(shè)計(jì)成無(wú)狀態(tài)的,也就是說(shuō),不能由網(wǎng)關(guān)來(lái)負(fù)責(zé)session的維護(hù)。那由誰(shuí)來(lái)維護(hù)session相關(guān)的信息呢?本文是采用cookie+session服務(wù)器的方式。
(2)優(yōu)雅下線原則:當(dāng)網(wǎng)關(guān)發(fā)現(xiàn)某一個(gè)節(jié)點(diǎn)不可用時(shí)(例如請(qǐng)求響應(yīng)時(shí)間超過(guò)閥值),不是直接斷開(kāi)與此節(jié)點(diǎn)的連接,而是先把此節(jié)點(diǎn)標(biāo)記為不可用(后續(xù)不在發(fā)送請(qǐng)求到此節(jié)點(diǎn)),但還會(huì)留出一段時(shí)間讓之前的請(qǐng)求都響應(yīng)完畢。
(3)當(dāng)網(wǎng)關(guān)監(jiān)聽(tīng)到有一臺(tái)新的服務(wù)注冊(cè)上來(lái)時(shí),考慮到有些服務(wù)啟動(dòng)后,剛開(kāi)始會(huì)有許多初始化的工作,此時(shí)服務(wù)對(duì)請(qǐng)求的響應(yīng)速度是比較慢的。如果一開(kāi)始就給這臺(tái)服務(wù)分配太多的壓力,有可能導(dǎo)致服務(wù)瞬間被壓垮。為了避免這種情況,網(wǎng)關(guān)層需要考慮支持SlowStart特性。即經(jīng)過(guò)一段時(shí)間,逐漸把壓力增加到預(yù)設(shè)的值。
(1)在哪些地點(diǎn)進(jìn)行攔截處理。
(2)攔截器的處理順序。
(3)如何在攔截器間傳遞數(shù)據(jù)。
(4)支持在線關(guān)閉或啟動(dòng)一個(gè)攔截器。
(1)自動(dòng)生成服務(wù)的API文檔。
(2)自動(dòng)生成客戶端的調(diào)用代碼。
互聯(lián)網(wǎng)模式的企業(yè)級(jí)統(tǒng)一應(yīng)用網(wǎng)關(guān)模式由服務(wù)消費(fèi)者、服務(wù)網(wǎng)關(guān)、服務(wù)生產(chǎn)者三部分組成,其中服務(wù)消費(fèi)者主要負(fù)責(zé)服務(wù)的消費(fèi);服務(wù)網(wǎng)關(guān)提供對(duì)服務(wù)的安全控制、服務(wù)注冊(cè)管理、服務(wù)請(qǐng)求路由管理;服務(wù)生產(chǎn)者創(chuàng)建服務(wù)、發(fā)布服務(wù)、在網(wǎng)關(guān)服務(wù)注冊(cè)服務(wù)。
圖5 業(yè)務(wù)架構(gòu)
如圖5,其核心業(yè)務(wù)是服務(wù)生產(chǎn)者在服務(wù)網(wǎng)關(guān)發(fā)布和注冊(cè)服務(wù),服務(wù)消費(fèi)者在服務(wù)網(wǎng)關(guān)查找和綁定服務(wù)。
網(wǎng)關(guān)服務(wù)由圖6綠色部分組成,包括運(yùn)行和運(yùn)維兩部分,運(yùn)行模塊負(fù)責(zé)接收客戶端請(qǐng)求,并且路由到相應(yīng)的云服務(wù),而運(yùn)維部分則主要是管理網(wǎng)關(guān)服務(wù),包括路由策略配置、運(yùn)行監(jiān)控管理,其詳細(xì)實(shí)現(xiàn)原理如圖6所示:
圖6 實(shí)現(xiàn)原理
大致步驟如下:
(1)服務(wù)提供商在網(wǎng)關(guān)服務(wù)注冊(cè)賬號(hào)。
(2)登錄網(wǎng)關(guān)服務(wù)后臺(tái)管理、發(fā)布服務(wù)、配置權(quán)限、收費(fèi)模式。
(3)服務(wù)消費(fèi)方在網(wǎng)關(guān)服務(wù)注冊(cè)賬號(hào)。
(4)登錄網(wǎng)關(guān)服務(wù)后臺(tái)管理、綁定需要調(diào)用的服務(wù),獲取客戶端調(diào)用代碼、調(diào)用API文檔。
(5)當(dāng)客戶端需要請(qǐng)求服務(wù)時(shí)、網(wǎng)關(guān)服務(wù)首先通過(guò)身份識(shí)別有效性,如果有效,則配置路由配置策略路由到服務(wù)后端。
(6)服務(wù)后端將請(qǐng)求結(jié)果,轉(zhuǎn)至網(wǎng)關(guān)服務(wù),再返回到客戶端。
本文的重點(diǎn)是通過(guò)互聯(lián)網(wǎng)模式的企業(yè)級(jí)統(tǒng)一應(yīng)用網(wǎng)關(guān)服務(wù),滿足企業(yè)公用云、私有云應(yīng)用環(huán)境,通過(guò)服務(wù)注冊(cè)、服務(wù)綁定、服務(wù)消費(fèi)流程、配合網(wǎng)關(guān)服務(wù)后臺(tái)對(duì)服務(wù)路由配置、監(jiān)控運(yùn)行狀態(tài),建設(shè)一套互聯(lián)網(wǎng)模式的網(wǎng)關(guān)服務(wù)。
[1]中國(guó)電子技術(shù)標(biāo)準(zhǔn)化研究所.IT服務(wù)管理標(biāo)準(zhǔn)理解與實(shí)施[M].北京:電子工業(yè)出版社,2011.
[2]羅東健.大規(guī)模存儲(chǔ)系統(tǒng)高可靠性關(guān)鍵技術(shù)研究[D].華中科技大學(xué),2011.
[3]宋雅麗,唐曉晟.基于OSGI家庭網(wǎng)關(guān)和Web Service技術(shù)的智能家庭系統(tǒng)[J].計(jì)算機(jī)應(yīng)用,2007.