版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
彈性可伸縮海量工作流引擎建設實踐騰訊架構師/葉彬示即工作流程的計算模型,為完成一個業(yè)務目標,所需要經(jīng)歷的一系列步驟,通常用流程圖來表示示例:服務器硬件故障自動診斷流程,日志下載→規(guī)則庫加載→策略匹配結束開始結束非工作流模式下,原始需求:日志下載→規(guī)則庫加載→規(guī)則匹配doLogsLoad();}doRulesLoad();rulesMatchTask.handle();}}新增需求:1)指定機型派單人工分析;2)命中指定規(guī)則派單至廠商分析voidhandle(){voidhandle(){doManualAnalysis();}新增邏輯塊2}voidhandle(){rulesLoadTask.handle();}}}voidhandle(){doRulesLoad();rulesMatchTask.handle();一}}voidhandle(){doRulesMatch();supplyDiagnoseTask.handle();云使用工作流模式的任務協(xié)作-分離任務實現(xiàn)和任務協(xié)作關系日志下載規(guī)則加載規(guī)則匹配開始結束voidhandle(){}}}voidhandle(){doRulesMatch();」}使用工作流模式,各任務只實現(xiàn)自身原子邏輯,協(xié)同關系使用流程圖表示當新的邏輯需要復用已有任務節(jié)點時,只需調(diào)整流程圖,無需修改已有代碼doSupplierAnalysis();doManualAnalysisdoSupplierAnalysis();}}}BPMN流程圖規(guī)則加載規(guī)則加載規(guī)則匹配結束開始結束doRulesLoad();doLogsLoad();doRulesMatch();}}}}}◆解釋任務定義◆控制狀態(tài)流轉(zhuǎn)◆維護內(nèi)部狀態(tài)◆監(jiān)控/管理工作流執(zhí)行◆解釋任務定義◆控制狀態(tài)流轉(zhuǎn)◆維護內(nèi)部狀態(tài)◆監(jiān)控/管理工作流執(zhí)行微服務1微服務1微服務架構的核心是把復雜的業(yè)務系統(tǒng)拆分成高內(nèi)聚的微服務,每個服務負責相對獨立的邏輯。要實現(xiàn)業(yè)務價值,不是看單個服務的能力,而是要協(xié)調(diào)所有服務保證端到端業(yè)務流的成功微服務編排是指將多個微服務組合成一個完整的業(yè)務流程或服務的過程,該模式下會有一個中控引擎:容器3容器2容器1容器3容器2-十萬級服務器、單體流程引擎、可調(diào)度原子操作時鐘狀態(tài)更新邏輯提到“流程引擎”,聯(lián)想到的都是緩慢、低吞吐的使用場景,比如人工審批任務等,但服務器運營領域的大部分開發(fā)起審批功通過結束主流工作流引擎產(chǎn)品對比發(fā)現(xiàn),zeebe支持高吞吐、低延時和橫向擴容,能較好地適應微服務架構場景。它不依賴外部組件、設計之初就考慮了超大規(guī)模的微服務編排問題性能與吞吐低低中高高高容災自愈能力無無配置復雜配置復雜配置復雜天然支持橫向伸縮能力無無配置復雜配置復雜配置復雜天然支持可觀測性低低低低低天然支持外部依賴DB/MQDB/MQ無BPMNHandler模型BPMNHandler模型DAG(Python)worker模型,適合微服務架構worker模型,BPMNworker模型,適合微服務架構文檔友好度低高高中低中產(chǎn)品化程度高高高中低高社區(qū)活躍度中高低高zeebe工作流引擎頂層設計jobjobworkersJavazeebe工作流核心特性新老引擎頂層架構對比舊ActivitiDBActivitiDB任務Handler新新StreamProcessorRocksDBLogStream-Partition-0LogStream-Partition-1-ReplicaLogStream-Partition-0-ReplicaLogStream-Partition-1StreamProcessorRocksDBJobWorker開機Task關機TaskBroker-0異步隊列模型,削峰,緩解后端存儲計算壓力01基于單集群的工作流服務體系建設如何將開源組件落地到生產(chǎn)環(huán)境?--關鍵:量化理解組件能力問題1:同等配置壓測,僅官方benchmark的30%問題2:解決磁盤瓶頸后,吞吐提升,但成功率僅72%20wcnt(個/秒)wband(MB/s)util(%)SSD盤IOPS120000000—received-18—received-4—received-5—received-6一queue-limit-11一queue-limit-12—queue-limit-16-queue-limit-17-queue-limit-18—queuelimit-4—queue-limit-5一queue-limit-6—inflight-11—infight-12—inflight-16—inflight-17—infight-18—inflight-4—inflight-5—inflight-65000—dropped-1—dropped-19—dropped-2—dropped-20—dropped-21—dropped-23—dropped-37—dropped-38—dropped-39—dropped-48—received-1—received-10—received-11—received-12—received-13—received-14—received-15—received-16—received-17—received-18—received-19—received-2—received-20—received-21logstreamprocess_id2020/12/3010:00:00ReinstallProcess創(chuàng)建中2020/12/3010:00:10ReinstallProcess創(chuàng)建完成2020/12/3010:00:11運行中2020/12/3010:05:00ReinstallProcess…2020/12/3010:10:00ReinstallProcess完成logstreamInstanceCreatedInstanceCompleted運行時數(shù)據(jù)cache根據(jù)事件更新狀態(tài)歷史數(shù)據(jù)-不變flush運行中/完成優(yōu)點:(1)所見即所得的數(shù)據(jù)模型,開發(fā)無需轉(zhuǎn)換,可直接用于統(tǒng)計分析報表zeebe-zeebe-workflow-client■多節(jié)點、多分區(qū)并行執(zhí)行33上上報workflow-kafka高可用MySQL:■對等網(wǎng)絡集群,無單點瓶頸workflow-auditESES冷數(shù)據(jù)workflow_record工作流服務體系快速接入3、加載3、加載sdk編寫各任務邏輯4、通過控制臺或api創(chuàng)建流程實例繪制流程圖2、通過控制臺發(fā)publicclassSomeJob{@EnhancedJobWorker(type="some-service.SomeJob")publicvoidhandleTask(finalEnhancedJobClientclient,finalActivatedJobjob){//業(yè)務邏輯//..任務的原子實現(xiàn)if(success){pleteJob(job);throwSomeException("失敗原因");}7650545276855987058476660.7058476660.11619287058476032.xship-service-system-installjob.lnitTaskSystemlnstallP02從單集群演進到多集群,架構彈性可伸縮1、現(xiàn)網(wǎng)問題-任務未調(diào)度結束時間2022-05-3019:20:022022-05-3019:20:022022-05-3019:20:012022-05-3019:20:012022-05-3019:18:042022-05-3019:15:022022-05-3019:15:01狀態(tài)已完成JobType:AJobType:BJobType:X集合分析2022-05-3019:20:022022-05-3019:20:022022-05-3019:20:01獲取pxe狀態(tài)獲取pxe狀態(tài)2022-05-3019:15:012022-05-3019:14:12ayedWorkQueueayedWorkQueueMember)…romansmirnovcommentedMember)…Description:zeebecient.requestimeoutWhenthebrokeractivatesjobsandbeforesendingthembacktothegateway,thegatewaypotentiallycouldcloseitsconnection(e.g,therequesttimedout,networkinterruption,gatewaydied,etc).Asaresult,thejobsbeingmarkedasactivatedremaintobeactivated,andtherebycannotbepickedupagainuntilthespecifiedjobtimeout.Inthecaseofhavinghighjobtimeouts,thismightresultinhighlatencybetweenthetimeajobiscreatedandcompleted.PotentialSolution:Wheneverthebrokercannotsendbacktheactivatedjobstothegateway,theactivatedjobsaremadere-activatablebysubmitingafailcommand:□Getnotifiedifrespondingwiththeactivatedjobstothegatewaywassuccessfulornot□Ifthesendingresponsefailed,makethejobsre-activatablebysubmittingafailjobcommandcomponent/gatewayscope/brokerscope/gatewayNomilestone1、線程池任務堆積,任務拉到后遲遲不處理2、broker激活job至activate后,因集群網(wǎng)絡或超時等問題未能通知到gateway,進而無法同步至client6、執(zhí)行業(yè)務邏輯Thread-1zeebegateway.cluster1、數(shù)據(jù)存儲如何兼容數(shù)據(jù)格式變化2、與zeebe引擎的交互協(xié)議如何兼容新舊保持不變封裝了zeebeclientsdk,代碼需升級兼容僅升級版本業(yè)務微服務1業(yè)務微服務2問題輪詢?nèi)蝿蘸蛨?zhí)行的線程池問題輪詢?nèi)蝿蘸蛨?zhí)行的線程池任務輪詢器任務輪詢器JobPoller任務輪詢器1、不同微服務不可能同一時間點升級完畢zeebe引擎zeebe1.3.7zeebe0.26.0zeebe0.26.0創(chuàng)建實例Xzeebe0.26.0zeebe0.26.0zeebe0.26.0zeebezeebe0.26.0zeebe0.26.0zeebe0.26.0zeebe0.26.0zeebe0.26.0行行摒棄當前的單點架構設計,設計多活模式。支持同一時間點,同一個業(yè)務微服務可同時與新舊兩個zeebe引擎交互工作摒棄當前的單點架構設計,設計多活模式。支持同一時間點,同一個業(yè)務微服務可同時與新舊兩個zeebe引擎交互工作zeebesdk重耦合引擎,交互操作只能—對—zeebebroker-1zeebebroker-18zeebebroker-1zeebebroker-18新的問題L4負載均衡polljob/completeJob/failJobworkflow-cleintL4負載均衡zeebeclientcompleteJob/failJob重點問題攻克:集群解耦&流量精準路由polljob/completeJob/failJob業(yè)務微服務人工運維多集群架構重點問題攻克1-業(yè)務解耦zeebe集群job拉取→行為簡單且高頻→保持grpc不變山activatedcompleted/failedactivatedcompleted/failedtimeline!jobTypegrpc2jobsgrpc3/failJob改造集群1集群1broker---broker---createdactivatedcompleted/failedtimelinetimeline3completeJob/failJob3completeJob/failJobclientJobHandlerThreadPoolExecutorJobHandler->timelineiclientJobWorkerJobPollerJobHandlerThreadPoolExecutorJobHandler->timelinei多集群架構重點問題攻克2-流量精準路由新增ActivateJob轉(zhuǎn)發(fā)服務轉(zhuǎn)發(fā)至多個Zeebe集群ZeebeGateway工作流微服務jobTypeAjobTypeBcompleteJob/failJob.問題completeJob等請求如何精準路由到目標集群?//theunique//theuniquejobidentifier,i控制臺workflow-apiworkflow-apiworkflow-exporterworkflow-exporterID沖突zeebecluster-0zeebecluster-17返回實例7返回實例ID:10086workflow-apiworkflow-api服務分析后51位唯一標識同一個區(qū)內(nèi)zeebe事件的id創(chuàng)建流程實例創(chuàng)建流程實例創(chuàng)建流程實例創(chuàng)建流程實例64位標識唯—ID4返回實例ID:100868返回實例ID:10086系統(tǒng)重裝流程固件升級流程思路系統(tǒng)重裝流程固件升級流程實例10086是系統(tǒng)重裝流程還是固件升級流程?修改ID解析邏輯,保證不同集群的實例/任務實例10086是系統(tǒng)重裝流程還是固件升級流程?修改zeebe原生ID編碼規(guī)則,新增clusterlD解析邏輯實例ID:6755409618664841中間8位為分區(qū)數(shù)后51位為自增長數(shù)前5位調(diào)整為集群idPXE安裝任務id:6755409618664841創(chuàng)建在Zeebe集群A的實例<前13位分區(qū)→———后51位表示分區(qū)內(nèi)自增ID—→第3號分區(qū)proxyClusterId=0zeebegateway-1broker-0broker-2par7-rep1-Fbroker-0par4-repl-Fbroker-2jobid:580964361937103210ClusterId=1zeebegateway-2jobtype-Bhttpgrpc業(yè)務運維實時數(shù)據(jù)03秒級自動容災,提升整體高可用全鏈路異地容災如果工作流服務體系沒有完善的全鏈路容災機制,海量服務器運營在故障時很可能會進入災難性的死循環(huán)常規(guī)服務器運營流程任務調(diào)度執(zhí)行帶內(nèi)、帶外通道廣州XX區(qū)愈故風用可愈故風用可可用區(qū)Czeebe引擎集群帶內(nèi)、帶外通道全鏈路容災全鏈路容災嘗試遠程快速重啟恢復服務器服務器運營得益于多集群架構落地,實現(xiàn)全鏈路異地雙活部署異地雙活部署異地雙活部署異地雙活部署異地雙活部署CLB-0CLB-1workflow-poller微服務異地雙活部署創(chuàng)建流程實例創(chuàng)建流程實例GatewayGatewayGatewayZeebeBrokerBrokerBrokerBrokerZeebeBrokerBrokerBrokerBroker可用區(qū)A可用區(qū)B可用區(qū)C雙熱集群秒級自愈,工作流服務實現(xiàn)業(yè)務零感知高可用雙熱集群部署模式,集群故障時,秒級自動切換,業(yè)務零感知微服務JobType-故障流程微服務JobType-固件升級微服務JobType-系統(tǒng)重裝微服務JobType-診斷流程異地雙活部署workflow-api集群負載均衡器cluster-0cluster-0cluster-1異常斷開4、故障集群失敗數(shù)+1,命中剔除請求失敗數(shù)處理器+100GatewayGatewayGatewayZeebeBrokerBrokerBroker上海XX區(qū)cluster-1GatewayGatewayGatewayZeebeBrokerBroker峰值10峰值10W+QPS,支撐服務器數(shù)億級自動化作業(yè)支撐流程類型數(shù)支撐作業(yè)類型已完成流程實例量已完成服務器作業(yè)量已完成●運行中●已取消●已失敗常態(tài)日處理任務量100W+5seconds2seconds0seconds多層級流程實例嵌套,流程靈活可復用多層級流程實例嵌套,流程靈活可復用服務器運營流程存在多層嵌套金字塔關系,對于這類多層嵌套的復雜流程,流程引擎建設基于實例維度的父子關系,提供了無層級上限限制的多層嵌套流程調(diào)度能力編輯流程變量流程變量流程實例信息子實例信息流程變量流程實例信息流程實例ID開始時間2024-06-0100:流程實例ID開始時間2024-06-0100:47:302024-06-0100:2024-05-3121:42:032024-05-3121:30:14結束時間2024-06-0223:53:532024-06-0100:47:272024-05-3121:50:182024-05-3121:40:02流程編碼已完成90592974962153已完成93946352619163在服務器運營流程中,因硬件、機房環(huán)境等問題會導致流程無法自動完成,需要人工介入處理,為支持流程中的人工干預,提供服務器全鏈路可視化控制臺,提供流程運營操作,方便運維人員隨時處理,大大提升了運維效率wcv|發(fā)起四.主流程流程實例信息流程變量子實例信息畫主流程2024-06-0114:17:08流程圖刷新CancelInstan
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 美容院雙十一活動方案策劃
- 雙11小活動策劃方案
- 現(xiàn)服科技發(fā)展與創(chuàng)新人才培訓模式探討
- 匯報技巧構建高效商業(yè)匯報的核心要素
- 國慶節(jié)活動方案披薩
- 7 角的初步認識 第二課時(說課稿)-2023-2024學年二年級下冊數(shù)學蘇教版001
- Unit 11 Chinese festivals(period 1)(說課稿)-2023-2024學年滬教牛津版(深圳用)英語五年級下冊001
- 16 家鄉(xiāng)新變化(說課稿)2023-2024學年統(tǒng)編版道德與法治二年級上冊
- 2023四年級數(shù)學上冊 二 加減法的關系和加法運算律第5課時說課稿 西師大版
- 2023九年級物理下冊 第十一章 物理學與能源技術11.3能源說課稿 (新版)教科版
- 《志愿軍-存亡之戰(zhàn)》觀后感小學生
- 統(tǒng)編小學《道德與法治》三年級上下冊教材的解讀
- 人教版(2024)英語七年級上冊單詞表
- 產(chǎn)業(yè)鏈競爭關聯(lián)度
- TTJSFB 002-2024 綠色融資租賃項目評價指南
- 涵洞施工鋼筋混凝土圓管涵
- 高考地理一輪復習學案+區(qū)域地理填圖+亞洲
- 全新車位轉(zhuǎn)讓協(xié)議模板下載(2024版)
- 高中數(shù)學必修一試卷及答案
- 砌筑工考試卷及答案
- 呼吸治療師進修匯報
評論
0/150
提交評論