
異步處理設計方案
8頁異步處理設計方案前言良好的系統(tǒng)設計必須要做到開閉原則,隨著業(yè)務的不斷迭代更新,核心代碼也會被不斷改動,出錯的概率也會大大增加但是大部分增加的功能都是在擴展原有的功能,既要保證性能又要保證質(zhì)量,我們往往都會使用異步線程池來處理,然而卻增加了很多不確定性因素由此我設計了一套通用的異步處理SDK,可以很輕松的實現(xiàn)各種異步處理目的通過異步處理不僅能夠保證方法能夠得到有效的執(zhí)行而且不影響主流程更重要的是各種兜底方法保證數(shù)據(jù)不丟失,從而達到最終一致性優(yōu)點無侵入設計,獨立數(shù)據(jù)庫,獨立定時任務,獨立消息隊列,獨立人工執(zhí)行界面(統(tǒng)一登錄認證)使用spring事務事件機制,即使異步策略解析失敗也不會影響業(yè)務如果你的方法正在運行事務,會等事務提交后或回滾后再處理事件就算事務提交了,異步策略解析失敗了,我們還有兜底方案執(zhí)行(除非數(shù)據(jù)庫有問題,消息隊列有問題,方法有bug)原理容器初始化bean完成后遍歷所有方法,把有@AsyncExec注解的方法緩存起來,方法運行時通過AOP切面發(fā)布事件事務事件監(jiān)聽處理異步執(zhí)行策略:組件設計模式流程圖數(shù)據(jù)庫腳本異步策略安全級別執(zhí)行狀態(tài)流程圖apollo 配置用法注意。
點擊閱讀更多內(nèi)容