开发者社区 问答 正文

多数据源大数据怎么处理??报错

背景:某页面中,有近30个数据点位,每个点位来源于不同的数据库,数据表。整个页面每隔固定时间刷新一次。有这样种页面N个。使用JFinal+druid连接池。

现处理方法:按页面上的数据点位名,按JSON中排列顺序,去不同数据库、数据表中取出相关数据。

存在问题:

1、数据量多时,阻塞现象严重。即某页面中,某数据未读出,影响后续数据的读取。

有没有办法可以做到几秒读不到数据,自动跳过该数据。

2、多个页面同时打开时,实际数据量更大,页面不断报错:

ERR_CONNECTION_TIMED_OUT

有没有并发处理的方法,即同时处理多条SQL语句(10或20以上)。

3、当某个数据库不能连接时,druid会不断的去连接,直到资源耗光。希望能设置读取几次后,不再尝试去读。

该怎么解决,求各位指点?野路子,没有上过学。。。。,对各种概念也不是很了解,最好能给点例子。

最后,谢谢

展开
收起
爱吃鱼的程序员 2020-06-07 18:08:32 1062 分享 版权
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
                        <p>定时将数据从每个数据库中查出来缓存起来,页面直接从缓存中读取数据。</p>
    
                    
    
                        <p>1、配置数据库链接超时时间</p>
    

    2、增加连接池连接数

                        <p>首先从页面进行分解。把整个渲染变成首先渲染一个没有数据的页面,然后通过AJAX的方式,别从不同数据源获得不同区块的数据。这样就把一个大数据查询变成了几十个小数据查询。</p>
    

    然后就是针对不同的查询,考虑缓存措施。

                        <p>好像是两方面的问题,一方面是梳理页面加载数据的逻辑,是同时加载,还是ajax一个个加载,这个得根据你的实际需求。另外一方面后台连接数据库肯定不能请求的时候实时的切换,这样效率太低了,建议加定时任务将数据定时处理缓存起来,页面直接读取缓存;这样首先可以保证页面的访问正常,然后再专注于优化后台更新缓存的逻辑。</p>
    
                    
    
                        <p>和大数据有关系?  你理解错了</p>
    
                    
    
                        <div class='ref'><h4>引用来自“苏大泉”的评论</h4><p>和大数据有关系?  你理解错了</p>
    
    
                        <p>数据层面的话,通常都是使用缓存,大大减少数据库的压力,也提升速度——高并发时都这么处理。缓存除了可以在框架中实现,还可以使用redis来做。redis除了读取速度快,还能分布式共享数据。</p>
    

    其次,你说页面中有的数据加载慢影响其他数据的加载,这个问题难道不都是使用异步加载吗?肯定不能同步加载啊,大大影响用户体验。

                        <p>尝试加缓存吧,redis或者cachecloud</p>
    
    2020-06-07 18:08:49
    赞同 展开评论