0、前言
某企業(yè)級研究平臺,經(jīng)過十多年的迭代膀息,數(shù)據(jù)量高達(dá)數(shù)十億,功能項(xiàng)三千有余赫模,每天有數(shù)千用戶在線。多年的經(jīng)營蒸矛,主要借助外包的力量瀑罗,進(jìn)行平臺的代碼開發(fā)胸嘴,從頂盛時(shí)期的數(shù)百,如今僅剩數(shù)十人斩祭,人才流失劣像,迎來一批又批的新面孔。平臺從無到有摧玫,也留坑無數(shù)耳奕。時(shí)至今天,填不完坑诬像,明知資源缺乏吮铭,去又不得不苦苦維系。
眾多坑中颅停,也不乏系統(tǒng)崩塌的天坑存在,架構(gòu)師曰:“我猜問題掠拳,大約在.....地方癞揉。”這是要人命的節(jié)奏啊溺欧。
1喊熟、DatistEQ監(jiān)測方案
猜平臺的問題所在,2000萬行代碼姐刁,怎么能夠猜得了來呢芥牌?這是“重業(yè)務(wù)應(yīng)用、輕技術(shù)沉淀聂使,追求短期見效壁拉,忽視長期發(fā)展”的必然產(chǎn)物。是的柏靶,系統(tǒng)運(yùn)維缺乏有效的工具弃理。平臺每次產(chǎn)生約20萬條日志,這是性能提升的抓手屎蜓,也是填坑的關(guān)鍵所在痘昌。
于是,使用DatistEQ寫了10余張報(bào)表炬转,每天早上分析前一天的系統(tǒng)運(yùn)行狀況辆苔,給系統(tǒng)運(yùn)維的管理者。領(lǐng)導(dǎo)是第一生產(chǎn)力扼劈,只有領(lǐng)導(dǎo)者盯了驻啤,代碼人員才有可能動(dòng)起來,誰也不愿去翻前人的代碼测僵,這是常態(tài)街佑。
這些報(bào)表谢翎,主要包括當(dāng)天活躍用戶,每個(gè)用戶產(chǎn)生的日志量沐旨、高并發(fā)時(shí)段森逮、用戶下載量、API的訪問量及單次耗時(shí)等磁携。整個(gè)流程共使用了120多個(gè)節(jié)點(diǎn)褒侧,以Excel文檔的形式推送至用戶的手機(jī)端。
2谊迄、流程優(yōu)化
日報(bào)流程的上線運(yùn)行闷供,半年時(shí)間,發(fā)現(xiàn)大量隱含的BUG统诺,如下載過程中的大量IO歪脏、圖元選中時(shí)觸發(fā)的無效查詢等;更有奇葩的鍵盤壞了導(dǎo)致產(chǎn)生的大量請求粮呢。精確定位婿失,使得運(yùn)維人員有目標(biāo),有方向啄寡,大幅度提升了運(yùn)維的效率豪硅。這也是運(yùn)維關(guān)鍵所在——精確制導(dǎo)。
對于流程本身而言挺物,120個(gè)節(jié)點(diǎn)不算多懒浮,然而最終匯集到一個(gè)Excel表格,版面略顯雜亂识藤,美感不夠砚著,層次不夠清晰,運(yùn)維擴(kuò)展工作漸有疲憊感蹋岩±挡荩“想改,又不愿去改剪个⊙砥铮”
于是產(chǎn)生優(yōu)化流程的想法,優(yōu)化之后扣囊,雖節(jié)點(diǎn)增加到130多個(gè)乎折,但大幅度增強(qiáng)流程可讀性。
所謂優(yōu)化侵歇,就是借助于超節(jié)點(diǎn)骂澄,流程進(jìn)行分組,構(gòu)建若干個(gè)子流程惕虑,從而使流程的邏輯更加清晰坟冲。
超節(jié)點(diǎn)有一個(gè)特性就是磨镶,僅有一個(gè)入口和一個(gè)出口。這就限制了超節(jié)點(diǎn)的使用范圍健提。
首先是多個(gè)入口問題琳猫。
例如,用戶信息部分的分支節(jié)點(diǎn)私痹,需要從前節(jié)點(diǎn)引入三次數(shù)據(jù)脐嫂,同時(shí)前節(jié)點(diǎn),又為其他的分支提供數(shù)據(jù)源紊遵。創(chuàng)建超節(jié)點(diǎn)账千,違反了僅有一個(gè)入口的原則。
這可以用一個(gè)不產(chǎn)生實(shí)際使價(jià)值的節(jié)點(diǎn)暗膜,在前節(jié)點(diǎn)與后續(xù)節(jié)點(diǎn)之間做橋接匀奏,首選的列過濾節(jié)點(diǎn)。當(dāng)然其它節(jié)點(diǎn)也可以学搜。
其次是多個(gè)出口問題攒射。
多個(gè)出口問題的解決方案,是從多個(gè)出口選一個(gè)主要出口恒水,作為分支流程的唯一出口。而其它出口饲齐,則使用內(nèi)部分支節(jié)點(diǎn)钉凌,在流程內(nèi)部進(jìn)行數(shù)據(jù)跳轉(zhuǎn)。內(nèi)部分支的使用方法捂人,見下文御雕。
這里存在一個(gè)問題,對于內(nèi)部分支節(jié)點(diǎn)而言滥搭,可以指定任意節(jié)點(diǎn)酸纲。在后續(xù)的運(yùn)維過程中,有可能忽略這些節(jié)點(diǎn)存在瑟匆,導(dǎo)致流程無法運(yùn)行闽坡,這是個(gè)很大的風(fēng)險(xiǎn)。
最后是多個(gè)源頭生成Excel文檔的問題
流程中之所以這么復(fù)雜愁溜,是把10多個(gè)表單疾嗅,指向一個(gè)生成Excel文檔的節(jié)點(diǎn),使用界面過于復(fù)雜冕象。
對于Excel文件節(jié)點(diǎn)代承,屬于終端節(jié)點(diǎn),可以通過文件收集器渐扮,將其轉(zhuǎn)換為流數(shù)據(jù)论悴,向后扭轉(zhuǎn)掖棉。再使用Excel合并節(jié)點(diǎn),合成一個(gè)Excel文件膀估。
3幔亥、關(guān)鍵節(jié)點(diǎn)
內(nèi)部分支(V 2023 Q2版)
內(nèi)部分支節(jié)點(diǎn),將數(shù)據(jù)源定向到指定節(jié)點(diǎn)玖像,數(shù)據(jù)與指定節(jié)點(diǎn)數(shù)據(jù)相同紫谷。
首先,該節(jié)點(diǎn)是一個(gè)數(shù)據(jù)源節(jié)點(diǎn)捐寥;
其次笤昨,這個(gè)數(shù)據(jù)源節(jié)點(diǎn)的數(shù)據(jù),取決于它指向的節(jié)點(diǎn)握恳。
在流程中瞒窒,節(jié)點(diǎn)與節(jié)點(diǎn)之間通過鏈接定義數(shù)據(jù)的流向;流程通過超節(jié)點(diǎn)進(jìn)行分組乡洼,劃分成若干個(gè)子流程崇裁,可大幅度增加流程的可讀性,便于流程的維護(hù)工作束昵;通常情況下拔稳,鏈接不可跨越超節(jié)點(diǎn),這也大幅度限制了锹雏,流程自身節(jié)點(diǎn)的復(fù)用巴比。該節(jié)點(diǎn),可以在多個(gè)子流程中進(jìn)行跳轉(zhuǎn)礁遵,不受超節(jié)點(diǎn)的分組的限制轻绞。類似于VB語言中的Goto語句。
內(nèi)部分支的節(jié)點(diǎn)指定關(guān)系佣耐,支持兩種方式:
一政勃、文字篩選方式,在文本輸入框中兼砖,輸入關(guān)鍵字奸远,查找并指定節(jié)點(diǎn)。內(nèi)部分支節(jié)點(diǎn)通過節(jié)點(diǎn)ID映射讽挟,在查找過程中然走,需注意同名節(jié)點(diǎn)的ID。
二戏挡、快速映射方式芍瑞,也是推薦使用方式,鍵盤Ctrl+鼠標(biāo)左鍵褐墅,從源節(jié)點(diǎn)拖至內(nèi)部分支節(jié)點(diǎn)拆檬。請注意這里起止洪己,代表是數(shù)據(jù)的流向。數(shù)據(jù)映射完成后竟贯,源節(jié)點(diǎn)圖標(biāo)上答捕,將出現(xiàn)一個(gè)鏈圖標(biāo)。
三屑那、跳轉(zhuǎn)定位
大數(shù)據(jù)處理流程拱镐,跳轉(zhuǎn)與引用之間難以定位,系統(tǒng)支持?jǐn)?shù)據(jù)源與分支節(jié)點(diǎn)之間的跳轉(zhuǎn)定位持际。
結(jié)論
流程是一個(gè)邏輯產(chǎn)品沃琅,也是對現(xiàn)實(shí)的映射。需要的不斷地優(yōu)化蜘欲,以保持其可讀性益眉,釋放運(yùn)維人員的腦力,推進(jìn)流程產(chǎn)品的可持續(xù)發(fā)展姥份。