蔡志強(qiáng),陳 浩,江 浪(中國(guó)聯(lián)通軟件研究院,北京100176)
近年來(lái),隨著3G、4G的迅速發(fā)展,傳統(tǒng)電信運(yùn)營(yíng)商的語(yǔ)音業(yè)務(wù)更多地轉(zhuǎn)變?yōu)閿?shù)據(jù)業(yè)務(wù),逐漸被數(shù)據(jù)業(yè)務(wù)替代。在移動(dòng)互聯(lián)網(wǎng)時(shí)代,行業(yè)內(nèi)外的競(jìng)爭(zhēng)愈發(fā)激烈,新業(yè)務(wù)應(yīng)用上線需分秒必爭(zhēng)搶占先機(jī),在業(yè)務(wù)支撐、架構(gòu)能力、平臺(tái)擴(kuò)展性等方面對(duì)現(xiàn)有的煙囪式建設(shè)的業(yè)務(wù)支撐系統(tǒng)提出了巨大的挑戰(zhàn)。傳統(tǒng)的運(yùn)營(yíng)體系已趨于乏力,需重構(gòu)、重建運(yùn)營(yíng)體系。
目前,以Docker為代表的容器技術(shù)發(fā)展迅速,作為極其輕量級(jí)的虛擬化技術(shù),大大提高IT資源的利用率,其標(biāo)準(zhǔn)化的打包、封裝、搬運(yùn)機(jī)制,有效地簡(jiǎn)化了開(kāi)發(fā)版本管理,提高了開(kāi)發(fā)運(yùn)維效率,降低了成本。此外,Docker容器秒級(jí)啟動(dòng)的特點(diǎn),也能有效保障業(yè)務(wù)的穩(wěn)定性與高可用性。因此,對(duì)現(xiàn)有業(yè)務(wù)支撐系統(tǒng)進(jìn)行容器化改造,將成為電信運(yùn)營(yíng)商一個(gè)最優(yōu)的選擇。
電信行業(yè)業(yè)務(wù)支撐系統(tǒng)目前大部分都采用傳統(tǒng)架構(gòu),使用小型機(jī)、Oracle數(shù)據(jù)庫(kù)及一系列中間件產(chǎn)品。系統(tǒng)龐大、耦合度高、投資多、擴(kuò)展難是傳統(tǒng)架構(gòu)很顯著的問(wèn)題。
cBSS1.0系統(tǒng)一直以來(lái)采用單體架構(gòu)作為業(yè)務(wù)系統(tǒng)實(shí)現(xiàn)的架構(gòu)風(fēng)格,作為成熟的架構(gòu)風(fēng)格,單體應(yīng)用有著易于開(kāi)發(fā)、易于測(cè)試、易于部署等諸多優(yōu)勢(shì)。
以中國(guó)聯(lián)通集中業(yè)務(wù)支撐系統(tǒng)(cBSS系統(tǒng))為例,其CRM系統(tǒng)在2014年初上線,采用傳統(tǒng)的IOE架構(gòu),數(shù)據(jù)庫(kù)及后臺(tái)應(yīng)用均使用小型機(jī),后臺(tái)應(yīng)用使用Tuxedo中間件,Web前臺(tái)應(yīng)用和接口前臺(tái)應(yīng)用使用Weblogic中間件(見(jiàn)圖1)。

圖1 CRM子系統(tǒng)傳統(tǒng)架構(gòu)
考慮到原業(yè)務(wù)支撐系統(tǒng)以中間件為主,其中80%的CRM應(yīng)用基于Weblogic和Tuxedo 2類中間件,改造范圍大、周期長(zhǎng)、投資多,如不采用容器化技術(shù),除非重建系統(tǒng),否則很難一步實(shí)現(xiàn)目標(biāo)云化架構(gòu)。
此外,現(xiàn)有系統(tǒng)中使用了Weblogic和Tuxedo部分產(chǎn)品特性能力,如WTC服務(wù)調(diào)用、Weblogic集群復(fù)制、Weblogic的T3協(xié)議調(diào)用、Tuxedo服務(wù)路由等,更換中間產(chǎn)品會(huì)帶來(lái)大量應(yīng)用改造。
對(duì)于傳統(tǒng)業(yè)務(wù)支撐系統(tǒng)的容器化改造,應(yīng)遵循以下幾點(diǎn)原則。
a)減少核心應(yīng)用的改造、減少周邊系統(tǒng)的改造、降低整體實(shí)施難度。
b)保障生產(chǎn)穩(wěn)定運(yùn)營(yíng)。
c)向云化架構(gòu)演進(jìn)。
基于以上原則和現(xiàn)狀,對(duì)傳統(tǒng)遺留系統(tǒng)進(jìn)行分析,符合微服務(wù)遷移條件的傳統(tǒng)應(yīng)用,盡量采用微服務(wù)模式重構(gòu)業(yè)務(wù);對(duì)于不具備微服務(wù)條件的傳統(tǒng)應(yīng)用,可采用中間件容器化的方式進(jìn)行架構(gòu)升級(jí),遷移至云化平臺(tái)。
Weblogic中間件應(yīng)用主要從以下幾方面進(jìn)行設(shè)計(jì)和改造。
a)應(yīng)用去狀態(tài)化:在Web服務(wù)入口增加filter過(guò)濾器,將session信息的操作由Weblogic集群轉(zhuǎn)為redis緩存集群。
b)配置模板倉(cāng)庫(kù):利用統(tǒng)一配置管理工具confd管理配置文件,將配置文件模板和數(shù)據(jù)分離實(shí)現(xiàn)單獨(dú)管理,存放預(yù)先定義的模板文件,包含Tuxedo模板、Weblogic模板。
c)配置信息中心:使用KV存儲(chǔ)服務(wù)ETCD存放配置信息,應(yīng)用啟動(dòng)時(shí)獲得并配合confd生成運(yùn)行所需的配置文件。
d)服務(wù)發(fā)現(xiàn)和負(fù)載均衡:基于Marathon-LB組件實(shí)現(xiàn)容器服務(wù)發(fā)現(xiàn),并承擔(dān)負(fù)載均衡能力對(duì)外提供統(tǒng)一的服務(wù)地址。
e)健康檢查及自愈:在Web應(yīng)用中增加健康檢查頁(yè)面,用于容器啟動(dòng)后的健康判斷,結(jié)合Marathon實(shí)現(xiàn)故障容器的自愈恢復(fù)。
圖2示出的是Weblogic容器化方案。
Tuxedo中間件應(yīng)用主要從以下幾方面進(jìn)行設(shè)計(jì)和改造。
a)WTC調(diào)度適配:解決Marathon調(diào)度WTC服務(wù)的問(wèn)題,負(fù)責(zé)Tuxedo、Weblogic服務(wù)的注冊(cè)和發(fā)現(xiàn);根據(jù)業(yè)務(wù)定義,進(jìn)行Tuxedo和Weblogic的配對(duì)注冊(cè);WTC服務(wù)的聯(lián)動(dòng)啟動(dòng)/停止;調(diào)度服務(wù)異常時(shí)的容錯(cuò)處理和主備切換等。
b)配置模板倉(cāng)庫(kù):利用統(tǒng)一配置管理工具confd管理配置文件,將配置文件模板和數(shù)據(jù)分離實(shí)現(xiàn)單獨(dú)管理,存放預(yù)先定義的模板文件,包含Tuxedo模板、Weblogic模板。
c)配置信息中心:使用KV存儲(chǔ)服務(wù)ETCD存放配置信息,應(yīng)用啟動(dòng)時(shí)獲得并配合confd生成運(yùn)行所需的配置文件。
d)狀態(tài)中心:存放Tuxedo運(yùn)行狀態(tài)信息,包含服務(wù)狀態(tài)、注冊(cè)狀態(tài)等。
e)虛擬網(wǎng)絡(luò):使用基于Macvlan技術(shù)的虛擬網(wǎng)絡(luò),使每個(gè)容器可配置固定的IP地址,方便原系統(tǒng)割接。
圖3示出的是Tuxedo容器化方案。

圖2 Weblogic容器化方案
配套的應(yīng)用主要從以下幾方面進(jìn)行設(shè)計(jì)和改造。
a)Tomcat移植瘦身:基于原有Weblogic版本,移植至Tomcat上運(yùn)行。
b)服務(wù)發(fā)現(xiàn):基于狀態(tài)中心發(fā)現(xiàn)可調(diào)用的Tuxedo應(yīng)用,采用最小連接數(shù)算法選擇可用的Tuxedo服務(wù)進(jìn)行連接。
c)WSDL靜態(tài)文件服務(wù):將UIP接口使用的WSDL文件抽離,建立獨(dú)立的靜態(tài)文件服務(wù)器用于調(diào)用。
d)狀態(tài)中心:存放UIP運(yùn)行狀態(tài)信息,包含服務(wù)狀態(tài)、注冊(cè)狀態(tài)等。
圖4示出的是配套接口UIP容器化方案。
在業(yè)界都在嘗試容器化技術(shù)時(shí),本課題首次將Weblogic和Tuxedo中間件產(chǎn)品與容器化技術(shù)相結(jié)合,其中Tuxedo部分的容器化實(shí)踐在國(guó)內(nèi)電信行業(yè)里為首次生產(chǎn)投產(chǎn),前期無(wú)相似案例。

圖3 Tuxedo容器化方案

圖4 配套接口UIP容器化方案
a)全部采用開(kāi)源組件,自主設(shè)計(jì)開(kāi)發(fā)完成,實(shí)現(xiàn)Weblogic、Tuxedo中間件及其上應(yīng)用的容器化改造。
b)應(yīng)用狀態(tài)中心化存儲(chǔ),與應(yīng)用進(jìn)程剝離,實(shí)現(xiàn)基于Redis的前臺(tái)Web應(yīng)用去狀態(tài)化改造。
c)設(shè)計(jì)并實(shí)現(xiàn)了Tuxedo中間調(diào)度適配層,基于ETCD的后臺(tái)應(yīng)用狀態(tài)注冊(cè),解決了Marathon調(diào)度WTC服務(wù)的問(wèn)題。
d)業(yè)務(wù)配置信息中心化管理,應(yīng)用啟動(dòng)時(shí)獲得配置參數(shù),基于抽象的業(yè)務(wù)配置模板生成實(shí)時(shí)的配置文件。

圖5 中間件容器化方案
e)采用Macvlan等虛擬網(wǎng)絡(luò)技術(shù),無(wú)需改變服務(wù)的對(duì)外訪問(wèn)地址和協(xié)議,外部調(diào)用方無(wú)需進(jìn)行改造調(diào)整,實(shí)現(xiàn)服務(wù)的平滑割接。
f)移植部分應(yīng)用到Tomcat,并抽離靜態(tài)WSDL文件,建立靜態(tài)WSDL服務(wù)。
圖5示出的是中間件容器化方案。
中間件應(yīng)用容器化平臺(tái)在生產(chǎn)上線投產(chǎn)后,服務(wù)運(yùn)行狀態(tài)良好,無(wú)重大生產(chǎn)故障。目前已上線有CRM前臺(tái)Web服務(wù)18類容器應(yīng)用;CRM后臺(tái)Tux服務(wù)、竣工BPM服務(wù)、接口后臺(tái)Tux服務(wù)6類Tuxedo容器應(yīng)用,前臺(tái)接口及BPS竣工7類Weblogic和3類Tomcat容器應(yīng)用;外圍UIF接口10類Tomcat容器應(yīng)用,外圍UIP接口6類Tomcat容器應(yīng)用,GTM、盤(pán)古緩存、預(yù)熱等5類C程序容器,共計(jì)運(yùn)行1 000+個(gè)容器,已涵蓋9個(gè)域全部CRM核心業(yè)務(wù)。
將容器化技術(shù)應(yīng)用于運(yùn)營(yíng)商核心業(yè)務(wù)支撐系統(tǒng),打破專機(jī)專用的限制,物理計(jì)算資源池化管理,靈活調(diào)度計(jì)算資源;靈活擴(kuò)縮業(yè)務(wù)能力,實(shí)現(xiàn)秒級(jí)的業(yè)務(wù)能力增補(bǔ),及時(shí)應(yīng)對(duì)業(yè)務(wù)突發(fā)的峰值壓力;節(jié)點(diǎn)快速部署,實(shí)現(xiàn)分鐘級(jí)的應(yīng)用部署;統(tǒng)一的容器調(diào)度界面,簡(jiǎn)化維護(hù),降低成本;提高了IT研發(fā)、運(yùn)維的生產(chǎn)力,產(chǎn)生了一定的經(jīng)濟(jì)效益。
中間件容器化方案著力解決傳統(tǒng)應(yīng)用系統(tǒng)的架構(gòu)升級(jí)問(wèn)題,使遺留系統(tǒng)可以平滑過(guò)渡到互聯(lián)網(wǎng)云化模式,具有推廣應(yīng)用到各行業(yè)、各系統(tǒng)的潛力,勢(shì)必會(huì)解決傳統(tǒng)系統(tǒng)的業(yè)務(wù)應(yīng)用在開(kāi)發(fā)、運(yùn)維中遇到的種種問(wèn)題,從而推動(dòng)敏捷開(kāi)發(fā)、持續(xù)交付等理念落地。