在交易系統的設計中,往往會在核心訂單上引入狀態機的設計。外部事件驅動訂單狀態翻轉,並觸發呼叫一系列的其他服務。
這樣,在處理核心訂單的**中,往往會有很多呼叫其他服務的**。
基於狀態機的設計,引入spring aop技術,在主訂單狀態發生變化的時候,通知到其他模組。關心訂單此狀態的業務模組處理變更事件。
訂單處理方法
@tradestatuschange(entrystatus = tradestatus.new, expectstatus = , statusfield = "tradestatus", beanclass = buytradedetaildto.class)
public buytradedetaildto dealnewtraderecord(buytradedetaildto tradedetaildto)
} object returnvalue = joinpoint.proceed(arguments);
if(null == returnvalue
|| false == beanclass.isinstance(returnvalue))
if(beanclass.getmethod(getvaluefieldmethod.tostring()).invoke(returnvalue)
.equals(method.getannotation(transferstatuschange.class).entrystatus()))
int index = 0;
for(; index < method.getannotation(transferstatuschange.class).expectstatus().length; index++)
}if(method.getannotation(transferstatuschange.class).expectstatus().length == index)
return returnvalue;
}}
afterreturning狀態變更事件介面卡
@component
@aspect
public class tradestatuschangeuserassetaspect
if(result instanceof stdredeemdetaildto)
其他模組**
@transactional
public void registerassetchange(long productid, long userid, assetchangereasontype changereason, listassetoperationlist)
.......
基於C語言的狀態機實現技術
一 簡介 有限狀態機是一種用來進行物件行為建模的工具,其作用主要是描述物件在它的生命週期內所經歷的狀態序列,以及如何響應來自外界的各種事件。有限狀態機 finite state machine或者finite state automata 是軟體領域中一種重要的工具,很多東西的模型實際上就是有限狀態...
在基於雜湊的Map中使用鎖分段技術
1 降低鎖競爭的程度 減少鎖的持有時間,降低鎖的請求頻率,使用帶有協調機制的獨佔鎖。縮小加鎖 的範圍 縮小鎖的粒度,對相互對立的共享變數使用不同的鎖 對單個鎖分解為兩個鎖,到分解為多個鎖的鎖分段,使同一時刻可以讓更多執行緒同時操作不同分段鎖鎖定的分段。2 基於雜湊的map實現,其中使用了鎖分段技術。...
事件驅動和狀態機模式在YARN中的使用
閱讀了下yarn 的原始碼,架構中設計模式除了服務生命週期管理模式外,還包括事件驅動和狀態機模式。生命週期管理模式在容器設計時候比較常見,包括資源模型的載入,解除安裝等等,比如 tomcat jboss 等開源產品。這裡重點講一下事件驅動和狀態機模式的使用。從提交任務到任務處理完成,yarn 架構中...