徐樂
摘要:本文探討了當(dāng)前企業(yè)資源開發(fā)中遇到的瓶頸,提出了通過服務(wù)資源共享平臺提升企業(yè)開發(fā)能力的必要性,分析了基于企業(yè)服務(wù)總線的服務(wù)資源共享平臺的層次結(jié)構(gòu),研究了平臺的總體架構(gòu)、功能結(jié)構(gòu)和關(guān)鍵技術(shù)。
關(guān)鍵詞:企業(yè)服務(wù)總線;服務(wù)資源共享;spring cloud
中圖分類號:TP393.09 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2019)03-0064-03
1 概述
隨著信息技術(shù)的迅猛發(fā)展,針對不同的業(yè)務(wù),都會部署一套前端應(yīng)用和后臺服務(wù),同時(shí)不斷提出新的應(yīng)用需求,這種快速迭代更新要求我們建立短、平、快的開發(fā)模式。現(xiàn)有已開發(fā)的服務(wù),有很多通過重新組合可構(gòu)建出新的服務(wù)能力,可供新的應(yīng)用使用,大大縮短了開發(fā)周期,避免了服務(wù)資源的浪費(fèi)。同時(shí),采用平臺服務(wù)共享的方式,可以從傳統(tǒng)的賣服務(wù)器轉(zhuǎn)化成賣服務(wù),采用服務(wù)上云的方式,極大的節(jié)省了硬件成本,便于推廣。
2 服務(wù)資源共享平臺
服務(wù)資源共享平臺是針對企業(yè)業(yè)務(wù)系統(tǒng)管理開發(fā)的一個(gè)平臺。通過服務(wù)資源共享平臺,應(yīng)用可獲取所需后臺服務(wù)、可對服務(wù)進(jìn)行監(jiān)管保障,管理服務(wù)的全生命周期,對服務(wù)進(jìn)行統(tǒng)一配置管理,對相互孤立的數(shù)據(jù)集合進(jìn)行整合,提供通用接口,統(tǒng)一管理,并建立合理的更新機(jī)制,避免重復(fù)錄入,保證數(shù)據(jù)的一致性、實(shí)時(shí)性、安全性,用戶可通過配置資源地址,訪問已注冊的業(yè)務(wù)資源,不再需要重復(fù)開發(fā)該業(yè)務(wù),從而成為能在全局范圍內(nèi)為眾多應(yīng)用所共享的數(shù)據(jù)資源,降低了政府及企事業(yè)單位IT管理成本,最重要的是使得他們內(nèi)部數(shù)據(jù)得到了整合,可在這些數(shù)據(jù)基礎(chǔ)上進(jìn)一步提高各種分析手段,從而對政府部門及企事業(yè)決策分析提供數(shù)據(jù)參考。
2.1 層次結(jié)構(gòu)
服務(wù)資源共享平臺對應(yīng)用運(yùn)行所需的基礎(chǔ)數(shù)據(jù)、業(yè)務(wù)組件和網(wǎng)絡(luò)服務(wù)等服務(wù)資源,進(jìn)行統(tǒng)一注冊、審核、發(fā)布、授權(quán)、查詢、認(rèn)證、使用、更新和下線等全生命周期管理。使應(yīng)用按照統(tǒng)一的技術(shù)標(biāo)準(zhǔn)、統(tǒng)一的安全策略,快速開發(fā)、快速部署、快速迭代。保證應(yīng)用的靈活、健壯、高效、易用、安全,促進(jìn)應(yīng)用健康有序發(fā)展。服務(wù)資源共享平臺作為應(yīng)用支撐的重要組成部分之一,對各類移動應(yīng)用建設(shè)提供全面支撐。服務(wù)資源共享平臺綜合利用EAI應(yīng)用集成、SOA面向服務(wù)、ESB服務(wù)總線和Microservices微服務(wù)等軟件技術(shù),以適應(yīng)新技術(shù)條件下的分布式、虛擬化、微型化部署,并與網(wǎng)絡(luò)接入控制、移動安全接入、授權(quán)訪問代理、網(wǎng)絡(luò)隔離交換與訪問控制等基礎(chǔ)安全技術(shù)聯(lián)動,保障應(yīng)用的接入和運(yùn)行安全,接受平臺集中管理控制。服務(wù)資源共享平臺的層次結(jié)構(gòu)如圖1所示。各類移動應(yīng)用的服務(wù)端,通過應(yīng)用支撐平臺中的服務(wù)資源共享平臺訪問各類網(wǎng)絡(luò)服務(wù)資源,開展業(yè)務(wù)應(yīng)用。并通過平臺安全防護(hù)措施保障信息安全,通過集中管控進(jìn)行集中運(yùn)行維護(hù)和安全管理。
其中:(1)基礎(chǔ)設(shè)施層:主要指企業(yè)運(yùn)行環(huán)境中的網(wǎng)絡(luò)、計(jì)算、存儲等基礎(chǔ)設(shè)施。(2)服務(wù)資源層:企業(yè)運(yùn)行環(huán)境的服務(wù)資源,建立在基礎(chǔ)設(shè)施層之上,包括各類基礎(chǔ)數(shù)據(jù)、API業(yè)務(wù)組件和網(wǎng)絡(luò)服務(wù)。(3)應(yīng)用支撐層:服務(wù)資源共享平臺作為應(yīng)用支撐系統(tǒng)的重要組成部分,在應(yīng)用開發(fā)服務(wù)、應(yīng)用發(fā)布管理、統(tǒng)一認(rèn)證授權(quán)和運(yùn)行監(jiān)測評估等子系統(tǒng)的協(xié)作下,匯聚各類服務(wù)資源支撐上層應(yīng)用。(4)應(yīng)用服務(wù)層:包括原生APP應(yīng)用、H5 Web輕應(yīng)用、混合模式及其他傳統(tǒng)應(yīng)用服務(wù)。(5)安全防護(hù):企業(yè)運(yùn)行環(huán)境中的安全防護(hù)體系保障應(yīng)用的安全有序運(yùn)行。
2.2 總體架構(gòu)
服務(wù)資源共享平臺的總體架構(gòu)如圖2所示。本平臺基于隔離交換技術(shù),對相互孤立的數(shù)據(jù)集合進(jìn)行整合,統(tǒng)一管理,并創(chuàng)建合理的更新機(jī)制,避免重復(fù)錄入,保證數(shù)據(jù)的一致性、實(shí)時(shí)性、安全性,實(shí)現(xiàn)系統(tǒng)間的松耦合,實(shí)現(xiàn)服務(wù)共享,從而成為能在全局范圍內(nèi)為眾多應(yīng)用所共享的數(shù)據(jù)資源,降低了政府及企事業(yè)單位IT管理成本,最重要的是使得他們內(nèi)部數(shù)據(jù)得到了整合,可在這些數(shù)據(jù)基礎(chǔ)上進(jìn)一步提高各種分析手段,從而對政府部門及企事業(yè)決策分析提供數(shù)據(jù)參考[1]。
(1)總線前置部分,由兩個(gè)nginx服務(wù)器構(gòu)成,實(shí)現(xiàn)負(fù)載均衡。(2)消息隊(duì)列,用戶作為服務(wù)消費(fèi)者,可以通過發(fā)消息來調(diào)用服務(wù),這些消息由服務(wù)總線轉(zhuǎn)換后發(fā)送給適當(dāng)?shù)姆?wù)實(shí)現(xiàn)[2]。在高并發(fā)環(huán)境下,通過使用消息隊(duì)列,我們可以異步處理請求,從而緩解系統(tǒng)的壓力,避免由于來不及同步處理,而導(dǎo)致請求堵塞。本平臺中所有模塊間的通信均采用消息隊(duì)列ActiveMQ實(shí)現(xiàn)。(3)Mule ESB集群,集群了多臺ESB總線設(shè)備,采用諸如keep alive的技術(shù)實(shí)現(xiàn)熱備功能,有效避免服務(wù)器出現(xiàn)意外故障,或者大量應(yīng)用請求業(yè)務(wù)資源時(shí),造成響應(yīng)速度卡頓的情況,從而提高平臺的容錯性和不間斷性,保障系統(tǒng)長期穩(wěn)定的運(yùn)行。(4)接口目錄,開放的API目錄,詳細(xì)說明應(yīng)用的信息,如:應(yīng)用所屬區(qū)域,開發(fā)人員信息,測試應(yīng)用還是正式應(yīng)用。(5)管理服務(wù)器,管理員可通過操作平臺,對登錄賬號進(jìn)行管理,查看ESB總線運(yùn)行情況,服務(wù)調(diào)用頻率,服務(wù)器內(nèi)存占用率,運(yùn)行速度等情況,用戶也通過用戶界面,配置服務(wù)信息、平臺信息等。(6)認(rèn)證、授權(quán),管理平臺可對請求服務(wù)資源共享平臺的應(yīng)用進(jìn)行認(rèn)證、授權(quán),通過應(yīng)用攜帶的令牌等安全策略,確定用戶是否可以訪問對應(yīng)的資源,若用戶不具有相應(yīng)區(qū)域的訪問權(quán)限則組織其訪問資源。(7)日志服務(wù)器,對ESB總線服務(wù)器的運(yùn)行狀態(tài)進(jìn)行日志記錄,對應(yīng)用請求業(yè)務(wù)資源的情況進(jìn)行全日制管理,對日志進(jìn)行詳細(xì)分級記錄,從而為分析、改善服務(wù)資源共享平臺做鋪墊。(8)數(shù)據(jù)庫,采用關(guān)系型數(shù)據(jù)庫對接口資源、用戶信息、業(yè)務(wù)資源信息等進(jìn)行存儲管理,定時(shí)更新維護(hù),當(dāng)有新用戶注冊本平臺、新業(yè)務(wù)資源注冊到總線、新的移動警務(wù)應(yīng)用請求業(yè)務(wù)資源、或者業(yè)務(wù)資源狀態(tài)有更新時(shí),都及時(shí)同步到數(shù)據(jù)庫中,便于集中管理,更新整體總線運(yùn)行機(jī)制,確保應(yīng)用的準(zhǔn)確路由。(9)應(yīng)用服務(wù)器,應(yīng)用服務(wù)器由業(yè)務(wù)資源提供方提供,并需經(jīng)過測試才能注冊到總線,通過Restful或者Web service等標(biāo)準(zhǔn)接口統(tǒng)一對外提供資源。由服務(wù)資源共享平臺的總線模塊統(tǒng)一對其調(diào)度,由服務(wù)資源共享平臺的管理模塊統(tǒng)一管理其注冊、審核、發(fā)布、授權(quán)、查詢、認(rèn)證、使用、更新和下線等生命周期。
2.3 功能結(jié)構(gòu)
服務(wù)資源共享平臺的功能結(jié)構(gòu)如圖3所示。應(yīng)用客戶端向平臺提出資源請求后,由安全策略引擎模塊驗(yàn)證其是否符合規(guī)范,對其進(jìn)行認(rèn)證授權(quán),確認(rèn)通過后,交給總線基礎(chǔ)引擎,引擎作為總線的開發(fā)環(huán)境,可將服務(wù)的代碼和配置文件打包成開發(fā)包,部署到總線基礎(chǔ)引擎里,確定其調(diào)度資源的ID,資源地址等基本信息,再由服務(wù)轉(zhuǎn)換模塊,將消息格式、數(shù)據(jù)格式、接口等轉(zhuǎn)換成標(biāo)準(zhǔn)格式,由服務(wù)路由控制模塊通過其訪問資源的URL地址,將請求路由到指定業(yè)務(wù)資源,業(yè)務(wù)資源可以是服務(wù),也可以是數(shù)據(jù)庫資源,服務(wù)統(tǒng)一通過Restful或web service接口調(diào)用,數(shù)據(jù)庫資源則直接調(diào)用服務(wù)資源共享平臺離線存儲的數(shù)據(jù)。業(yè)務(wù)資源服務(wù)上線、下線或者狀態(tài)更新時(shí),由服務(wù)管理器模塊集中管理,對外提供可訪問的業(yè)務(wù)資源的接口目錄,供客戶端應(yīng)用查詢調(diào)用。
2.4 關(guān)鍵技術(shù)
(1)微服務(wù)框架,綜合采用spring cloud框架,以適應(yīng)新技術(shù)條件下的分布式、虛擬化、微型化部署。(2)服務(wù)注冊,采用Eureka,Eureka是Netflix開源的一款提供云端服服務(wù)注冊和發(fā)現(xiàn)的產(chǎn)品,它提供了完整的Service Registry和Service Discovery實(shí)現(xiàn),以實(shí)現(xiàn)云端服務(wù)發(fā)現(xiàn)和故障轉(zhuǎn)移等服務(wù)治理。也是spring cloud體系中最重要最核心的組件之一。(3)統(tǒng)一配置。在分布式系統(tǒng)中,由于服務(wù)數(shù)量巨多,為了方便服務(wù)配置文件統(tǒng)一管理,實(shí)時(shí)更新,所以需要Spring Cloud架構(gòu)中提供的分布式配置中心組件,Spring cloud config。它支持將服務(wù)的配置信息放在配置服務(wù)的內(nèi)存中(即本地),也支持放在遠(yuǎn)程Git倉庫中。Git的管理界面,就是配置的管理界面。一個(gè)應(yīng)用的不同部署實(shí)例可以從Spring Cloud Config的服務(wù)端獲取不同的版本配置,從而支持一些特殊的場景。Git可以方便地使用各種第三方工具來對其內(nèi)容(配置信息)進(jìn)行管理更新和版本化,同時(shí)Git倉庫的Hook功能還可以幫助我們實(shí)時(shí)地監(jiān)控配置內(nèi)容的修改。(4)服務(wù)路由。在Spring Cloud微服務(wù)系統(tǒng)中,客戶端要調(diào)用后端服務(wù),首先經(jīng)過負(fù)載均衡(Zuul、Ngnix),再到達(dá)服務(wù)網(wǎng)關(guān)(Zuul集群),由Zuul網(wǎng)關(guān)轉(zhuǎn)發(fā)請求給對應(yīng)的服務(wù)。服務(wù)消費(fèi)者無需關(guān)心后臺部署的服務(wù)名稱和地址。用戶只知道網(wǎng)關(guān)地址,并不知道服務(wù)具體的部署地址,所有請求都往Zuul網(wǎng)關(guān)走,網(wǎng)關(guān)會根據(jù)請求中的一些特征,將請求轉(zhuǎn)發(fā)給后端的各個(gè)服務(wù)。(5)訪問控制。用戶通過應(yīng)用或服務(wù)訪問服務(wù)資源共享平臺的后臺服務(wù)時(shí),平臺會調(diào)用“統(tǒng)一認(rèn)證接口、統(tǒng)一授權(quán)接口、統(tǒng)一鑒權(quán)接口”進(jìn)行訪問控制。認(rèn)證鑒權(quán)基于統(tǒng)一驗(yàn)證授權(quán)機(jī)制,實(shí)現(xiàn)對服務(wù)的用戶、終端、應(yīng)用、數(shù)據(jù)等因素實(shí)現(xiàn)統(tǒng)一管控。授權(quán)訪問是基于安全策略定義,通過接入方式和方法的搭建數(shù)據(jù)安全接入通道,經(jīng)過服務(wù)解析和服務(wù)調(diào)用,達(dá)到第三方安全接入功能。(6)鏈路監(jiān)控。服務(wù)之間通過網(wǎng)絡(luò)進(jìn)行通信,跟蹤每個(gè)請求,可以追溯錯誤日志、了解請求經(jīng)過了哪些服務(wù)(從而了解信息是如何在服務(wù)之間流動)、了解請求耗費(fèi)時(shí)間、網(wǎng)絡(luò)延遲、業(yè)務(wù)邏輯耗費(fèi)時(shí)間等指標(biāo),及時(shí)進(jìn)行故障診斷,提供完整的服務(wù)質(zhì)量評估報(bào)告,以衡量現(xiàn)有的應(yīng)用系統(tǒng)效率,為優(yōu)化、升級提供指導(dǎo),從而能更好地分析系統(tǒng)瓶頸、解決系統(tǒng)問題。(7)斷路保護(hù)。在微服務(wù)架構(gòu)中,根據(jù)業(yè)務(wù)來拆分成一個(gè)個(gè)的服務(wù),服務(wù)與服務(wù)之間可以相互調(diào)用(RPC)。為了保證其高可用,單個(gè)服務(wù)通常會集群部署。由于網(wǎng)絡(luò)原因或者自身的原因,服務(wù)并不能保證100%可用,如果單個(gè)服務(wù)出現(xiàn)問題,調(diào)用這個(gè)服務(wù)就會出現(xiàn)線程阻塞,此時(shí)若有大量的請求涌入,Servlet容器的線程資源會被消耗完畢,導(dǎo)致服務(wù)癱瘓。服務(wù)與服務(wù)之間的依賴性,故障會傳播,會對整個(gè)微服務(wù)系統(tǒng)造成災(zāi)難性的嚴(yán)重后果。為了解決這個(gè)問題,本平臺采用斷路器模型Hystrix。
3 結(jié)語
服務(wù)資源共享平臺對于企業(yè)開發(fā)、業(yè)務(wù)資源共享具有重大意義,已投入市場應(yīng)用,通過將基礎(chǔ)共性服務(wù)掛接到平臺后端,已實(shí)現(xiàn)部分資源的共享。服務(wù)資源共享平臺是互聯(lián)網(wǎng)應(yīng)用快速發(fā)展下的必備產(chǎn)物。
參考文獻(xiàn)
[1] 陳清金,陳存香,張巖.Docker技術(shù)實(shí)現(xiàn)分析[J].信息通信技術(shù),2015(2):37-40.
[2] 王平,龔文濤.基于SOA的高校貧困生認(rèn)定體系的研究[J].微型電腦應(yīng)用,2015(10):55-56+59.
Service Resource Sharing Platform Based on Enterprise Service Bus
XU Le
(The First Research Institute of the Ministry of Public Security, Beijing? 100048)
Abstract:This paper discusses the bottlenecks encountered in the current enterprise resource development, puts forward the necessity of improving enterprise development capability through service resource sharing platform, analyses the hierarchical structure of service resource sharing platform based on enterprise service bus, and studies the overall structure, functional structure and key technologies of the platform.
Key words:enterprise service bus; service resource sharing; spring cloud