开发者社区 问答 正文

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

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

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

存在问题:

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

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

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

ERR_CONNECTION_TIMED_OUT

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

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

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

最后,谢谢

展开
收起
kun坤 2020-06-06 16:00:52 800 分享 版权
1 条回答
写回答
取消 提交回答
  • 定时将数据从每个数据库中查出来缓存起来,页面直接从缓存中读取数据。

    ######

    1、配置数据库链接超时时间

    2、增加连接池连接数

    ######

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

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

    ######

    好像是两方面的问题,一方面是梳理页面加载数据的逻辑,是同时加载,还是ajax一个个加载,这个得根据你的实际需求。另外一方面后台连接数据库肯定不能请求的时候实时的切换,这样效率太低了,建议加定时任务将数据定时处理缓存起来,页面直接读取缓存;这样首先可以保证页面的访问正常,然后再专注于优化后台更新缓存的逻辑。

    ######

    和大数据有关系?  你理解错了

    ######

    引用来自“苏大泉”的评论

    和大数据有关系?  你理解错了

    不好意思,大量数据,少写了一个字。。

    ######

    数据层面的话,通常都是使用缓存,大大减少数据库的压力,也提升速度——高并发时都这么处理。缓存除了可以在框架中实现,还可以使用redis来做。redis除了读取速度快,还能分布式共享数据。

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

    ######

    尝试加缓存吧,redis或者cachecloud

    2020-06-06 16:00:58
    赞同 展开评论