SOA架構(gòu)體系下流水號(hào)設(shè)計(jì)思路探討(2)

接上篇焊傅,時(shí)間長了剂陡,思路都斷了。本來這章要寫流水號(hào)的使用場景狐胎,一看內(nèi)容第三章已經(jīng)寫得差不多了鸭栖,直接跳過。

4握巢、流水號(hào)的技術(shù)實(shí)現(xiàn)

  • 流水號(hào)的生成

根據(jù)上面的分析晕鹊,全局流水號(hào)是代表一個(gè)服務(wù)場景的,是用戶向應(yīng)用系統(tǒng)發(fā)起的一次服務(wù)請求镜粤,如果把全企業(yè)所有的應(yīng)用系統(tǒng)看做一個(gè)整體的話捏题,那么第一次向這個(gè)有機(jī)整體發(fā)起訪問請求的系統(tǒng)就是生成全局流水號(hào)的時(shí)間。一般情況下肉渴,業(yè)務(wù)發(fā)起方都是渠道公荧,也就是我們所說的人機(jī)交互界面,再通俗點(diǎn)是有前端頁面的系統(tǒng)同规。特別的循狰,也存在直接對外提供的服務(wù)接口窟社,比如銀企直連、支付接口以及其他的金融開放服務(wù)绪钥,此時(shí)灿里,負(fù)責(zé)生成全局流水號(hào)的就是提供服務(wù)開放接口的系統(tǒng);另外還存在系統(tǒng)后臺(tái)自動(dòng)執(zhí)行的定時(shí)或批量任務(wù)程腹,其全局流水應(yīng)是批量觸發(fā)系統(tǒng)匣吊,如果是全行作業(yè)統(tǒng)一管理,則統(tǒng)一作業(yè)管理系統(tǒng)生成寸潦,如果各自獨(dú)立色鸳,則業(yè)務(wù)觸發(fā)系統(tǒng)生成。

請求流水號(hào)是上游向下游系統(tǒng)發(fā)起請求的時(shí)機(jī)由上游系統(tǒng)生成的见转,代表的是一次請求的實(shí)例命雀。

  • 有意義還是無意義?

現(xiàn)在的技術(shù)傾向是流水號(hào)無意義化斩箫,一是從性能角度考慮可以更快的生成流水號(hào)吏砂,二是將流水號(hào)和業(yè)務(wù)解耦,流水號(hào)只充當(dāng)純粹的技術(shù)主鍵乘客,業(yè)務(wù)屬性由具體的業(yè)務(wù)字段去承載狐血。但是很多企業(yè)和系統(tǒng)并沒有這種勇氣直接拋棄流水號(hào)的中的業(yè)務(wù)屬性,這也有他們的理由寨典,一是習(xí)慣使然氛雪,通過流水號(hào)的解析可以直接獲取很多信息,在很多只有流水號(hào)的場景可以簡化數(shù)據(jù)庫的訪問耸成;二是如果這個(gè)流水號(hào)是對外開放的报亩,比如業(yè)務(wù)員,他們會(huì)更希望看到有規(guī)律的一組數(shù)字井氢;三是使用有意義的流水號(hào)對于問題定位弦追,在沒有統(tǒng)一的日志分析運(yùn)維平臺(tái)的情況下,的確可以節(jié)約時(shí)間花竞。說了這么多劲件,流水號(hào)中到底應(yīng)不應(yīng)該用有意義的屬性?你自己去判斷约急。

  • 流水號(hào)的編碼規(guī)則

既然說是編碼規(guī)則零远,前提就是說選擇了有意義的流水號(hào)的情況。一般情況下編碼要跟使用目的相結(jié)合厌蔽,比如對于全局流水號(hào)牵辣,你希望知道是哪個(gè)系統(tǒng)發(fā)起的、什么時(shí)間發(fā)起的奴饮、什么機(jī)構(gòu)發(fā)起的等等纬向,那么流水號(hào)中就可以把這些要素編進(jìn)去择浊。有些銀行希望知道柜面的業(yè)務(wù)是哪個(gè)柜員發(fā)起的,那么也可以把柜員編進(jìn)去逾条。分布式環(huán)境下琢岩,為了快速定位實(shí)例,也可以把實(shí)例編進(jìn)去师脂,一句話担孔,需要什么就把什么編進(jìn)去。以下是一些可供參考的維度:

  • 系統(tǒng)編碼

  • 日期

  • 機(jī)構(gòu)

  • 用戶

  • 實(shí)例碼

  • 業(yè)務(wù)類型

  • 校驗(yàn)碼

  • 順序碼

  • 高并發(fā)下的流水號(hào)生成

流水號(hào)的記錄有很多種方式危彩,常見的還是數(shù)據(jù)庫表記錄和sequence的方式攒磨,使用可持久化緩存也是一種方式。高并發(fā)下的處理方案無非是將于數(shù)據(jù)庫的IO操作轉(zhuǎn)化為對內(nèi)存的操作汤徽,具體實(shí)現(xiàn)上是從數(shù)據(jù)庫中一次性取出多個(gè)seq,例如一次性取出1000個(gè)放到緩存中灸撰,如果是數(shù)據(jù)庫記錄谒府,則數(shù)據(jù)庫序列號(hào)一次性+1000,如果是sequence浮毯,則sequence步長調(diào)整為1000完疫,使用的時(shí)候再從緩存中獲取。
如果是分布式债蓝,有兩種方式避免分布式流水號(hào)重復(fù)壳鹤,一是在流水號(hào)中增加實(shí)例號(hào)來區(qū)分;二是使用數(shù)據(jù)庫的排它鎖饰迹,避免多個(gè)應(yīng)用同時(shí)從數(shù)據(jù)庫中獲取流水號(hào)芳誓。

  • 流水號(hào)的記錄與檢索

流水的記錄常見也是兩種方式,文件和數(shù)據(jù)庫啊鸭,對于關(guān)鍵的交易流水锹淌,一般都會(huì)登記的數(shù)據(jù)庫中,對于一般性的服務(wù)訪問流水很多系統(tǒng)只記錄到日志文件中赠制。交易流水由于存在后續(xù)交易的可能性赂摆,如上篇中所說的基于原交易的查詢、沖正钟些、補(bǔ)錄等操作烟号,對流水的查詢能力要求比較高,需要應(yīng)用系統(tǒng)能根據(jù)全局流水號(hào)政恍、請求流水號(hào)汪拥、后臺(tái)系統(tǒng)流水號(hào)等多種維度查詢,這種實(shí)時(shí)查詢服務(wù)關(guān)系型數(shù)據(jù)庫系統(tǒng)最有優(yōu)勢抚垃,所以存數(shù)據(jù)庫還是不二選擇喷楣。
而對于一般服務(wù)訪問流水趟大,可能沒有業(yè)務(wù)含義,只是單純的代表一次服務(wù)請求铣焊,大多數(shù)查詢服務(wù)都是這種類型逊朽,這種流水只記錄服務(wù)流水日志即可,也可以將這種流水通過大字段結(jié)構(gòu)化文本的方式記錄到數(shù)據(jù)庫中曲伊;這種類型的數(shù)據(jù)如果沒有專用的分析工具在使用和檢索的時(shí)候比較費(fèi)時(shí)費(fèi)力叽讳,通過人肉運(yùn)維的方式顯然比較原始,現(xiàn)在的大數(shù)據(jù)分析平臺(tái)對于這種類型的數(shù)據(jù)處理起來得心應(yīng)手坟募,聯(lián)創(chuàng)智融也開發(fā)了一個(gè)專門的日志分析平臺(tái)岛蚤,iLog專門用于處理這種大文本交易流水,并且具有還原跨系統(tǒng)交易鏈路的能力懈糯,是系統(tǒng)運(yùn)維的好幫手哦涤妒。

結(jié)語


結(jié)束的有點(diǎn)倉促,都怪這個(gè)咖啡館空調(diào)給的太低了赚哗,太想逃離了她紫,快點(diǎn)打完了事。

The End.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末屿储,一起剝皮案震驚了整個(gè)濱河市贿讹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌够掠,老刑警劉巖民褂,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異疯潭,居然都是意外死亡赊堪,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門袁勺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來雹食,“玉大人,你說我怎么就攤上這事期丰∪阂叮” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵钝荡,是天一觀的道長街立。 經(jīng)常有香客問我,道長埠通,這世上最難降的妖魔是什么赎离? 我笑而不...
    開封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮端辱,結(jié)果婚禮上梁剔,老公的妹妹穿的比我還像新娘虽画。我一直安慰自己,他們只是感情好荣病,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開白布码撰。 她就那樣靜靜地躺著,像睡著了一般个盆。 火紅的嫁衣襯著肌膚如雪脖岛。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天颊亮,我揣著相機(jī)與錄音柴梆,去河邊找鬼。 笑死终惑,一個(gè)胖子當(dāng)著我的面吹牛绍在,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播雹有,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼揣苏,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了件舵?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬榮一對情侶失蹤脯厨,失蹤者是張志新(化名)和其女友劉穎铅祸,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體合武,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡临梗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了稼跳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盟庞。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖汤善,靈堂內(nèi)的尸體忽然破棺而出什猖,到底是詐尸還是另有隱情,我是刑警寧澤红淡,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布不狮,位于F島的核電站,受9級(jí)特大地震影響在旱,放射性物質(zhì)發(fā)生泄漏摇零。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一桶蝎、第九天 我趴在偏房一處隱蔽的房頂上張望驻仅。 院中可真熱鬧谅畅,春花似錦噪服、人聲如沸毡泻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至邪铲,卻和暖如春带到,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背英染。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來泰國打工揽惹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人四康。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓搪搏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親闪金。 傳聞我的和親對象是個(gè)殘疾皇子疯溺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354