本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其是涉及一種機(jī)票風(fēng)控規(guī)則的管理方法及系統(tǒng)。
背景技術(shù):
現(xiàn)在越來越多的人通過網(wǎng)絡(luò)定購機(jī)票,很多機(jī)票定購網(wǎng)站制定風(fēng)控規(guī)則實現(xiàn)對機(jī)票的管理,現(xiàn)有的風(fēng)控系統(tǒng)中,為了適應(yīng)不同的業(yè)務(wù)變化,通常采取重新發(fā)布規(guī)則系統(tǒng)的方法或者改變簡單閾值的配置系統(tǒng)方法。
現(xiàn)在的風(fēng)控規(guī)則在產(chǎn)品根據(jù)經(jīng)驗歸納總結(jié)的情況下,風(fēng)控規(guī)則的頻繁變換在所難免,重新發(fā)布系統(tǒng)對生產(chǎn)線而言風(fēng)險較大,同時配置系統(tǒng)修改的值只是一些簡單的閾值,無法應(yīng)對風(fēng)控規(guī)則的頻繁變化。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是為了克服現(xiàn)有技術(shù)中應(yīng)對風(fēng)控規(guī)則的頻繁變化,重新發(fā)布系統(tǒng)對生產(chǎn)線而言風(fēng)險較大的缺陷,提供一種機(jī)票風(fēng)控規(guī)則的管理方法及系統(tǒng)。
本發(fā)明是通過下述技術(shù)方案來解決上述技術(shù)問題:
一種機(jī)票風(fēng)控規(guī)則的管理方法,所述管理方法包括:
s1、更新數(shù)據(jù)庫中規(guī)則文件,所述規(guī)則文件的內(nèi)容包含機(jī)票風(fēng)控規(guī)則,所述規(guī)則文件的類型為groovy文件;
s2、接收外部請求信息,從所述數(shù)據(jù)庫中獲取所述外部請求信息對應(yīng)的規(guī)則文件;
s3、調(diào)用groovy引擎,執(zhí)行所述對應(yīng)的規(guī)則文件。
較佳地,步驟s2包括:
s21、保存所述數(shù)據(jù)庫中的規(guī)則文件至本地;
s22、接收外部請求信息,從本地獲取所述外部請求信息對應(yīng)的規(guī)則文件。
較佳地,步驟s1還包括:
更新所述數(shù)據(jù)庫中規(guī)則文件的版本信息;
步驟s21包括:
s211、保存所述數(shù)據(jù)庫中的規(guī)則文件和所述規(guī)則文件對應(yīng)的版本信息至本地;
s212、定期獲取所述數(shù)據(jù)庫中的版本信息,與本地版本信息作比較是否相同,若否,則保存所述數(shù)據(jù)庫中的版本信息對應(yīng)的規(guī)則文件至本地。
較佳地,步驟s3還包括:
將所述對應(yīng)的規(guī)則文件緩存至內(nèi)存。
一種機(jī)票風(fēng)控規(guī)則的管理系統(tǒng),所述管理系統(tǒng)包括數(shù)據(jù)庫、更新模塊、查詢模塊和執(zhí)行模塊;
所述數(shù)據(jù)庫包括規(guī)則文件,所述規(guī)則文件的內(nèi)容包含機(jī)票風(fēng)控規(guī)則,所述規(guī)則文件的類型為groovy文件;
所述更新模塊用于更新所述數(shù)據(jù)庫中規(guī)則文件;
所述查詢模塊用于接收外部請求信息,從所述數(shù)據(jù)庫中獲取所述外部請求信息對應(yīng)的規(guī)則文件;
所述執(zhí)行模塊用于調(diào)用groovy引擎,執(zhí)行所述對應(yīng)的規(guī)則文件。
較佳地,所述查詢模塊還用于保存所述數(shù)據(jù)庫中的規(guī)則文件至本地,接收外部請求信息,從本地獲取所述外部請求信息對應(yīng)的規(guī)則文件。
較佳地,所述更新模塊還用于更新所述數(shù)據(jù)庫中規(guī)則文件的版本信息;
所述查詢模塊還用于保存所述數(shù)據(jù)庫中的規(guī)則文件和所述規(guī)則文件對應(yīng)的版本信息至本地,定期獲取所述數(shù)據(jù)庫中的版本信息,與本地版本信息作比較是否相同,若否,則保存所述數(shù)據(jù)庫中的版本信息對應(yīng)的規(guī)則文件至本地。
較佳地,所述執(zhí)行模塊還用于將所述對應(yīng)的規(guī)則文件緩存至內(nèi)存。
為了應(yīng)對頻繁變化的規(guī)則,本發(fā)明引入了groovy(一種編程語言)這一動態(tài)語言,在不重新發(fā)規(guī)則的情況下,無縫地修改、增加和刪除。
groovy語言是在java(一種編程語言)平臺上的、具有像python(一種編程語言)、ruby(一種編程語言)和smalltalk(一種編程語言)語言特性的靈活動態(tài)語言,groovy保證了這些特性,并且可以像java語法一樣被java開發(fā)者使用。java虛擬機(jī)可以動態(tài)執(zhí)行該groovy文件,不需要java語言的再編譯、再部署,又能與java語言的良好兼容,而且該語言與java語言相似,減少了學(xué)習(xí)的成本,可以快速上手。
本發(fā)明的積極進(jìn)步效果在于:
本發(fā)明利用groovy動態(tài)語言的特征,將風(fēng)控規(guī)則中復(fù)雜的邏輯進(jìn)行數(shù)據(jù)庫配置化,通過數(shù)據(jù)庫中g(shù)roovy文件版本的變化,動態(tài)獲取以及執(zhí)行數(shù)據(jù)庫中的groovy文件,從而讓規(guī)則邏輯的修改能夠快速更新、測試以及部署,降低發(fā)布的風(fēng)險,提高產(chǎn)品的迭代速度,同時應(yīng)用緩存技術(shù),降低因使用動態(tài)語言帶來的性能降低的影響。
附圖說明
圖1為本發(fā)明實施例1的機(jī)票風(fēng)控規(guī)則的管理方法的流程圖。
圖2為本發(fā)明實施例2的機(jī)票風(fēng)控規(guī)則的管理方法的流程圖。
圖3為本發(fā)明實施例3的機(jī)票風(fēng)控規(guī)則的管理方法的流程圖。
圖4為本發(fā)明實施例4的機(jī)票風(fēng)控規(guī)則的管理系統(tǒng)的模塊示意圖。
具體實施方式
下面通過實施例的方式進(jìn)一步說明本發(fā)明,但并不因此將本發(fā)明限制在所述的實施例范圍之中。
實施例1
如圖1所示,本實施例提供一種機(jī)票風(fēng)控規(guī)則的管理方法,所述管理方法包括:
步驟101、更新數(shù)據(jù)庫中規(guī)則文件,所述規(guī)則文件的內(nèi)容包含機(jī)票風(fēng)控規(guī)則,所述規(guī)則文件的類型為groovy文件;
步驟102、接收外部請求信息,從所述數(shù)據(jù)庫中獲取所述外部請求信息對應(yīng)的規(guī)則文件;
步驟103、調(diào)用groovy引擎,執(zhí)行所述對應(yīng)的規(guī)則文件。
本實施例通過更新數(shù)據(jù)庫中g(shù)roovy文件,根據(jù)外部請求信息動態(tài)獲取以及執(zhí)行數(shù)據(jù)庫中的groovy文件,從而讓規(guī)則邏輯的修改能夠快速更新、測試以及部署,降低發(fā)布的風(fēng)險,提高產(chǎn)品的迭代速度。
實施例2
本實施例提供一種機(jī)票風(fēng)控規(guī)則的管理方法,本實施例與實施例1相比,區(qū)別在于,如圖2所示,本實施例的管理方法的步驟102包括:
步驟1021、保存所述數(shù)據(jù)庫中的規(guī)則文件至本地;
步驟1022、接收外部請求信息,從本地獲取所述外部請求信息對應(yīng)的規(guī)則文件。
本實施例通過將數(shù)據(jù)庫中的規(guī)則文件先保存在本地,當(dāng)接收到外部請求信息時,從本地獲取所述外部請求信息對應(yīng)的規(guī)則文件,避免頻繁操作數(shù)據(jù)庫,減少與數(shù)據(jù)庫交互時間,提高運(yùn)行效率。
優(yōu)選地,步驟103還包括:
將所述對應(yīng)的規(guī)則文件緩存至內(nèi)存。
調(diào)用groovy引擎,執(zhí)行所述對應(yīng)的規(guī)則文件過程,groovy規(guī)則文件對象在使用時都會重新生成,對虛擬機(jī)的垃圾回收造成一定的壓力,導(dǎo)致java的性能會降低。本發(fā)明對groovy的源碼增加了一層包裝,增加包裝的內(nèi)容主要是修改groovy引擎之前使用的邏輯,包裝前執(zhí)行g(shù)roovy文件時,每次都會被groovy引擎動態(tài)翻譯成字節(jié)碼,加載到內(nèi)存中,groovyperm(永久代)區(qū)滿了的話會觸發(fā)fullgc(收集生命周期短的區(qū)域和生命周期比較長的區(qū)域?qū)φ麄€堆進(jìn)行垃圾回收)來回收無用的腳本,增加了加載和垃圾回收的時間。包裝后,groovy規(guī)則文件經(jīng)過編譯之后生成java字節(jié)碼,被groovy引擎加載到內(nèi)存,該groovy文件的字節(jié)碼內(nèi)容就會被緩存起來,下次再對同一個文件進(jìn)行執(zhí)行時,直接從內(nèi)存中取出,然后執(zhí)行。通過對groovy規(guī)則文件對象進(jìn)行緩存,減少對象的生存和垃圾回收操作,使整體的系統(tǒng)有了2倍的性能提升。
實施例3
本實施例提供一種機(jī)票風(fēng)控規(guī)則的管理方法,本實施例與實施例2相比,如圖3所示,區(qū)別在于本實施例的管理方法的步驟101還包括:
更新所述數(shù)據(jù)庫中規(guī)則文件的版本信息;
步驟1021包括:
步驟10211、保存所述數(shù)據(jù)庫中的規(guī)則文件和所述規(guī)則文件對應(yīng)的版本信息至本地;
步驟10212、定期獲取所述數(shù)據(jù)庫中的版本信息;
步驟10213、將上步驟獲得的版本信息與本地版本信息作比較是否相同,若否,則執(zhí)行步驟10214,若是,則返回步驟10212。
步驟10214、保存所述數(shù)據(jù)庫中的版本信息對應(yīng)的規(guī)則文件至本地。
本實施例通過使用規(guī)則文件的版本信息對規(guī)則文件進(jìn)行管理,當(dāng)版本信息有變化更新時,再從數(shù)據(jù)庫獲取新版本的規(guī)則文件保存至本地,避免了版本信息沒有更新時重復(fù)從數(shù)據(jù)庫獲取規(guī)則文件并保存至本地的動作,更進(jìn)一步減少與數(shù)據(jù)庫交互時間,提高運(yùn)行效率。
實施例4
本實施例提供一種機(jī)票風(fēng)控規(guī)則的管理系統(tǒng),如圖4所示,所述管理系統(tǒng)包括數(shù)據(jù)庫201、更新模塊202、查詢模塊203和執(zhí)行模塊204;
所述數(shù)據(jù)庫201包括規(guī)則文件,所述規(guī)則文件的內(nèi)容包含機(jī)票風(fēng)控規(guī)則,所述規(guī)則文件的類型為groovy文件;
所述更新模塊202用于更新所述數(shù)據(jù)庫201中規(guī)則文件;
所述查詢模塊203用于接收外部請求信息,從所述數(shù)據(jù)庫201中獲取所述外部請求信息對應(yīng)的規(guī)則文件;
所述執(zhí)行模塊204用于調(diào)用groovy引擎,執(zhí)行所述對應(yīng)的規(guī)則文件。
優(yōu)選地,所述查詢模塊203還用于保存所述數(shù)據(jù)庫201中的規(guī)則文件至本地,接收外部請求信息,從本地獲取所述外部請求信息對應(yīng)的規(guī)則文件。
優(yōu)選地,所述更新模塊202還用于更新所述數(shù)據(jù)庫201中規(guī)則文件的版本信息;
所述查詢模塊203還用于保存所述數(shù)據(jù)庫201中的規(guī)則文件和所述規(guī)則文件對應(yīng)的版本信息至本地,定期獲取所述數(shù)據(jù)庫201中的版本信息,與本地版本信息作比較是否相同,若否,則保存所述數(shù)據(jù)庫201中的版本信息對應(yīng)的規(guī)則文件至本地。
優(yōu)選地,所述執(zhí)行模塊204還用于將所述對應(yīng)的規(guī)則文件緩存至內(nèi)存。
雖然以上描述了本發(fā)明的具體實施方式,但是本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,這僅是舉例說明,本發(fā)明的保護(hù)范圍是由所附權(quán)利要求書限定的。本領(lǐng)域的技術(shù)人員在不背離本發(fā)明的原理和實質(zhì)的前提下,可以對這些實施方式做出多種變更或修改,但這些變更和修改均落入本發(fā)明的保護(hù)范圍。