基於狀態驅動的AOP技術在模組解耦中的應用

2021-07-29 06:34:10 字數 1409 閱讀 1501

在交易系統的設計中,往往會在核心訂單上引入狀態機的設計。外部事件驅動訂單狀態翻轉,並觸發呼叫一系列的其他服務。

這樣,在處理核心訂單的**中,往往會有很多呼叫其他服務的**。

基於狀態機的設計,引入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 架構中...