web系统流量控制

我们都知道一个新系统上线之前都要做性能测试(并发数、QPS、TPS、页面响应时间等),该措施一个有效前提是我们知道系统的预估承载量,

比如我们知道网站的日访问PV,访问的时间段等,有了这些数据并根据下面的公式,就不难做性能测试了。


    日PV和TPS之间如何对应?公式就是80%的日PV,发生在T小时内。则公式为:

    TPS =  日PV * 80% / 24 * 60 * 60 * (T/24)

    定义 R = 1万 * 80% / 24 * 60 * 60 * (T/24)  = 10000 * 24 * 0.8 / 24 * 3600 * T = 2.2222/T

    TPS = 日PV(万) * R 这里的TPS就是平均的TPS。


但是也存在另外一种情况,比如一个网站要搞一个周年庆大型促销活动,由于第一次搞这样的活动,在数据方面并没有多少经验,只能凭经验粗略预估访问量。此时我们保证系统在满足预估访问量同时,还要重点考虑一些突发情况,比如那天pv量真的超过预值怎么办?如果系统设计不当,就会导致大量的请求阻塞,响应超时,后果相当严重。此时一个行之有效的方法是限流,也称之为流量控制。


今天介绍一种简单的流量控制方法,借助于servlet容器机制,对所有的请求进行拦截,并通过缓存计算每秒的访问数,如果超过了阀值,直接返回错误页面。好处是:配置简单,通过代码来实现 ;缺点:超过阀值的请求直接丢弃,不做处理。

1.在web.xml文件中配置一个Filter过滤器

  <filter>
        <filter-name>name</filter-name>
        <filter-class>类名</filter-class>
        <init-param>
		<param-name>name</param-name>
		<param-value>value</param-value>
	</init-param>
    </filter>
      <filter-mapping>
        <filter-name>name</filter-name>
        <url-pattern>/order/*</url-pattern>
     </filter-mapping>

2.定义一个类实现Filer接口
将<init-param>标签里面用于初始化的属性读出来。

public void init(FilterConfig arg0) throws ServletException {
	//预设每秒系统处理请求数的最大值
        String max= arg0.getInitParameter("maxRequest");
        if (sd != null) {
            max= max;
        }
    }
核心拦截业务

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
                                                                                             ServletException {
	//统一资源标识符,不含有域名
        String uri = ((HttpServletRequest) request).getRequestURI();
        if (enabled && isUriNeedFiltered(uri)) {
            if (controller.isAllowed()) {
                chain.doFilter(request, response);
            } else {
                request.getRequestDispatcher(“错误页面”).forward(request, response);
            }

        } else {
            chain.doFilter(request, response);
        }

    }
缓存的key值(以秒做为key值)

    public String getKey() {
        return new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
    }



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
web社区用水管理系统是一种基于互联网技术的水资源管理系统,旨在提高对社区用水的管理效率和准确性。 首先,该系统可以实现用水的智能化监控和控制。通过智能传感器和计量设备的安装,可以实时监测社区各个点位的水流量和水质情况,及时发现和处理用水异常情况。同时,该系统还可以实现水泵设备的自动控制,根据社区人口变化和用水需求的变化,自动调整水泵的运行状态,确保供水的合理性和稳定性。 其次,该系统还可以实现用户用水的管理和计费。每个用户都可以通过系统登录账号,查看自己的用水量和用水费用情况,并进行在线缴费。系统可以根据用户的用水量和用水类型,自动计算出相应的费用,并生成详细的账单和水费统计报表,方便用户查阅和管理。同时,系统还可以对用户的用水行为进行分析和预测,提供用水建议和优化方案,引导用户合理用水。 此外,该系统还可以实现用水资源的可视化管理。管理人员可以通过系统的地图功能,直观地查看社区各个用水点的分布和用水情况,及时获取用水状况的整体情况。同时,系统也可以提供水资源的统计分析功能,包括不同时间段的用水量统计、节水措施的效果评估等,帮助管理人员进行决策和规划。 综上所述,web社区用水管理系统利用互联网技术和智能设备,可以实现对社区用水的智能监控和控制、用户用水的管理和计费,以及用水资源的可视化管理,提高用水管理效率和准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值