近期負(fù)責(zé)提升支付渠道的可用性,做完后有些想法仰禽,寫出來和大家分享下;
需求的源頭:
用戶在進(jìn)行支付時(shí)纺蛆,有時(shí)候會出現(xiàn)銀行系統(tǒng)不可用吐葵、超時(shí)情況,導(dǎo)致用戶不知道明確的支付結(jié)果桥氏,那么用戶80%會進(jìn)行投訴温峭,客服處理完后,這個(gè)用戶就基本上和支付/電商平臺說再見了字支。
要滿足上面的需求凤藏,我們就需要關(guān)注以下幾個(gè)問題:
Q1:銀行系統(tǒng)出現(xiàn)異常是否能及時(shí)進(jìn)行故障隔離?
Q2:如果要隔離堕伪,是否能第一時(shí)間發(fā)現(xiàn)銀行系統(tǒng)出現(xiàn)異常揖庄?
Q3:如何判斷銀行系統(tǒng)出現(xiàn)了異常,異常的原因是什么欠雌?
其實(shí)這三個(gè)問題對應(yīng)的解決方案很明確:
Q1——我們需要一個(gè)路由系統(tǒng)
Q2——我們需要一個(gè)監(jiān)控系統(tǒng)
Q3——我們需要一個(gè)錯(cuò)誤碼表
在產(chǎn)品設(shè)計(jì)過程中蹄梢,我們按照Q3——>Q2——>Q1這種自下而上的方法去進(jìn)行;
產(chǎn)品設(shè)計(jì):
我們需要一個(gè)錯(cuò)誤碼表:
一家支付公司或電商平臺接入的銀行渠道都很多富俄,而每家銀行都有自己的錯(cuò)誤返回規(guī)范禁炒,那么這時(shí)候我們就需要將N家銀行返回的錯(cuò)誤碼進(jìn)行抽象而咆,建立一套錯(cuò)誤碼表;
錯(cuò)誤碼的拆分維度有很多種齐苛,我是按照渠道可用——>用戶信息校驗(yàn)——>交易來分類的翘盖;渠道不可用、用戶信息校驗(yàn)凹蜂、交易這3個(gè)只是大類馍驯,還需要針對每個(gè)大類進(jìn)行二次拆分,細(xì)分出小類玛痊,小類分的越細(xì)汰瘫,遇到問題定位的也就越快,同時(shí)對接下來的兩步也就更有幫助擂煞;
我們需要一個(gè)監(jiān)控系統(tǒng):
對于監(jiān)控系統(tǒng)混弥,存在著一些基本要求:
1.監(jiān)控的對象要具體,最好能細(xì)分
2.監(jiān)控的指標(biāo)要足夠明確对省,每一個(gè)獨(dú)立指標(biāo)的計(jì)算方式要簡單
3.監(jiān)控指標(biāo)要有時(shí)效性
那么蝗拿,針對支付渠道的監(jiān)控系統(tǒng),監(jiān)控的對象應(yīng)該要具體到所有接入的銀行渠道蒿涎;監(jiān)控指標(biāo)要對每個(gè)銀行進(jìn)行個(gè)性化定制哀托,因?yàn)槊考毅y行的系統(tǒng)性能都不一樣;
監(jiān)控指標(biāo)設(shè)定的維度也很多劳秋,因?yàn)榍涝谡麄€(gè)支付鏈路的底層仓手,對系統(tǒng)層面要求比較高,所以監(jiān)控的指標(biāo)如下:
1.每個(gè)渠道調(diào)用的平均耗時(shí)
2.每個(gè)渠道調(diào)用的系統(tǒng)成功率
3.每個(gè)渠道調(diào)用的耗時(shí)峰值
4.每個(gè)渠道調(diào)用的異常訂單數(shù)
監(jiān)控指標(biāo)的時(shí)間跨度建議根據(jù)業(yè)務(wù)量來設(shè)置玻淑,一般采用秒級或者分級嗽冒;監(jiān)控指標(biāo)定義好后,我們就要為每個(gè)渠道設(shè)置告警規(guī)則补履,這些規(guī)則的閥值需要根據(jù)日常的交易情況和每個(gè)渠道自身的屬性進(jìn)行獨(dú)立設(shè)置添坊;而規(guī)則的觸發(fā)就要依靠渠道錯(cuò)誤碼表了;
這樣箫锤,監(jiān)控系統(tǒng)就可以在某個(gè)渠道出現(xiàn)問題時(shí)帅腌,根據(jù)錯(cuò)誤碼表來分析當(dāng)前的異常屬于哪一類,是否影響到用戶的正常支付麻汰,如果影響了,就會發(fā)出告警戚篙;
我們需要一個(gè)路由系統(tǒng):
一個(gè)支付產(chǎn)品最終于能讓用戶順利的&愉快的完成支付五鲫;而讓用戶順利的完成支付依賴于出現(xiàn)異常的通道
能否被及時(shí)的隔離掉,同時(shí)能否將用戶帶到可以正常支付的通道上岔擂,路由功能做的就是這件事情位喂;
為此浪耘,我們也需要在路由系統(tǒng)中對每一個(gè)渠道設(shè)立一個(gè)路由規(guī)則;這個(gè)規(guī)則將告訴路由系統(tǒng)當(dāng)渠道出現(xiàn)問題時(shí)塑崖,該如何隔離七冲;
路由規(guī)則的設(shè)定有一種比較簡單的方法:渠道A在{num}分鐘內(nèi)觸發(fā)了{num}次告警,那么就執(zhí)行渠道隔離(關(guān)閉或者切換)的動作规婆;
這樣在通道出現(xiàn)問題時(shí)就可以及時(shí)隔離掉澜躺,保證用戶正常的支付了;
結(jié)語:
我們可以把支付渠道可用性看作一個(gè)大的系統(tǒng)抒蚜,這個(gè)大系統(tǒng)是由3個(gè)獨(dú)立的小系統(tǒng)組成的掘鄙;它是一個(gè)自下而上的,閉環(huán)的體系嗡髓;引用《失控》中的思想操漠,一個(gè)復(fù)雜的系統(tǒng)是由若干個(gè)獨(dú)立的小系統(tǒng)協(xié)同合作組成的,每個(gè)小系統(tǒng)越簡單饿这,它們組合在一起后浊伙,就能展現(xiàn)出更強(qiáng)大的組織性和發(fā)展性;
目前只是建立了一個(gè)最原始的生態(tài)长捧,還存在著部分的人工干預(yù)嚣鄙,那么后期我們就要考慮,現(xiàn)在人做的事情唆姐,機(jī)器能不能做拗慨;我們能不能在用戶提交支付之前就幫Ta選擇好最適合的支付渠道;