用Java开发的性能监控系统设计的疑问,高分请教!
做一个项目,主要实现对服务器的性能数据的监控与分析,用Java来开发。系统由server端和client来组成。server的进程负责收集关心的性能数据(比如CPU,Memory信息),并把这些数据按照时间插入到MySQL中。client负责从server端的数据库把用户关心的性能数据提取出来,再使用图形化的方式显示。
目前,client是直接通过SQL查询的方式将数据从MySQL里提取,然后将数据图形化显示。如果有多个client,也就是多个SQL查询提取数据。 不知道是否可在Server设计一个代理,client把数据请求发送给这个代理,由server端吧数据从MySQL提取,并做一些计算,并把图形以一种方式发送给client。或者说server端的代理可以做一些预处理,把数据发送给client端,client只负责画图(因为,有时候client需要一些数据的抽样,和计算)。
就好像在server有个cache,重复的数据请求不用再查询MySQL, 可以直接把数据发送给client。
什么的技术可以实现上述功能呢?
Java --------------------编程问答-------------------- JConsole可以监控memory和cpu。数据插入到数据库后,数据展示你想咋实现都可以。
缓存的话,如果你的client没有到庞大的数量级,没有必要。最好给用户关心的数据建立索引就差不多了。 --------------------编程问答-------------------- 谢谢版主回复。
其实,我们在做一个电信级的性能监控系统,需要监控网络中很多节点的性能数据(或者叫PM 数据),网络中OMC负责把PM数据从节点上拿过来。我们的系统就是从OMC上拿各个节点的PM数据。这里的CPU,memory 只是举例。
目前,大家感觉client直接读server端的数据库的设计太过老套,client应该尽量的简单,把复杂的事情交给Server端,因为client是在PC上,server端有>64G的内存 (当然,还有其他的进程)。 --------------------编程问答-------------------- 顶一下,继续跟大家讨论 --------------------编程问答-------------------- PM counter么。。
我们项目也用到PM,不过我们是直接服务器端解析好数据生成的XML文件。客户端读取XML即可。 --------------------编程问答-------------------- 如果客户端较多的话,可以在服务器写些报表线程,由服务器端定时生成报表,客户端直接取报表就行了。 --------------------编程问答-------------------- 服务器端是有报表线程的,那是系统的另外一个功能。在客户端能根据客户的需要生成PM数据的图表(jfreechart)是另外一个重要的功能。
写个server的cache是一种方式。
那么,通过rmi把读取mySQL数据,并做计算的code放在server端,只把计算好的数据传给client是否可行呢? --------------------编程问答-------------------- 我觉得这种需求用B/S不合理 --------------------编程问答-------------------- 我们现在是C/S架构的,有个胖客户端。 --------------------编程问答-------------------- 继续跟大家探讨。电信级的PM 分析系统 有没有开源的可以借鉴? --------------------编程问答-------------------- 我不知道我理解的对不对,我的建议是所有读取数据库并计算的代码都在服务器端,客户端有请求时,先去缓存中找,找不到时再去数据库中读取并计算,最后将计算的值保存到缓存中。 --------------------编程问答-------------------- 完全可以用B/S做,
服务程序处理所有的数据,分页等操作.
缓存数据如果 100万以内,直接用map做得了,只要内存占用在500-800M以内,可以接受.
搞个tomcat也能用到 1.4G内存,64位机器就更大了,没问题.
补充:Java , Java SE