• 质量属性之可用性分析在热词分析项目中的应用


    一.错误检测

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

    原文地址:https://www.cnblogs.com/heiyang/p/12393110.html

    对于可用性战术在项目中的应用就是尽一切可能使项目在运行中不会出错,或者在出错之后进行错误的处理。

    可用性中的错误检测主要体现在连接数据库的语句上的try和catch就是一种异常捕获,一种错误检测机制,通过它我们可以知道数据库是否成功连接,如果没有能成功连接,会给我们抛出异常信息,让我们可以更快的去解决问题,另外关于信号/响应,还没有体现,在本程序中尚未实现。在我的热词项目中主要体现在连接数据库的语句用,用try和catch来捕捉数据库连接中的错误。另外还用到一些if语句来进行判断进行异常的处理。

    错误恢复上关于表决我觉得最简单的就是当后台传入多个值无法处理的时候,直接提示用户输入错误重新输入,关于冗余目前接触不多

    错误预防上我觉得这个主要体现在数据的传输中,当后台数据库中数据传到前台时,要有一个错误监测的机制,防止传输的数据不全或者无效而导致的错误。例如在进行可视化展示时,如果数据不全则会导致页面瘫痪等问题。如果在这有一个数据的监测,那么这个错误就会被解决。

  • 相关阅读:
    Qt 字符串QString arg()用法总结
    Qt子窗口QMidSubwindow全屏出现的问题总结
    QString介绍
    Qt控制台输出QString
    汽车辐射监测系统-Qt开发[转]发
    Eclipse Qt开发环境的建立
    串口调节工具
    QT 多线程程序设计 -互斥
    ArcGIS Spatial Query
    IQueryFielter接口
  • 原文地址:https://www.cnblogs.com/xuange1/p/12399447.html
Copyright © 2020-2023  润新知