CQRS(Command Query Responsibility Segregation)是一種架構(gòu)模式,用于將應(yīng)用程序內(nèi)的查詢(Query)與寫操作(Command)分離,從而分別使用專門的模型進(jìn)行處理。該模式旨在提高系統(tǒng)的可擴展性、可維護(hù)性和性能。
在CQRS架構(gòu)中,應(yīng)用程序分為兩個部分:
1.查詢模型:用于處理所有的查詢操作。該模型通常會對數(shù)據(jù)進(jìn)行預(yù)處理和聚合,以提高查詢速度和效率。
2.命令模型:用于處理所有的寫操作。該模型通常會將寫入請求轉(zhuǎn)換為事件,并將其發(fā)送給事件總線進(jìn)行處理。
CQRS模式中的這兩個模型分別負(fù)責(zé)處理不同類型的操作,從而更好地符合單一責(zé)任原則。這可以使得系統(tǒng)更加容易維護(hù),易于擴展,并能夠提供更好的性能和用戶體驗。
CQRS最大優(yōu)勢就是基于這種職責(zé)分離能帶給我們更多的架構(gòu)屬性選擇。
“查詢” 和 “命令” 兩側(cè)進(jìn)行獨立部署以獲取更好的伸縮性
“查詢” 和 “命令” 兩側(cè)獨立架構(gòu)設(shè)計
“查詢” 和 “命令”兩側(cè)進(jìn)行獨立數(shù)據(jù)模型設(shè)計
基于CQRS,我們可以衍生出更多的架構(gòu)屬性,結(jié)合實際的業(yè)務(wù)場景,進(jìn)行差異化的架構(gòu)設(shè)計。