李義超+陳彤+劉委婉+呂振山+范福鑫
【摘要】 本文主要提供了一種解決業(yè)務(wù)支撐系統(tǒng)內(nèi)部數(shù)據(jù)一致性問(wèn)題的思路,首先介紹了業(yè)務(wù)支撐系統(tǒng)的建設(shè)背景和功能,論述了業(yè)務(wù)支撐系統(tǒng)隨著規(guī)模擴(kuò)大在分拆為多個(gè)子系統(tǒng)之后保證數(shù)據(jù)一致性方面的難點(diǎn)。然后,本文從兩個(gè)方面深入分析,提供了一種解決業(yè)務(wù)支撐系統(tǒng)一致性難題的思路。最后,根據(jù)工程實(shí)踐經(jīng)驗(yàn)總結(jié)了數(shù)據(jù)一致性的改進(jìn)方向。希望本文能夠?yàn)闃I(yè)務(wù)支撐系統(tǒng)解決數(shù)據(jù)一致性問(wèn)題提供一個(gè)參考思路。
【關(guān)鍵字】 數(shù)據(jù)一致性 業(yè)務(wù)支撐系統(tǒng) 分布式系統(tǒng) CAP理論
一、引言
業(yè)務(wù)支撐系統(tǒng)一般由CRM系統(tǒng)和BOSS系統(tǒng)組成,主要實(shí)現(xiàn)產(chǎn)品管理、服務(wù)開(kāi)通、計(jì)費(fèi)管理、結(jié)算管理和賬務(wù)管理等功能。業(yè)務(wù)支撐系統(tǒng)在保證業(yè)務(wù)的完整性,提升用戶感知方面至關(guān)重要,業(yè)務(wù)運(yùn)營(yíng)支撐系統(tǒng)對(duì)客戶提供的開(kāi)戶繳費(fèi)報(bào)停套餐優(yōu)惠計(jì)費(fèi)等各種服務(wù)本質(zhì)上是系統(tǒng)根據(jù)業(yè)務(wù)規(guī)則對(duì)各種數(shù)據(jù)進(jìn)行的各種轉(zhuǎn)換處理,用戶的各種業(yè)務(wù)辦理、信息展現(xiàn)均能與系統(tǒng)數(shù)據(jù)進(jìn)行一一對(duì)應(yīng),而業(yè)務(wù)支撐系統(tǒng)內(nèi)部數(shù)據(jù)完整和準(zhǔn)確是保證業(yè)務(wù)支撐系統(tǒng)正確完整地為客戶提供服務(wù)的基礎(chǔ)。因此,業(yè)務(wù)支撐系統(tǒng)間數(shù)據(jù)一致性一直都是業(yè)務(wù)支撐系統(tǒng)建設(shè)的重點(diǎn)。
二、業(yè)務(wù)支撐系統(tǒng)的現(xiàn)狀分析
隨著業(yè)務(wù)運(yùn)營(yíng)支撐系統(tǒng)規(guī)模的擴(kuò)大,業(yè)務(wù)需求也變得越來(lái)越復(fù)雜,業(yè)務(wù)支撐系統(tǒng)會(huì)不斷進(jìn)行拆分。例如,一般業(yè)務(wù)支撐系統(tǒng)至少包括產(chǎn)品管理、服務(wù)開(kāi)通、計(jì)費(fèi)批價(jià)、結(jié)算管理、賬務(wù)管理等單體模塊,當(dāng)系統(tǒng)規(guī)模較小時(shí),所有的單體模塊都集成為一個(gè)系統(tǒng),所有單體模塊的數(shù)據(jù)存儲(chǔ)在一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)中,由數(shù)據(jù)庫(kù)系統(tǒng)保證各單體模塊數(shù)據(jù)的一致性。當(dāng)各單體模塊拆分之后,每個(gè)單體模塊獨(dú)立建設(shè)成單獨(dú)的子系統(tǒng),各子系統(tǒng)的數(shù)據(jù)持久層保持獨(dú)立設(shè)計(jì),沒(méi)有了數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)一致性的保證,各子系統(tǒng)之間的數(shù)據(jù)不一致性問(wèn)題變得非常突出。例如,在服務(wù)開(kāi)通系統(tǒng)入庫(kù)的用戶訂購(gòu)數(shù)據(jù),需要與計(jì)費(fèi)批價(jià)系統(tǒng)數(shù)據(jù)保持一致,否則易造成批價(jià)錯(cuò)誤,直接影響運(yùn)營(yíng)商的收入損失或者用戶體驗(yàn)感知。此外,運(yùn)營(yíng)支撐系統(tǒng)由于歷史原因,每個(gè)子系統(tǒng)傾向于獨(dú)立建設(shè),造成了各子系統(tǒng)之間設(shè)計(jì)架構(gòu)不透明,更加造成了每個(gè)子系統(tǒng)間保持?jǐn)?shù)據(jù)一致性的難度。
在數(shù)據(jù)一致性理論中,一致性可以分為強(qiáng)一致性、弱一致性和最終一致性,強(qiáng)一致性是指當(dāng)一個(gè)系統(tǒng)數(shù)據(jù)更新完畢之后,其他后續(xù)系統(tǒng)數(shù)據(jù)隨即完成更新;弱一致性指當(dāng)前系統(tǒng)數(shù)據(jù)更新完畢后,后續(xù)系統(tǒng)并不保證立即更新數(shù)據(jù),也無(wú)法保證多久可以更新;最終一致性是弱一致性的一種特例,保證最終各系統(tǒng)的數(shù)據(jù)一致。在分布式系統(tǒng)中存在CAP理論,即Consistency(一致性),保證各系統(tǒng)所有數(shù)據(jù)變動(dòng)都是同步更新;Availability(可用性),保證優(yōu)系統(tǒng)具有優(yōu)異的響應(yīng)性能;Partition tolerance(分區(qū)容錯(cuò)性) ,保證系統(tǒng)的可靠性,CAP理論證明了任何分布式系統(tǒng)只可同時(shí)滿足二點(diǎn),沒(méi)法三者兼顧。高可用、數(shù)據(jù)一致是大多數(shù)系統(tǒng)設(shè)計(jì)的基本目標(biāo),但是隨著系統(tǒng)規(guī)模的擴(kuò)大,分區(qū)最終是無(wú)法避免,業(yè)務(wù)支撐系統(tǒng)也不例外。常用的分布式系統(tǒng)為保持系統(tǒng)數(shù)據(jù)強(qiáng)一致通常采用分布式事務(wù)控制的方法,即通過(guò)事務(wù)的回滾與提交保證各子系統(tǒng)的數(shù)據(jù)完全一致。但是,保持系統(tǒng)強(qiáng)一致性,會(huì)犧牲系統(tǒng)可用性,因?yàn)?,為保持系統(tǒng)強(qiáng)一致性需要在各系統(tǒng)之間進(jìn)行數(shù)據(jù)同步,這樣會(huì)導(dǎo)致同步時(shí)間無(wú)限延長(zhǎng),使業(yè)務(wù)功能操作的耗時(shí)達(dá)到不可接受的程度。此外,由于各子系統(tǒng)獨(dú)立建設(shè),系統(tǒng)設(shè)計(jì)架構(gòu)不透明,實(shí)際工程中很難在數(shù)據(jù)持久層通過(guò)事務(wù)控制的方式達(dá)到強(qiáng)一致性。
三、業(yè)務(wù)支撐系統(tǒng)內(nèi)部數(shù)據(jù)一致性解決方案
由上文所述,分布式系統(tǒng)無(wú)法同時(shí)兼顧可用性與一致性,在實(shí)際工程中,業(yè)務(wù)支撐系統(tǒng)為保證系統(tǒng)可用性,往往放棄系統(tǒng)強(qiáng)一致性,追求系統(tǒng)最終一致性。本文提供了一個(gè)解決方案,從兩個(gè)維度設(shè)計(jì)保證系統(tǒng)的最終一致性。
3.1 業(yè)務(wù)分布式控制
由于業(yè)務(wù)支撐系統(tǒng)下面各子系統(tǒng)建設(shè)的分離導(dǎo)致無(wú)法在數(shù)據(jù)持久層進(jìn)行事務(wù)控制,可以在業(yè)務(wù)層面模擬分布式事務(wù)對(duì)業(yè)務(wù)訂購(gòu)進(jìn)行事務(wù)控制。例如,下面的一個(gè)業(yè)務(wù)訂購(gòu)操作需要由子系統(tǒng)A、B、C、D、E協(xié)作完成,子系統(tǒng)A向子系統(tǒng)B發(fā)起業(yè)務(wù)訂購(gòu)操作,子系統(tǒng)B將該業(yè)務(wù)訂購(gòu)從業(yè)務(wù)層面分解為子事務(wù)A、B、C,分別由子系統(tǒng)C、D、E完成,各子系統(tǒng)處理完相應(yīng)的子事務(wù)后,將處理結(jié)果同步給子系統(tǒng)B。最后,各子事務(wù)完成均成功提交后,由子系統(tǒng)B提交處理結(jié)果給業(yè)務(wù)發(fā)起方(即子系統(tǒng)A),由子系統(tǒng)A完成竣工操作,如果其中一個(gè)或多個(gè)子事務(wù)沒(méi)有成功提交,由子系統(tǒng)B發(fā)起回滾操作,該筆業(yè)務(wù)訂購(gòu)處理失敗,由人工干預(yù)介入處理。
通過(guò)業(yè)務(wù)層面上模擬分布式事務(wù)的處理機(jī)制,即保證了各子系統(tǒng)的數(shù)據(jù)一致,同時(shí)又避免了系統(tǒng)耗時(shí)嚴(yán)重造成系統(tǒng)不可用。
3.2 數(shù)據(jù)一致性稽核
業(yè)務(wù)支撐系統(tǒng)的數(shù)據(jù)不一致的部分原因是人為修改數(shù)據(jù)造成的,因此還需要額外的處理措施減少各子系統(tǒng)的數(shù)據(jù)差異。通過(guò)開(kāi)展數(shù)據(jù)一致性事后稽核可以達(dá)到該目的,定義各子系統(tǒng)的關(guān)鍵數(shù)據(jù)字段和數(shù)據(jù)比對(duì)規(guī)則,定期開(kāi)展數(shù)據(jù)一致性的全量和增量比對(duì),發(fā)現(xiàn)各系統(tǒng)的差異數(shù)據(jù),分析差異原因,開(kāi)展數(shù)據(jù)修復(fù)工作。
四、結(jié)論
根據(jù)本文的解決思路在物聯(lián)網(wǎng)業(yè)務(wù)支撐系統(tǒng)中進(jìn)行了工程實(shí)踐,取得了良好的效果。根據(jù)運(yùn)營(yíng)集中化建設(shè)的原則,物聯(lián)網(wǎng)業(yè)務(wù)支撐系統(tǒng)承載全網(wǎng)31省物聯(lián)網(wǎng)業(yè)務(wù),該系統(tǒng)在運(yùn)營(yíng)域主要分為運(yùn)營(yíng)管理系統(tǒng)(主要負(fù)責(zé)運(yùn)營(yíng)數(shù)據(jù)展現(xiàn)和外部能力提供)、服務(wù)支撐系統(tǒng)(主要負(fù)責(zé)服務(wù)開(kāi)通和產(chǎn)品統(tǒng)一管理)和內(nèi)容計(jì)費(fèi)系統(tǒng)(主要負(fù)責(zé)話單計(jì)費(fèi)結(jié)算和賬務(wù)管理)。
在業(yè)務(wù)規(guī)范設(shè)計(jì)時(shí),模擬分布式事務(wù)的處理機(jī)制,保證三方系統(tǒng)正常提交后方進(jìn)行竣工操作,已保證數(shù)據(jù)的完整性和一致性。通過(guò)每月例行的在線數(shù)據(jù)一致性稽核發(fā)現(xiàn),三方系統(tǒng)的數(shù)據(jù)一致率能夠達(dá)到99%以上。
同時(shí),從實(shí)際工程中,總結(jié)了一些深層次問(wèn)題,在后續(xù)的工作中持續(xù)改進(jìn)數(shù)據(jù)一致性工作。其一,完善數(shù)據(jù)一致性稽核接口,細(xì)化數(shù)據(jù)一致性稽核的粒度,提高數(shù)據(jù)比對(duì)優(yōu)先級(jí),開(kāi)展每日的數(shù)據(jù)對(duì)賬;其二,在數(shù)據(jù)持久層實(shí)現(xiàn)數(shù)據(jù)一致性問(wèn)題,在系統(tǒng)設(shè)計(jì)時(shí),在數(shù)據(jù)持久層設(shè)計(jì)各系統(tǒng)間的數(shù)據(jù)同步接口,使業(yè)務(wù)操作在入庫(kù)階段完成各子系統(tǒng)的同步操作,在更細(xì)的粒度保證各系統(tǒng)的數(shù)據(jù)一致性。
參 考 文 獻(xiàn)
[1] 顧懷恩 . 業(yè)務(wù)支撐系統(tǒng)數(shù)據(jù)一致性研究 [J]. 電信工程技術(shù)與標(biāo)準(zhǔn)化,2009(08):67-70.
[2] 張立成,楊敬巍,褚 堯,王敬堯 . 論業(yè)務(wù)支撐系統(tǒng)數(shù)據(jù)一致性的保障機(jī)制 [J]. 通訊世界,2015(23):2-4.
[3] 左正 . 保證分布式系統(tǒng)數(shù)據(jù)一致性的6種方案 [網(wǎng)頁(yè)博客]. http://www.cnblogs.com/soundcode/p/5590710.html 2016-06-16 13:33