http://blog.didispace.com/microservices-caozupeng-3/
1.事物腳本
2.領(lǐng)域模型
當(dāng)一個方法不便放在實(shí)體或者值對象上,使用領(lǐng)域服務(wù)便是最佳的解決方法第献,請確保領(lǐng)域服務(wù)是無狀態(tài)的险绘。
充血模型的缺點(diǎn):
從上面的例子以舒,在Repository的load 到執(zhí)行業(yè)務(wù)方法,再到save回去,這是需要耗費(fèi)一定時間的脸甘,但是這個過程中如果多個線程同時請求對Inventory庫存的鎖定阶牍,那就會導(dǎo)致狀態(tài)的不一致喷面,麻煩的是針對庫存的并發(fā)不僅難處理而且很常見。
貧血模型完全依靠數(shù)據(jù)庫對并發(fā)的支撐走孽,實(shí)現(xiàn)可以簡化很多惧辈,但充血模型就得自己實(shí)現(xiàn)了,不管是在內(nèi)存中通過鎖對象磕瓷,還是使用Redis的遠(yuǎn)程鎖機(jī)制盒齿,都比貧血模型復(fù)雜而且可靠性下降,這是充血模型帶來的挑戰(zhàn)困食。更好的辦法是可以通過事件驅(qū)動的架構(gòu)來取消并發(fā)