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