精品欧美一区二区三区在线观看 _久久久久国色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一级大片| 97在线视频人妻无码| 欧美日韩国产亚洲一区| 亚洲精品小视频| 一区二区三区四区毛片| 九色porny自拍视频在线播放| 久久免费精品国产久精品久久久久| 国产精品久久久一区| 欧产日产国产v| 久久av导航| 日韩欧美一区在线观看| av网址在线观看免费| 最新av在线播放| 国产午夜精品一区二区| 99国产视频| 真实的国产乱xxxx在线91| 亚洲网站在线| 久久精品国产一区二区三区 | 一个人看的www视频在线免费观看| 欧美国产禁国产网站cc| 久久国产一区二区| 国产麻豆91视频| 日本v片在线高清不卡在线观看| 久久97精品久久久久久久不卡 | 人妻精品一区一区三区蜜桃91| 视频一区二区不卡| 欧美片一区二区三区| 国产精品国产三级国产专业不| 成人午夜三级| 欧美一区二区播放| www日韩视频| 国产无遮挡裸体视频在线观看| 国产日韩av一区| 久久亚洲免费| 神马午夜一区二区| 国产高清无密码一区二区三区| 国产一区欧美二区三区| 青青国产在线视频| 久久国产成人| 97在线免费观看| 国产香蕉在线视频| 国产精品99免费看| 久久91亚洲人成电影网站| 欧美肥妇bbwbbw| 久久五月天小说| 日韩性xxxx爱| 中文字幕无码日韩专区免费 | 三上悠亚久久精品| 天天干在线视频论坛| 一区二区三区四区不卡在线 | 国产精品日韩精品欧美精品| 欧美精品videosex性欧美| 午夜免费激情视频| 欧美日韩ab| 国产综合在线视频| 五月婷婷开心网| 亚洲女人av| 日韩av黄色在线观看| 中文字幕在线播| 老司机久久99久久精品播放免费| 日本在线观看天堂男亚洲 | 欧美日韩国产乱码电影| 97公开免费视频| 成人亚洲综合| 制服丝袜日韩国产| 欧美69精品久久久久久不卡| 视频精品二区| 亚洲精品美女视频| av手机在线播放| 欧美系列电影免费观看| 日韩在线欧美在线| avove在线播放| 尤物精品在线| 日本在线观看天堂男亚洲| www.亚洲激情| 国产精品1区2区| 国产日韩欧美精品| 一区二区三区 在线观看视| 久久精品免费一区二区| 亚洲精品中文字幕| 欧美日韩一卡二卡三卡 | 国产精品一级在线| 国产乱码一区| 国产高清视频在线观看| 最新日韩在线视频| 日本午夜激情视频| 成人免费一区| 亚洲福利视频久久| 超薄肉色丝袜一二三| 久久精品青草| 欧美性受xxxx白人性爽| 亚洲一区中文字幕在线| 国产二区国产一区在线观看| 免费久久一级欧美特大黄| 最新av网站在线观看| 一区二区三区精品在线| 成人一区二区三| 视频精品一区二区三区| 一区二区三区四区视频| 久久精品视频8| 日本在线播放一区二区三区| 成人在线看片| 中文日本在线观看| 五月综合激情网| 亚洲美女性囗交| 欧美美女在线直播| 日韩中文娱乐网| 中文字幕视频网| 国产美女在线观看一区| 热舞福利精品大尺度视频| dy888亚洲精品一区二区三区| 日韩欧亚中文在线| 国产伦理在线观看| 99久久夜色精品国产亚洲狼| 欧美野外猛男的大粗鳮| 超碰福利在线观看| 欧美国产成人精品| 欧美亚洲国产成人| 伊人www22综合色| 久久精品国产亚洲一区二区| 手机在线看片1024| 成人av片在线观看| 国产黄色激情视频| 香蕉成人在线| 在线电影av不卡网址| 久久久久久久久久久影院| 国产a精品视频| 99re99热| 99热这里有精品| 中文字幕亚洲综合| 国产乱码77777777| 久久久国产一区二区三区四区小说| 国产一区二区三区乱码| 久久的色偷偷| 久久在线免费视频| 一级全黄少妇性色生活片| 91亚洲精品乱码久久久久久蜜桃 | 日韩欧美在线影院| 女同久久另类69精品国产| 日韩不卡一区二区| 日韩欧美在线观看强乱免费| 国产精品久久久久av电视剧| 亚洲午夜久久久久久久| 高清乱码免费看污| 久久久久99精品一区| av免费播放网址| 午夜a一级毛片亚洲欧洲| 97国产在线视频| 天堂中文在线官网| 图片区小说区国产精品视频| 中文字幕免费在线播放| 国产视频一区三区| 久久久久久久久久久一区| 特黄毛片在线观看| 亚洲人成毛片在线播放| 91在线视频免费播放| 国产午夜精品一区二区三区嫩草 | 亚洲欧洲日本在线| 岛国av免费在线| 综合日韩在线| 国产一区二区在线观看免费播放| 18video性欧美19sex高清| 亚洲第一区第二区| 69成人免费视频| 欧美国产成人精品| 91pony九色| 狠狠爱成人网| 欧美极品日韩| 欧美极品在线| 欧美精品videossex性护士| 国产91免费看| 色婷婷国产精品综合在线观看| 免费在线观看a视频| 激情五月播播久久久精品| 亚洲天堂第一区| 亚洲另类春色校园小说| 国产精品视频色| 日韩少妇视频| 亚洲人成在线免费观看| 国产精品国产三级国产普通话对白 | 欧美下载看逼逼| 亚洲精品三区| 午夜免费在线观看精品视频| 浮生影视网在线观看免费| 日韩一区二区三区av| 久草国产精品视频| 国产精品欧美极品| 秘密基地免费观看完整版中文| 在线亚洲自拍| 天堂av免费看| 免费av一区| 成人免费视频观看视频| 欧美xxx网站| 欧美乱大交xxxxx| 国产中文在线| 亚洲成**性毛茸茸| 中文字幕人妻一区二区在线视频 | 成年人免费在线播放| 99视频精品全国免费| 久99久视频| 欧美日韩午夜电影网| 国产精品国语对白| 9765激情中文在线| 日韩视频免费在线| 欧美精品a∨在线观看不卡| 日韩视频在线观看一区二区| 久久这里只有精品9| 亚洲成a人片在线观看中文| 潮喷失禁大喷水aⅴ无码| 91玉足脚交白嫩脚丫在线播放| 婷婷激情小说网| 日日夜夜精品视频天天综合网| 男人添女人下部视频免费| 欧美激情欧美| 日韩欧美精品在线不卡| 欧美日韩一区二区三区在线电影| 91免费人成网站在线观看18| 免费观看成人性生生活片 | 中国一级特黄视频| 欧美午夜久久久| 永久免费看片直接| 中文字幕欧美三区| 一区二区黄色片| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 久久狠狠久久综合桃花| 7777精品| 99精品国产高清在线观看| 欧美91在线|欧美| 国产精品99久久久久久www| 理论片午夜视频在线观看| 欧美国产视频日韩| 亚洲七七久久综合桃花剧情介绍| 色综合伊人色综合网| 成人av一区| 尤物精品国产第一福利三区| 国产一二在线观看| 亚洲欧美视频在线| 男女视频在线观看免费| 日韩精品亚洲精品| 亚洲欧美日韩精品永久在线| 日韩av一区在线观看| 天天干视频在线| 亚洲经典中文字幕| 亚洲人在线观看视频| 亚洲第一免费网站| 三级理论午夜在线观看| 亚洲精品自在久久| 国产色a在线| 伊人男人综合视频网| 国产视频三级在线观看播放| 国产一区二区动漫| 日本在线观看www| 久久久97精品| 污片在线免费观看| 97精品国产97久久久久久| 国产三级电影在线播放| 青青久久av北条麻妃黑人| 日韩不卡免费高清视频| 国产精品久久久久久久久久东京| 国产毛片精品久久| 91理论片午午论夜理片久久| 精品一区视频| 国产另类自拍| 免费成人av| 午夜啪啪免费视频| 国产综合自拍| 黄色免费福利视频| 天堂在线一区二区| 黄大色黄女片18第一次| 国产精品一区二区无线| 这里只有精品在线观看视频| 久久久国际精品| 婷婷伊人五月天| 精品国产999| 亚洲视频在线观看一区二区| 日韩一区二区不卡| 色中色在线视频| 色老头一区二区三区在线观看| 91中文在线| 欧美与黑人午夜性猛交久久久| 四虎影视4hu4虎成人| 亚洲综合在线中文字幕| 六月丁香久久丫| 中文字幕色一区二区| 亚洲高清激情| 国产高清视频网站| 成人深夜福利app| 51妺嘿嘿午夜福利| 一区二区三区欧美在线观看| 国产伦精品一区二区三区视频网站| 精品视频一区二区不卡| 黄色av小说在线观看| 色偷偷偷综合中文字幕;dd| 美女精品导航| 国产精品丝袜高跟| 欧美在线关看| 青青草免费在线视频观看| 久久视频一区| 欧美性生交xxxxx| 国产精品久久久久一区二区三区 | 5566中文字幕一区二区电影| 凸凹人妻人人澡人人添| 久久精品国产亚洲精品| 欧美成人黑人| 国产一区二区免费在线观看| 91九色精品| 麻豆av免费在线| 波多野结衣在线一区| 欧美肥妇bbwbbw| 欧美性三三影院| 亚洲欧美一区二区三| 久久91精品国产| 在线高清欧美| 日本一区二区三区四区在线观看| 亚洲第一精品影视| 欧美在线a视频| 国产精品女主播av| 在线观看日本视频| 亚洲第一精品自拍| 国产黄色大片在线观看| 91久久精品国产91久久| 欧美日韩一二| 欧美一级在线看| 成人app下载| 久久精品女人毛片国产| 欧美一区二区三区视频免费| 一本一道波多野毛片中文在线| 日韩av成人在线观看| 婷婷亚洲成人| 91国视频在线| 99久久精品国产麻豆演员表| 国产一级免费观看| 欧美成人a在线| 日韩三级电影视频| 99视频免费观看蜜桃视频| 亚洲国产精品91| 手机精品视频在线| 中文字幕综合网| 国产精品视频在线观看免费| 精品激情国产视频| 欧美亚洲二区| 一区二区视频在线免费| 久久99国产精品免费| 91狠狠综合久久久| 日韩欧美在线综合网| 牛牛在线精品视频| 国产亚洲精品久久飘花| av不卡在线| www.av欧美| 欧美日韩一区二区三区在线| 在线免费看a| 成人国产精品一区| 天天做综合网| 国产在线a视频| 黄色成人av网| 精品美女视频在线观看免费软件| 日韩av日韩在线观看| 精品欧美久久| 久久综合在线观看| 亚洲成人免费视频| 日韩在线免费播放| 国产精品福利观看| 888久久久| 成人啪啪18免费游戏链接| 亚洲成人资源在线| 日韩三级电影网| 国产精品极品美女在线观看免费| 99久久www免费| 国产清纯白嫩初高中在线观看性色| 亚洲成人tv网| 成年人在线观看视频| 亚洲一区中文字幕| 国产色综合网| 日韩在线视频网址| 欧美精品一区二区三区久久久| 欧美黑人粗大| 无码人妻精品一区二区三区99v| 成人动漫av在线| 中文字幕av片| 国内精品久久久久伊人av| 国际精品欧美精品| 中文字幕av一区二区三区人妻少妇| 午夜精品视频一区| 91精品国产91久久久久游泳池| 成人欧美一区二区三区在线观看| 国产精品入口66mio| 99热6这里只有精品| 精品国产一区二区三区久久影院 | 欧美成人伊人久久综合网| 日韩脚交footjobhd| 国产四区在线观看| 26uuu亚洲综合色| 国产wwwxxx| 国产精品白嫩初高中害羞小美女| 欧美日韩调教| 欧美性受xxxx黑人| 欧美精品一区二区三区在线播放 |