公務員期刊網(wǎng) 論文中心 正文

移動網(wǎng)絡適用數(shù)據(jù)增量同步實踐

前言:想要寫出一篇引人入勝的文章?我們特意為您整理了移動網(wǎng)絡適用數(shù)據(jù)增量同步實踐范文,希望能給你帶來靈感和參考,敬請閱讀。

移動網(wǎng)絡適用數(shù)據(jù)增量同步實踐

反假貨幣宣傳系統(tǒng)是一套用于宣傳貨幣防偽知識、提高公眾反假貨幣水平和能力的金融設備,通過人機互動,以圖文和動畫視頻相結(jié)合的表現(xiàn)形式進行信息的展示。傳統(tǒng)的反假貨幣宣傳系統(tǒng)只包括工作站,工作站上大多采用Flash等技術(shù)進行軟件開發(fā),向公眾宣傳反假貨幣法律法規(guī)和貨幣防偽知識。軟件中的頁面與數(shù)據(jù)緊耦合,且所有信息均在出廠時初始化到工作站中,一般放置于各銀行的營業(yè)廳內(nèi)供公眾自由使用。工作人員只能在設備現(xiàn)場手動更新,是一種離線式觸摸終端。新一代的反假貨幣宣傳系統(tǒng)結(jié)合了數(shù)據(jù)庫和移動網(wǎng)絡,分為工作站和服務器兩個部分。工作站和服務器均利用數(shù)據(jù)庫有序管理各種數(shù)據(jù),實現(xiàn)了數(shù)據(jù)與展示頁面的分離,為數(shù)據(jù)的靈活修改提供了可能;同時利用移動網(wǎng)絡進行服務器和工作站之間數(shù)據(jù)的實時同步,使服務器上的最新數(shù)據(jù)能夠盡快地同步到設備上,既能及時展示最新信息,避免過時的內(nèi)容誤導公眾,又能減少工作人員現(xiàn)場作業(yè)的成本,是一種在線式觸摸終端。本文分析了新一代的反假貨幣宣傳系統(tǒng)在實際場景中采用移動網(wǎng)絡進行數(shù)據(jù)同步時的特點,針對性地提出了一種基于版本號進行管理的增量數(shù)據(jù)同步策略,并在dotNET平臺上利用WCF技術(shù)進行了實現(xiàn)。經(jīng)過測試,該策略達到了最初的設計目標,并已在實際生產(chǎn)中使用。

1數(shù)據(jù)同步中需要解決的問題

新一代的反假貨幣宣傳系統(tǒng)中的工作站放置于各銀行的營業(yè)網(wǎng)點內(nèi),服務器放置于數(shù)據(jù)中心。各銀行的有線網(wǎng)均為銀行內(nèi)部網(wǎng)絡,因此,工作站只能通過配備無線網(wǎng)卡,經(jīng)由電信運營商提供的VPN網(wǎng)絡,與服務器進行連接。采用移動網(wǎng)絡進行通信給我們的數(shù)據(jù)同步策略帶來了兩個挑戰(zhàn):(1)在移動網(wǎng)絡中,信號強度容易受到干擾,導致連接速度的不穩(wěn)定,在一些信號較差的位置,甚至會出現(xiàn)大量超時丟包,出現(xiàn)網(wǎng)絡時斷時續(xù)的情況。基于此,我們的策略中應提供斷點續(xù)傳的功能,最大限度保證傳輸?shù)耐暾?。?)電信運營商大多采用按流量計費的方式,出于日常維護費用方面的考慮,我們的策略中應盡量減少數(shù)據(jù)包的大小。數(shù)據(jù)庫記錄可以轉(zhuǎn)化為SQL語句,經(jīng)過壓縮之后減少體積;資源文件本身難以進一步壓縮,而且并不一定需要每次都進行傳輸?;诖耍芾韱T應能夠自由指定是否更新資源文件,從而避免相同資源文件的重復傳輸。在實際應用中,工作站能夠主動發(fā)起數(shù)據(jù)更新從而實現(xiàn)定時同步,服務器也能夠主動發(fā)起對某些指定工作站的數(shù)據(jù)更新從而實現(xiàn)最新數(shù)據(jù)的及時推送。為此,我們在工作站和服務器兩部分設計了不同的服務供對方調(diào)用。

2SOA及WCF介紹

面向服務的體系結(jié)構(gòu)(SOA,Service-OrientedArchitec-ture)是一個組件模型,它將應用程序的不同功能單元(也稱為服務)通過這些服務之間定義良好的接口和契約聯(lián)系起來。接口是采用中立的方式進行定義的,它應該獨立于實現(xiàn)服務的硬件平臺、操作系統(tǒng)和編程語言。這使得構(gòu)建在各種各樣的系統(tǒng)中的服務可以使用一種統(tǒng)一和通用的方式進行交互Windows通信開發(fā)平臺(WCF,WindowsCommuni-cationFoundation)是微軟為構(gòu)建面向服務的應用提供的分布式通信編程框架,是.NETFramework3.5的重要組成部分。使用該框架,開發(fā)人員可以構(gòu)建跨平臺、安全、可靠且支持事務處理的企業(yè)級互聯(lián)應用解決方案。WCF是微軟分布式應用程序開發(fā)的集大成者,它整合了Net平臺下所有的和分布式系統(tǒng)有關(guān)的技術(shù),例如.NetRemoting、ASMX、WSE和MSMQ。以通信范圍而論,WCF可以跨進程、跨機器、跨子網(wǎng)、企業(yè)網(wǎng)乃至于Internet;以宿主程序而論,WCF可以以ASP.NET、EXE、WPF、WindowsForms、NTService、COM+作為宿主。WCF可以支持的協(xié)議包括TCP、HTTP、跨進程以及自定義,安全模式則包括SAML、Kerberos、X509、用戶/密碼、自定義等多種標準與模式。WCF支持大量的WebService標準,這些標準包括XML、XSD、SOAP、Xpath、WSDL等標準和規(guī)范,所以對于現(xiàn)有的標準,開發(fā)人員能夠方便地進行移植。同時WCF可以使用Attribute屬性進行WCF應用程序配置,提高了WCF應用的靈活性。WCF遵循客戶端/服務器模式(C/S)在應用程序之間進行通信,客戶端程序能夠通過服務器提供的EndPoint端直接訪問服務。在WCF框架下,開發(fā)基于SOA的分布式系統(tǒng)變得容易了,微軟將所有與此相關(guān)的技術(shù)要素都包含在內(nèi),掌握了WCF,就相當于掌握了叩開SOA大門的鑰匙。

3數(shù)據(jù)增量同步策略的設計與實現(xiàn)

3.1版本定義

進行增量更新的關(guān)鍵在于,如何標注服務器數(shù)據(jù)和工作站數(shù)據(jù)的當前狀態(tài),從而進一步得知每次同步時所需傳輸?shù)臄?shù)據(jù)。在此,我們引入一個版本的概念,所謂版本是指某一時刻服務器所存儲的已確定的所有數(shù)據(jù)的集合。每一個增量更新包代表了以上一版本數(shù)據(jù)為基礎,經(jīng)過一系列修改之后形成下一版本數(shù)據(jù),在這之間的數(shù)據(jù)變化,從而每個版本數(shù)據(jù)都可以看作是以前所有版本數(shù)據(jù)的疊加和最新修改之和,即版本版本新數(shù)據(jù)。工作站所維護的版本號和服務器所維護的版本號分別代表了其所存儲數(shù)據(jù)的當前狀態(tài),工作站在進行數(shù)據(jù)更新時,只需逐個下載增量更新包進行更新,就可以確保最終與服務器的數(shù)據(jù)達到一致。數(shù)據(jù)庫作為系統(tǒng)存儲數(shù)據(jù)的核心,保存了所有的文本以及對資源文件的引用,因此我們?yōu)閿?shù)據(jù)庫中的每個表增加3個字段——“數(shù)據(jù)版本號”、“操作方式”和“同步更新標志”,以此記錄文本對應的版本信息,并間接記錄資源文件對應的版本信息。通過“數(shù)據(jù)版本號”,可以很容易地確定每個版本所包含的記錄(數(shù)據(jù)版本號小于等于指定版本號的記錄即為該版本中包含的記錄);通過“操作方式”,可以確定在更新時所對應的SQL語句;“同步更新標志”則表示在數(shù)據(jù)的變化過程中,資源文件是否有變化,是否需要傳輸至工作站。因為工作站在展示貨幣防偽信息時,先讀取數(shù)據(jù)庫記錄,再由記錄上的內(nèi)容確定資源文件,所以我們只需要標注記錄所在版本,即可間接標注資源文件的版本。

3.2管理員變動數(shù)據(jù)

管理員對數(shù)據(jù)的變動可分為3種:新增、修改、刪除。系統(tǒng)通過對記錄的數(shù)據(jù)版本號、操作方式、同步更新標志進行不同標注,作為后續(xù)處理的基礎。(1)管理員新增數(shù)據(jù)時,數(shù)據(jù)庫中將新增相應的記錄,文件系統(tǒng)中將新增相應的資源文件。此時數(shù)據(jù)庫記錄中的數(shù)據(jù)版本號為空,操作方式為A,同步更新標志為Y。(2)管理員修改數(shù)據(jù)時,數(shù)據(jù)庫將保存修改后的數(shù)據(jù),資源文件可能改變亦可能不改變(取決于管理員是否引入新的資源)。此時數(shù)據(jù)庫記錄中的數(shù)據(jù)版本號為空,操作方式為M,同步更新標志為Y或N。(3)管理員刪除數(shù)據(jù)時,如果記錄為納入版本,即數(shù)據(jù)版本號為空時,從數(shù)據(jù)庫直接刪除此記錄即可,無需與工作站同步;如果記錄已納入版本,即數(shù)據(jù)版本號不為空時,數(shù)據(jù)庫并不立即清除數(shù)據(jù)和資源,而是將數(shù)據(jù)庫記錄中的數(shù)據(jù)版本號置空,操作方式置D,同步更新標志不變。

3.3生成新的版本

在管理員完成一系列操作之后,即可生成新的版本。在生成新版本時,服務器遍歷每一張數(shù)據(jù)表,取出其中數(shù)據(jù)版本號為空的記錄,然后根據(jù)每條記錄中操作方式的不同,進行不同的操作。之后,系統(tǒng)將把保存了所有SQL語句的文本文件、待打包列表中的指定的資源文件、待刪除列表統(tǒng)一打包為一個壓縮文件,并保存到系統(tǒng)的增量更新目錄下。生成新版本的算法如下:○1查詢已有版本,生成新的12位版本號。○2對數(shù)據(jù)庫中每一張表,做以下○3至○4操作:對表中每一行數(shù)據(jù)版本號為空的記錄,根據(jù)操作方式的不同,做以下○4中操作:○4-○1操作方式為A,則生成完整的插入語句并保存到SQL文件,將資源文件鏈接放入待打包列表。○4-○2操作方式為M,則生成完整的修改語句并保存到SQL文件,若同步更新標志為Y,則將資源文件鏈接放入待打包列表?!?-○3操作方式為D,則生成刪除語句并保存到SQL文件,將資源文件鏈接放入待刪除列表,同時刪除數(shù)據(jù)庫中記錄以及相應的資源文件?!?將SQL文件、待打包列表中的指定的資源文件、待刪除列表打包為壓縮文件,形成增量更新包,并標注版本號。

3.4增量更新流程

在新的版本生成之后,即可對工作站進行更新。工作站主動更新的過程可視作工作站從服務器下載,服務器主動推送的過程可以視作服務器發(fā)送更新信號、工作站主動更新兩部分,從而將整個更新流程的核心轉(zhuǎn)化為統(tǒng)一的工作站主動下載,簡化了系統(tǒng)所需的服務。另外,由于系統(tǒng)采用電信運營商基于移動網(wǎng)絡所提供的VPN網(wǎng)絡,工作站每次上網(wǎng)前需要進行撥號以建立與移動網(wǎng)絡的連接,而每次重新?lián)芴柡笏玫降腎P都不一樣,服務器主動推送時,又需要知道指定工作站的IP,所以我們額外設計了一系列服務,實現(xiàn)在服務器上維護在線工作站IP信息的功能。工作站主動更新數(shù)據(jù)時,先通過CheckVersion服務,得到服務器上的版本信息,然后將兩端的版本號進行比對,從而判斷出是否有新的數(shù)據(jù)需要同步。在確定數(shù)據(jù)需要同步后,工作站通過Download服務,逐個下載增量更新包,并在本地解壓、更新,同時在日志中記錄更新過程。在完成所有更新操作之后,工作站通過UpdateVersion回送本地的版本信息,以便在服務器確認更新操作的執(zhí)行情況。服務器主動推送數(shù)據(jù)時,則由服務器通過Notify服務,通知到工作站,然后由工作站完成以上一系列操作,直至更新成功或失敗。

4總結(jié)

本文分析了實際場景中采用移動網(wǎng)絡進行數(shù)據(jù)同步時的特點,針對性地提出了一種基于版本號進行管理的增量數(shù)據(jù)同步策略,并在dotNET平臺上利用WCF技術(shù)進行了實現(xiàn)。經(jīng)過測試,該策略達到了最初的設計目標,并已在反假幣宣傳系統(tǒng)的實際生產(chǎn)中使用。策略的設計并不針對特定的業(yè)務,因此本文所述的策略可應用于其它基于移動網(wǎng)絡進行增量數(shù)據(jù)同步的業(yè)務系統(tǒng)之中。

作者:劉捷 龐冬梅 單位:華南理工大學計算機科學與工程學院