測(cè)試測(cè)試時(shí),發(fā)現(xiàn)一個(gè)bug,訂單的xx支付時(shí)間比下單時(shí)間早一秒。經(jīng)過(guò)查看代碼,發(fā)現(xiàn)生成下單時(shí)間的方式是在java中new Date( ),然后將值插入數(shù)據(jù)庫(kù),然后xx支付時(shí)間是在mybatis的xml中使用數(shù)據(jù)庫(kù)now( )函數(shù)在數(shù)據(jù)庫(kù)服務(wù)器生成的,由于java應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器時(shí)鐘不同步,所以造成了這種不確定性問(wèn)題。
解決方法:
同步j(luò)ava應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器的時(shí)鐘,這個(gè)需要運(yùn)維寫(xiě)腳本維護(hù),并且時(shí)間久了還是會(huì)產(chǎn)生誤差。不過(guò)可以定時(shí)進(jìn)行時(shí)鐘同步的更新。將所有有關(guān)訂單時(shí)間的值均用now( )函數(shù)在數(shù)據(jù)庫(kù)生成。這個(gè)比較容易修改,也不會(huì)再有問(wèn)題,因?yàn)槲覀兊臄?shù)據(jù)庫(kù)現(xiàn)在并沒(méi)有集群。但是我們的java應(yīng)用服務(wù)器是集群的,而這兩次訂單時(shí)間的是在兩次http請(qǐng)求中分別生成的,所以如果要均改為在java中生成時(shí)間,那么也將面臨java應(yīng)用服務(wù)器之間的時(shí)鐘同步問(wèn)題。新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注