信息领域热词分析的-质量属性战术-可用性战术

  可用性战术

  一.错误检测

  1.命令/响应:这个在ajax中有所应用,ajax有专门的success方法和error方法来对发出的请求做出响应。

        $.ajax({
            type: "POST",
            url: "/SentAlink",
            contentType: "application/json; charset=utf-8",
            data: JSON, /*传给后端的数据格式json*/
            dataType: "json",    /*后端返回的数据格式json*/
            success: function(data){
                console.log(data);
            },
            error: function (message) {
                console.log("初始化失败");
            }
        });

  2.心跳(计时器):这个在这个工程中没有涉及,但是在之前制作的APP中,有一个定时器,用于设定闹钟,提醒用户,每分钟对时间进行获取,用来检测是否到了提醒时间。

  3.异常:这个最常见的就是try{}catch{}finally{}以及if语句进行判断。

        Connection conn = null;
        try {
            conn = dbcp.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        thread.set(conn);
        return conn;

  二.错误恢复

  1.表决:当表决者接收到多个处理器发过来的数值不同时,需要对结果产生自己的判断,表决算法可以使“多数规则”,“首选组件”或者是其他算法,用于纠正算法的错误操作或者处理器的操作,在项目中我也没有使用过。

  2.主动冗余(热启动):所有的冗余组件都可以并行的对事件作出相应,仅使用第一个响应的组件,所以当有错误发生的时候,即使正常状态下第一个响应的组件挂掉了,其他的组件也会很快进行响应,停机事件通常为几毫秒。这个老师也讲过实例,在航空飞机上采用主动冗余,最后因为内存溢出导致机毁人亡,而第二个备用因为进行了同样的操作,在启用不久后也内存溢出,最后酿成悲剧。

  3.被动冗余(暖启动/双冗余/三冗余):这个相较于主动冗余,不需要备用组件进行同步的相应,只需要及时更新即可,所以停机事件有几秒。

  4.备件:组件出现故障时,对组件重新启动为适当的软件设置,并对其状态进行初始化。此类战术包括:shadow模式,状态再同步,检查点/回滚。

  三.错误预防

  1.从服务中删除:从操作中删除系统的一个组件,以执行某些活动来预防预期发生的故障。比如说在连接数据库,进行完操作之后,需要对连接组件进行关闭,防止重复开启发生故障。

        try {
            Connection conn = thread.get();
            if (conn != null) {
                /*
                 * 通过连接池获取的Connection
                 * 的close()方法实际上并没有将
                 * 连接关闭,而是将该链接归还。
                 */
                conn.close();
                thread.remove();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

  2.事务:对进程中发生错误的步骤及时发现并撤销,防止数据收到影响。这个在开启和数据库的连接和关闭的时候需要注意,进行操作前,需要判断连接是否打开或关闭。

        try {
            if(conn != null) {
                pstmt = conn.prepareStatement(sql);
                pstmt.executeUpdate();
            }
        }catch(SQLException e) {
            e.printStackTrace();
        }
        return pstmt;

  3.进程监视器: 一旦检测到进程中产生错误,监视进程就会删除非执行进程,并为该进程创建一个新的实例。我们在windows系统中常见,比如用word打开一个pdf文件卡住的时候,可以打开任务管理器,强制关闭这个进程,然后重新打开。

  

猜你喜欢

转载自www.cnblogs.com/heiyang/p/12393110.html