1、寫在前面
在企業(yè)級(jí)應(yīng)用架構(gòu)的語(yǔ)境下,流水號(hào)具有穿針引線的作用。這里說(shuō)的企業(yè)級(jí)有兩層含義,一是多應(yīng)用,多數(shù)企業(yè)都有一組職能定位各不相同的應(yīng)用系統(tǒng)提供IT支撐;二是這些應(yīng)用系統(tǒng)是一個(gè)有機(jī)整體,而不是相互隔離的。服務(wù)的調(diào)用和數(shù)據(jù)的簡(jiǎn)單傳遞并不是企業(yè)級(jí)的充分表達(dá),通過(guò)多個(gè)職責(zé)不同的應(yīng)用系統(tǒng)配合、協(xié)作而完成一系列相關(guān)服務(wù)場(chǎng)景,這些應(yīng)用系統(tǒng)才能成為企業(yè)級(jí)。
銀行應(yīng)用系統(tǒng)是企業(yè)級(jí)的一種典型應(yīng)用,其每一個(gè)服務(wù)場(chǎng)景都需要通過(guò)交易渠道、客戶信息管理系統(tǒng)、渠道整合、流程審批、業(yè)務(wù)處理、記賬處理、核算處理、客戶通知……等一系列應(yīng)用系統(tǒng)協(xié)同,當(dāng)用戶在頁(yè)面上的一個(gè)操作涉及到后臺(tái)的一系列系統(tǒng)服務(wù)集成的時(shí)候,就需要一種流水號(hào)的設(shè)計(jì)體系對(duì)這些服務(wù)進(jìn)行串接,記錄在整個(gè)交易場(chǎng)景下各個(gè)應(yīng)用的服務(wù)調(diào)用狀態(tài),以便于時(shí)候的查詢、統(tǒng)計(jì)、分析、補(bǔ)錄、基于原服務(wù)的二次交易等后續(xù)場(chǎng)景的使用。
探討對(duì)象
- 本文討論的是企業(yè)級(jí)應(yīng)用架構(gòu)體系下、針對(duì)多應(yīng)用系統(tǒng)的的流水號(hào)設(shè)計(jì)方案,不是針對(duì)單應(yīng)用系統(tǒng)的;
- 本文重點(diǎn)在于討論流水號(hào)的應(yīng)用層面的解決方案,不涉及代碼實(shí)現(xiàn);
- 本文重在基于筆者項(xiàng)目經(jīng)驗(yàn)的探討和思考,而不是直接應(yīng)用于項(xiàng)目的指南和結(jié)論;
- 本文以筆者所在的金融IT行業(yè)切入討論,但設(shè)計(jì)思路可應(yīng)用于一般性企業(yè)級(jí)架構(gòu);
流水號(hào)的使用目標(biāo)
我們簡(jiǎn)單梳理流水號(hào)的應(yīng)用場(chǎng)景,以作為流水號(hào)設(shè)計(jì)方案的靶向標(biāo)的:
- 憑證打?。河捎诮鹑谛袠I(yè)的特殊性,紙質(zhì)憑證仍然作為非常重要的單據(jù)在各個(gè)場(chǎng)景中使用,包括業(yè)務(wù)辦理、賬實(shí)核對(duì)、對(duì)賬等過(guò)程。其中一個(gè)非常重要的依據(jù)便是流水號(hào),憑證上一般有兩個(gè)流水號(hào),憑證本身的流水號(hào)和業(yè)務(wù)流水號(hào)。憑證本身流水號(hào)是印刷時(shí)就確定的,不在本次討論范圍;業(yè)務(wù)流水號(hào)是系統(tǒng)生成后打印到憑證上的,作為銀行整個(gè)業(yè)務(wù)處理周期的唯一索引,是我們的重點(diǎn)討論對(duì)象;
- 業(yè)務(wù)跟蹤:在一個(gè)以業(yè)務(wù)辦理、交易處理為主體的應(yīng)用系統(tǒng)體系中,流水號(hào)一旦生成便伴隨當(dāng)前業(yè)務(wù)的整個(gè)生命周期,一直到數(shù)據(jù)歸檔為止,后續(xù)對(duì)于原交易狀態(tài)和數(shù)據(jù)的查詢、基于原交易的后續(xù)業(yè)務(wù)辦理、跨系統(tǒng)的數(shù)據(jù)整合、交易鏈路的還原、各系統(tǒng)對(duì)服務(wù)的響應(yīng)情況、IT部門對(duì)于問(wèn)題的調(diào)查與定位等都是基于該流水號(hào)。
2、SOA架構(gòu)體系下的服務(wù)訪問(wèn)模式
場(chǎng)景與服務(wù)
SOA架構(gòu)體系是應(yīng)用系統(tǒng)專業(yè)化、復(fù)雜化發(fā)展的必然結(jié)果。早期銀行只有一個(gè)綜合業(yè)務(wù)系統(tǒng),所有的業(yè)務(wù)都在一個(gè)系統(tǒng)里實(shí)現(xiàn),隨著業(yè)務(wù)發(fā)展越來(lái)越復(fù)雜、越來(lái)越精細(xì)化各類專業(yè)業(yè)務(wù)系統(tǒng)由此誕生,原來(lái)一站式服務(wù)調(diào)用不適用了,要完成一個(gè)應(yīng)用場(chǎng)景需要穿透三四個(gè)、乃至七八個(gè)應(yīng)用系統(tǒng)。對(duì)于每一個(gè)后端應(yīng)用系統(tǒng)來(lái)說(shuō),都只提供單一的、獨(dú)立的、原子的服務(wù),而對(duì)于渠道和客戶來(lái)說(shuō)提供的是一個(gè)場(chǎng)景,這時(shí)候就需要使用流水號(hào)將對(duì)服務(wù)的調(diào)用和場(chǎng)景關(guān)聯(lián)起來(lái)。這有點(diǎn)類似于瀏覽器的無(wú)狀態(tài)請(qǐng)求通過(guò)sessionid進(jìn)行關(guān)聯(lián)類似,當(dāng)然不完全相同。
我們看一個(gè)典型的SOA服務(wù)調(diào)用場(chǎng)景。

渠道應(yīng)用是面向客戶服務(wù)的,所以其服務(wù)的顆粒度是場(chǎng)景級(jí)的,比如說(shuō):渠道對(duì)客戶提供的是一個(gè)開戶服務(wù)(圖中的系統(tǒng)A),而不會(huì)關(guān)注客戶在哪里建立、卡在哪里建立、賬戶在哪里建立等。而原子服務(wù)層應(yīng)用便是后臺(tái)的專業(yè)應(yīng)用系統(tǒng),就是我們上文說(shuō)的客戶、卡、賬戶管理的系統(tǒng)(圖中的系統(tǒng)C、D),但是這些系統(tǒng)隨著專業(yè)化、服務(wù)化、原子化,其上業(yè)務(wù)場(chǎng)景的屬性逐漸削弱(理想狀態(tài)下是沒(méi)有場(chǎng)景);這時(shí)候,當(dāng)當(dāng)當(dāng)當(dāng)……服務(wù)整合層強(qiáng)勢(shì)登場(chǎng),它提供了一個(gè)從原子化的服務(wù)到面向客戶場(chǎng)景的橋梁,對(duì)同類場(chǎng)景進(jìn)行整合發(fā)布,即是面向個(gè)性化業(yè)務(wù)需求的專項(xiàng)業(yè)務(wù)系統(tǒng)。在聯(lián)創(chuàng)智融,我們叫他業(yè)務(wù)整合平臺(tái),它提供了可視化的開發(fā)平臺(tái)、完善的高并發(fā)、高可用與異常處理機(jī)制、成熟的監(jiān)控運(yùn)營(yíng)平臺(tái),通過(guò)提供完整的服務(wù)整合框架讓應(yīng)用開發(fā)從技術(shù)細(xì)節(jié)中脫離出來(lái),專注于應(yīng)用場(chǎng)景的開發(fā),充分利用現(xiàn)有應(yīng)用系統(tǒng)服務(wù)能力實(shí)現(xiàn)差異化的業(yè)務(wù)需求……(不好意思,沒(méi)忍住,插播一段廣告)
流水號(hào)的顆粒度
之所以要鋪墊這么多,是因?yàn)榱魉?hào)的設(shè)計(jì)基本思路是對(duì)SOA架構(gòu)體系的落地。分析上圖流程,客戶直接使用的是渠道類系統(tǒng)A,我們假設(shè)S001,代表此次請(qǐng)求;應(yīng)用系統(tǒng)之間還有多次服務(wù)調(diào)用,假如A->B是A001,B->C是B001,B->D是B002。很明顯,客戶的一次服務(wù)請(qǐng)求是通過(guò)后臺(tái)的三次服務(wù)交互完成的,客戶的請(qǐng)求S001和后臺(tái)的請(qǐng)求A001、B001、B002性質(zhì)完全不同??蛻舻恼?qǐng)求是基于應(yīng)用場(chǎng)景的,是一個(gè)開戶請(qǐng)求、轉(zhuǎn)賬請(qǐng)求;后臺(tái)的服務(wù)調(diào)用是基于應(yīng)用服務(wù)的,是一個(gè)客戶核驗(yàn)、記賬請(qǐng)求、人行轉(zhuǎn)出請(qǐng)求。為了讓整個(gè)應(yīng)用鏈路都保持S001的服務(wù)請(qǐng)求狀態(tài),需要將S001向下游每一次服務(wù)調(diào)用傳遞,并和A001、B001、B002建立映射關(guān)系。
我們將對(duì)客戶展現(xiàn)的、面向交易場(chǎng)景的流水號(hào)S001,叫做全局流水號(hào);將面向服務(wù)請(qǐng)求、代表一次服務(wù)調(diào)用的流水號(hào)A001叫做請(qǐng)求流水號(hào)。全局流水號(hào)有在一個(gè)請(qǐng)求鏈條中保持不變的含義。其中請(qǐng)注意全局流水號(hào)和交易場(chǎng)景以及客戶服務(wù)的區(qū)別,詳見下圖。一次客戶服務(wù)指的是客戶一次業(yè)務(wù)辦理的整個(gè)生命周期,可以稱為一個(gè)會(huì)話或者一個(gè)session,在這個(gè)會(huì)話周期內(nèi),客戶可以辦理多個(gè)業(yè)務(wù)(活轉(zhuǎn)定、理財(cái)、取現(xiàn)……)而不用重復(fù)驗(yàn)證身份,新一代銀行可以做到一次支付、一次驗(yàn)密、一次打印等。一個(gè)交易場(chǎng)景就是客戶具體辦理一個(gè)業(yè)務(wù)(存款),其中又可能涉及對(duì)后臺(tái)的多次服務(wù)請(qǐng)求,比如客戶身份核驗(yàn)就是在正式辦理業(yè)務(wù)之前的一個(gè)預(yù)處理的步驟,但是也需要柜面和后臺(tái)交互,這樣在一個(gè)交易場(chǎng)景內(nèi),至少有兩次到后臺(tái)的用戶請(qǐng)求。
客戶會(huì)話級(jí)和交易場(chǎng)景級(jí)的流水號(hào)本次話題并不涉及,因?yàn)檫@兩個(gè)狀態(tài)主要在渠道類應(yīng)用保持和使用,對(duì)于整體的應(yīng)用架構(gòu)體系并沒(méi)有要求。

場(chǎng)景化的內(nèi)容是否適合放到后端業(yè)務(wù)系統(tǒng)?
作為引申話題我們稍微展開一下:“場(chǎng)景化的業(yè)務(wù)內(nèi)容是否適合放到后端業(yè)務(wù)系統(tǒng)?”。所謂場(chǎng)景化的業(yè)務(wù)指的是面向客戶服務(wù),而不是面向業(yè)務(wù)處理的業(yè)務(wù)邏輯,比如說(shuō)客戶校驗(yàn)、代理人信息、授權(quán)流程等。在很多銀行的業(yè)務(wù)系統(tǒng)中,這些內(nèi)容都在核心,這是歷史遺留包袱,從上面的簡(jiǎn)單分析來(lái)看,這些內(nèi)容都應(yīng)該在場(chǎng)景層(也就是業(yè)務(wù)整合層)去實(shí)現(xiàn)。如果放到后端系統(tǒng),會(huì)有幾個(gè)問(wèn)題:1、面向場(chǎng)景的業(yè)務(wù)處理要重復(fù)實(shí)現(xiàn),沒(méi)有必要且浪費(fèi)效率;2、在專業(yè)化趨勢(shì)下后端業(yè)務(wù)系統(tǒng)(主要是金融產(chǎn)品系統(tǒng))并不需要此類業(yè)務(wù)信息,和本身的業(yè)務(wù)處理邏輯無(wú)關(guān);3、從技術(shù)角度,場(chǎng)景化的內(nèi)容如果放在后端,與之對(duì)應(yīng)的將是全局流水號(hào),但是后臺(tái)系統(tǒng)的服務(wù)調(diào)用都是基于請(qǐng)求流水號(hào),這個(gè)矛盾對(duì)于該筆流水的后續(xù)使用會(huì)產(chǎn)生很多不利影響,比如修改、數(shù)據(jù)整合等等。
3、服務(wù)調(diào)用類型分析
本章從服務(wù)調(diào)用類型分析流水號(hào)的使用和關(guān)注的問(wèn)題。根據(jù)個(gè)人經(jīng)驗(yàn)對(duì)服務(wù)調(diào)用類型總結(jié)如下:
- 正向調(diào)用;(在用戶請(qǐng)求正常提交的情況下服務(wù)鏈路的調(diào)用)
- 反向調(diào)用;(正向交易失敗或者根據(jù)業(yè)務(wù)要求,對(duì)原業(yè)務(wù)做回沖處理)
- 其它后續(xù)服務(wù)調(diào)用; (不是按照正向服務(wù)調(diào)用鏈路調(diào)用的情況)
- 批量服務(wù);(在一次服務(wù)提交中涉及多筆業(yè)務(wù)明細(xì)的情況)
正向調(diào)用
正向調(diào)用沒(méi)什么特別需要說(shuō)明的,就是一個(gè)正常的服務(wù)場(chǎng)景的調(diào)用。但是會(huì)涉及服務(wù)調(diào)用失敗的情況下的重試情況,這時(shí)候要求下游系統(tǒng)能夠辨別出重試交易,所以對(duì)于重試類服務(wù),要求上游系統(tǒng)不能生成新的請(qǐng)求流水號(hào),繼續(xù)使用原請(qǐng)求流水號(hào),如果下游系統(tǒng)上次服務(wù)調(diào)用時(shí)沒(méi)有成功,則重新完成本次服務(wù);如果已經(jīng)成功完成,但是由于返回超時(shí)等原因,則不重復(fù)執(zhí)行,直接返回交易已成功。

一些基本的規(guī)范說(shuō)明:
- 全局流水號(hào)由渠道生成,并在整個(gè)服務(wù)調(diào)用鏈路上保持不變;
- 在所有場(chǎng)景下,對(duì)客戶(或者用戶)展示的都是全局流水號(hào),請(qǐng)求流水號(hào)只會(huì)在全局流水號(hào)不能區(qū)分的時(shí)候才使用;
- 請(qǐng)求流水號(hào)由上游請(qǐng)求系統(tǒng)調(diào)用下游系統(tǒng)時(shí)生成,代表唯一一次服務(wù)請(qǐng)求;
- 全局流水號(hào)和請(qǐng)求流水號(hào)都放在報(bào)文頭中,始終傳遞;
反向調(diào)用
這里的反向調(diào)用指的是原服務(wù)已經(jīng)成功處理(也可能沒(méi)有成功處理)的情況下,根據(jù)業(yè)務(wù)規(guī)定或者用戶發(fā)起對(duì)原始服務(wù)進(jìn)行逆操作,一般叫這類服務(wù)為沖正,對(duì)應(yīng)的賬務(wù)處理是抹賬。在SOA架構(gòu)體系下,需要遵循原路來(lái)、原路沖的處理原則,否則會(huì)因?yàn)檎也坏皆挤?wù)調(diào)用請(qǐng)求而沖正失敗。
從數(shù)據(jù)完整性上也應(yīng)該將交易鏈路中所有節(jié)點(diǎn)都做沖正操作,還原業(yè)務(wù)狀態(tài)、回寫賬戶、恢復(fù)額度等處理。所以從原則上,支持客戶沖正的場(chǎng)景,在所有服務(wù)請(qǐng)求鏈路上,都應(yīng)該提供相應(yīng)服務(wù)的沖正服務(wù),以便基于場(chǎng)景沖正時(shí)進(jìn)行調(diào)用。
- 沖正使用全局流水號(hào)還是請(qǐng)求流水號(hào)?
沖正是一個(gè)業(yè)務(wù)概念,可以是客戶發(fā)起的,也可能是系統(tǒng)在交易失敗后自動(dòng)發(fā)起的。對(duì)于客戶發(fā)起的沖正,其面向的是一個(gè)完整的交易請(qǐng)求,也就是全局流水號(hào);對(duì)于系統(tǒng)間自動(dòng)沖正,其面向的是一次服務(wù)調(diào)用,所以使用請(qǐng)求流水號(hào)。也就是說(shuō),需要在人機(jī)交互切面上(渠道),進(jìn)行全局流水號(hào)和請(qǐng)求流水號(hào)的轉(zhuǎn)換,客戶在主動(dòng)發(fā)起沖正時(shí),輸入的是全局流水號(hào),而渠道需要根據(jù)此全局流水號(hào),找到原始的請(qǐng)求流水號(hào),并使用此請(qǐng)求流水號(hào)向下游系統(tǒng)發(fā)起沖正。下游系統(tǒng)再轉(zhuǎn)換為本系統(tǒng)的請(qǐng)求流水號(hào)發(fā)起后續(xù)沖正服務(wù)調(diào)用,以此完成整個(gè)交易鏈路的反向沖正。
系統(tǒng)間沖正應(yīng)使用請(qǐng)求流水號(hào)的第二個(gè)原因是,部分業(yè)務(wù)場(chǎng)景可能涉及到對(duì)統(tǒng)一系統(tǒng)的多次服務(wù)調(diào)用,而沖正時(shí)可能只沖正部分服務(wù)。這時(shí)候如果使用全局流水號(hào)就無(wú)法將前后多次調(diào)用的請(qǐng)求區(qū)分開,比如某些銀行在跨分支行記賬時(shí),對(duì)記賬失敗的流水只沖正當(dāng)前節(jié)點(diǎn),而不是對(duì)整個(gè)交易請(qǐng)求進(jìn)行沖正。
也有一些銀行系統(tǒng)為了簡(jiǎn)化系統(tǒng)調(diào)用關(guān)系,只沖賬務(wù)性流水,而對(duì)中間的業(yè)務(wù)狀態(tài)(比如中間業(yè)務(wù)的狀態(tài)、支付的狀態(tài)等)并不關(guān)注,為了簡(jiǎn)單起見,直接到核心沖正站賬務(wù)流水,這種方式也叫抹賬。根據(jù)我們上面的分析,這時(shí)候如果使用請(qǐng)求流水號(hào)則找不到當(dāng)前業(yè)務(wù)的交易流水,需要使用全局流水號(hào)進(jìn)行沖正。
總結(jié):原則上,對(duì)于沖正業(yè)務(wù),客戶輸入的應(yīng)該是全局流水號(hào),而系統(tǒng)服務(wù)調(diào)用應(yīng)使用請(qǐng)求流水號(hào);但是不能一概而論,需要根據(jù)業(yè)務(wù)場(chǎng)景分析是對(duì)整個(gè)業(yè)務(wù)場(chǎng)景的沖正還是一次服務(wù)調(diào)用的沖正。
其它后續(xù)服務(wù)調(diào)用
基于單筆業(yè)務(wù)流水的后續(xù)操作,比如對(duì)原業(yè)務(wù)流水的查詢、補(bǔ)錄、修改等業(yè)務(wù)動(dòng)作,嚴(yán)格來(lái)說(shuō)沖正也屬于這類操作;將沖正與此類業(yè)務(wù)分開主要是因?yàn)榇祟悩I(yè)務(wù)可能與原服務(wù)調(diào)用鏈路不一致。參考下圖,有可能原始業(yè)務(wù)出于組裝服務(wù)場(chǎng)景的需要,經(jīng)過(guò)了B系統(tǒng),而后續(xù)業(yè)務(wù)因?yàn)橹赶蛐?、針?duì)性較明確,不需要復(fù)雜的處理邏輯,這時(shí)候可以直接調(diào)用C系統(tǒng)的其它服務(wù)。

比如說(shuō):
- 記賬流水查詢業(yè)務(wù),記賬有可能從很多外圍的業(yè)務(wù)系統(tǒng)發(fā)起到核心記賬,而查詢則只需要到核心查詢即可;
- 存款代理人信息維護(hù)業(yè)務(wù),該業(yè)務(wù)是對(duì)存款業(yè)務(wù)相關(guān)的代理人時(shí)候維護(hù)的,需要到核心登記(歷史包袱);存款業(yè)務(wù)辦理有幾十個(gè)場(chǎng)景,而代理人維護(hù)則只需要直接到核心即可;
對(duì)于此類業(yè)務(wù),除需要傳遞本業(yè)務(wù)的全局流水號(hào)、請(qǐng)求流水號(hào)以外,還需要將原業(yè)務(wù)的流水號(hào)作為服務(wù)調(diào)用參數(shù)傳遞。
這類服務(wù)應(yīng)使用全局流水號(hào)還是請(qǐng)求流水號(hào)?
這又是一個(gè)沒(méi)有標(biāo)準(zhǔn)答案的問(wèn)題。如果后續(xù)業(yè)務(wù)的服務(wù)調(diào)用路徑和原業(yè)務(wù)調(diào)用路徑一致,比如說(shuō)原業(yè)務(wù)是A->B->C->D,后續(xù)業(yè)務(wù)也是A->B->C->D,那么此時(shí)可以使用“原業(yè)務(wù)請(qǐng)求流水號(hào)”作為服務(wù)參數(shù);如果調(diào)用路徑不一致,比如說(shuō)后續(xù)業(yè)務(wù)是后續(xù)業(yè)務(wù)也是A->B->D,那么使用“原業(yè)務(wù)請(qǐng)求流水號(hào)”作為調(diào)用參數(shù)則找不到原業(yè)務(wù)流水,更無(wú)從談起后續(xù)業(yè)務(wù)。參考上圖,其實(shí)是一個(gè)錯(cuò)誤的示例,你發(fā)現(xiàn)了嗎???
批量業(yè)務(wù)服務(wù)
批量業(yè)務(wù)指的是前臺(tái)提交一個(gè)文件,或者直接在頁(yè)面上錄入多筆,進(jìn)行提交的場(chǎng)景。與單筆業(yè)務(wù)不同的是,批量業(yè)務(wù)中一個(gè)業(yè)務(wù)流水號(hào)對(duì)應(yīng)多個(gè)業(yè)務(wù)明細(xì),為了標(biāo)記每一筆業(yè)務(wù)明細(xì),需要對(duì)每一筆業(yè)務(wù)明細(xì)都生成獨(dú)立的流水號(hào)。這涉及到兩種模式:真批量和假批量。
- 真批量:后端業(yè)務(wù)系統(tǒng)提供的服務(wù)接口中,接收的是批量文件或者列表明細(xì)數(shù)據(jù),在前端到中間系統(tǒng)的整個(gè)服務(wù)鏈路中都不對(duì)批量文件進(jìn)行解析,由終端后臺(tái)應(yīng)用進(jìn)行批量到明細(xì)的拆解。
- 假批量:與真批量對(duì)應(yīng),批量文件或者明細(xì)任務(wù)的拆解有前端應(yīng)用或者中間應(yīng)用拆解,并以單筆服務(wù)循環(huán)調(diào)用的方式向后端應(yīng)用發(fā)起。
在此我們不討論兩種模式的優(yōu)劣,從對(duì)流水號(hào)的應(yīng)用來(lái)說(shuō),批量數(shù)據(jù)在哪里拆解,就會(huì)在哪個(gè)系統(tǒng)產(chǎn)生流水號(hào)與批量數(shù)據(jù)明細(xì)號(hào)的對(duì)應(yīng)關(guān)系。如果在前端拆解,則全局流水號(hào)和業(yè)務(wù)明細(xì)是一一對(duì)應(yīng)關(guān)系,如下表。
| 業(yè)務(wù)明細(xì)序號(hào) | 客戶號(hào) | 其它屬性…… | 全局流水號(hào) |
|---|---|---|---|
| 1 | C001 | …… | QJ……001 |
| 2 | C004 | …… | QJ……002 |
如果在后端拆解,則全局流水號(hào)和業(yè)務(wù)明細(xì)是一對(duì)多的關(guān)系,這時(shí)候與業(yè)務(wù)明細(xì)對(duì)應(yīng)的是后臺(tái)的系統(tǒng)內(nèi)業(yè)務(wù)流水號(hào),如下表。
| 業(yè)務(wù)明細(xì)序號(hào) | 客戶號(hào) | 其它屬性…… | 全局流水號(hào) | 后臺(tái)系統(tǒng)流水號(hào) |
|---|---|---|---|---|
| 1 | C001 | …… | QJ……001 | CORE0001 |
| 2 | C004 | …… | QJ……001 | CORE0002 |
好,該死的問(wèn)題又來(lái)了:應(yīng)該使用真批量還是假批量?
這一次我們可以做一個(gè)有傾向性的回答:請(qǐng)盡可能的使用真批量。從業(yè)務(wù)角度,批量業(yè)務(wù)是后臺(tái)應(yīng)用本身應(yīng)提供的一種服務(wù);從技術(shù)角度,假批量對(duì)性能、網(wǎng)絡(luò)消耗、客戶體驗(yàn)等方面都不佳。從流水號(hào)使用的角度,對(duì)批量業(yè)務(wù)的查詢應(yīng)基于全局流水號(hào)和批量業(yè)務(wù)序號(hào)兩個(gè)條件查詢。如果是對(duì)后臺(tái)交易流水的查詢,則可以通過(guò)全局流水號(hào)查詢出整個(gè)批量信息后,再對(duì)具體某筆后臺(tái)流水定位??傊诤笈_(tái)實(shí)現(xiàn)批量沒(méi)有任何業(yè)務(wù)邏輯上的困難。
TO BE CONTINUED……
附錄:本文編寫思路
