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