近期負(fù)責(zé)提升支付渠道的可用性,做完后有些想法,寫(xiě)出來(lái)和大家分享下;
需求的源頭:
用戶(hù)在進(jìn)行支付時(shí),有時(shí)候會(huì)出現(xiàn)銀行系統(tǒng)不可用、超時(shí)情況,導(dǎo)致用戶(hù)不知道明確的支付結(jié)果,那么用戶(hù)80%會(huì)進(jìn)行投訴,客服處理完后,這個(gè)用戶(hù)就基本上和支付/電商平臺(tái)說(shuō)再見(jiàn)了。
要滿(mǎn)足上面的需求,我們就需要關(guān)注以下幾個(gè)問(wèn)題:
Q1:銀行系統(tǒng)出現(xiàn)異常是否能及時(shí)進(jìn)行故障隔離?
Q2:如果要隔離,是否能第一時(shí)間發(fā)現(xiàn)銀行系統(tǒng)出現(xiàn)異常?
Q3:如何判斷銀行系統(tǒng)出現(xiàn)了異常,異常的原因是什么?
其實(shí)這三個(gè)問(wèn)題對(duì)應(yīng)的解決方案很明確:
Q1——我們需要一個(gè)路由系統(tǒng)
Q2——我們需要一個(gè)監(jiān)控系統(tǒng)
Q3——我們需要一個(gè)錯(cuò)誤碼表
在產(chǎn)品設(shè)計(jì)過(guò)程中,我們按照Q3——>Q2——>Q1這種自下而上的方法去進(jìn)行;
產(chǎn)品設(shè)計(jì):
我們需要一個(gè)錯(cuò)誤碼表:
一家支付公司或電商平臺(tái)接入的銀行渠道都很多,而每家銀行都有自己的錯(cuò)誤返回規(guī)范,那么這時(shí)候我們就需要將N家銀行返回的錯(cuò)誤碼進(jìn)行抽象,建立一套錯(cuò)誤碼表;
錯(cuò)誤碼的拆分維度有很多種,我是按照渠道可用——>用戶(hù)信息校驗(yàn)——>交易來(lái)分類(lèi)的;渠道不可用、用戶(hù)信息校驗(yàn)、交易這3個(gè)只是大類(lèi),還需要針對(duì)每個(gè)大類(lèi)進(jìn)行二次拆分,細(xì)分出小類(lèi),小類(lèi)分的越細(xì),遇到問(wèn)題定位的也就越快,同時(shí)對(duì)接下來(lái)的兩步也就更有幫助;
我們需要一個(gè)監(jiān)控系統(tǒng):
對(duì)于監(jiān)控系統(tǒng),存在著一些基本要求:
1.監(jiān)控的對(duì)象要具體,最好能細(xì)分
2.監(jiān)控的指標(biāo)要足夠明確,每一個(gè)獨(dú)立指標(biāo)的計(jì)算方式要簡(jiǎn)單
3.監(jiān)控指標(biāo)要有時(shí)效性
那么,針對(duì)支付渠道的監(jiān)控系統(tǒng),監(jiān)控的對(duì)象應(yīng)該要具體到所有接入的銀行渠道;監(jiān)控指標(biāo)要對(duì)每個(gè)銀行進(jìn)行個(gè)性化定制,因?yàn)槊考毅y行的系統(tǒng)性能都不一樣;
監(jiān)控指標(biāo)設(shè)定的維度也很多,因?yàn)榍涝谡麄€(gè)支付鏈路的底層,對(duì)系統(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ù)量來(lái)設(shè)置,一般采用秒級(jí)或者分級(jí);監(jiān)控指標(biāo)定義好后,我們就要為每個(gè)渠道設(shè)置告警規(guī)則,這些規(guī)則的閥值需要根據(jù)日常的交易情況和每個(gè)渠道自身的屬性進(jìn)行獨(dú)立設(shè)置;而規(guī)則的觸發(fā)就要依靠渠道錯(cuò)誤碼表了;
這樣,監(jiān)控系統(tǒng)就可以在某個(gè)渠道出現(xiàn)問(wèn)題時(shí),根據(jù)錯(cuò)誤碼表來(lái)分析當(dāng)前的異常屬于哪一類(lèi),是否影響到用戶(hù)的正常支付,如果影響了,就會(huì)發(fā)出告警;
我們需要一個(gè)路由系統(tǒng):
一個(gè)支付產(chǎn)品最終于能讓用戶(hù)順利的&愉快的完成支付;而讓用戶(hù)順利的完成支付依賴(lài)于出現(xiàn)異常的通道
能否被及時(shí)的隔離掉,同時(shí)能否將用戶(hù)帶到可以正常支付的通道上,路由功能做的就是這件事情;
為此,我們也需要在路由系統(tǒng)中對(duì)每一個(gè)渠道設(shè)立一個(gè)路由規(guī)則;這個(gè)規(guī)則將告訴路由系統(tǒng)當(dāng)渠道出現(xiàn)問(wèn)題時(shí),該如何隔離;
路由規(guī)則的設(shè)定有一種比較簡(jiǎn)單的方法:渠道A在{num}分鐘內(nèi)觸發(fā)了{num}次告警,那么就執(zhí)行渠道隔離(關(guān)閉或者切換)的動(dòng)作;
這樣在通道出現(xiàn)問(wèn)題時(shí)就可以及時(shí)隔離掉,保證用戶(hù)正常的支付了;
結(jié)語(yǔ):
我們可以把支付渠道可用性看作一個(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)越簡(jiǎn)單,它們組合在一起后,就能展現(xiàn)出更強(qiáng)大的組織性和發(fā)展性;
目前只是建立了一個(gè)最原始的生態(tài),還存在著部分的人工干預(yù),那么后期我們就要考慮,現(xiàn)在人做的事情,機(jī)器能不能做;我們能不能在用戶(hù)提交支付之前就幫Ta選擇好最適合的支付渠道;