時(shí)間:2017.12.14
地點(diǎn):北京
事件:優(yōu)化CMS*異步計(jì)算消息架構(gòu)
歷時(shí):1小時(shí)
先上架構(gòu)圖,看圖說話。

171214refactorcmsarch.png
某CMS,使用django搭建。
最最開始,有那么一些比較重的計(jì)算,比如分詞算法等,直接在django ORM的model save中hard coded,隨著CMS Admin使用量的增加,web響應(yīng)速度受到顯著拖累。
于是考慮將較重的計(jì)算異步化。最初的架構(gòu)是,先使用獨(dú)立的MQ服務(wù)將異步計(jì)算單元隔離出來,然后把異步計(jì)算消息發(fā)送封裝成微服務(wù),最后讓Django signal調(diào)用微服務(wù)來觸發(fā)。如圖中灰色虛線所示。
優(yōu)化后的架構(gòu),改為django signal直接向MQ發(fā)送異步計(jì)算消息,不再繞路微服務(wù)層。如圖中紅色實(shí)線所示。
架構(gòu)優(yōu)化后,整個(gè)系統(tǒng)的異步計(jì)算業(yè)務(wù)回路更短,故障率更低,穩(wěn)定性更高。
[*] CMS:Content Management System,內(nèi)容管理系統(tǒng)。