免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: duanjigang
打印 上一主题 下一主题

详细讨论一个常见的网络工具如何设计 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2011-03-01 18:53 |只看该作者
本帖最后由 duanjigang 于 2011-03-01 18:55 编辑

说明下:
   一:调度线程负责创建任务结构体,并且添加到任务队列中,然后给客户端的cmagent即时返回信息,表明任务已经启动,
     
    二:工作线程负责从任务队列中拿出来任务节点,锁定状态,并且进行执行,执行完时修改任务节点的状态为已执行完,并把执行结果存储到节点中。
   
   三反馈线程负责轮训任务队列,检查任务队列中每个节点的状态,如果为正在执行,并且执行到达超时,则连接statserver,反馈一次状态给statserver表明正在执行,然后把该节点计时复位。如果状态为已执行完,则同样把结果反馈给statserver,然后释放该任务节点。
不知道这种方法有啥问题没,欢迎大家提意见。

论坛徽章:
24
金牛座
日期:2013-10-18 21:35:56综合交流区版块每日发帖之星
日期:2015-08-15 06:20:00综合交流区版块每日发帖之星
日期:2015-09-30 06:20:00综合交流区版块每日发帖之星
日期:2015-10-16 06:20:03每日论坛发贴之星
日期:2015-10-16 06:20:03综合交流区版块每日发帖之星
日期:2015-10-24 06:20:00IT运维版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之天津
日期:2016-02-25 16:28:04综合交流区版块每日发帖之星
日期:2016-06-12 06:20:00每日论坛发贴之星
日期:2016-06-12 06:20:00综合交流区版块每日发帖之星
日期:2016-06-13 06:20:00综合交流区版块每日发帖之星
日期:2015-06-22 22:20:00
12 [报告]
发表于 2011-03-01 22:01 |只看该作者
这样的话,命令发起者对于服务器端的执行状态就不是很清楚了,呵呵,我现在设计了一个反馈线程( ...
duanjigang 发表于 2011-03-01 18:41



    多线程模型的关键是:连接数量受到限制。如果你真是需要访问大量的服务器,就必须使用多进程。

论坛徽章:
0
13 [报告]
发表于 2011-03-02 09:25 |只看该作者
多线程模型的关键是:连接数量受到限制。如果你真是需要访问大量的服务器,就必须使用多进程。
一介村夫 发表于 2011-03-01 22:01



    喔,村村意思是说比如上万台服务器,我启动100个线程,每人100多个,但是对于整个进程来说,他的连接数已经上万了,超过系统上限了?
这种情况通过/proc/sys目录下的设置修改不知道能否解决?感觉应该可以的,会不会有什么问题?

论坛徽章:
0
14 [报告]
发表于 2011-03-02 09:45 |只看该作者
多线程模型的关键是:连接数量受到限制。如果你真是需要访问大量的服务器,就必须使用多进程。
一介村夫 发表于 2011-03-01 22:01



    恩,受到启发了,cmagent创建多个进程来执行命令通知,而且这些通知也是独立的事情,而且用进程避开的连接数的限制。谢谢

论坛徽章:
0
15 [报告]
发表于 2011-03-02 15:52 |只看该作者
感觉太繁琐啦。

还不如搞个memcache,任务下发时往 memcache写。

各个服务器自己来读取自己的任务,同时把任务进行的状态和结果定期反馈到memcache的value中去。

并且在memcache这端,可以扩展性的作 任务审核、审计、全局视图等功能。

论坛徽章:
0
16 [报告]
发表于 2011-03-02 15:54 |只看该作者
感觉太繁琐啦。

还不如搞个memcache,任务下发时往 memcache写。

各个服务器自己来读取自己的任务,同 ...
xti9er 发表于 2011-03-02 15:52



    这样的话,命令发送者和接受者没有进行实时的交互,用户不能及时得到执行者的状态,比如接受者不可达等

论坛徽章:
0
17 [报告]
发表于 2011-03-02 15:55 |只看该作者
还有,接收者是不是要轮训memcached了?还是怎么通知?我对memcached不太熟悉:wink:

论坛徽章:
0
18 [报告]
发表于 2011-03-02 17:03 |只看该作者
又改动了下,两个队列,一个是任务队列,一个是反馈队列,任务队列是调度线程和工作线程来用,反馈队列是工作线程和反馈线程来用。这样减小了互斥带来的延迟

论坛徽章:
0
19 [报告]
发表于 2011-03-02 18:13 |只看该作者
这样的话,命令发送者和接受者没有进行实时的交互,用户不能及时得到执行者的状态,比如接受者不 ...
duanjigang 发表于 2011-03-02 15:54



     客户端和服务器不直接通信 更安全. 同时memcache这边可以扩展出 任务审核、审计、全局视图等功能。 而且像你那样的需求 及时性要求多高?海量的服务器运维时,考虑的并不一定只是某个单独的任务状态。

    能及时获取批量任务的状况应该更有价值吧?

论坛徽章:
0
20 [报告]
发表于 2011-03-02 18:49 |只看该作者
客户端和服务器不直接通信 更安全. 同时memcache这边可以扩展出 任务审核、审计、全局视图等功能 ...
xti9er 发表于 2011-03-02 18:13



      说起安全方面的考虑,memcache还不能用来作为任务下发,他用来同步任务状态信息可以。任务下发还是mysql来吧,便于访问控制。

     而memcache的信息查询(轮训)效率不用担心,本来hash的性能就很高。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP