1. gzyueqian
      13352868059

      數(shù)據(jù)一致性的TongEASY解決之道

      更新時(shí)間: 2008-04-16 15:55:39來(lái)源: 粵嵌教育瀏覽量:1004

        目前采用開放式系統(tǒng)的銀行柜面業(yè)務(wù)處理系統(tǒng),基本都是客戶/服務(wù)器結(jié)構(gòu)的,客戶端需要通過介質(zhì)多樣的廣域網(wǎng)與服務(wù)端通訊。由于網(wǎng)絡(luò)的不可靠性,常常出現(xiàn)傳輸過程中交易數(shù)據(jù)的丟失,造成客戶端與服務(wù)端的交易不完整或數(shù)據(jù)不一致,導(dǎo)致銀行的資金風(fēng)險(xiǎn)和信譽(yù)風(fēng)險(xiǎn)。如何防范由于通訊原因產(chǎn)生的風(fēng)險(xiǎn),如何控制數(shù)據(jù)的一致性,是任何一個(gè)客戶/服務(wù)器結(jié)構(gòu)的聯(lián)機(jī)交易處理系統(tǒng)必須考慮的問題。

      一、 導(dǎo)致數(shù)據(jù)不一致的原因

        在客戶/服務(wù)器結(jié)構(gòu)的聯(lián)機(jī)交易處理系統(tǒng)中,一筆交易至少包含如下圖所示的四個(gè)過程:①請(qǐng)求傳輸過程;②服務(wù)端交易處理過程;③應(yīng)答傳輸過程;④客戶端處理應(yīng)答過程。

      圖表 1 交易的基本處理過程

        由于網(wǎng)絡(luò)傳輸?shù)牟豢煽啃裕厝挥?quot;③應(yīng)答傳輸過程" 失敗的情況。在這種情況下,就產(chǎn)生了服務(wù)端與客戶端交易狀態(tài)的不一致性問題:在服務(wù)端,該筆交易已處理或完成;在客戶端,由于沒有收到應(yīng)答,該筆交易是失敗的。

        這種客戶端及服務(wù)端的不一致性,會(huì)給銀行帶來(lái)資金風(fēng)險(xiǎn)和信譽(yù)風(fēng)險(xiǎn)。當(dāng)該筆交易是增加客戶的可用資金時(shí),產(chǎn)生了資金風(fēng)險(xiǎn),當(dāng)該筆交易是減小客戶的可用資金時(shí),產(chǎn)生了信譽(yù)風(fēng)險(xiǎn)。例如一筆存款交易產(chǎn)生數(shù)據(jù)不一致時(shí),在服務(wù)端,客戶的帳戶余額已增加,而在柜臺(tái),該筆業(yè)務(wù)失敗,存款并末收入,從而造成客戶的余額虛增,客戶可以通過正常的途徑使用該筆資金,這將造成銀行資金損失。一筆取款交易產(chǎn)生數(shù)據(jù)不一致時(shí),在主機(jī)端,客戶的帳戶余額已減少,而在柜臺(tái),該筆業(yè)務(wù)失敗,客戶并未取到款。如果客戶發(fā)現(xiàn)這一情況,將會(huì)造成銀行的信譽(yù)損失。

      二、 沖正與重復(fù)辦理方式

        目前大部分銀行業(yè)務(wù)處理系統(tǒng)采用沖正或重復(fù)辦理的方式,了解決數(shù)據(jù)不一致的問題。這兩種方式的基本思想,都是當(dāng)數(shù)據(jù)不一致性問題發(fā)生后,通過事后附加的干預(yù)過程來(lái)進(jìn)行補(bǔ)救。

      (一) 沖正方式

        沖正方式下,一筆交易以客戶端為準(zhǔn),客戶端完成,該筆交易才完成,客戶端失敗,則該筆交易失敗。當(dāng)應(yīng)答傳輸過程失敗,前端認(rèn)為該筆交易失敗,將產(chǎn)生一筆沖正交易。該筆沖正交易將取消上一筆交易的結(jié)果,從而恢復(fù)客戶端及服務(wù)端的數(shù)據(jù)一致性。

      按產(chǎn)生沖正交易的時(shí)機(jī),可以分為三種:

      1、立即沖正,是在一筆交易超時(shí)無(wú)應(yīng)答時(shí),立即發(fā)出沖正;

      2、定時(shí)沖正,是指按固定的時(shí)間間隔,發(fā)出沖正交易;

      3、當(dāng)一筆交易未成功時(shí),在做下一筆交易時(shí),先自動(dòng)做一個(gè)沖正交易,當(dāng)沖正交易完成后,才執(zhí)行正常交易。目前,POS系統(tǒng)廣泛使用的是下一筆交易沖正的方式。

        沖正方式程序控制簡(jiǎn)單,適應(yīng)性廣。但這種方式無(wú)法確保沖正成功的時(shí)間,從而也就無(wú)法控制風(fēng)險(xiǎn)存在的時(shí)間。一個(gè)極端的情況是,通訊故障是由于物理線路中斷造成的,在線路恢復(fù)正常前,沖正交易無(wú)法完成,風(fēng)險(xiǎn)將一直存在。

      (二)重復(fù)辦理方式

        重復(fù)辦理方式下,一筆交易以服務(wù)端為準(zhǔn),服務(wù)端處理成功,無(wú)論客戶端是否收到結(jié)果,均認(rèn)為該筆交易成功。當(dāng)應(yīng)答傳輸過程失敗造成客戶端交易失敗,客戶端必須重復(fù)辦理該筆交易,在服務(wù)端,收到重復(fù)的交易請(qǐng)求,若該筆交易已處理,則將上筆交易的結(jié)果作為本次交易的處理結(jié)果返回,若未處理,則按正常交易進(jìn)行處理。

        這種方式的優(yōu)點(diǎn)在于控制簡(jiǎn)單,易于實(shí)現(xiàn)。局限性基本同沖正方式,即無(wú)法控制風(fēng)險(xiǎn)存在的時(shí)間。另外,以服務(wù)端為準(zhǔn)的條件使它的使用范圍受到一定的限制。在對(duì)公會(huì)計(jì)系統(tǒng)中,通常采用重復(fù)辦理的方式。

      三、鎖方式

        鎖方式是將數(shù)據(jù)的不一致性轉(zhuǎn)換為數(shù)據(jù)的不可用性,通過數(shù)據(jù)的不可用性,消除風(fēng)險(xiǎn)的產(chǎn)生。
      鎖方式具體的實(shí)現(xiàn)方法是:在②服務(wù)端處理過程后,對(duì)該操作所涉及的數(shù)據(jù)加鎖,使它們處于一種不可用的狀態(tài);增加⑤確認(rèn)傳輸過程和⑥服務(wù)端確認(rèn)處理過程。當(dāng)客戶端收到應(yīng)答并處理完畢后,將產(chǎn)生給服務(wù)端發(fā)一個(gè)確認(rèn)信息,當(dāng)服務(wù)端收到確認(rèn)后,對(duì)第②步鎖住的數(shù)據(jù)進(jìn)行解鎖。如下圖所示:

      圖表 2 鎖方式的處理過程

        通過上圖可以看出,在t1~t4 的時(shí)間段內(nèi),該筆交易所涉及的數(shù)據(jù)是加鎖的。當(dāng)③應(yīng)答傳輸過程失敗時(shí),則不會(huì)執(zhí)行第⑥步的解鎖操作。后續(xù)涉及這些數(shù)據(jù)的交易將由于鎖的存在而不再進(jìn)行,因此,不會(huì)造成銀行的資金損失及信譽(yù)損失。

        加鎖常用兩種實(shí)現(xiàn)方式:對(duì)數(shù)據(jù)庫(kù)交易加鎖的數(shù)據(jù)庫(kù)鎖,在應(yīng)用層對(duì)數(shù)據(jù)加鎖的應(yīng)用鎖。鎖方式可以根據(jù)實(shí)際情況決定使用數(shù)據(jù)庫(kù)鎖或應(yīng)用鎖。

      (一)數(shù)據(jù)庫(kù)鎖

      數(shù)據(jù)庫(kù)鎖利用關(guān)系數(shù)據(jù)庫(kù)中提供的交易機(jī)制對(duì)數(shù)據(jù)進(jìn)行加鎖保護(hù)。

        數(shù)據(jù)庫(kù)操作中,"開始交易(begin work)"和"提交交易(commit work)"之間的操作所涉及的數(shù)據(jù)將被加鎖。在②服務(wù)端交易處理過程中執(zhí)行"開始交易"操作,在⑥服務(wù)端確認(rèn)處理過程執(zhí)行commit work操作。這樣從t1至t4之間,數(shù)據(jù)是被鎖住的。當(dāng)應(yīng)答傳輸過程失敗時(shí),相關(guān)的數(shù)據(jù)被鎖住,與這些數(shù)據(jù)相關(guān)的后續(xù)業(yè)務(wù)將由于鎖的存在而無(wú)法進(jìn)行,這樣就不會(huì)造成數(shù)據(jù)不一致的問題。
      這種方式避免了風(fēng)險(xiǎn)的產(chǎn)生,程序編寫簡(jiǎn)單,易于使用。但是,數(shù)據(jù)庫(kù)的鎖要占用比較大的系統(tǒng)資源;數(shù)據(jù)被鎖的時(shí)間較長(zhǎng),數(shù)據(jù)庫(kù)的交易對(duì)數(shù)據(jù)的鎖范圍較大,沒有針對(duì)性。因此,數(shù)據(jù)庫(kù)的鎖對(duì)系統(tǒng)支持大規(guī)模并發(fā)的能力會(huì)產(chǎn)生負(fù)面影響。過程③和過程⑤的任何一次失敗均會(huì)導(dǎo)致交易無(wú)法結(jié)束,從而也就無(wú)法釋放相應(yīng)的資源及數(shù)據(jù),從而影響后續(xù)業(yè)務(wù)的處理。

        為了避免出現(xiàn)無(wú)法釋放資源的現(xiàn)象,有些系統(tǒng)采用了結(jié)束交易的默認(rèn)機(jī)制。當(dāng)交易超過一定的時(shí)間未結(jié)束時(shí),則系統(tǒng)根椐約定,自動(dòng)進(jìn)行"提交交易"或"回滾交易(Rollback)"。這種作法實(shí)際上可能造成客戶端與服務(wù)端的數(shù)據(jù)不一致,使用這種方式的系統(tǒng)一般都具有一個(gè)交易中間件,由交易中間件通過XA接口,執(zhí)行數(shù)據(jù)庫(kù)的交易開始及交易結(jié)束等與交易有關(guān)的操作。

      (二)應(yīng)用鎖

        應(yīng)用鎖與數(shù)據(jù)庫(kù)鎖的差別在于,應(yīng)用鎖方式是在應(yīng)用程序這一層對(duì)數(shù)據(jù)進(jìn)行加鎖。例如一筆存款業(yè)務(wù),在第②步服務(wù)端完成業(yè)務(wù)處理后,對(duì)進(jìn)行存款的帳戶進(jìn)行凍結(jié),使其不能發(fā)生業(yè)務(wù),直到收到客戶端發(fā)來(lái)的確認(rèn)后,才對(duì)該帳戶解凍。

        應(yīng)用鎖的系統(tǒng)開銷小,鎖的針對(duì)性強(qiáng),系統(tǒng)的并發(fā)能力大。但是應(yīng)用編程復(fù)雜,編程量增加,有時(shí)很難確定一筆交易應(yīng)當(dāng)鎖住的數(shù)據(jù)。

      三、 TongEASY方案:鎖與自動(dòng)確認(rèn)/沖正結(jié)合

        從銀行業(yè)務(wù)角度來(lái)看,控制風(fēng)險(xiǎn)是首要的,因此一個(gè)方案首先必須實(shí)現(xiàn)對(duì)風(fēng)險(xiǎn)的有效控制。雖然鎖方式可以有效地控制風(fēng)險(xiǎn),但這種方式對(duì)系統(tǒng)處理能力及效率會(huì)有一定的影響,如何將這種方式對(duì)系統(tǒng)的影響控制在可以接受的范圍,是解決問題的關(guān)鍵所在。

        通科技公司的交易中間件TongEASY綜合上述幾種方式的優(yōu)點(diǎn),提供了一種解決數(shù)據(jù)一致性問題的方案,即鎖與自動(dòng)確認(rèn)/沖正結(jié)合的方式:利用鎖方式控制數(shù)據(jù)一致性問題,利用確認(rèn)/沖正方式釋放鎖占用的資源。

        TongEASY以鎖方式為基礎(chǔ),增加以第⑦個(gè)處理過程:確認(rèn)/沖正的應(yīng)答傳輸過程。當(dāng)服務(wù)端接收到客戶端的確認(rèn)/沖正后,服務(wù)端將發(fā)回一個(gè)確認(rèn)/沖正的應(yīng)答。TongEASY只有在收到確認(rèn)/沖正的應(yīng)答后,才認(rèn)為該筆交易已處理結(jié)束,否則將重復(fù)發(fā)確認(rèn)/沖正。處理過程如下圖所示:

      圖表 3 TongEASY的處理過程

         當(dāng)③應(yīng)答傳輸過程失敗時(shí),TongEASY將產(chǎn)生一個(gè)"沖正確認(rèn)"發(fā)給服務(wù)端,服務(wù)端收到"沖正確認(rèn)"后,則進(jìn)行沖正操作,取消該筆交易的操作。當(dāng)⑤確認(rèn)傳輸過程或⑦確認(rèn)應(yīng)答傳輸過程失敗時(shí),TongEASY將核對(duì)交易結(jié)果并按一定的時(shí)間間隔重復(fù)執(zhí)行⑤確認(rèn)傳輸過程,直到過程⑤及⑦均正常完成為止。服務(wù)端在進(jìn)行⑥確認(rèn)處理過程時(shí),若收到的確認(rèn)是"正常確認(rèn)",則對(duì)相關(guān)數(shù)據(jù)解除應(yīng)用鎖;若收到的確認(rèn)是"沖正確認(rèn)",則對(duì)相關(guān)數(shù)據(jù)解除應(yīng)用鎖并進(jìn)行沖正操作。若收到的"確認(rèn)"已處理過,則直接發(fā)回確認(rèn)應(yīng)答信息。

        TongEASY方式相對(duì)于鎖方式而言,避免了由于單次通訊故障造成資源無(wú)法釋放,在解決數(shù)據(jù)不一致性問題的同時(shí),減少了系統(tǒng)資源占用現(xiàn)象,避免了系統(tǒng)在長(zhǎng)時(shí)間運(yùn)行后,由于大量資源無(wú)法釋放而造成系統(tǒng)的性能下降。

      四、 結(jié)束語(yǔ)

        沖正方式及重復(fù)辦理方式雖然簡(jiǎn)單、方便,但卻無(wú)法防止風(fēng)險(xiǎn)的產(chǎn)生,無(wú)法有效控制風(fēng)險(xiǎn)存在時(shí)間。

        數(shù)據(jù)庫(kù)鎖及應(yīng)用鎖的方式可以防止風(fēng)險(xiǎn)的產(chǎn)生,但對(duì)系統(tǒng)的運(yùn)行效率,特別是會(huì)影響系統(tǒng)支持大規(guī)模并發(fā)的能力,在極端的情況下,會(huì)影響系統(tǒng)的正常使用。

        TongEASY提供的鎖與沖正結(jié)合的方式是對(duì)鎖機(jī)制的一種改進(jìn),它不但可以防止風(fēng)險(xiǎn)的產(chǎn)生,同時(shí)可以減少由于通訊故障造成的資源占用,不失為一種適合中國(guó)國(guó)情的解決方法。




      免費(fèi)預(yù)約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲欧美成αⅴ人 | 五月开心丁香婷婷久久看 | 日本三级欧美三级人妇视频 | 五月天婷婷在线播放 | 亚洲欧美日韩精品成人 | 亚洲第一视频免费在线 |