IM 架构设计10

从游击队到正规军(一):马蜂窝旅游网的IM系统架构演进之路

IM 架构设计10

上图模型中消息轮询模块的长连接请求是通过 php-fpm 挂载在阻塞队列上,当该请求变多时,如果不能及时释放 php-fpm 进程,会对服务器性能消耗较大,负载很高。

为了解决这个问题,我们对消息轮询模块进行了优化,选用基于 OpenResty 框架,利用 Lua 协程的方式来优化 php-fmp 长时间挂载的问题。Lua 协程会通过对 Nginx 转发的请求标记判断是否拦截网络请求,如果拦截,则会将阻塞操作交给 Lua 协程来处理,及时释放 php-fmp,缓解对服务器性能的消耗。

IM 架构设计10

IM 架构设计10

IM 架构设计10

 

IM 架构设计10

IM 架构设计10

IM 架构设计10

IM 架构设计10

IM 架构设计10

IM 架构设计10

IM 架构设计10

IM 架构设计10

IM 架构设计10

IM 架构设计10

IM 架构设计10

IM 架构设计10

IM 架构设计10