要做监控的程序,但是写的总觉的不满意,请大家给些建议解决方案
要做监控的程序,但是写的总觉的不满意,请大家给些建议
程序的架构是:数据采集服务器,客户端界面。
数据采集服务器负责从多台要监测的设备中通过指令提取相关的参数。我现在是通过tcp/ip的方式与每台设备进行连接,为每个设备开一个线程,然后数据采集服务器将收到的数据写入数据库同时将数据再传给客户端程序。现在只为4台设备做监控,以后可能增加到十几台,这样下去,要开十几个线程,这种方法是否可行呢,因为每台设备要提取的参数命令都不相同,并且都在十个以上。
还有客户端我是接收服务器发来的数据还是从数据库中进行读取, 从程序的稳定性上说,哪种方法更合适,大家能否给提一些好的解决方法!!!
------解决方案--------------------
建议不要让采集服务器直接发数据给客户端,而是把数据存入到数据库,然后客户端自己去读。这样降低了耦合,可扩展性好,同时降低了采集服务器的负担。
------解决方案--------------------
6楼应该是正解。
采集服务器只负责数据的搜集和存储,负责接收客户端的指令,完成特定的操作。服务器可以用定时器轮询设备,读出设备的状态和数据,存储在数据库中。
一般地,如果不是特别紧急的数据要求,服务器并不需要那么多线程去采集数据,挨个查一遍就可以了。
每个客户端分别用定时器去查询服务器的最新数据和状态,根据状态自动或者手动给服务器下达命令。
这样相互之间的耦合性就小了,思路也简单了。
所有要求的出发点,要看你的系统实时性如何要求。大概这样的设计,100ms的响应周期是没有问题的。
监控系统中采用数据库,我没有经验,感觉很麻烦。个人以为,对快速增长的实时数据,SQL2000恐怕满足不了需求。大量的数据、不规则的数据、频繁地操作数据库,加上定期的数据库维护操作,恐怕SQL会累死,它毕竟不是为实时准备的。。。。
如果不需要保存历史数据,仅仅保存当前的数据和状态,可能自己做个数据管理。
程序的架构是:数据采集服务器,客户端界面。
数据采集服务器负责从多台要监测的设备中通过指令提取相关的参数。我现在是通过tcp/ip的方式与每台设备进行连接,为每个设备开一个线程,然后数据采集服务器将收到的数据写入数据库同时将数据再传给客户端程序。现在只为4台设备做监控,以后可能增加到十几台,这样下去,要开十几个线程,这种方法是否可行呢,因为每台设备要提取的参数命令都不相同,并且都在十个以上。
还有客户端我是接收服务器发来的数据还是从数据库中进行读取, 从程序的稳定性上说,哪种方法更合适,大家能否给提一些好的解决方法!!!
------解决方案--------------------
建议不要让采集服务器直接发数据给客户端,而是把数据存入到数据库,然后客户端自己去读。这样降低了耦合,可扩展性好,同时降低了采集服务器的负担。
------解决方案--------------------
6楼应该是正解。
采集服务器只负责数据的搜集和存储,负责接收客户端的指令,完成特定的操作。服务器可以用定时器轮询设备,读出设备的状态和数据,存储在数据库中。
一般地,如果不是特别紧急的数据要求,服务器并不需要那么多线程去采集数据,挨个查一遍就可以了。
每个客户端分别用定时器去查询服务器的最新数据和状态,根据状态自动或者手动给服务器下达命令。
这样相互之间的耦合性就小了,思路也简单了。
所有要求的出发点,要看你的系统实时性如何要求。大概这样的设计,100ms的响应周期是没有问题的。
监控系统中采用数据库,我没有经验,感觉很麻烦。个人以为,对快速增长的实时数据,SQL2000恐怕满足不了需求。大量的数据、不规则的数据、频繁地操作数据库,加上定期的数据库维护操作,恐怕SQL会累死,它毕竟不是为实时准备的。。。。
如果不需要保存历史数据,仅仅保存当前的数据和状态,可能自己做个数据管理。