精华帖 (0) :: 良好帖 (7) :: 新手帖 (0) :: 隐藏帖 (2)
|
|
---|---|
作者 | 正文 |
发表时间:2008-08-19
wzpwork 写道 不错,学习了.其实像这个应用,不用AJAX也可以,直接用XMLHTTP.
你现在用的Ajax其实就是个拉模型技术 需要的时候不停的去取信息 相反你也可以采用推模型的技术 通过模拟Http协议 不停的像客户端发送信息 这样实时性是非常高的 |
|
返回顶楼 | |
发表时间:2008-08-19
偶就是用退的
JMS推到监控服务器 服务器用bds推到页面flex 全程无刷新 动态实时 |
|
返回顶楼 | |
发表时间:2008-08-19
楼上的朋友建议很好,但是不符合我这个系统吧,如果用push(服务器驱动客户端),
像我做的cpu,内存等系统信息不好做成服务端的事件驱动吧,总不能每内存, cpu有改变就推 一次客户端,只能用轮询的方法吧 |
|
返回顶楼 | |
发表时间:2008-08-19
kakaluyi 写道 楼上的朋友建议很好,但是不符合我这个系统吧,如果用push(服务器驱动客户端),
像我做的cpu,内存等系统信息不好做成服务端的事件驱动吧,总不能每内存, cpu有改变就推 一次客户端,只能用轮询的方法吧 你说的轮询是指服务器端的,是监控数据的实现。 他们说的推指客户端的,指浏览器取数据的方式,不一样的。 |
|
返回顶楼 | |
发表时间:2008-08-19
xieke 写道 kakaluyi 写道 楼上的朋友建议很好,但是不符合我这个系统吧,如果用push(服务器驱动客户端),
像我做的cpu,内存等系统信息不好做成服务端的事件驱动吧,总不能每内存, cpu有改变就推 一次客户端,只能用轮询的方法吧 你说的轮询是指服务器端的,是监控数据的实现。 他们说的推指客户端的,指浏览器取数据的方式,不一样的。 不不,我的轮询是客户端(浏览器)发送请求轮询服务器的系统信息,当然项目要做的是一个会议系统就是一个推比如有用户进入会议,则要通知浏览器有用户进入,这样就要用到长连接,要servlet和客户端一直挂住,这就是我理解的推,由事件驱动,如果由客户端一直查询servlet是否有用户加入会议,则用到了轮询,这个实时性都非常不好,性能也损失很大,正在优化,每个用户进入会议想把从轮询过度到,服务端通知浏览器。而这个实时监控我觉得用浏览器轮询服务器会比较好,因为系统信息不好事件驱动 |
|
返回顶楼 | |
发表时间:2008-08-20
ajax可以考虑使用DWR简单,方便
|
|
返回顶楼 | |
发表时间:2008-08-20
给良好了。这是非常有热情的帖子阿。JavaEye应该也鼓励这种展示自己的精神的。这类东西我以前也做过。原理类似。不过给你几个小建议:
不要用静态类(方法)来完成采集。用下面的方式: 定义一个接口 Interface SysInfoFetcher { public CpuInfo fetchCpuInfo(); public MemInfo fetchMemInfo(); public DiskInfo fetchDIskInfo(); } 然后把你自己写的代码重构成下面的东东: class LinuxSysInfoFetcher implements SysInfoFetcher { //TODO 实现相应的方法 } 这样的好处在于: 1、你的前端应用代码可以面向SysInfoFetcher接口来编写,不依赖具体的实现; 2、你现在可以在现在的项目中注入LinuxSysInfoFetcher实现,今后如果有精力或者有能力了,还可以写若干个WinxpSysInfoFetcher或者SolarisSysInfoFetcher。你的代码生命就延长了扩展了。 3、也许有一天你觉得你掌握JNI了,于是你可以用JNI重构LinuxSysInfoFetcher,而不影响接口和前段应用。甚至你可以直接写个新的LinuxISysInfoFetcherJniImpl实现类。 到了那一天,你就可以把包直接放到sf.net上了。 |
|
返回顶楼 | |
发表时间:2008-08-20
我们使用snmphibernate, cpu, memory信息都可以取到了,jboss就用jmx,然后一个timetask去轮询访问各个点。
|
|
返回顶楼 | |
发表时间:2008-08-20
neora 写道 给良好了。这是非常有热情的帖子阿。JavaEye应该也鼓励这种展示自己的精神的。这类东西我以前也做过。原理类似。不过给你几个小建议:
不要用静态类(方法)来完成采集。用下面的方式: 定义一个接口 Interface SysInfoFetcher { public CpuInfo fetchCpuInfo(); public MemInfo fetchMemInfo(); public DiskInfo fetchDIskInfo(); } 然后把你自己写的代码重构成下面的东东: class LinuxSysInfoFetcher implements SysInfoFetcher { //TODO 实现相应的方法 } 这样的好处在于: 1、你的前端应用代码可以面向SysInfoFetcher接口来编写,不依赖具体的实现; 2、你现在可以在现在的项目中注入LinuxSysInfoFetcher实现,今后如果有精力或者有能力了,还可以写若干个WinxpSysInfoFetcher或者SolarisSysInfoFetcher。你的代码生命就延长了扩展了。 3、也许有一天你觉得你掌握JNI了,于是你可以用JNI重构LinuxSysInfoFetcher,而不影响接口和前段应用。甚至你可以直接写个新的LinuxISysInfoFetcherJniImpl实现类。 到了那一天,你就可以把包直接放到sf.net上了。 接口的建议非常好,以前写代码没有想过设计模式,都是想到用什么就写什么,没有设计可能是菜鸟的必经阶段吧,一语惊醒梦中人啊,确实用接口来重构这样非常方便扩展,已经在项目中接入接口了,必要的时候还准备用snmp4j来扩展监控更多的功能。 看了后真的很振奋,被投了良好贴啊(虽然是精神鼓励成分比较大),以后一定会继续把原创的体验放到javaeye上让大家拍砖,虽然很多技术没有创新,也没什么特别好的架构和选型,但新人真的很需要这种鼓励,这里多谢neora的建议和鼓励(写了那么多),和对菜鸟的关怀 |
|
返回顶楼 | |
发表时间:2008-08-20
有现成的开源的Ganglia,很好用,我们公司就用他
http://wiki.huihoo.com/index.php?title=Ganglia |
|
返回顶楼 | |