zoukankan      html  css  js  c++  java
  • 信息领域热词分析的-质量属性战术-可用性战术

      可用性战术

      一.错误检测

      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文件卡住的时候,可以打开任务管理器,强制关闭这个进程,然后重新打开。

      

  • 相关阅读:
    面试中要注意的 3 个 JavaScript 问题
    angularJS遇到的坑
    为什么你的前端工作经验不值钱?
    ceph pg常见的几种状态
    k8s网络之flannel
    k8s流量访问之service
    lvs+keepalived高可用
    iptables【学习笔记】
    Linux和OpenStack中的网络知识【学习笔记】
    服务器BIOS设置
  • 原文地址:https://www.cnblogs.com/heiyang/p/12393110.html
Copyright © 2011-2022 走看看