一个高性能的需求。
监视4000台机器, 每个机器没秒发送5条消息。在server端需要接受这些消息,并且解析出来, 存储在数据库中,通过一个web page能显示出来实时的数据。
问题是两个:
1)在接受端有什么好办法处理没?
2)想法是把接受消息,解析消息和插入数据库分开操作, 有什么好办法没? --------------------编程问答-------------------- 那位处理过类似问题,请赐教。 --------------------编程问答-------------------- 一秒钟20000条消息,你服务器端能承受得了么?
要看接收的消息是什么样的了,接收到消息的时候,先缓存到内存中,由线程一定时间(或者等达到一定数据量后)统一写入数据库中。 --------------------编程问答-------------------- 1种情况接收端一台机器接收性能要足够强,单独处理,这样大概得小型机。。。
2种情况,接收端的机器只管接收,分发,用Balance把数据分给其他机器(个数自己看着定)处理,这个比上边的好些 --------------------编程问答--------------------
基本上是按照2种方法去处理,
一个负责收,
另外一个去解析与插入操作。
--------------------编程问答--------------------
现在的问题,是收的时候估计都够呛了, 有什么好的办法去处理没? --------------------编程问答-------------------- 多弄些阻塞队列,每个队列不断取,扔到线程池中解析,解析后放到缓存中,到达一定数量在一次性同步操作数据库
纯属个人yy --------------------编程问答-------------------- 监视4000台机器, 每个机器没秒发送5条消息。
真有这么多机器?
如果真有,一台机器受不了,就把这4000台机器分组。
数据也要使用缓存。
显示的数据也不用把所有实时的数据显示出来,因为你的网页不可能更新的上,显示一些过滤过的数据。 --------------------编程问答--------------------
看软件能否支持这么多了, 机器是有的。
--------------------编程问答-------------------- 如果不能支持, 那就只能上1000台了, --------------------编程问答--------------------
分组呗。 --------------------编程问答-------------------- 启动服务器就把数据库里的查出来 装list 没进来一条就往这个list里面加 定时处理往数据库批量加入 页面直接用list --------------------编程问答-------------------- 相信list add一秒钟应该能装20000条数据吧 --------------------编程问答--------------------
apache mina 这个能支持这么多吗? --------------------编程问答--------------------
http://blog.csdn.net/huaye2007/article/details/7752044
参考这篇文章,4000个连接,5秒才发一次,应该没有问题,而且他的这个测试机,应该就是一普通PC电脑。 --------------------编程问答-------------------- 一台机器监控够呛,加入RabbitMQ吧 这样性能可以改变
补充:Java , Web 开发