精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

規則引擎技術在轉轉錢包的實踐

開發 項目管理
使用while循環來保持程序持續運行,用以判斷數字大小并記錄猜測次數。這是我們常采用的命令式編程方式:明確地指定每個步驟的執行順序和詳細的操作細節,例如變量的賦值、條件判斷、循環控制等。

1.什么是規則引擎和命令式編程

讓我們先來看一個有趣的猜數字小游戲:玩家需要猜測一個1到100之間的隨機數字。每次猜測后,系統會提示玩家所猜的數字是大于還是小于隨機數,玩家需要根據提示繼續猜測,直到猜中為止。

// 生成一個1到100之間的隨機整數
secret = random(1, 100)
// 初始化猜測次數為0
guesses = 0
// 循環猜數字
while true do
// 讀取用戶輸入的整數
guess = input("Guess a number between 1 and 100: ")
guesses = guesses + 1
// 判斷猜測結果
if guess < secret then
    print("Too low, try again.")
  else if guess > secret then
    print("Too high, try again.")
  else
    print("you guessed it in", guesses, "guesses!")
    break
  end if
end while

使用while循環來保持程序持續運行,用以判斷數字大小并記錄猜測次數。這是我們常采用的命令式編程方式:明確地指定每個步驟的執行順序和詳細的操作細節,例如變量的賦值、條件判斷、循環控制等。

再來看下規則引擎編程方式:

// 定義規則1
rule "Guess a number"
when
  $guess: Integer()
  $secret: Integer(intValue > $guess) 
  then
  System.out.println("Too low, try again.");
end
 //定義規則2
rule "Guess a number"
when
  $guess: Integer()
  $secret: Integer(intValue < $guess) 
  then
  System.out.println("Too high, try again.");
end
 //定義規則3
rule "Guess a number"
when
  $guess: Integer()
  $secret: Integer(intValue == $guess)
then
  System.out.println("you guessed it!");
end

上述代碼定義了3條規則,每條規則都包含執行條件(when語句)和動作(then語句)。其中,規則1指定:當輸入的數字小于initValue時,應打印 “Too low, try again.”。規則引擎編程方式是:將具體的代碼邏輯抽象為對應的業務規則,并通過這些規則的定義和執行來實現。

規則引擎編程價值

當我們能夠將業務邏輯代碼抽象為相應的業務規則時,業務人員就可以通過修改規則的條件和動作來快速迭代業務邏輯。這正是規則引擎的第一個價值:業務具有高度的可擴展性。

規則引擎的另一個價值是:項目具有高度的可維護性。與上述命令式編程方式實現的小游戲代碼相比,多個if-else語句不僅增加了代碼的復雜度和維護成本,還易導致代碼的可讀性和可維護性降低。而規則引擎方式使業務流程更加清晰和直觀,降低應用程序的耦合度,并在一定程度上實現業務與技術的分離。

總之,規則引擎是一種更高級的條件判斷手段。它通過規則的方式來決定行為,使用簡單的規則語言來表達復雜的業務邏輯,并具有更好的業務可擴展性和項目可維護性。

2.規則引擎在轉轉錢包的應用

轉轉錢包是一個有溫度的金融錢包。在這里,可以參與免息分期購物活動,使用安全快捷的小額借貸服務,甚至可以1元租用高端手機。歡迎大家來體驗和使用。

圖片

轉轉錢包

在最近對“我的錢包”進行的改版中,業務同學提出需求:根據各個用戶當前的業務狀態展示相應的分期、借錢以及租賃的卡片內容和頁面跳轉路徑。

圖片

如上圖所示的需求中,借錢卡片包含7種場景,分期卡片包含5種場景,手機租賃包含3種場景。如果按照常規的命令式編程方式:

  1. 代碼中將包含大量的if-else語句,可維護性會變差
  2. 一旦業務方想要調整某狀態下的交互行為,需要修改代碼并重新發版

規則引擎在執行前,需要計算所有用戶的業務狀態,而在某些場景下,命令式編程可能無需計算所有業務狀態就可以得出結果,這可以在一定程度上提高性能。在權衡利弊后,我們決定在轉轉錢包中采用規則引擎,因為其優點遠大于缺點。

規則建模

在使用規則引擎之前,有一個關鍵點需要充分考量:是否可以構建一個良好的規則模型。一個好的規則模型可以使規則系統更易于理解、維護和擴展。比如上文提到的借錢卡片狀態,我們可以抽象出以下規則:賬戶是否停用、是否新戶、是否可以申請貸款、是否有額度。找到這些規則條件后,我們可以反過來檢查這些規則是否可以覆蓋所有的狀態描述,以避免業務場景有遺漏。簡言之,我們要找出業務邏輯中共性的規則條件,然后使用這些條件來倒推校驗業務邏輯的完整性。

選擇引擎組件

你可以自己構建一個簡單的規則引擎。只需要創建一組帶有條件和操作的對象,將它們存儲在合適的集合中,然后遍歷這些對象來評估條件和執行操作。當然,我們沒有必要重新造輪子,市面上已經有幾個常用的規則引擎組件,例如:drools、easy-rules、aviator和liteFlow等。大家可以根據自己的業務場景選擇合適的組件。轉轉錢包選擇了easy-rules,因為在滿足業務需求的基礎上,它短小強悍。

整體設計

如下圖所示,我們將規則配置在Apollo中以實現動態調整。高效地計算每個用戶的分期、借錢和租賃狀態,再將規則集和相關事實輸入到規則引擎中,最后得到各卡片的結果狀態。在此過程中,可能會有以下疑問:該規則引擎的執行效率如何?它又是如何評估規則的?帶著這些疑問,讓我們來看看規則引擎的源碼實現。

圖片

3.EasyRules性能分析

本節將通過閱讀easy-rules規則引擎中與規則評估和執行相關的源碼,來了解其效率水平

圖片

支持MVEL和Spel表達式

規則評估

通過查看org.jeasy.rules.core.DefaultRulesEngine#fire方法,我們進入到doFire() 方法里

void doFire(Rules rules, Facts facts) {
  for (Rule rule : rules) {   //遍歷規則
    boolean evaluationResult = false;
    evaluationResult = rule.evaluate(facts); //評估規則條件是否成立
    if (evaluationResult) {
        rule.execute(facts);  //如果成立,執行規則的動作
            }
        }
    }

上面代碼只保留了主要邏輯,規則評估通過for循環遍歷規則集,逐一評估每個規則的條件是否滿足,如果條件滿足則執行相應的動作。但是,如果您的規則量非常大,此規則引擎組件可能不是最佳選擇。這時可以考慮使用高效的Rete規則匹配算法。Rete算法巧妙地利用了規則之間的關聯關系,構建一個高效的規則匹配網絡。當有新事實進入時,它可以高效地匹配該事實與已有規則的匹配情況。

規則執行

protected Rule createSimpleRule(RuleDefinition ruleDefinition) {
    MVELRule mvelRule = new MVELRule(parserContext)
        .name(ruleDefinition.getName())
        .priority(ruleDefinition.getPriority())
        .when(ruleDefinition.getCondition());  //步驟1
        for (String action : ruleDefinition.getActions()) {
            mvelRule.then(action);  //步驟2
        }
        return mvelRule;
    }
     
public MVELAction(String expression, ParserContext parserContext) {
    this.expression = expression;
    compiledExpression = MVEL.compileExpression(expression, parserContext);  // 使用mvel編譯規則 
}

步驟1和步驟2在創建規則時,easy-rules利用MVEL或SpEL表達式語言的能力,提前編譯規則的條件表達式(condition)和動作表達式(action)。因此,規則的執行效率非常高。

這一點在我們準備618大促的壓力測試數據中也得以體現。測試結果顯示,即使峰值QPS達到1.5萬,響應時間的最大值也僅為10.3ms

圖片

qps

圖片

響應時間


關于作者:
李文,轉轉金融技術部研發工程師

責任編輯:武曉燕 來源: 轉轉技術
相關推薦

2023-07-12 08:33:34

引擎LiteFlow編排

2023-03-22 08:32:35

2022-10-28 09:15:02

2022-10-28 08:31:43

2022-11-02 09:02:08

Drools引擎DMN

2023-04-19 13:18:41

動態線程池平臺

2023-09-14 08:34:28

linux架構參數

2023-08-24 08:11:39

斷路器監控報警

2024-10-16 21:49:24

2024-09-11 19:36:24

2022-04-06 15:58:25

火山引擎差分隱私LDPDC

2024-09-19 22:22:41

多任務學習

2023-11-01 07:44:29

轉轉Flutter業務

2022-11-07 14:45:26

轉轉價格DDD

2023-12-27 19:12:42

OLAP自助分析

2023-03-02 08:54:32

2022-12-21 08:32:34

OLAPDruid架構

2023-03-02 08:32:41

2023-05-31 14:54:32

2022-12-15 08:35:01

用戶畫像平臺
點贊
收藏

51CTO技術棧公眾號

日韩欧美综合在线视频| 国产成人精品一区二| 在线看欧美日韩| 蜜臀av免费观看| 超碰porn在线| 成人av资源网站| 国产精品久久国产精品99gif| 久久久99999| 成人精品毛片| 欧美午夜不卡在线观看免费| 久久久久久久久久久综合| 午夜性色福利影院| 精品在线亚洲视频| 91精品国产色综合| 黄色录像一级片| 人妖一区二区三区| 欧美一区二区三区播放老司机| 六月婷婷在线视频| 中文字幕在线播放| 91在线观看高清| 91久久久久久久久久久久久| 亚洲伊人成人网| 亚洲第一偷拍| 国产一区二区三区18| 久久av一区二区三| 精品自拍视频| 色婷婷一区二区| 亚洲色成人www永久在线观看| 欧美性天天影视| 久久亚洲欧美国产精品乐播| 114国产精品久久免费观看| 日韩欧美在线观看免费| 亚洲国产第一| 久久国产精品偷| 91麻豆精品国产91久久综合| 欧洲亚洲视频| 欧美成人激情免费网| 国产精品嫩草影院8vv8| 日韩欧美另类一区二区| 亚瑟在线精品视频| 一本色道久久88亚洲精品综合 | 久久婷婷亚洲| 国产69精品久久久久9| 欧美做爰爽爽爽爽爽爽| 成人毛片免费看| 亚洲欧美中文日韩在线| 五十路六十路七十路熟婆 | 热久久一区二区| 日本亚洲欧洲色| 91精品国产乱码久久久张津瑜| 91精品久久久久久久蜜月| 一区二区三区 在线观看视| 亚洲国产精品无码久久久久高潮 | 日韩电影在线一区二区| 欧美激情在线播放| 九九热精彩视频| 欧美激情综合| 欧美国产日韩一区二区三区| 欧美精品成人久久| 国产精品多人| 久久免费国产视频| 黄色小视频在线免费看| 国产精品国码视频| 久久久久这里只有精品| 国产在线拍揄自揄拍无码视频| 综合国产精品| 精品少妇一区二区30p| 2021亚洲天堂| 在线成人www免费观看视频| 久久久久久国产精品美女| 免费一级肉体全黄毛片| 亚洲福利专区| 1769国产精品| 波多野结衣毛片| 日韩不卡手机在线v区| 国产精品一区二区久久精品| 影音先锋国产在线| 久久精品久久99精品久久| 国产欧美日韩最新| 国产日韩欧美一区二区东京热| 国产精品一级黄| 国产在线精品一区| 蜜桃成人在线视频| 久久只精品国产| 亚洲v欧美v另类v综合v日韩v| 好操啊在线观看免费视频| 亚洲精品高清在线观看| 2018中文字幕第一页| 亚洲美女尤物影院| 欧美在线一二三四区| 午夜大片在线观看| 4438全国亚洲精品观看视频| 日韩理论片久久| 手机免费观看av| 亚洲视频福利| 国产精品高潮视频| 国产日本精品视频| 91麻豆国产在线观看| 亚洲视频在线观看日本a| 精品国产丝袜高跟鞋| 五月激情六月综合| 亚洲另类第一页| 女一区二区三区| 视频一区视频二区国产精品 | 99久久人妻无码中文字幕系列| 精品中文一区| 欧美黑人巨大精品一区二区| 亚洲高清在线看| 粉嫩绯色av一区二区在线观看| 欧美亚洲免费在线| 97超碰在线公开在线看免费| 色狠狠av一区二区三区| 原创真实夫妻啪啪av| 男男gay无套免费视频欧美| 欧美成人网在线| 国产午夜无码视频在线观看 | 狠狠色综合欧美激情| yw在线观看| 精品国产老师黑色丝袜高跟鞋| av污在线观看| 亚洲人成网亚洲欧洲无码| 欧美理论电影在线播放| 中文字幕在线日亚洲9| 91香蕉视频mp4| 隔壁人妻偷人bd中字| 精品福利在线| 中文字幕欧美日韩| 免费无码国产精品| av成人动漫在线观看| 麻豆一区二区三区在线观看| 51一区二区三区| 日韩精品在线视频观看| 国产 日韩 欧美 成人| 国产一区二区三区免费在线观看| 日产精品高清视频免费| 黄在线观看免费网站ktv| 精品国产伦一区二区三区观看体验| 免费看一级黄色| 日韩制服丝袜av| 欧美精品一区二区三区四区五区 | 日韩av手机在线| 无码h黄肉3d动漫在线观看| 亚洲三级电影全部在线观看高清| 黄色片在线免费| 九色精品91| 青青a在线精品免费观看| 天堂中文在线官网| 亚洲国产日韩综合久久精品| 人妻精油按摩bd高清中文字幕| 中文在线日韩| 亚洲一区二区中文| 亚洲丝袜精品| 日韩欧美黄色影院| 国产亚洲精品成人| 成人午夜短视频| 91成人在线观看喷潮教学| 精品五月天堂| 91成人性视频| 狠狠色伊人亚洲综合网站l| 日韩欧美亚洲范冰冰与中字| av在线网站观看| 视频一区视频二区中文| 色婷婷精品国产一区二区三区| 亚州一区二区三区| 最近2019年手机中文字幕| 在线观看免费视频一区| 亚洲视频一区二区在线| 免费欧美一级片| 亚洲精品男同| 欧美亚洲免费在线| 9999精品视频| 久久久噜噜噜久久久| 亚洲 美腿 欧美 偷拍| 一本一道综合狠狠老| 久久视频精品在线观看| 久久国产成人午夜av影院| 99视频精品全部免费看| 欧美网色网址| 国产精品久久久999| 成人影院在线观看| 亚洲国产精品悠悠久久琪琪 | 日韩国产欧美在线播放| 中文字幕色一区二区| 91亚洲无吗| 国产成人精品免费视频| 免费av在线网站| 亚洲国产精品中文| 亚洲一区二区视频在线播放| 亚洲一区二区三区自拍| 国产特黄级aaaaa片免| 看片的网站亚洲| 777av视频| 菠萝蜜一区二区| 亚洲一区精品电影| 二区三区不卡| 欧美精品日韩www.p站| 天堂а√在线8种子蜜桃视频| 欧美午夜片在线免费观看| 四虎永久免费地址| 99视频一区二区三区| 免费看涩涩视频| 亚洲黄色影院| 99re99热| 国产亚洲一区二区三区不卡| 91在线精品视频| 欧美性猛交xxx高清大费中文| 久久中文字幕国产| 青青青草原在线| 精品国免费一区二区三区| 最近中文字幕在线观看| 亚洲国产日韩一区二区| 亚洲不卡在线播放| 久久综合中文字幕| 深夜视频在线观看| 久久精品99久久久| 日韩黄色片视频| 亚洲天堂偷拍| 国产成年人在线观看| 最新国产一区| 国精产品一区二区| 秋霞一区二区| 国产欧美精品在线| 深夜成人福利| 91av网站在线播放| 女子免费在线观看视频www| 精品国产一区二区三区久久狼5月 精品国产一区二区三区久久久狼 精品国产一区二区三区久久久 | 欧美一区二区三区红桃小说| 97人人模人人爽人人喊38tv| 欧美视频第一| 国产精品美女呻吟| 欧美大片高清| 青青久久av北条麻妃黑人| 91禁在线看| 久久99精品国产99久久6尤物 | 自拍偷自拍亚洲精品播放| 国产又大又粗又爽的毛片| 91视频精品在这里| 精品熟女一区二区三区| 国产精品综合久久| 91性高潮久久久久久久| 国产综合色精品一区二区三区| 久久综合伊人77777麻豆最新章节| 免费看的黄色欧美网站| 久色视频在线播放| 99精品国产在热久久下载| 久草视频这里只有精品| 国产一区激情| 亚洲精品久久久久久久蜜桃臀| 欧美va天堂在线| www.激情网| 黄色欧美日韩| 日本丰满少妇xxxx| 国产欧美精品久久| 成人av一级片| 久久久精品午夜少妇| 国产免费黄视频| 老司机午夜精品视频| 欧美黄色免费影院| 日韩电影免费在线| 午夜久久福利视频| 精品一区二区三区欧美| 日韩不卡的av| 成人毛片老司机大片| 无码国产69精品久久久久网站 | 日日操免费视频| 最新国产の精品合集bt伙计| 午夜国产小视频| 一区二区日韩av| 性无码专区无码| 91国偷自产一区二区使用方法| 日韩精品在线一区二区三区| 欧美视频日韩视频在线观看| 91麻豆成人精品国产免费网站| 日韩视频免费直播| 五月天久久久久久| 国产亚洲xxx| 18+激情视频在线| 91禁国产网站| 亚洲成人高清| 国产女人水真多18毛片18精品 | 91亚洲无吗| 就去色蜜桃综合| 欧美xxxxx视频| 男人添女荫道口喷水视频| 国产日韩精品视频一区二区三区 | 成人看片毛片免费播放器| 国产在线精品播放| 国产日韩三级| 一区二区高清视频| 亚洲天堂激情| 国产精品久久a| 成人午夜精品一区二区三区| 性欧美一区二区| 一区二区三区久久| 五月婷婷亚洲综合| 欧美日韩国产不卡| 亚洲 小说区 图片区 都市| 日韩亚洲一区二区| 久久男人天堂| 91青青草免费观看| 成人无号精品一区二区三区| 亚洲人精品午夜射精日韩| 老司机午夜精品| 人妻丰满熟妇aⅴ无码| 成人欧美一区二区三区黑人麻豆| 久热这里只有精品6| 欧美一区二区三区白人| av在线资源站| 91精品国产91久久久久福利| 精品视频在线播放一区二区三区| 欧美精品欧美精品| 亚洲久久成人| 永久av免费在线观看| 国产精品私房写真福利视频| 1级黄色大片儿| 日韩三级在线观看| 日本在线观看网站| 国产成人精品一区二区| 精品自拍偷拍| av动漫在线播放| 国内成人免费视频| 国产又粗又猛又爽又黄av| 精品久久久久久久久久国产| 国产色综合视频| www.欧美精品| 国产成人精品一区二区三区在线| 蜜桃麻豆91| 亚洲深夜激情| a天堂视频在线观看| 一区二区三区在线免费播放 | 欧美精品高清| 欧美美乳视频网站在线观看| 伊人天天综合| 人妻激情偷乱频一区二区三区| 亚洲日本丝袜连裤袜办公室| 在线播放成人av| www.99久久热国产日韩欧美.com| 欧美一级二级视频| 日韩欧美精品一区二区| 久久永久免费| 久久精品无码一区| 色猫猫国产区一区二在线视频| 四虎精品成人影院观看地址| 欧美一二三视频| 亚洲区小说区| 成人性视频欧美一区二区三区| 久久影院电视剧免费观看| 天天做天天爱夜夜爽| 亚洲精品综合精品自拍| 在线观看爽视频| 日韩激情视频| 奇米四色…亚洲| av最新在线观看| 91精品国产综合久久久蜜臀粉嫩 | 欧美少妇xxxx| www午夜视频| 亚洲丝袜精品丝袜在线| 国产黄色一级大片| 高清一区二区三区日本久| 久久97久久97精品免视看秋霞| 日本在线xxx| 国产亚洲欧美激情| 中文字幕精品无码亚| 久久久成人精品视频| 亚洲免费一区三区| 欧美大片在线播放| 国产三级欧美三级| 国产又粗又猛又黄又爽无遮挡| 久久99久久久久久久噜噜| 国产精品videossex| 免费观看日韩毛片| 日本一区二区三区四区| 国产免费高清av| 97视频在线播放| 日韩综合在线| 亚洲AV成人精品| 福利微拍一区二区| 香蕉视频网站在线观看| 91精品入口蜜桃| 性色av一区二区怡红| 欧美乱大交做爰xxxⅹ小说| 日韩区在线观看| 欧美一区国产| 成人短视频在线看| 91蜜桃视频在线| 国产精品爽爽久久| 5278欧美一区二区三区| 成人综合专区| 亚洲av成人片无码| 欧美性受xxxx| 91资源在线观看| 亚洲综合第一| 93久久精品日日躁夜夜躁欧美| 中文字幕1区2区3区| 久久久欧美一区二区| 日韩理论片av| 色噜噜在线观看| 欧美一区二区高清| 欧美123区| av高清在线免费观看|