TIM中网络模型变更

一直都隐隐约约的感觉TIM的网络模型还是有点问题,但却总说不出具体问题来。时不时就会想起这个事,今天在车上,终于恍然大悟。
也许是受wildfire和jabberd2的影响太深了(特别是wildfire),TIM中网络和业务处理的联系过于紧密,从套接口读到数据流后,马上就进入XML的PullParser分析阶段,虽然之后有刻意的分离网络操作和业务逻辑,但并不彻底。
有时候业务处理还是能够感觉到网络的存在,我觉得这是个不良的设计。
让我耿耿于怀的,是Reactor的单线程特性。或许在某些情况下这是它的优势,但运用不当,就会成劣势。现在的TIM把业务逻辑和网络IO都挤进了Reactor所控制的线程中,只要存在一点点的阻塞,吞吐率将大打折扣。
wildfire敢把网络和业务绑得那么紧,是因为它采用的per-request,per-thread的模型,网络IO引起的阻塞不会影响到其他request处理。我也没有wildfire那么大的胆子采用per-request,per-thread,上下文切换的消耗不说,毕竟线程的数量也是有限制的,我很怀疑到底能承受多少连接数,如果没有记错,Linux没有重编译内核,一个进程内最多是1024个线程,Windows能多些,好像是65535,数据可能不准确,但也说明了线程资源是有限的。同时,WFMOReactor在Windows下每个线程内可同时监视的句柄数(62个),也似乎太少了,这点也让我烦恼。
仔细推敲后,我认为还是把网络和业务完全脱离比较好一点,用至少一个线程专门操作套接口,突破WaitForMultipleObjects的句柄数限制,再用另外一个线程来完成业务。在业务线程上使用管道过滤器模式来一步一步的处理数据。当Reactor线程接收到数据后,放进MessageBlock里面,用Task框架来处理。
这种模型确实解决了原先的诸多毛病,但如果在这个时候改网络模型,对整个项目是个不小的冲击,极有可能导致在计划的时间内不能完成项目。犹豫了一下,为了保证品质,最终还是在SubVersion上创建了新的试验分支。
module.jpg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值