当前位置:  技术问答>linux和unix

求教:多连接监控设计问题,谢谢!!欢迎讨论

    来源: 互联网  发布时间:2016-08-27

    本文导语:  大家好, 我们开发的系统需要实现多前台对后台进程的监控问题,请大家推荐一个好的实现架构: 后台有一个服务进程,多个客户端进程可以对服务进程活动进行监控(建立连接后,后端服务进程的某些操作动作...

大家好, 我们开发的系统需要实现多前台对后台进程的监控问题,请大家推荐一个好的实现架构:

后台有一个服务进程,多个客户端进程可以对服务进程活动进行监控(建立连接后,后端服务进程的某些操作动作记录可以主动推送到客户端)。客户端数量不确定,可以随时增加或减少。不同客户端监控的活动可能也不同,比如客户端1监控服务进程的io操作,客户端2监控服务进程的网络操作。

客户端的总量不会超过50个,服务进程的活动大约几百毫秒一次,希望能够采用多进程设计。
--------------------------------------------------------------------------------------------------------------

目前我的思路是,消息队列 + 多路复用socket方式。增加一个监控管理进程实现全部功能:

1. 服务进程将操作动作写入一个消息队列
2. 监控管理进程维护一个已建立连接的socket列表。该进程建立tcp监听socket lfd,负责接收新的连接请求。该进程采用非阻塞的方式读取消息队列,select方式处理socket。
3. 监控管理进程执行流如下:

   
while (1)
{
    select(); //非阻塞,设置较小的超时时间
    if (lfd准备好)
    {
        accept建立连接;
        将新socketfd加入socket列表;
    }
    read消息队列;
    if (新消息)
    {
        遍历socket列表,调用send;
    }
}
 

--------------------------------------------------------------------------------------------------------------

以上监控管理进程设计存在一下几个问题:
1. 由于采用非阻塞设计,当消息队列为空,上述进程处于空转,忙时等待效率低。
2. 当已建立的socket列表中某个描述符调用send时,延迟可能比较大,从而拖慢整个发送过程,也降低进程对新连接的响应速度。
3. 没有实现信息的分类发送。
4. 这种监控信息属于业务范畴,采用消息队列存储是否合适

--------------------------------------------------------------------------------------------------------------

欢迎大家指教,最好能有更好的解决方案,谢谢!!

|
多线程,加锁的办法可能比你那种要好吧,
while (1)    线程1
{
    select(); //阻塞
    if (lfd准备好)
    {
        accept建立连接;
        将新socketfd加入socket列表;
    }


while(1) 线程2
    read消息队列;  阻塞
    if (新消息)
    {
        遍历socket列表,调用send;
    }
}

|
用消息机制是一个不错的选择 

|
编程不会 故来学习之

    
 
 

您可能感兴趣的文章:

  • 求教!关于网页的监控问题!
  • [求教]:NFS的连接问题.做NFS时报连接错误,据称是portmap问题,但...
  • 高分求教,linux下的GPRS连接!!!
  • weblogc连接池问题,求教!!(基本概念)
  • Tomcat已设置成功,但不会连接数据库mssql. 求教。
  • 求教,ssh连接是肿么个原理啊
  • 求教linux下的mysql编程连接!
  • centOS 5.5 宽带连接的问题,很小白,诚心求教
  • 100分求教有关sco服务器的连接问题(在线等)
  • 求教,用jsp如何用连接sybase数据库?
  • 急!求教连接MySQL的问题
  • 使用连接池时能否使用预编译的PrepareStatement或CallableStatement,200分求教
  • 求教! if(rs.getString("name")!="中文") //MySql+连接池, 这种写法有什么不对?
  • 求教用过lua的大侠关于在C中嵌入lua脚本的连接问题?
  • [100分]高分求教,如何能够单步控制TCP的连接?
  • 编译通过但连接有问题,刚接触LINUX编程,我想这个问题应该很简单,可我 还是不会~! 求教~!!
  • weblogic连接ibm db2问题,50分求教!
  • 高分求教!!!JSP连接Oracle小程序。
  • 向ejb高手求教--关于jdbc Api在ejb中连接sql server 7.0的问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 求教求教,shell问题...各位大哥,帮忙下
  • 400分求教: 求教一简单问题,现场给分
  • 高分求教:如何将JAVA文件(.class)制作成可执行文件(.exe),求教方法或工具推荐
  • 急!!求教linux命令的使用:统计出/bin目录中文件的个数,追加到文件filea的结尾
  • 求教:在UNIX中查找包含指定文字的文件名
  • 小白菜求教linux大鸟
  • JDK1.3.1初级问题求教
  • 初学者有问题求教!
  • 各路高手请进!高分求教,非常着急!
  • 高分求教的问题(关于SendMail设置)
  • linux和unix iis7站长之家
  • 求教:知道当前时间,如何得到N天前的时间 ?
  • 求教:switch(condition)中的condition 必须为整型吗?
  • Linux远程访问的问题,高分求教:)
  • 求教:在Linux下如何做代理服务器?
  • 紧急求教!究竟Java里面有没有相当于C++的CPOINT的类阿?
  • 求教JAVA中XML解析问题
  • 50分求教,在JSP里如何将String转换成Double
  • 我刚装好,是不是需要配制环境变量?求教。
  • 400分求教JAVA皮肤的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3