论坛首页 Java企业应用论坛

关于多线程,关于并发。过年无聊,想的一个东西

浏览 7170 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2014-02-13  
首先,这个模型是有缺陷和应用限制的,毕竟只想了几天,而公司也没有可用场景,丢出来大家图一乐。

假设在高并发查询的情况下,在实际情况下,相同的请求(url相同)应该会很多,所以我在执行具体任务前做一个拦截,wait一段时间,对请求做一个堆积。当wait时间过后,形成一个任务队列,将队列交给后端业务并发运行,这样以前需要多次重复运算的业务,在这个时间段内就只执行了一次。大概就是这样。

   发表时间:2014-02-17   最后修改:2014-02-17
有几个问题:

- GET 请求一般是读取数据,属于 I/O 密集型,计算量不大
- 如果是计算密集型,并发效率受限于 CPU 核心数,效果有限
- 被拦截等待的任务响应时间会变长
- 完全可以通过缓存来解决重复计算的问题并且粒度更好控制
0 请登录后投票
   发表时间:2014-02-17  
有种东西叫作内存缓存...
0 请登录后投票
   发表时间:2014-02-17  
我也觉得,既然是针对相同的url,为什么不用缓存
0 请登录后投票
   发表时间:2014-02-18  
LRU 缓存?
0 请登录后投票
   发表时间:2014-02-18  
读操作可以有缓存,楼主换个思路做密集型写操作吧,假设写的内容都是简单的数字累加。
0 请登录后投票
   发表时间:2014-02-19  
我觉得这个思路是不对的。。即使url一样。每次提交的数据和参数也不见得是一样。比如一个用户在找某条数据。。在不停的翻页。。翻十页你全部堆到里url池里。。这不就出错了么。。

这还是同一个用户的。

假如不同用户同时登陆,并发查询。。你给那个人返回结果呢。在你看来都是一个url一个请求了不是?
0 请登录后投票
   发表时间:2014-02-19  
你的想法有点异步servlet的意思。。请求阻塞,然后队列解决再回调。但是不管一个url重复多少次,你都不能给人合并了。
0 请登录后投票
   发表时间:2014-02-19  
那像论坛的, 点击数, 什么鲜花数,鸡蛋熟,这类的,
还有,帖子总数,不能是实时操作数据库吧。

感觉 这可以用你们说的。

楼主的意思是不使用内存缓存的情况下吧。

大家看看我说的,可以使用楼主的方法吗?
0 请登录后投票
   发表时间:2014-02-20  
拦截url,统计访问次数,达到临界值,将返回结果存到缓存中,在一定时间内,相同url高速访问- - 定时清除临界值和缓存结果,或者主动调用。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics