多数据源大数据怎么处理?
背景:某页面中,有近30个数据点位,每个点位来源于不同的数据库,数据表。整个页面每隔固定时间刷新一次。有这样种页面N个。使用JFinal+druid连接池。
现处理方法:按页面上的数据点位名,按JSON中排列顺序,去不同数据库、数据表中取出相关数据。
存在问题:
1、数据量多时,阻塞现象严重。即某页面中,某数据未读出,影响后续数据的读取。
有没有办法可以做到几秒读不到数据,自动跳过该数据。
2、多个页面同时打开时,实际数据量更大,页面不断报错:
ERR_CONNECTION_TIMED_OUT
有没有并发处理的方法,即同时处理多条SQL语句(10或20以上)。
3、当某个数据库不能连接时,druid会不断的去连接,直到资源耗光。希望能设置读取几次后,不再尝试去读。
该怎么解决,求各位指点?野路子,没有上过学。。。。,对各种概念也不是很了解,最好能给点例子。
最后,谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
尝试加缓存吧,redis或者cachecloud
数据层面的话,通常都是使用缓存,大大减少数据库的压力,也提升速度——高并发时都这么处理。缓存除了可以在框架中实现,还可以使用redis来做。redis除了读取速度快,还能分布式共享数据。
其次,你说页面中有的数据加载慢影响其他数据的加载,这个问题难道不都是使用异步加载吗?肯定不能同步加载啊,大大影响用户体验。
引用来自“苏大泉”的评论
和大数据有关系? 你理解错了
和大数据有关系? 你理解错了
好像是两方面的问题,一方面是梳理页面加载数据的逻辑,是同时加载,还是ajax一个个加载,这个得根据你的实际需求。另外一方面后台连接数据库肯定不能请求的时候实时的切换,这样效率太低了,建议加定时任务将数据定时处理缓存起来,页面直接读取缓存;这样首先可以保证页面的访问正常,然后再专注于优化后台更新缓存的逻辑。
首先从页面进行分解。把整个渲染变成首先渲染一个没有数据的页面,然后通过AJAX的方式,别从不同数据源获得不同区块的数据。这样就把一个大数据查询变成了几十个小数据查询。
然后就是针对不同的查询,考虑缓存措施。
1、配置数据库链接超时时间
2、增加连接池连接数
定时将数据从每个数据库中查出来缓存起来,页面直接从缓存中读取数据。