<cite id="ffb66"></cite><cite id="ffb66"><track id="ffb66"></track></cite>
      <legend id="ffb66"><li id="ffb66"></li></legend>
      色婷婷久,激情色播,久久久无码专区,亚洲中文字幕av,国产成人A片,av无码免费,精品久久国产,99视频精品3
      網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

      告別 if-else 噩夢:流程編排技術真的太香了!

      0
      分享至

      Java精選面試題(微信小程序):5000+道面試題和選擇題,包含Java基礎、并發(fā)、JVM、線程、MQ系列、Redis、Spring系列、Elasticsearch、Docker、K8s、Flink、Spark、架構設計、大廠真題等,在線隨時刷題!

      作為一個優(yōu)秀的程序員,要守住職業(yè)的底線。能簡單快速的完成的一件事,就一定要用簡單的方案快速完成。不可過度的設計,始終保持系統(tǒng)的簡潔!

      曾幾何時,我對于流程編排這件事 嗤之以鼻,為什么呢?我認為流程編排是典型地過度設計。

      在我看來,代碼越直觀越可靠,我不喜歡看代碼的時候跳來跳去。但是流程編排后,要把各個方法放到擴展類,通過組合各個擴展類新建一個流程,實現(xiàn)業(yè)務功能,這能有什么好處呢?

      直到我來到一個中臺團隊,才意識到流程編排能力是保命的能力。

      業(yè)務中臺要接入很多的業(yè)務方,每個業(yè)務方并不是完全相同。很多時候無法完全復用,需要改造系統(tǒng)適應新的業(yè)務。

      新增業(yè)務代碼時,務必要保證原有業(yè)務不受影響,如果沒有流程編排能力,就會充斥大量的 if else 。

      if (biz == BizA || biz == BizB) {      //do some thing      //這部分邏輯相同      if (biz == BizA) {          //差異化處理      }            if(biz == BizB) {         //差異化邏輯      } }

      例如上面的代碼,不同的業(yè)務線若有差異化邏輯,需要新增分支單獨處理。想象一下,當有 10 多個業(yè)務接入了你的系統(tǒng),那么一定讓人抓狂……

      任何一個人都無法保證對 10 多種業(yè)務完全熟悉,每個人可能只負責 1 個業(yè)務,然而如果沒有代碼邏輯的隔離,維護者只能在千絲萬縷中,才能找到目標代碼邏輯。更可怕的是,每次新增一個業(yè)務,需要在原有的屎山中繼續(xù),不斷新增 if else。直到有一天,有一個倒霉蛋改錯了代碼,導致其他重要業(yè)務受影響,引發(fā)線上故障。

      想象一下,當你改了幾行代碼以后,要求測試同學,回歸10 多個業(yè)務線的全部邏輯?這顯然不現(xiàn)實。

      以上的問題和痛點可歸納為:代碼隔離性和業(yè)務擴展點問題。解決這兩類問題有如下手段!

      • 使用流程引擎,為不同的業(yè)務配置不同的流程執(zhí)行鏈

      • 使用插件擴展引擎,不同的業(yè)務實現(xiàn)差異化部分。

      MemberClub 中大量使用流程引擎和插件擴展引擎解決業(yè)務隔離性和擴展性 問題。

      MemberClub是托管在Gitee平臺的開源項目,提供了付費會員的交易解決方案,在各類購買場景下提供各類會員形態(tài)的履約及售后結算能力,具體介紹可參見

      https://gitee.com/juejinwuyang/memberclub

      配置流程執(zhí)行鏈

      考慮到不同的會員產(chǎn)品交易提單流程不同,不同的產(chǎn)品應配置不同的流程,DemoMemberPurchaseExtension實現(xiàn)了購買擴展點,并且定義了三個流程執(zhí)行鏈的配置方式。如截圖所示~


      定義流程節(jié)點

      流程節(jié)點中的方法包括processsuccessrollbackcallback方法。


      流程執(zhí)行

      流程執(zhí)行時 需提供流程上下文對象。調(diào)用FlowChain.execute方法即可


      實際執(zhí)行階段,各個流程節(jié)點被流程引擎串聯(lián)起來依次執(zhí)行,類似于責任鏈的設計模式,具體執(zhí)行順序如下圖所示。

      依次執(zhí)行每個流程節(jié)點的process方法,若process方法出現(xiàn)異常,則執(zhí)行rollback方法。若所有的process方法執(zhí)行成功,則倒序依次執(zhí)行success方法。


      流程引擎執(zhí)行原理

      以下是FlowChain.execute方法執(zhí)行原理。

      public    void execute(FlowChain chain, T context)  {     Exception exception = null;     int index = -1;     for (FlowNode node : chain.getNodes()) {         try {             node.process(context);             index++;         } catch (Exception e) {             if (e instanceof SkipException) {                 CommonLog.warn("當前流程:{} 發(fā)出 Skip請求,后續(xù)流程不再執(zhí)行", node.getClass().getSimpleName());                 break;             }             exception = e;             break;         }     }     if (exception != null) {         for (int i = index; i >= 0; i--) {             FlowNode node = chain.getNodes().get(i);             try {                 node.rollback(context, exception);             } catch (Exception e) {                 CommonLog.error("rollback執(zhí)行異常,忽略 name:{}", node.getClass().getSimpleName(), e);             }         }     } else {         for (int i = index; i >= 0; i--) {             FlowNode node = chain.getNodes().get(i);             try {                 node.success(context);             } catch (Exception e) {                 CommonLog.error("success 執(zhí)行異常,忽略 name:{}", node.getClass().getSimpleName(), e);             }         }     }     for (int i = index; i >= 0; i--) {         FlowNode node = chain.getNodes().get(i);         try {             node.callback(context, exception);         } catch (Exception e) {             CommonLog.error("callback執(zhí)行異常,忽略 name:{}", node.getClass().getSimpleName(), e);         }     }     if (exception != null) {         throw exception;     } }

      以上全部代碼地址,可以參見 MemberClub:

      https://gitee.com/-/ide/project/juejinwuyang/memberclub/edit/master/-/memberclub.common/src/main/java/com/memberclub/common/flow/FlowChainService.java

      MemberClub是托管在Gitee平臺的開源項目,提供了付費會員的交易解決方案,在各類購買場景下提供各類會員形態(tài)的履約及售后結算能力,一個非常好的項目,適合用來學習業(yè)務中臺系統(tǒng),具體介紹可參見

      Gitee開源地址:

      https://gitee.com/juejinwuyang/memberclub

      GitHub開源地址:

      https://github.com/juejin-wuyang/memberclub

      在這個項目中你可以學習到 SpringBoot 集成 以下框架或組件。

      • Mybatis-plus

      • Sharding-sphere 多數(shù)據(jù)源分庫分表

      • Redis/redisson

      • Apollo

      • Springcloud(feign/enreka)

      • RabbitMQ

      • H2 內(nèi)存數(shù)據(jù)庫

      • Swagger

      • Lombok+MapStruct

      同時你也可以學習到以下組件的實現(xiàn)原理

      • 流程引擎

      • 擴展點引擎

      • 分布式重試組件

      • 通用日志組件

      • 商品庫存

      • 分布式鎖組件

      • Redis Lua的使用

      • Spring 上下文工具類

      來源:https://juejin.cn/post/7469330882945318922

      公眾號“Java精選”所發(fā)表內(nèi)容注明來源的,版權歸原出處所有(無法查證版權的或者未注明出處的均來自網(wǎng)絡,系轉載,轉載的目的在于傳遞更多信息,版權屬于原作者。如有侵權,請聯(lián)系,筆者會第一時間刪除處理!

      最近有很多人問,有沒有讀者交流群!加入方式很簡單,公眾號Java精選,回復“加群”,即可入群!

      特別推薦:專注分享最前沿的技術與資訊,為彎道超車做好準備及各種開源項目與高效率軟件的公眾號,「大咖筆記」,專注挖掘好東西,非常值得大家關注。點擊下方公眾號卡片關注

      文章有幫助的話,點在看,轉發(fā)吧!

      特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務。

      Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

      相關推薦
      熱點推薦
      廣東江門新會區(qū)通報陳皮產(chǎn)地造假:將對6家涉事企業(yè)作出處理

      廣東江門新會區(qū)通報陳皮產(chǎn)地造假:將對6家涉事企業(yè)作出處理

      界面新聞
      2025-12-20 20:29:42
      大量浙江游客涌入沈陽,打著旅游幌子不去旅游不吃美食,為啥來

      大量浙江游客涌入沈陽,打著旅游幌子不去旅游不吃美食,為啥來

      另子維愛讀史
      2025-11-29 07:53:16
      不裁員,浙江兩家制衣廠提前2個月放假:背后擔當暖了打工人的心

      不裁員,浙江兩家制衣廠提前2個月放假:背后擔當暖了打工人的心

      搗蛋窩
      2025-12-20 18:16:54
      國企也開始爆雷了!

      國企也開始爆雷了!

      微微熱評
      2025-12-19 00:35:12
      “恨國女”許可馨:移民美國,已結婚,丈夫大量照片曝光遭質(zhì)疑

      “恨國女”許可馨:移民美國,已結婚,丈夫大量照片曝光遭質(zhì)疑

      小熊侃史
      2025-12-20 10:53:55
      陣亡后家屬領取一箱方便面?柬埔寨士兵士氣全無。

      陣亡后家屬領取一箱方便面?柬埔寨士兵士氣全無。

      電動貓
      2025-12-20 10:12:49
      CBA最新消息!上海男籃或裁掉洛夫頓,程帥澎第一階段報銷

      CBA最新消息!上海男籃或裁掉洛夫頓,程帥澎第一階段報銷

      體壇瞎白話
      2025-12-20 08:35:12
      姆巴佩追平C羅紀錄,皇家馬德里2:0擊敗10人塞維利亞

      姆巴佩追平C羅紀錄,皇家馬德里2:0擊敗10人塞維利亞

      油潑辣不辣
      2025-12-21 05:58:21
      大結局來了?仁愛礁周邊被清空,中國拖船已就位,菲律賓別無選擇

      大結局來了?仁愛礁周邊被清空,中國拖船已就位,菲律賓別無選擇

      小莜讀史
      2025-12-20 14:18:17
      6-4!斯諾克首席決賽出爐:韋克林KO火箭陪練,常冰玉5-1奪賽點!

      6-4!斯諾克首席決賽出爐:韋克林KO火箭陪練,常冰玉5-1奪賽點!

      劉姚堯的文字城堡
      2025-12-21 06:10:22
      善惡有報,移居英國僅2年,57歲吳秀波再迎噩耗,步入李易峰后塵

      善惡有報,移居英國僅2年,57歲吳秀波再迎噩耗,步入李易峰后塵

      叨嘮
      2025-12-20 06:10:09
      68歲青島市人大常委會原主任被查,今年已有61名中管干部落馬

      68歲青島市人大常委會原主任被查,今年已有61名中管干部落馬

      上觀新聞
      2025-12-19 18:57:02
      線下崩盤、潮牌擺爛,他的“撈金”路,只剩收割粉絲……

      線下崩盤、潮牌擺爛,他的“撈金”路,只剩收割粉絲……

      毒舌八卦
      2025-12-20 21:08:54
      魏建軍再開炮!推出購車防忽悠指南,有些車企瑟瑟發(fā)抖

      魏建軍再開炮!推出購車防忽悠指南,有些車企瑟瑟發(fā)抖

      象視汽車
      2025-12-19 07:00:05
      豪門悲喜夜:9人熱刺1-2利物浦 阿森納1-0 姆總平C羅紀錄皇馬2-0

      豪門悲喜夜:9人熱刺1-2利物浦 阿森納1-0 姆總平C羅紀錄皇馬2-0

      狍子歪解體壇
      2025-12-21 06:11:30
      北斗、GPS信號受精準干擾壓制!導航集體失靈事件原因公布!

      北斗、GPS信號受精準干擾壓制!導航集體失靈事件原因公布!

      荊楚寰宇文樞
      2025-12-20 22:07:33
      湖北省委書記:鍛造堪當“重要戰(zhàn)略支點”建設重任的中堅力量

      湖北省委書記:鍛造堪當“重要戰(zhàn)略支點”建設重任的中堅力量

      澎湃新聞
      2025-12-20 16:42:11
      卷走53億!又一大佬帶全家跑路,欠中國銀行20億,投資者血本無歸

      卷走53億!又一大佬帶全家跑路,欠中國銀行20億,投資者血本無歸

      以茶帶書
      2025-12-09 23:33:58
      攤上大事!讓狗舔盤子的女子要哭,涉事火鍋店停業(yè)整頓賠償并報警

      攤上大事!讓狗舔盤子的女子要哭,涉事火鍋店停業(yè)整頓賠償并報警

      火山詩話
      2025-12-20 11:27:14
      六十年難遇的特殊冬至,今年我們該提前準備了嗎?

      六十年難遇的特殊冬至,今年我們該提前準備了嗎?

      眼界看視野
      2025-12-18 21:27:28
      2025-12-21 07:27:00
      Java精選
      Java精選
      一場永遠也演不完的戲
      1764文章數(shù) 3859關注度
      往期回顧 全部

      科技要聞

      許四清:具身智能的"ChatGPT時刻"還未到來

      頭條要聞

      高市早苗要趕在特朗普訪華前行動 以免被中美邊緣化

      頭條要聞

      高市早苗要趕在特朗普訪華前行動 以免被中美邊緣化

      體育要聞

      我開了20年大巴,現(xiàn)在是一名西甲主帥

      娛樂要聞

      2026央視跨年晚會陣容曝光,豪華陣仗

      財經(jīng)要聞

      求解“地方財政困難”

      汽車要聞

      嵐圖推進L3量產(chǎn)測試 已完成11萬公里實際道路驗證

      態(tài)度原創(chuàng)

      手機
      藝術
      數(shù)碼
      家居
      游戲

      手機要聞

      小米REDMI Note 15系列手機新春版現(xiàn)身,元旦發(fā)售

      藝術要聞

      中國老香煙品牌,你知道多少?

      數(shù)碼要聞

      一屏多用:華為Mate X7 / XTs折疊屏手機“變身”智能手卡

      家居要聞

      高端私宅 理想隱居圣地

      逆天!LCK頒獎Faker無緣獎項,LPL解說炮轟開罵直播間差點被封

      無障礙瀏覽 進入關懷版 主站蜘蛛池模板: 中文字幕乱码无码人妻系列蜜桃| 91成人视频在线观看| 渭南市| 欧美视频亚洲| 潮喷视频在线播放| 日本丰满白嫩大屁股ass| 91视频免费看| 又黄又爽又色的少妇毛片| 黄瓜视频91| 人人看av日韩国产| 群交射精白浆视频| 成人无码在线视频网站| 午夜亚洲| 常德市| 202丰满熟女妇大| 消息称老熟妇乱视频一区二区 | 婷婷四房色播| 精品国产女同疯狂摩擦2| 亚洲色图综合| JIZZJIZZJIZZ亚洲日本| 青青草无码精品伊人久久| 正在播放肥臀熟妇在线视频| 亚洲看片| 果冻传媒mv免费播放在线观看| 2021久久精品国产99国产精品| 中国亚州女人69内射少妇| 狠狠色综合久久丁香婷婷| a∨变态另类天堂无码专区| 欧美性猛交ⅹxxx乱大交妖精| 亚洲AV成人无码| 亚洲中文字幕系列| 伊人网成人| 丁香花在线观看免费观看图片 | 九九国产在线| 一本大道东京热无码aⅴ| 国产三级a三级三级| 蜜桃AV无码| 金坛市| 日本成本人片免费网站| 91亚洲免费视频| 国产精品中文|