某企業(yè)經(jīng)過多年的系統(tǒng)建設(shè)和演進(jìn),內(nèi)部系統(tǒng)間存在一些壁壘,通過在運(yùn)營商的各個(gè)內(nèi)部系統(tǒng),如經(jīng)分、VGOP、大數(shù)據(jù)平臺(tái)、集團(tuán)集市等中構(gòu)建基于ESB 的能力開放平臺(tái),解決了系統(tǒng)間調(diào)度、封閉式開發(fā)、數(shù)據(jù)孤島等系統(tǒng)問題,使得運(yùn)營商營銷能力和效率大大提高。
問題分析
背景分析
隨著市場發(fā)展,傳統(tǒng)的開發(fā)模式已經(jīng)無法滿足業(yè)務(wù)開發(fā)敏捷性的要求。伴隨經(jīng)營分析需求量激增,開發(fā)時(shí)限要求縮短,業(yè)務(wù)迭代優(yōu)化需求頻繁,原有的“工單-開發(fā)”模式平均開發(fā)周期為4.5 天,支撐負(fù)荷已達(dá)到極限。能力開放使業(yè)務(wù)人員可以更便捷的接觸和使用到數(shù)據(jù),釋放業(yè)務(wù)部門的開發(fā)能力。
由于歷史原因,業(yè)務(wù)支撐系統(tǒng)存在經(jīng)分、VGOP、大數(shù)據(jù)平臺(tái)、集團(tuán)集市等多套獨(dú)立的運(yùn)維系統(tǒng),缺乏統(tǒng)一的運(yùn)維管理,造成系統(tǒng)與系統(tǒng)之間的數(shù)據(jù)交付復(fù)雜,無法最大化
的利用系統(tǒng)資源。統(tǒng)一調(diào)度的出現(xiàn)能夠充分整合現(xiàn)有調(diào)度系統(tǒng),減少運(yùn)維工作量,提升維護(hù)質(zhì)量。
驅(qū)動(dòng)力一:程序調(diào)度管理混亂,系統(tǒng)資源使用不充分
經(jīng)分、大數(shù)據(jù)平臺(tái)、VGOP、集團(tuán)集市平臺(tái)各自擁有獨(dú)立的調(diào)度管理,平臺(tái)內(nèi)程序基本是串行執(zhí)行,以經(jīng)分日處理為例,每日運(yùn)行時(shí)間為20 個(gè)小時(shí),已經(jīng)嚴(yán)重影響到了指標(biāo)的匯總展示。
驅(qū)動(dòng)力二:傳統(tǒng)開發(fā)模式響應(yīng)慢,不能滿足敏捷開發(fā)需求
大數(shù)據(jù)平臺(tái)已成為一個(gè)數(shù)據(jù)寶庫,已有趨勢表明,只依賴集成商與業(yè)務(wù)支撐人員的傳統(tǒng)開發(fā)模式已經(jīng)無法快速響應(yīng)業(yè)務(wù)部門需求,提升數(shù)據(jù)價(jià)值。
驅(qū)動(dòng)力三:大數(shù)據(jù)平臺(tái)豐富了經(jīng)分的數(shù)據(jù)源,業(yè)務(wù)部門急待數(shù)據(jù)開放
某企業(yè)建立了面向企業(yè)內(nèi)部所有部門的大數(shù)據(jù)平臺(tái),大數(shù)據(jù)平臺(tái)整合了接入B域、O 域、互聯(lián)網(wǎng)域數(shù)據(jù),近100 余個(gè)數(shù)據(jù)接口,共計(jì)820T 的數(shù)據(jù)逐步投入生產(chǎn)。大數(shù)據(jù)平臺(tái)增強(qiáng)了傳統(tǒng)經(jīng)分的數(shù)據(jù)處理的能力,成為公司重要的資產(chǎn),但是傳統(tǒng)經(jīng)分?jǐn)?shù)據(jù)倉庫的用戶主要面向業(yè)支內(nèi)部人員,限制了數(shù)據(jù)的使用人員范圍和數(shù)據(jù)的使用頻度,已經(jīng)無法滿足公司日益發(fā)展的業(yè)務(wù)需求,數(shù)據(jù)的開放迫在眉睫。
問題詳解
基于背景情況分析,我們認(rèn)為主要問題有三個(gè):
1、 缺乏統(tǒng)一的調(diào)度管理,維護(hù)效率低下
目前經(jīng)分系統(tǒng)的日處理一般是使用SHELL 腳本開發(fā)的,按照串行調(diào)度的思路執(zhí)行。進(jìn)行能力開放后,目前的系統(tǒng)架構(gòu)無法滿足開發(fā)者提交的大量程序執(zhí)行調(diào)度的運(yùn)維需求。如果采用統(tǒng)一調(diào)度的設(shè)計(jì)思路則基于任務(wù)的數(shù)據(jù)表依賴進(jìn)行任務(wù)解耦及調(diào)度,將大大簡化調(diào)度配置工作和提高系統(tǒng)的并發(fā)度;
2、 需求周期長,導(dǎo)致開發(fā)周期長
現(xiàn)行的開發(fā)模式是由業(yè)務(wù)部門提出需求,業(yè)務(wù)支撐中心進(jìn)行需求分析,然后再轉(zhuǎn)派給開發(fā)廠商。廠商除了需要與業(yè)支溝通需求以外,有時(shí)候還需要與業(yè)務(wù)部門進(jìn)行二次溝通,最終才能明確需求,開發(fā)周期比較長;
3、 數(shù)據(jù)管理分散,存在數(shù)據(jù)冗余,營銷效果欠佳
經(jīng)分系統(tǒng)對(duì)外提供數(shù)據(jù),目前采用的是傳統(tǒng)的文件接口形式,這樣會(huì)造成經(jīng)分和外圍系統(tǒng)存在至少2 份的數(shù)據(jù),隨著經(jīng)分的按天支撐模式,造成傳統(tǒng)的營銷效果欠佳,外圍系統(tǒng)的存儲(chǔ)浪費(fèi)。
解決方案介紹
業(yè)務(wù)目標(biāo)
將大數(shù)據(jù)平臺(tái)及經(jīng)分?jǐn)?shù)據(jù)倉庫平臺(tái)的數(shù)據(jù)和系統(tǒng)處理能力進(jìn)行標(biāo)準(zhǔn)化封裝,按需進(jìn)行開放,滿足各業(yè)務(wù)部門數(shù)據(jù)使用的需求,并在經(jīng)驗(yàn)成熟的情況下逐漸開放給外部眾多的合作伙伴使用。
統(tǒng)一調(diào)度:作為大數(shù)據(jù)開放基礎(chǔ)平臺(tái),通過消息總線將大數(shù)據(jù)平臺(tái)、經(jīng)分、集市、VGOP、業(yè)務(wù)部門的應(yīng)用進(jìn)行統(tǒng)一的系統(tǒng)調(diào)度管控,提供跨平臺(tái)調(diào)度、分發(fā)、解析等基礎(chǔ)功能,實(shí)現(xiàn)大數(shù)據(jù)平臺(tái)、經(jīng)分?jǐn)?shù)據(jù)倉庫等多類型底層平臺(tái)的能力互補(bǔ),形成融合平臺(tái)的協(xié)作效應(yīng);通過多租戶技術(shù),解決生產(chǎn)任務(wù)與數(shù)據(jù)開放能力爭用的問題,實(shí)現(xiàn)系統(tǒng)資源
對(duì)生產(chǎn)任務(wù)與臨時(shí)任務(wù)的合理分配及高效調(diào)度。
統(tǒng)一開發(fā):集成圖形化的開發(fā)界面,通過統(tǒng)一封裝的函數(shù)庫提供類SQL 的開發(fā)語言,以屏蔽底層平臺(tái)差異,降低業(yè)務(wù)人員的開發(fā)門檻,實(shí)現(xiàn)快速的業(yè)務(wù)開發(fā)及數(shù)據(jù)測試。通過元數(shù)據(jù)的數(shù)據(jù)模型抽象,逐步將Hadoop、DB2 的后臺(tái)數(shù)據(jù)資源高效、安全并可控可管的開放給前端進(jìn)行訪問。
數(shù)據(jù)共享:大數(shù)據(jù)平臺(tái)將用戶標(biāo)簽、營銷目標(biāo)、用戶套餐剩余量等信息通過統(tǒng)一的數(shù)據(jù)服務(wù)方式開放給其他系統(tǒng)或者在線使用,確保數(shù)據(jù)的唯一性和數(shù)據(jù)響應(yīng)的及時(shí)性。
方案內(nèi)容及亮點(diǎn)
圖為基于大數(shù)據(jù)的能力開放體系架構(gòu),我們在原有大數(shù)據(jù)平臺(tái)上進(jìn)行整合,
使得大數(shù)據(jù)的成果能夠有效的被外部系統(tǒng)調(diào)用,并具備標(biāo)準(zhǔn)的服務(wù)能力供后續(xù)
的系統(tǒng)對(duì)接。
能力開放平臺(tái)由統(tǒng)一調(diào)度、統(tǒng)一開發(fā)、數(shù)據(jù)共享三大平臺(tái)組成:
統(tǒng)一調(diào)度平臺(tái)將原大數(shù)據(jù)平臺(tái)、經(jīng)分?jǐn)?shù)據(jù)倉庫、VGOP 平臺(tái)等關(guān)聯(lián)度高的獨(dú)
立應(yīng)用系統(tǒng)的任務(wù)進(jìn)行統(tǒng)一管理、執(zhí)行調(diào)度及監(jiān)控,提升整體的執(zhí)行效率并簡
化運(yùn)維。
統(tǒng)一開發(fā)平臺(tái)搭建于統(tǒng)一調(diào)度的基礎(chǔ)之上,開發(fā)者可以通過IDE 使用封裝后的函數(shù),以SQL 腳本進(jìn)行圖形化的數(shù)據(jù)處理程序設(shè)計(jì)及開發(fā)。通過多租戶的方式,對(duì)開發(fā)者分配獨(dú)立的大數(shù)據(jù)平臺(tái)及數(shù)據(jù)倉庫的存儲(chǔ)、計(jì)算資源,確保開發(fā)者在共享數(shù)據(jù)、系統(tǒng)能力的同時(shí),不影響生產(chǎn)系統(tǒng)的正常運(yùn)行。
數(shù)據(jù)共享平臺(tái)提供標(biāo)準(zhǔn)API 封裝,提供給外部系統(tǒng)進(jìn)行數(shù)據(jù)查詢和調(diào)用,實(shí)現(xiàn)經(jīng)分系統(tǒng)對(duì)外數(shù)據(jù)服務(wù)標(biāo)準(zhǔn)化,同時(shí)保障數(shù)據(jù)安全性并降低外部系統(tǒng)數(shù)據(jù)存儲(chǔ)壓力。
統(tǒng)一調(diào)度
統(tǒng)一調(diào)度由控制中心和AGENT 兩部分組成,如下圖所示:
(1)控制中心: 控制中心接收來自內(nèi)部的消息,通過規(guī)則引擎判斷任務(wù)是否滿足觸發(fā)條件并分發(fā)給Agent 進(jìn)行處理,并對(duì)任務(wù)執(zhí)行情況進(jìn)行監(jiān)控及消息生成。
消息接收:支持各種事件觸發(fā)消息,如文件到達(dá)、接口裝載、表生成;
規(guī)則引擎:根據(jù)人工定義、系統(tǒng)資源情況、租戶定義等設(shè)置制定任務(wù)的執(zhí)行條件及前后依賴關(guān)系;
任務(wù)觸發(fā):根據(jù)消息總線傳遞的消息,判斷任務(wù)是否具備執(zhí)行條件,并將滿足觸發(fā)條件的任務(wù)分發(fā)至各平臺(tái)Agent 端執(zhí)行;
任務(wù)監(jiān)控:接收來自Agent 的程序執(zhí)行狀態(tài)及資源狀態(tài)并產(chǎn)生新的消息。
(2)AGENT:部署到參與調(diào)度的執(zhí)行平臺(tái),負(fù)責(zé)任務(wù)執(zhí)行及系統(tǒng)資源、任務(wù)狀態(tài)收集報(bào)告。
任務(wù)監(jiān)聽:輪詢掃描控制中心發(fā)出的任務(wù);
任務(wù)執(zhí)行:支持tcl、shell、python、java 等程序,可以手工設(shè)置各個(gè)執(zhí)行平臺(tái)進(jìn)程數(shù),支持多進(jìn)程并發(fā)處理;
資源狀態(tài)及心跳報(bào)告:支持分鐘級(jí)和主動(dòng)資源收集報(bào)告,將資源信息進(jìn)行反饋。
控制中心實(shí)時(shí)監(jiān)控Agent 運(yùn)行狀態(tài),并進(jìn)行短信告警,防止Agent 掛死。
統(tǒng)一開發(fā)
統(tǒng)一開發(fā)提供圖形化的開發(fā)能力以及統(tǒng)一元數(shù)據(jù)管理:
(1) IDE 圖形化的開發(fā)界面及統(tǒng)一封裝函數(shù)庫的集成,如下圖所示:
? 滿足業(yè)務(wù)部門自助開發(fā)的需求,集成圖形化的開發(fā)界面,通過拖拽的方式實(shí)現(xiàn)快速數(shù)據(jù)處理邏輯設(shè)計(jì)及開發(fā);
? 通過JAVA 包對(duì)SQL 命令、Hadoop、DB2 執(zhí)行平臺(tái)的系統(tǒng)命令、時(shí)間函數(shù)、字符串函數(shù)、聚合函數(shù)等基礎(chǔ)函數(shù)庫進(jìn)行統(tǒng)一封裝,屏蔽底層執(zhí)行平臺(tái)的系統(tǒng)差異,實(shí)現(xiàn)類SQL 開發(fā)語言支持,降低系統(tǒng)的技術(shù)門檻;
? 前臺(tái)提供圖形化開發(fā)界面、拖拽式開發(fā)方式、統(tǒng)一封裝的函數(shù)庫、靈活的腳本編輯能力對(duì)開發(fā)過程進(jìn)行支撐。包含以下功能:查看元數(shù)據(jù)、數(shù)據(jù)模型注冊、數(shù)據(jù)模型導(dǎo)入、設(shè)計(jì)、開發(fā)、測試、上線、優(yōu)化;
? 數(shù)據(jù)處理過程API 分為7 大類:數(shù)據(jù)輸入(Reader)、數(shù)據(jù)輸出(Writer)、行集處理(Process)、字段級(jí)處理、流程控制類、數(shù)據(jù)檢查類、數(shù)據(jù)交換類,并提供了一套可擴(kuò)展的機(jī)制;
? 函數(shù)編排支持條件分支、循環(huán)、異??刂频龋С肿兞孔x取、定義,能夠?qū)崿F(xiàn)復(fù)雜場景下的開發(fā);
? 數(shù)據(jù)同步采用開源的Sqoop 來實(shí)現(xiàn)大數(shù)據(jù)平臺(tái)和DB2、HBASE 的高效數(shù)據(jù)同步。
(2) 統(tǒng)一的元數(shù)據(jù)開放共享與實(shí)時(shí)更新
為實(shí)現(xiàn)公司內(nèi)部模型及數(shù)據(jù)的復(fù)用,并實(shí)現(xiàn)數(shù)據(jù)資產(chǎn)的編目管理、共享及分級(jí)存儲(chǔ),同時(shí)實(shí)現(xiàn)數(shù)據(jù)安全的可控可管,能力開放平臺(tái)搭建了元數(shù)據(jù)管理模塊。包含全局?jǐn)?shù)據(jù)字典、程序邏輯等元數(shù)據(jù),提供元數(shù)據(jù)維護(hù)、權(quán)限控制等工具實(shí)現(xiàn)元數(shù)據(jù),整個(gè)生命周期的管理。元數(shù)據(jù)的管理界面如下圖所示:
? 元數(shù)據(jù)的自動(dòng)更新:通過統(tǒng)一開發(fā)平臺(tái)開發(fā)的程序,相關(guān)元數(shù)據(jù)(表、字段、數(shù)據(jù)流圖、觸發(fā)條件)將自動(dòng)納入元數(shù)據(jù)管理,實(shí)現(xiàn)元數(shù)據(jù)的自動(dòng)更新,并為統(tǒng)一調(diào)度平臺(tái)提供程序調(diào)度觸發(fā)消息;
? 元數(shù)據(jù)的可控開放:為了保障開放數(shù)據(jù)的安全性,安全管理員要對(duì)即將開放的基礎(chǔ)元數(shù)據(jù)進(jìn)行逐個(gè)審批,只有得到安全管理員審批的基礎(chǔ)數(shù)據(jù)才能對(duì)外開放,從而保障開放數(shù)據(jù)的安全性。
數(shù)據(jù)共享
為發(fā)揮大數(shù)據(jù)的價(jià)值,通過標(biāo)準(zhǔn)API 封裝的方式為企業(yè)內(nèi)各種實(shí)時(shí)的業(yè)務(wù)運(yùn)營提供信息支撐,并對(duì)外部系統(tǒng)提供統(tǒng)一的數(shù)據(jù)調(diào)用接口,具有實(shí)時(shí)、動(dòng)態(tài)的信息交互能力。標(biāo)準(zhǔn)的數(shù)據(jù)開放接口實(shí)現(xiàn)數(shù)據(jù)和應(yīng)用的解耦、應(yīng)用和UI 的解耦,有利于各應(yīng)用系統(tǒng)功能集成。
(1)數(shù)據(jù)層
為實(shí)現(xiàn)快速的數(shù)據(jù)查詢,數(shù)據(jù)共享平臺(tái)采用了HBASE 及Redis 作為數(shù)據(jù)層。
? HBASE:作為分布式的、面向列的開源數(shù)據(jù)庫,HBASE 在Hadoop 之上提供了大數(shù)據(jù)的存儲(chǔ)和快速查詢能力。
? Redis:作為基于內(nèi)存亦可持久化的日志型、Key-Value 數(shù)據(jù)庫,并提供多種語言的API。其查詢速度比HBASE 更高。
(2)封裝層
基于Restful 架構(gòu)實(shí)現(xiàn)API 封裝,使用Nginx 的代理功能,整合后端多個(gè)Tomcat服務(wù)器,實(shí)現(xiàn)高并發(fā)的查詢能力。
內(nèi)部結(jié)構(gòu)如下:
? 服務(wù)注冊:服務(wù)屬性配置:如服務(wù)標(biāo)識(shí)、服務(wù)名稱、服務(wù)描述、服務(wù)發(fā)布地址等信息的配置; 服務(wù)參數(shù)配置:包括輸入?yún)?shù)、輸出參數(shù)、輸出內(nèi)容等配置。
? 服務(wù)安全管理:服務(wù)認(rèn)證鑒權(quán)是用于鑒別服務(wù)請求方是否有服務(wù)調(diào)用權(quán)限;數(shù)據(jù)交換安全是用于保證服務(wù)請求-響應(yīng)過程中的數(shù)據(jù)安全;權(quán)限管理是用于確定服務(wù)請求方可調(diào)用的服務(wù)權(quán)限。
? 認(rèn)證鑒權(quán):確定服務(wù)請求方是否有訪問服務(wù)提供方提供的具體服務(wù)的功能權(quán)限;對(duì)于有功能權(quán)限的服務(wù)請求方,還需要再確定其可訪問的具體服務(wù)的數(shù)據(jù)范圍權(quán)限。
? 服務(wù)運(yùn)維:服務(wù)監(jiān)控對(duì)數(shù)據(jù)服務(wù)的運(yùn)行狀況提供實(shí)時(shí)的監(jiān)控和分析,幫助運(yùn)維人員及時(shí)了解數(shù)據(jù)服務(wù)的健康情況。
? 查詢響應(yīng):負(fù)責(zé)處理數(shù)據(jù)和各類數(shù)據(jù)源進(jìn)行交互,獲取查詢結(jié)果。數(shù)據(jù)獲取處理主要包含: 連接相應(yīng)的數(shù)據(jù)源,執(zhí)行經(jīng)過模型映射解析的可執(zhí)行SQL 語句,獲取結(jié)果數(shù)據(jù)。
? 通信協(xié)議:通信協(xié)議采用全球公認(rèn)的WEB SERVICE 標(biāo)準(zhǔn)協(xié)議。需求方更容易安全接入系統(tǒng)。
方案預(yù)期效果
統(tǒng)一調(diào)度方案效果:統(tǒng)一調(diào)度集中整合了企業(yè)經(jīng)分系統(tǒng)、大數(shù)據(jù)平臺(tái)、集團(tuán)集市、VGOP 等應(yīng)用系統(tǒng)的調(diào)度管理,提高了各個(gè)平臺(tái)程序的并發(fā)度,減少重復(fù)建設(shè),節(jié)約成本近百萬;
統(tǒng)一開發(fā)方案效果:目前互聯(lián)網(wǎng)中心和信安部已經(jīng)開始進(jìn)行客戶體驗(yàn)工作,統(tǒng)一開發(fā)平臺(tái)上線之后,需求的開發(fā)速度由原來的數(shù)十天量級(jí)提升到小時(shí)內(nèi)量級(jí)實(shí)現(xiàn),數(shù)據(jù)變現(xiàn)能力得到數(shù)倍的增強(qiáng);
數(shù)據(jù)共享方案效果:目前某企業(yè)已部署基于Redis 的“用戶剩余流量”實(shí)時(shí)查詢系統(tǒng),采用Redis 內(nèi)存數(shù)據(jù)庫作為內(nèi)存存儲(chǔ)單元;每天分流500 萬以上的查詢需求,同步數(shù)據(jù)達(dá)到秒級(jí);掃描用戶流量檔次變化達(dá)到分鐘級(jí),單機(jī)支持并發(fā)查詢量由原有BOSS系統(tǒng)的300 次每秒提高到5000 次每秒,并支持水平擴(kuò)展。數(shù)據(jù)共享平臺(tái)上線后將進(jìn)行融合對(duì)外提供統(tǒng)一的API 接口查詢服務(wù)。