精华内容
下载资源
问答
  • 很好用的彩票3星缩水软件,很难得的大底缩水软件,附带多个大底容错交集。
  • 论高可靠性系统中软件容错技术的应用 摘要: 2016年3月,我公司承担了国家某安全中心漏洞挖掘系统的开发工作,我在该项目中承担系统架构设计师的职务,主要负责系统的架构设计。该项目的主要目的是依托大数据...

     

    论高可靠性系统中软件容错技术的应用

    摘要:

        2016年3月,我公司承担了国家某安全中心漏洞挖掘系统的开发工作,我在该项目中承担系统架构设计师的职务,主要负责系统的架构设计。该项目的主要目的是依托大数据平台从互联网流量中挖掘未知漏洞。

     

        本文以漏洞挖掘系统为例,从多个角度对系统的可靠性进行了分析,重点讨论了两种软件容错技术。针对互联网流量的需要实时捕获,在流量捕获模块中采用了双机热备技术;针对漏洞数据需要永久存储不丢失,在数据存储方面采用了RAID5机制;针对漏洞识别的准确性,在漏洞判定部分采用了N版本程序设计方法;此次之外还对采取恢复块方法、防御式程序设计及集群部署等方法。通过以上多种措施,保证了系统的可靠性。目前系统已稳定运行一年多,从而验证了该项目采用可靠性技术的正确性。

     

    正文:

           随着互联网的快速发展,网络上出现的安全问题越来越多,从互联网发展至今,已经爆发了众多的网络攻击事件,如网络蠕虫病毒感染、主机被控制、数据库被非法访问、非法电子银行转账等等。针对这些安全问题,很有必要开发一种web漏洞的发现和利用技术。2016年3月我公司承接了国家某安全中心漏洞挖掘系统的开发工作。该项目通过对互联网中的流量进行特征分析,从中提取出相关的攻击内容,并将这些内容存储到大数据平台,结合大数据分析技术,对攻击者进行跟踪分析,从而捕获出未知漏洞。通过这种漏洞挖掘技术可以极大的解决大数据,大流量背景下web攻击入侵,帮助用户做好“事中”的安全工作,协助安全厂商对互联网攻击进行针对性过滤。

     

        系统在整体架构上采用了面向服务的架构SOA。前端采用了PHP进行开发,后台流量分析工作采用运行性较教高的c语言在Linux服务器上开发,流量包存储使用了企业磁盘阵列,数据存储采用了mysql。通过将系统拆分为多个子模块,各个子模块的构建上用服务进行了封装,它们之间通过消息进行通信。经过对客户需求的分析,我将该系统拆分为了流量捕获模块(负责从互联网中捕获流量)、pcap文件存储模块(负责将互联网中的流量存储到大数据平台)、流量分析模块(负责对流量进行分析验证)、数据库模块(负责漏洞数据的存储)和web管理模块(负责下发漏洞规则和查看漏洞信息)。

     

        按照合同规定该项目开发工作必须在一年内完成,在保证系统功能及性能的基础上,对系统的可靠性提出了要求。在可靠性方面要求:1. 实时捕获流量要求系统出现故障宕机不能超过5分钟;2. 系统提取出的漏洞及对应的流量不能丢失;3. 系统对漏洞识别准确率需要达到90%以上。

     

        系统的可靠性是系统在规定时间内及规定的环境条件下,完成规定功能的能力,也就是系统无故障运行的概率。为了保证系统的可靠性,必须采取相应的容错机制。容错技术分为结构冗余、信息冗余、时间冗余等。其中结构冗余包括硬件冗余和软件冗余。信息冗余是通过校验码来实现,时间冗余通过重复多次进行相同的计算来实现。提高系统可靠性的技术主要有N版本程序设计、恢复块方法、防卫式程序设计、双机热备、集群技术及冗余设计。项目中我根据客户对系统可靠性的要求从以下几个方面进行了分析。

     

        针对系统需要实时捕获流量,流量捕获系统7*24小时正常运行。我们在流量捕获模块采用了双机热备。在系统中部署两台流量捕获系统,一台作为主流量捕获系统,一台作为备用系统,两个系统之间通过心跳线连接。当流量捕获主系统出现故障的时候,立即将流量捕获工作切换到备用系统中,实现了系统的无缝切换,从而保证系统的可靠性。针对捕获的有价值漏洞原始数据和漏洞数据不丢失,我对数据存储采取了企业磁盘阵列,采用了raid5 N+1网络存储技术,即便磁盘坏了一个,也可以进行恢复。由于每天需要处理的网络流量大约30TB,在这里我们才用了5台10TB硬盘挂载到服务器上。除硬件上采取的措施外,软件上我们也做了特别的容错技术来提高系统的可靠性。下面从软件容错的两种方法详细讨论它在可靠性的中应用。

     

           N版本程序设计

           N版本程序设计的思想是相同的需求,使用不同的人来做设计和编码。开发出几个不同的版本,各自验证正确后,通过表决器比较各个版本执行的结果。采用少数服从多少的策略,这样可以将某个偶然出现的错误屏蔽掉,这种方法实时性非常高,实现代价也比较大。一般只会用在程序模块的重要性特别高,一旦计算错误将会出现严重后果的模块。在本项目中,考虑到本项目开发人员的紧缺性,使用该方法虽然可以提高漏洞识别率,但是将增加项目成本。而客户又对漏洞判定的准确性提出了很高的要求。基于以上考虑,我将系统中特别重要的漏洞判别模块采用了该方法,在本项目针对sql注入漏洞的判别,不同的安全开发工程师都有各自不同的理解及各自的判定方法,通过将判定工作分给三名安全开发工程师进行背对背开发,开发出三个不同版本的漏洞判定程序,每个程序对漏洞判定都设定了高危(积分为5分)、风险(积分为3分)和未知(积分为1分)和安全(积分为0分)4个不同级别。当3个版本的总积分大于等于8分则认定为高危漏洞;当总积分小于4分认定为安全。通过该方法大大提高了漏洞的识别率。

     

           恢复块方法

           恢复块方法的思想是首先设计好几个备用块,选取其中一个作为主块。首先执行主块,当主块执行不合格后,再执行后备块1,后备块1执行不合格,再执行后备块2,依次类推,直到输出正确结果为止。它是一种后向恢复的策略(将系统恢复到一个正确的状态,继续执行),其特点是由于主块可能执行不合格,可能要执行多个恢复块,故实时性比较差。这种方法对验证模块的正确性要求也非常高,实现代价也比较大。在该项目中,由于系统对流量的处理要求在12小时内处理完成,对系统的实时性要求不是很高。在该项目中进行流量抓包的时候,可能捕获到异常的包,有的甚至不是一个完整的http请求,程序在处理这类异常包的时候,只对能获取五元组的数据包进行分析。在使用恢复块方法中,主块用于处理完整的http请求,并根据请求的动作和漏洞规则匹配输出正确结果;后备块1用于处理只有http请求的包,根据请求规则例如sql注入、xss跨站攻击等行为进行匹配输出,输出正确结果,后备块2用于处理只有http响应的包,根据响应的规则例如数据库账号,进行匹配输出,后备块3用于处理其他异常的包,并进行五元组统计。通过该中方法,大大提高了系统的可靠性。

     

           除了以上几个方面的考虑外,对整个系统采用了防卫式程序设计、防御式编程技术,同时也考虑了集群技术。在指定预算的情况下,针对系统的性能,对使用高性能主机和使用分布式集群进行了思考。但是考虑到系统的可扩展性及可靠性,我使用了分布式集群技术。通过使用消息队列,对流量分析模块进行了分布式部署,各个模块通过从消息队列中取出消息进行处理。通过使用该分布式集群部署流量分析模块,当其中一台服务器出现故障的时候,其他服务器还可以从消息队列中取出消息进行处理,避免了因为服务器单点故障导致系统性能及可靠性下降。除了采取以上的措施外,我们还通过加强测试,增加检查机制来保证系统的可靠性。

     

           该项目开发工作于2016年8月完工,系统上线后,我们的安全分析人员和客户使用该系统对互联网流量进行漏洞挖掘,一共产生了150种以上的web流量攻击流量特征和5个未知web漏洞。在国家某安全中心网研室的其他项目中起到了支撑作用,尤其是某变量覆盖漏洞、某文件写入漏洞,某sql注入漏洞在项目使用过程中取得了一定得效果,得到了好评。为开展互联网安全事件得防御、发现、预警和协调处置等工作提供了数据依据,更好的维护了国家公共互联网安全,保障基础信息网络和重要信息系统的安全运行。

     

           在项目开发完成进行漏洞挖掘期间,系统的运行非常好,除了常规系统维护,很少出现系统故障,满足了客户对系统的可靠性要求。该项目在保证系统可靠性方面使用了双机热备、RAID5磁盘阵列、N版本程序设计、恢复块方法、防御式程序设计及集群技术。经过验证,这些措施都十分正确的。

    展开全文
  • 容错性测试

    千次阅读 2014-09-23 13:01:43
    容错性测试  (2009-01-30 14:30:41) 转载▼ ... 容错性测试是检查软件在异常条件下自身是否具有防护性的措施或某种灾难性恢复的手段。当系统出错时,能否在指定时间间隔内修正错误并重新启动系统。容
      容错性测试是检查软件在异常条件下自身是否具有防护性的措施或某种灾难性恢复的手段。当系统出错时,能否在指定时间间隔内修正错误并重新启动系统。容错性测试包括两个方面:
    •   输入异常数据或进行异常操作,以检验系统的保护性。如果系统的容错性好,系统只给出提示或内部消化掉,而不会导致系统出错甚至崩溃。
    •   灾难恢复性测试。通过各种手段,让软件强制性地发生故障,然后验证系统已保存的用户数据是否丢失,系统和数据是否能尽快恢复。

      对于自动恢复需验证重新初始化、检查点、数据恢复和重新启动等机制的正确性;对于人工干预的恢复系统,还需估测平均修复时间,确定其是否在可接受的范围内。容错性好的软件能确保系统不发生无法意料的事故。

     

      从容错性测试的概念可以看出,当软件出现故障时如何进行故障的转移与恢复有用的数据是十分重要的。

     

      1.故障转移与数据恢复

      故障转移是确保测试对象在出现故障时能成功完成故障的转移,并能从导致意外数据损失或数据完整性破坏的各种硬件、软件和网络故障中恢复。数据恢复可确保:对于必须持续运行的系统,一旦发生故障,备用系统将不失时机地“顶替”发生故障的系统,以避免丢失任何数据或事务。容错测试是一种对抗性的测试过程。在这种测试中,将把应用程序或系统置于(模拟的)异常条件下,以产生故障。例如设备输入/输出(I/O)故障或无效的数据库指针和关键字等。然后调用恢复进程并监测和检查应用程序和系统,核实系统和数据已得到了正确的恢复。

     

      2.测试目标

      确保恢复进程将数据库、应用程序和系统正确地恢复到预期的已知状态。测试中将包括以下各种情况:

    •   客户机断电、服务器断电。
    •   通过网络服务器产生的通信中断或控制器被中断。
    •   断电或与控制器的通信中断周期未完成(数据过滤进程被中断,数据同步进程被中断)。
    •   数据库指针或关键字无效,数据库中的数据元素无效或遭到破坏。

      3.测试范围

      应该使用为功能和业务周期测试创建的测试来创建一系列的事务。一旦达到预期的测试起点,就应该分别执行或模拟一下操作:

    •   往软盘保存时,不插入软盘,或将软盘加写保护。
    •   不接打印机,但进行打印操作。
    •   客户机断电和服务器断电。
    •   网络通信中断,如可以断开通信线路的连接,关闭网络服务器或路由器的电源。
    •   控制器被中断、断电或与控制器的通信中断,模拟与一个或多个控制器及设备的通信,或实际取消这种通信。

      一旦实现了上述情况(或模拟情况),就应该执行其他事务。而且一旦达到第二个测试点状态,就应调用恢复过程。在测试不完整的周期时,所使用的技术与上述技术相同,只不过异常终止或提前终止数据库进程本身。对以下情况的测试需要达到一个已知的数据库状态。当破坏若干个数据库字段、指针和关键字时,应该以手工方式在数据库中(通过数据库工具)直接进行。其他事务应该通过使用“应用程序功能测试”和“业务周期测试”中的测试来执行,并且应执行完整的周期。

     

      4.完成标准

      在所有上述情况中,应用程序、数据库和系统应该在恢复过程完成时立即返回到一个已知的预期状态。此状态包括仅限于已知损坏的字段、指针或关键字范围内的数据损坏,以及表明进程或事务因中断而未被完成的报表。

     

      5.需考虑的特殊事项

      恢复测试会给其他操作带来许多的麻烦。断开缆线连接的方法(模拟断电或通信中断)可能并不可取或不可行。所以,可能需要采用其他方法,例如诊断性软件工具。需要系统(或计算机操作)、数据库和网络组中的资源。这些测试应该在工作时间之外或在一台独立计算机上运行。


    原文地址:http://blog.sina.com.cn/s/blog_5e5b64ea0100cdy3.html

    展开全文
  • 3 铁路信号计算机联锁控制系统容错技术 在铁路信号计算机联锁控制系统,实现容错技术最好的方式便是冗余,即完善系统容错机制,实现硬件冗余、软件冗余和智能自测。通过冗余的方式和手段实现资源的可用性,与此同时...

    田泽方

    摘 要:信息化时代的到来,促进了国家综合国力的提升,并且根据信息化的特点和优势,计算机在社会范围内得到了广泛的运用,在各行各业中均取得了显著的成效,对国家的发展具有重要的意义。在铁路行业中,计算机的应用主要表现在铁路、列车进行管理登记中,并且通过先进的技术手段,设定铁路中的信号系统在铁路工作的运行起到提示和预警的作用,做出行记录,确保行车安全。在信息化技术的不断发展和在铁路应用过程的实践中,相关技术均得到了普遍的改善和提升,在铁路信号系统的应用中日渐完善,取得了越来越高的效益。本文将主要从铁路行业的现状出发,以计算机技术着眼,探讨铁路信号和计算机联锁控制以及系统容错技术的相关概念,对其应用和发展作出分析,以期更适应于铁路管理和进步。

    关键词:铁路信号;计算机联锁;容错技术

    中图分类号:TP302.8 文献标识码:A 文章编号:1671-2064(2020)02-0040-02

    0 引言

    铁路信号系统在铁路的运行和管理中有着重要的意义。铁路信号系统的存在,使铁路的运行和管理更加的有序,是铁路工作正常运行和高效完成的重要保障。计算机联锁系统是继机械联锁、继电联锁后的第三个在铁路系统中应用广泛的技术,并且随着容错技术和电子技术的快速发展,使得计算机联锁系统的应用日渐广泛,为铁路的管理带来了更高的效益和应用发展的新的机制,使得其在铁路行业中拥有着越来越高的地位。

    1 铁路信号计算机联锁控制系统容错技术的相关概念

    促进铁路信号、计算机联锁控制系统以及容错技术的提升,需要对其技术的内涵加以了解和掌握,加强对技术的学习,提高相关人员的专业技能,保障铁路管理工作的正常且高效完成,以此促进铁路行业的发展[1]。

    1.1 铁路信号

    铁路信号是指铁路信号系统和铁路信号设备的简称。铁路信号等设备的存在可以提高铁路工作中行车和调车的安全性,为铁路工作人员提供相关的指示信息,指引铁路工作人员操作的规范性,保证工作的正常实施和落实。铁路信号主要包括车站信号控制系统、区间信号、指挥控制系统以及编组站调车控制系统。铁路信号信息系统的运用,代表着当前技术的发展,是铁路现代化发展的重要标志。铁路信号被用于列车的运行中,包括车站联锁、汽车信号、超速防护和相关的监督工作等,铁路信号的形式主要有视觉信号和听觉信号两种。比如,在视觉信号中,通常根据所表达的特征选择相应的颜色和形状等进行信息的传达。而在听觉信号中,则是通过声音的强度、频率以及音色等传递相应的信息。对操作者进行信息的指引,明确信号系统在铁路工作中的应用,可以及时的提供信号预警,比如在列车遇到险情时,不能立即停车,采取相应的信号提醒,便可以及时地采取信号传达的方式,对后车进行提醒,才能规避车辆相撞的风险,以此保证车辆运行的安全,提高运输效率[2]。

    1.2 计算机联锁

    计算机联锁系统,简称为CBI,是铁路工作中的核心控制设备。计算机联锁系统在铁路中的运用主要体现在,铁路站内、道岔信号及轨道电路之间的联锁控制。计算机联锁系统具有可靠性、可用性和应变能力强的特点,是铁路安全和高效行车的先决条件。计算机联锁是地铁信号系统的安全核心,其在铁路中具有监测,以及语音提示和数据运算等功能,对工作人员进行合理调度和指挥,可以确保列车行车安全,在当前的铁路工作中,计算机联锁设备应用的较为广泛,且在铁路工作中发挥着重要的作用。

    1.3 计算机容错技术

    计算机容错技术的本质是容忍故障,是在部分故障出现的时候可以自动调理、休整并保持正常运行,不影响铁路的正常操作,计算机容错技术是当前铁路发展过程中比较先进的一项技术,通过设定的一系列程序为参照标准,对铁路的相关工作,以及设备进行监测,并在出现问题和故障时,自行调整恢复,消除故障,保证铁路工作的正常运行。计算机操作系统具有高可靠性和高可信度的特点,在铁路的工作中,同样具有着关键性的作用,并且具有良好的发展前景[3]。

    2 铁路信号计算机联锁控制系统容错技术应用的必要性

    鐵路是近现代时期所应用的代步工具,具有较长的发展过程,随着技术的改进,铁路凭借着速度快和容纳量大的特点,受到了人们的广泛追崇,但是由于铁路原因发生的危险事件不在少数。在以往的铁路的运行工作中,由于其技术的局限性,导致铁路中存在着较多的弊端,对铁路行业的发展具有一定的影响。推动铁路技术的发展,促进铁路运行的安全,在铁路中应用铁路信号计算机联锁控制系统容错技术将势在必行[4]。

    铁路工作中的问题主要体现在规范机制的不健全,不能够满足当前铁路系统对铁路高速率和高安全性的要求,不能将铁路的各系统间进行连接,导致铁路的工作管理存在漏洞,影响铁路工作的进展和开展。其次,传统铁路运行中铁路的相关技术落后,面对铁路系统的故障时需要花费大量的时间进行修整,并且具有一定的难度,操作复杂,影响铁路的正常运行,使铁路需要应对的问题较多,导致铁路的速率较低。其次在以往的铁路工作中需要凭借人为的力量和意识对事物进行判断,容易存在人为的偏差,缩小人为反应的时间和空间,在应对突发事件时不能做出及时、有效的反应,对群众的安全性存在威胁,无法对铁路工作实现安全性的保障。

    3 铁路信号计算机联锁控制系统容错技术

    在铁路信号计算机联锁控制系统,实现容错技术最好的方式便是冗余,即完善系统容错机制,实现硬件冗余、软件冗余和智能自测。通过冗余的方式和手段实现资源的可用性,与此同时,提高容错技术,为铁路信号提供更多的设计灵感,使之具备更高的可靠性。此外,加强计算机联锁控制系统的应用。探讨其联锁控制的功能并且对其联锁数据和数据结构进行分析,促进容错技术更进一步的发展[5]。

    3.1 系统容错机制

    系统容错机制与系统排错相互补充,是铁路计算机信号系统工作中的可信度较高的一类系统。系统容错机制的工作内容是指在铁路运行的过程中,面对出现的故障和异常问题,系统容错机制可以按照设定的一类程序继续运行,保证铁路运行过程中不受故障或者异常问题的影响,导致运行的程序被修改,保障铁路工作的正常运行,并且提高铁路运行的安全性。系统容错机制主要的功能有故障限制,故障检测,故障屏蔽,以及诊断,重组、修复等一直在铁路工作故障问题的出现中,可以将其屏蔽控制,并且能将其进行修复,发挥出系统容错机制的作用。实现系统容错几次的重要的条件是促进冗余技术的提升。在铁路、计算机容错,技术中永远不是多余不必要的内容,而是指人为的增加重复部分,对原定的系统进行备份,为系统工作增加保障,达到系统安全运行的目的,具有较高的可靠性和可用性。冗余技术属于通信系统,是信息技术发展中的先进技术,在铁路工作中得到了广泛的应用。由于技术可以运用多层面,根据其存在位置的不同讲荣誉,技术分为硬件冗余、软件冗余和智能自测[6]。

    3.2 硬件冗余

    硬件冗余主要是指电源冗余以及存储子系统冗余等。电源的冗余技术主要体现在铁路工作总电源运行的模式上,在现代的技术发展中,随着信息化的普及,高端服务器产品通常会采用双电源系统,以此保证在系统的工作中可以同时提供电力,是相关电源的备份,双电源系统是负载均衡的,在某一个电源出现故障时,可以采用另一电源系统承担系统工作负载,使系统的工作不受其故障的影响,继续完成系统的相关工作,对保障系统的正常运行有一定的作用。而存储子系统的工作原理类似于电源冗余,其主要的工作内容主要体现在磁盘镜像,磁盘双联,以及磁盘阵列。在铁路的计算机系统中,存储子系统是较容易发生故障的位置,所以解决存储子系的问题,在存储子系统发展硬件冗余技术是非常必要的。

    3.3 软件冗余

    软件冗余是计算机的专业术语,是指在异常故障出现的情况下,将程序导入死循环的状态,而后是计算机容错系统和相关的程序,利用其高级程序将其进行重启,并且强行关闭,以此将其系统进行恢复,达到修正的目的。在铁路系统容错机制中,软件冗余的主要表现形式是在连锁模块采取双份编码的形式,在每份编码的使用中,因为其编程语言和结构的不同,所以在编码物理存储位置中,采取仿作工作模式。这种模式下的铁路系统工作,可以减少系统的潜伏,通过数据采集和联锁运算等技术对系统的工作运行具有检测的作用,及时的检测并排查故障异常现象。在两个程序的共同运行下,为系统提供自检程序,重新执行,过滤损失障碍,为铁路运行提供更多的保障。

    3.4 智能自测

    在系统容错中还有智能自测的功能,智能自测功能是实现系统的自检自测,不需要加入人工,并可对故障迅速定位排查并解决。智能自测是在自检的基础上进行,主要是指在智能自检功能根据一定的守护进程进行控制故障问题,而自测便是由另一守护进程进行系统性的自我测评,可以更加快速的发现系统故障。智能自测会在故障出现问题时,及时中断并固定于故障模块,对故障问题进行修复,质检系统在计算机联锁系统的应用广泛,主要有人机交互界面信号采集,以及系统自身的检测,智能自测功能可以更全面的进行检测,并且更加的智能化,保证系统工作更加稳定可靠,更加方便施工者的操作。

    3.5 计算机联锁控制

    计算机联锁控制功能可以有效操作指令下达,对指令进行判断和执行,并且可以对错误指令进行及时反馈和提示。其次针对计算机信号设备,进行联锁控制对现场的工作过程进行把控和监督,有利于值班人员及时的发现并解决问题。最后联锁控制系统可以将现场信号故障排除并且在屏幕上发出预警信号,使相关的技术人员在第一时间排查技术问题。促进连锁数据与数据结构的优化,连锁数据与数据结构是指计算机系统中的数据汇总,主要包括動态数据和静态数据两种类型,在计算机联锁控制系统有重大的帮助。

    4 结语

    综上所述,铁路正朝着愈加现代化和先进化的趋势发展,借助当前的技术优势,使铁路技术更加的安全可靠,并且提高其可用性。此外,实现铁路工作的高速率和高安全是当前铁路发展的必要条件,也是重要要求。综上所述,本文主要从现代的铁路发展现状出发,探讨铁路信号计算机联锁控制系统容错技术在铁路工作中的应用,对且对其相关概念进行阐述,分析铁路信号计算机联锁控制系统容错技术在铁路工作中所产生的积极作用,对铁路工作的正常运行提供重要的保障。

    参考文献

    [1] 郑丽英,董昱,李敬文.铁路信号计算机联锁控制系统容错技术研究[J].工业控制计算机,2005(01):6-7+10.

    [2] 焦景忠.试析准池铁路型计算机联锁控制系统容错技术[J].科技创新与应用,2019(15):147-149.

    [3] 王先策.铁路信号计算机联锁控制系统容错技术探析[J].科技经济导刊,2019,27(24):13-14.

    [4] 李孟豪.探讨铁路信号计算机联锁控制系统容错技术[J].电子测试,2016(08):91-92.

    [5] 刘邦鹏.铁路信号计算机联锁控制系统的容错技术探讨[J].工程技术研究,2018(03):51-52.

    [6] 高庆荣.铁路信号计算机联锁控制系统容错技术探究[J].科技风,2018(29):63.

    展开全文
  • print("异常超过容错值请查清原因") # 超过容错次数,定义严重问题,可写一个钉钉抄送告警等 if __name__ == '__main__': ttt=main_Run(-1,3) print("==查看返回结果=============") print(ttt)   执行...

     

     

    一般脚本执行总会遇到各种各样的异常错误,但是异常中有一部分错误是可能通过重试来解决的,比如当时网络不好,加载有超时,设备卡顿等等,遇到这种情况会很无语,下面教大家一个我编写的经验。

    通常我们写脚本是这样抛出异常的,举例如下:

    n=0 #设置一个全局变量
    def main_Run(n):
        try:
            m=1/n
        except:
            print("异常") # 出现异常,抛出提示
        else:
            print("正常") # 没有异常,输出提示
    
    if __name__ == '__main__':
        main_Run(n) 

    运行结果: 异常

    这里以上面脚本为例,执行的“ m=1/n ”是我们的检查是否有异常的脚本,我们都明白“ 1/n ”是除了n=0外,所得的结果都是“任何数”的倒数,也就是说n=0 不能成功除数,会出现异常。我们希望的是 1 这个被除数是能被参数 “n” 这个相除的,所以在这里我们就在出现异常中添加这个执行的函数,遇到异常后他们重次再执行,如下:

    n=0 #设置一个全局变量
    def main_Run(n):
        try:
            m=1/n    #好比功能测试执行脚本模块
        except:
            print("异常")   # 出现异常,抛出提示
            nm = n+1        # 0是不能成为除数的,所以这里更改下除数形参,其他例子根据情况来写
            main_Run(nm)    # 异常里重次再试一次
        else:
            print("正常") # 没有异常,输出提示
    
    if __name__ == '__main__':
        main_Run(n)

    运行结果:

    C:\Python\Python37\python3.exe D:/mintt/test.py
    异常
    正常

    通过这个方法,我们可以解决很多出现偶现异常的问题,这个方法其实跟服务器的请求机制一样,请求一次没响应,还会请求第二次,第三次。。。达到多次没响应再确定看来是真的出问题了。

    这里我们可以在异常抛出中间添加 “计数” 来判断异常出现的次数,根据当前测试容错率来设置吧

    n=0 #设置一个全局变量
    num=0   #异常计数
    def main_Run(n,num):
        try:
            m=1/n    #好比功能测试执行脚本模块
        except:
            num=num+1
            print("计数:",num)
            print("异常")   # 出现异常,抛出提示
            nm = n+0        # 0是不能成为除数的,加0使值不变
            if num==3:
                return #中断一定要添加到重新执行前面,不然后不会执行到。
            main_Run(nm,num)    # 异常里重次再试一次
        else:
            print("正常") # 没有异常,输出提示
    
    if __name__ == '__main__':
        main_Run(n,num)

    运行结果:

    C:\Python\Python37\python3.exe D:/mintt/test.py
    计数: 1
    异常
    计数: 2
    异常
    计数: 3
    异常

    异常出现3次中断,或者你也可以改成三次异常后再抛出异常,再中断。

    通过这近技术累积,才发现上文所写有一个很严重的错误,所以不建议采纳。下面进行一步优化:

    只是编写一个自动化测试脚本执行的一个容错率,为什么上文有问题下面做一个说明

    1.上文方法(try:...except:...else:...不建议用于循环)

    正常返回True,异常返回None(没有设置返回也是None值)

    def main_Run(n, count):
        """
        容错率利用方法
        :param n: 功能测试需要带入的参数
        :param count: 容错值,根据需要设置
        :return:
        """
        num = 0
        try:
            n = n + 1
            m = 1 / n  # 好比功能测试执行脚本模块
        except:
            num = num + 1
            print("执行模块运行异常")
            if num==3:
                return 
            main_Run(n,count)
        else:
            print("执行模块运行正常")  # 没有异常,输出提示
            return True
    
    if __name__ == '__main__':
        ttt = main_Run(-1, 3)
        print("==查看返回结果=============")
        print(ttt)

     执行结果:

    C:\Python\Python37\python3.exe D:/test/test2.py
    执行模块运行异常
    执行模块运行正常
    ==查看返回结果=============
    None

     从执行的结果ttt打印出None,可以看出来,最后的True并没有去覆盖替换None,后面才知道try..except..else是一个整体,在except块中已经返回None值,后面又重调函数,虽然是正常的,但是程序会认为是except 内的函数的值,而主函数是还是None。上面脚本可将except的函数这样处理就行了。

        except:
            num = num + 1
            print("执行模块运行异常")
            if num==3:
                return
            tt=main_Run(n,count)
            return tt

     第二种优化方法:

    def main_Run(n,count):
        """
        容错率利用方法
        :param n: 功能测试需要带入的参数
        :param count: 容错值,根据需要设置
        :return:
        """
        num=0
        while num<count:
            try:
                n=n+1
                m=1/n    #好比功能测试执行脚本模块
            except:
                num=num+1
                print("执行模块运行异常")
            else:
                print("执行模块运行正常") # 没有异常,输出提示
                return True #执行通过就终止循环
        else:
            print("异常超过容错值请查清原因")  # 超过容错次数,定义严重问题,可写一个钉钉抄送告警等
    if __name__ == '__main__':
        ttt=main_Run(-1,3)
        print("==查看返回结果=============")
        print(ttt)

     

    执行结果:

    C:\Python\Python37\python3.exe D:/test/test2.py
    执行模块运行异常
    执行模块运行正常
    ==查看返回结果=============
    True

     

    展开全文
  • Dubbo面试杀招--Dubbo集群容错负载均衡

    千次阅读 多人点赞 2020-09-24 16:57:33
    Dubbo 中的负载均衡 负载均衡其实分为硬件负载均衡和软件负载均衡,大伙儿应该对软件负载均衡比较熟悉,例如 Nginx。 而 Dubbo 也有自己的负载均衡,即 LoadBalance,前面我们提到服务提供者一般都是集群部署,这 ...
  •  我们提出的弹性分布式数据集(RDDs),是一个让程序员在大型集群上以容错的方式执行基于内存计算的分布式内存抽象。RDDs受启发于两类使用当前计算框架处理不高效的应用:迭代算法和交互式数据挖掘工具。这二者在...
  • 第1行从HDFS文件定义了一个RDD(即一个文本行集合),第2行获得一个过滤后的RDD,第3行请求将errors缓存起来。注意在Scala语法中filter的参数是一个闭包。 这时集群还没有开始执行任何任务。但是,用户已经可以在...
  • Storm入门与实践(4)Storm的容错机制

    千次阅读 2017-08-24 11:17:37
    按照软件设计的一般思路,这个问题的答案是“取决于实际情况”。Storm 0.7.0 版本引入了“事务拓扑”的特性,它能够保证大多数计算过程都能够满足恰好一次(exactly-once)的消息语义的容错性要求。想要了解“事务...
  • 八种体系结构模式:层、管道和过滤器、黑板、代理者、模型-视图-控制器(MVC) 表示-抽象-控制(PAC)、微核、映像。   四类体系结构模式: 1. 从混沌到结构. 包含:黑板模式,Layers(层)模式, the Pipes ...
  • 1.浅谈容错 先简单谈一下容错技术,为了保证系统的高可用,以及高可靠性,系统的设计者通常会在关键技术环节实行一定的容错技术,保证系统在运行的过程中,一旦出现问题和异常,系统可以自动恢复功能。 那么怎样...
  • 科学过滤之个人观点

    2011-06-28 21:28:47
    一,初级篇 大约在一年前的某天我无意中从网友处知道有过滤软件这个东西,而且在你自己购买能力有限的情况下,可以帮你节省很多银子而让你达到预想的购买效果,于是我开始尝试玩过滤软件~! 第一次接触软件我和...
  • 作者 | Igor Perikov译者 | 陆离责编 | 徐威龙出品 | CSDN云计算(ID:CSDNcloud)在本文中,我将介绍微服务中的几种容错机制及其实现的方法。如果你在...
  • 大底交集过滤工具V2.04
  • 为尽可能减少部分中断带来的影响,我们需要构建容错能力强的服务,以从容应对发生的某些中断。 本文介绍了构建和运维高可用的微服务架构系统中最常用的技术和架构模式。如果读者不熟悉上述的模式,那并没什么大碍...
  • 例如,通过限流,你可以过滤掉产生流量峰值的客户和微服务,或者可以确保你的应用程序在自动扩展(Auto Scaling)失效前都不会出现过载的情况。 你还可以阻止较低优先级的流量,以便为关键事务提供足够的资源。 ...
  • 复式遗漏扫描软件,原来babylon扫描软件的改进版。对3d,5d类型的彩票进行1-5位扫描,并根据设定容错过滤生成结果
  • 本文逐一介绍了文件传输、安全、存储、协作及其他方面的开源服务器软件。 据斯坦福大学的咨询学教授Jonathon Koomey近期作所的一项调查显示,全球已安装的服务器总数约为3160万台,包括设在美国的大约1150万台。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,433
精华内容 5,773
关键字:

容错过滤软件