EasyDarwin云平台之EasyCMS中心管理服务消息处理优化
来源:互联网 发布:淘宝店怎么推广最有效 编辑:程序博客网 时间:2024/05/16 16:22
问题
之前EasyCMS的消息处理一直是EasyCMS的性能瓶颈。原因是当客户端通过RESTful接口访问EasyCMS时,EasyCMS构建报文转发给设备时与出现等待问题。这就造成了EasyCMS在等待设备响应时出现了资源浪费的情况。如图所示
CSHTTPSession在访问RESTful接口后再自己做循环超时等待SCHTTPSession返回回应信息。
//HTTPSession.cpp ExecNetMsgCSGetStreamReqRESTfulfInfo.uTimeoutNum++;if (fInfo.uTimeoutNum > CliStartStreamTimeout / 100)//超时了{ fInfo.bWaitingState = false;//恢复状态 return httpRequestTimeout;}else//没有超时,继续等待{ fInfo.uWaitingTime = 100;//以100ms为周期循环等待,这样不占用CPU return QTSS_NoErr;}
更改方法
仿照sip协议中的From/To/Via将发送方、转发方、接收方的ID携带在报文中,当响应报文发送回来之后可以有效的索引报文的发送方和接收方,这样可以更好的将发送/接收的报文使用对应的HTTPSession进行处理。避免了循环等待的低效操作。
//HTTPSession.cpp ExecNetMsgDSPushStreamAckstring strFrom = req.GetBodyValue(EASY_TAG_FROM);string strTo = req.GetBodyValue(EASY_TAG_TO);string strVia = req.GetBodyValue(EASY_TAG_VIA);OSRefTableEx* sessionMap = QTSServerInterface::GetServer()->GetHTTPSessionMap();OSRefTableEx::OSRefEx* sessionRef = sessionMap->Resolve(strTo);if (sessionRef == NULL) return EASY_ERROR_SESSION_NOT_FOUND;OSRefReleaserEx releaser(sessionMap, strTo);HTTPSession* httpSession = static_cast<HTTPSession *>(sessionRef->GetObjectPtr());if (httpSession->IsLiveSession()){ //do something}
获取更多信息
邮件:support@easydarwin.org
WEB:www.EasyDarwin.org
QQ交流群:288214068
Copyright © EasyDarwin.org 2012-2016
0 0
- EasyDarwin云平台之EasyCMS中心管理服务消息处理优化
- EasyDarwin云平台之EasyCMS中心管理服务接入ffmpeg实现264转图片快照功能
- 开源流媒体云视频平台EasyDarwin中EasyCMS服务是如何进行命令转发和消息路由的
- EasyDarwin流媒体云平台架构
- EasyDarwin云平台部署实践
- objective 消息中心的处理
- EasyDarwin开源流媒体云平台之云台ptz控制设计与实现
- EasyDarwin开源流媒体云平台之云台ptz控制设计与实现
- EasyDarwin开源流媒体云平台之语音对讲功能设计与实现
- EasyDarwin开源流媒体云平台之语音对讲功能设计与实现
- EasyDarwin开源流媒体云平台之EasyRMS录播服务器功能设计
- EasyDarwin开源流媒体服务器内存管理优化
- [转载]EasyDarwin开源流媒体服务器内存管理优化
- Dubbo分布式服务治理(一)——Dubbo注册中心&&管理平台安装(Linux)
- IBM:服务共享平台 全面优化管理支撑系统
- EasyDarwin幼教云视频平台在幼教平台领域大放异彩!
- Java微信公众平台开发之消息管理
- 从零开始学习EasyDarwin之RTSP请求处理过程
- 杂言碎语
- RcFile
- UVA-455 Periodic Strings
- android studio小问题
- Python基础知识学习笔记(2)
- EasyDarwin云平台之EasyCMS中心管理服务消息处理优化
- iOS10 作为开发者该知道什么?
- 图像知识分享
- 算法复习 - 八皇后问题(Java实现)
- javaScript基础学习(6)(瀑布流例子)
- 操盘机器人闪亮登场,不出意外大盘还将回调2到3天,图中虚线用于预测大盘走势从未失误过哦
- Servlet的基本认识
- 程序的double free测试(使用env MALLOC_CHECK_=1 ./a.out)
- Java IO _压缩流