时间:2017.12.14
地点:北京
事件:优化CMS*异步计算消息架构
历时:1小时
先上架构图,看图说话。
某CMS,使用django搭建。
最最开始,有那么一些比较重的计算,比如分词算法等,直接在django ORM的model save中hard coded,随着CMS Admin使用量的增加,web响应速度受到显著拖累。
于是考虑将较重的计算异步化。最初的架构是,先使用独立的MQ服务将异步计算单元隔离出来,然后把异步计算消息发送封装成微服务,最后让Django signal调用微服务来触发。如图中灰色虚线所示。
优化后的架构,改为django signal直接向MQ发送异步计算消息,不再绕路微服务层。如图中红色实线所示。
架构优化后,整个系统的异步计算业务回路更短,故障率更低,稳定性更高。
[*] CMS:Content Management System,内容管理系统。