java统计多个线程的请求次数_Web并发页面访问量统计实现

页面访问量统计,可能在上学的时候就讲过如何简单实现,例如在servletContext中保存一个页页面访问次数,然后每访问一次加1;或者每访问一次就把操作记录保存到数据库,这样的处理方式,做做实验就算了,在实际应用中这样应用对系统性能影响特别大。

第一种方式,因为页面访问次数属于一个公共变量,在对公共变量进行修改的时候,往往需要加上同步锁;同步锁会导致访问速度明显变慢;第二种方式也一样,而且频繁访问数据库也不是一种合理的方式。

前不久,我一个朋友要我帮他们写一个简单的页面统计代码。1、需求是保存页面访问IP、时间、以及其他一些可用的信息,以后需要保存的访问信息可扩展 2、不能影响当前的访问速度 3、能支持一定量的并发访问

接到朋友给的这个需求,我想到了一下几点:1、如何筛选我们需要统计的页面;2、需要将访问和统计分离,不在访问的线程中来保存访问信息,另外起一个线程将访问信息保存到数据库;3、可以使用一个公共的队列来保存这个访问信息;4、可以批量的保存一定量的访问信息

解决方案:

1、针对第一个问题,我给出了两个方法。1、使用一个集合保存所有的需要统计的页面,然后再在Filter里面判断当前请求是否在在统计之列;2、在JSP页面中引入一段公共代码,在代码中使用类似这种CounterUtils.addCounter(request);这种方法有一个好处,维护需要统计的页面比较方便,而且感觉上更加高效,不需要Filter拦截。但是朋友坚决用第一种方式,也是没有办法。

2、每访问一次,我们将需要保存的信息保存成一个对象,然后放入到队列当中

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值