王小錦
【摘要】 本文闡述了業(yè)務發(fā)展帶來的業(yè)務支撐系統(tǒng)的瓶頸,分析了緩存平臺技術(shù),從而提出緩存平臺技術(shù)在業(yè)務支撐系統(tǒng)的應用。
【關(guān)鍵詞】 緩存平臺 業(yè)務支撐系統(tǒng) API 應用程序接口(Application Program Interface) 全表加載 懶加載
一、 引言
隨著業(yè)務的快速發(fā)展,線上線下多受理渠道的增加,以及CRM側(cè)超級限制、積分、代理商資金歸集、騰訊視頻等一些特色項目及各種外圍接口的實施,導致訂單及查詢服務效率的下降。究其根本,瓶頸還是在業(yè)務數(shù)據(jù)庫的處理性能上。
省分業(yè)務數(shù)據(jù)庫部署在AIX小型機上,硬件投入成本非常高。數(shù)據(jù)庫主機CPU使用率又逐漸增高,業(yè)務高峰期甚至高達95%多,對前臺業(yè)務受理的效率影響顯著,特別是對用戶新裝、繳費、停開機、產(chǎn)品變更等重要業(yè)務沖擊很大,既直接導致了用戶受理體驗的下降,也增加了業(yè)務系統(tǒng)的內(nèi)在隱患。
因此,迫切需要找到一種切實可行的優(yōu)化方式,以大幅提高整體系統(tǒng)的處理性能。
二、緩存平臺技術(shù)
2.1 統(tǒng)一存儲代替分散存儲
定制數(shù)據(jù)存儲的格式與規(guī)則。將主機上運行的各個進程私有內(nèi)存中的數(shù)據(jù)統(tǒng)一存儲在緩存平臺中。平臺對外提供統(tǒng)一的訪問API。一方面,確保了數(shù)據(jù)的唯一性和一致性;另一方面,也降低了主機內(nèi)存的損耗。
2.2 懶加載代替全表加載
定制數(shù)據(jù)存儲的流程。將系統(tǒng)運行中全表加載數(shù)據(jù)的機制改為按需懶加載機制。懶加載可以提升系統(tǒng)運行效率,同時也能增強客戶體驗。
2.3 數(shù)據(jù)生命周期管理
平臺存儲了各種各樣的數(shù)據(jù),不同的數(shù)據(jù)可以定制各自的生命周期。數(shù)據(jù)的生命周期內(nèi),業(yè)務系統(tǒng)從緩存平臺讀取數(shù)據(jù);數(shù)據(jù)生命周期結(jié)束后,平臺存儲的數(shù)據(jù)立刻失效,然后平臺繼續(xù)按需懶加載數(shù)據(jù)。
2.4 高效的數(shù)據(jù)查找算法
緩存平臺多處采用一些著名的算法,比如:hash算法、skip list算法、sha1算法等等。通過這些算法,一方面提高了程序運行效率,另一方面提高了程序的可靠性。
2.5 多機容災機制
緩存平臺提供應用調(diào)用的API,內(nèi)置容錯機制,智能檢測緩存平臺狀態(tài)。當發(fā)現(xiàn)平臺不可用時,可以智能跳轉(zhuǎn)至備用平臺。網(wǎng)絡(luò)內(nèi)可以部署多個平臺,互為主備。一臺主機可以同時支持多臺備機。
正常情況下,中間件A連接緩存平臺A,當緩存平臺A不可用用時,自動連接緩存平臺B…
正常情況下,中間件B連接緩存平臺B,當緩存平臺B不可用用時,自動連接緩存平臺A…
緩存平臺切換為平滑切換,對應用透明。不影響業(yè)務受理。
2.6 總述
緩存平臺能夠?qū)崿F(xiàn)優(yōu)化現(xiàn)有系統(tǒng)架構(gòu),降低數(shù)據(jù)庫壓力,提升查詢速度。在原有網(wǎng)絡(luò)中添加緩存平臺,數(shù)據(jù)的流向由舊架構(gòu)中每次都從數(shù)據(jù)庫進行查詢,修改為新架中每次都從緩存平臺進行查詢,平臺中的數(shù)據(jù)采用懶加載策略,需要時才從數(shù)據(jù)庫獲取,并且在數(shù)據(jù)的生命周期內(nèi),僅從數(shù)據(jù)庫獲取一次數(shù)據(jù)。
三、業(yè)務支撐系統(tǒng)架構(gòu)存在的問題
當前的IT業(yè)務支撐系統(tǒng)自2009年實施上線,一直運行至今。系統(tǒng)架構(gòu)采用傳統(tǒng)的四層架構(gòu):展示層、接入層、業(yè)務邏輯層、數(shù)據(jù)層。傳統(tǒng)的技術(shù)架構(gòu),隨著用戶數(shù)增長,業(yè)務發(fā)展,其對后端數(shù)據(jù)庫的壓力也逐漸增大。數(shù)據(jù)庫性能瓶頸日益明顯。
前端,業(yè)務系統(tǒng)受理效率下降,影響客戶體驗;在業(yè)務高峰期數(shù)據(jù)庫CPU使用率又上升到90%。數(shù)據(jù)庫硬件擴容難度大,存在天花板。
四、緩存平臺技術(shù)在業(yè)務支撐系統(tǒng)的應用
現(xiàn)有業(yè)務支撐系統(tǒng)的技術(shù)架構(gòu)是四層:展示層、接入層、業(yè)務邏輯層、數(shù)據(jù)層,緩存平臺技術(shù)是在業(yè)務邏輯層與數(shù)據(jù)層之間,部署緩存平臺及基于平臺研發(fā)的通用數(shù)據(jù)管理產(chǎn)品。
4.1緩存平臺的功能架構(gòu)
整個系統(tǒng)架構(gòu)分為三個部分:平臺核心層。在這里規(guī)范業(yè)務數(shù)據(jù)的標準存取操作流程、數(shù)據(jù)的生命周期管理,以及操作流程中的策略管理與配置管理等等。平臺接口層。在這里與現(xiàn)有的BOSS側(cè)業(yè)務層對接,提供相關(guān)的操作接口。BOSS業(yè)務層。在這里對現(xiàn)有的BOSS側(cè)業(yè)務層邏輯進行代碼改造,以便對接緩存平臺。
1、平臺核心層。主要包含12個功能模塊,內(nèi)容概述如下:
1)內(nèi)存數(shù)據(jù)庫適配器:內(nèi)存數(shù)據(jù)庫適配器包含兩個功能。對主流內(nèi)存數(shù)據(jù)庫(altibase/redis/memcached/…)進行調(diào)用接口適配;對不同廠商的小機環(huán)境進行適配,目前支持AIX/ hp-ux等。
2)數(shù)據(jù)生命周期管理:對內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)進行生命周期管理,支持通過配置來定義不同類型的數(shù)據(jù)的不同的生命周期。相同數(shù)據(jù)在生效期內(nèi),不再重復從數(shù)據(jù)源加載,數(shù)據(jù)失效后,采用懶加載策略從數(shù)據(jù)源重新加載數(shù)據(jù)。
3)關(guān)系型數(shù)據(jù)庫數(shù)據(jù)操作對象。采用oci接口封裝對關(guān)系型數(shù)據(jù)庫的操作對象。包括關(guān)系型數(shù)據(jù)庫中數(shù)據(jù)的增刪改查等等。
4)內(nèi)存型數(shù)據(jù)庫數(shù)據(jù)操作對象。封裝對內(nèi)存數(shù)據(jù)庫的操作對象。包括內(nèi)存數(shù)據(jù)庫中數(shù)據(jù)的增刪改查等等。
5)存儲驅(qū)動器。根據(jù)配置來自動加載不同的存儲實例,獲取存儲管理器,交給應用做后續(xù)的內(nèi)存操作。
6)存儲管理器。定義了對存儲的各種操作接口及標準的操作流程。
7)元數(shù)據(jù)查詢。定義了標準的查詢流程并提供相關(guān)的API。
8)元數(shù)據(jù)存儲。定義了標準的存儲流程并提供相關(guān)的API。
9)元數(shù)據(jù)刪除。定義了標準的刪除流程并提供相關(guān)的API。
10)懶加載策略管理。實現(xiàn)對數(shù)據(jù)的懶加載策略,當需要時才加載相關(guān)增量數(shù)據(jù),而非一次性全量加載。
11)容災策略管理。提供應用調(diào)用的API,內(nèi)置容錯機制,智能檢測緩存平臺狀態(tài)。當發(fā)現(xiàn)平臺不可用時,可以智能跳轉(zhuǎn)至備用平臺。網(wǎng)絡(luò)內(nèi)可以部署多個平臺,互為主備。一臺主機可以同時支持多臺備機。
12)通用配置管理。實現(xiàn)對配置的讀取與使用。
2、 平臺接口層。主要包含4個功能模塊,內(nèi)容概述如下:
1)CParam查詢接口。對系統(tǒng)中上百個KV類型數(shù)據(jù)進行封裝,定義統(tǒng)一的查詢接口。實現(xiàn)對這些數(shù)據(jù)的加載、查詢與存儲等操作。
2)通用查詢接口。對所有基于對數(shù)據(jù)庫的查詢操作進行封裝,使用標準的數(shù)據(jù)查詢流程,內(nèi)置關(guān)系型數(shù)據(jù)庫的查詢、內(nèi)存數(shù)據(jù)庫的查詢、存儲等操作。
3)Buffer轉(zhuǎn)換。對Tuxedo的CFml32格式的數(shù)據(jù)進行封裝,可以快速地對其中KV數(shù)據(jù)進行編碼名稱轉(zhuǎn)換。
4)Conv類轉(zhuǎn)換。Conv類是封裝了一系列c++類,使用這個系列類可以對一些常見的數(shù)據(jù)進行查詢轉(zhuǎn)換。
3、BOSS業(yè)務改造內(nèi)容
BOSS業(yè)務側(cè)所有按傳統(tǒng)方式對關(guān)系型數(shù)據(jù)Oracle進行數(shù)據(jù)操作的代碼,都采用緩存平臺提供的API進行調(diào)用改造。BOSS業(yè)務側(cè)需改造的大小模塊將近30個,包括但不局限于以下內(nèi)容:訂單模塊、費用模塊、客戶模塊、用戶模塊、賬戶模塊、資源模塊、帳管模塊、產(chǎn)品模塊、參數(shù)模塊、聯(lián)指模塊等。
4.2緩存平臺實施后的優(yōu)化效果
系統(tǒng)運行穩(wěn)定,效果顯著,有效降低了業(yè)務程序?qū)?shù)據(jù)庫的訪問。出賬期間,緩存平臺每天緩存命中次數(shù)最高可達2億6千多萬次,crm數(shù)據(jù)庫活動會話數(shù)降低近一半,中間件主機內(nèi)存較實施前降低明顯,12臺業(yè)務主機共降低內(nèi)存達50.2G。
五、結(jié)束語
緩存技術(shù)很大程度上解決了BOSS系統(tǒng)的瓶頸問題,提高了整體系統(tǒng)的處理性能。實施后BOSS系統(tǒng)有以下四個方面的明顯優(yōu)化:提升數(shù)據(jù)庫性能,降低數(shù)據(jù)庫主機CPU使用率; 降低中間件主機內(nèi)存損耗;降低中間件主機CPU使用率,提高流程處理性能;降低WEB應用服務器的瞬間CPU性能高峰。
緩存平臺的應用提高了業(yè)務受理效率,提升了客戶體驗,降低業(yè)務數(shù)據(jù)CPU使用率,降低主機內(nèi)存損耗,節(jié)省了硬件成本。