软考-可靠性分析与设计

可靠性相关概念

        可靠度、可用度、可维护度、平均无故障时间、平均故障修复时间、平均故障间隔时间等。

        系统的可靠性和可用性:

可靠性:系统在规定的时间及规定的环境下,完成规定功能的能力。可用性:在某个给定时间点上系统能够按照需求执行的概率。可靠性更像是源头,更偏向于过程和手段,可用性是尽头,更偏向结果。

软件与硬件

        软件可靠性不等于硬件可靠性。可以从几个维度进行分析。

复杂度: 软件复杂度比硬件高,大部分失效来自软件实现。

物理退化: 硬件失效主要来自物理退化所致,软件不存在物理退化。比如内存或硬盘使用久了可能会损坏。

唯一性:软件是唯一的,每一个Copy的版本都是一样的。而两个硬件不可能完成一致。例如硬盘的烧制都会有细微的变化。

版本更新周期:硬件较慢,软件较快

可靠性的指标

                可用性 =  正常运行时间 / (故障时间) x 100%

                                ​​​​​​​        ​​​​​​​        软考-可靠性分析与设计_第1张图片

 串联与并联系统

        串联系统,总的系统可靠性比单个模块的可靠性更低。 可靠性 = R1(可靠性) x R2(可靠性)

 ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        软考-可靠性分析与设计_第2张图片

        并联系统,总的系统可靠性比单个模块的可靠性高。 可靠性 =  1 - ((1 - R1) x (1 - R2) x( 1 - R3))  把并联的部分当作一个整体模块,在和其他模块相乘。

        混合系统。先计算并联然后在计算串联。

可靠性设计

        可靠性的设计可以从几个维度进行考虑。避错技术、容错技术、检错技术、降低复杂度设计。

        避错技术: 全面的测试工作将错误提前发现并解决。

        容错技术:当错误发生后该如何错误。当错误发生后系统仍可以提供服务。

                结构冗余:硬件冗余(多台服务器,多台中间件等)、软件冗余(微服务部署多个等等)

                信息冗余:周六19:30~21:30(下午) 。  下午就是信息冗余 前面的时间已经证明时间。

                时间冗余:

        检错技术: 监控告警,出现错误后通知技术人员,进行人工干预处理错误。

        降低复杂度设计: 通过良好的设计、比如模块间的高内聚、低耦合。

N版本程序设计(静态冗余)

        与通常软件开发过程不同的是,N版本程序增加了三个新的阶段: 相异成份规范评审、相异性确认、背对背测试。

        N版本的同步、N版本之间的通信、表决算法(全等表决、非精确表决、Consmetie表决)、一致比较问题、数据相异性。

        ​​​​​​​        ​​​​​​​        软考-可靠性分析与设计_第3张图片

恢复块方法(动态冗余)

         设计时应保证实现主块和后备块之间的独立性、避免相关错误的产生,使主块和备份块之间的共性错误降到最低程度。

        必须保证验证测试程序的正确性。

        ​​​​​​​        ​​​​​​​        软考-可靠性分析与设计_第4张图片

 对比 -  N版本 / 恢复块

        ​​​​​​​        ​​​​​​​        软考-可靠性分析与设计_第5张图片

 防卫式程序设计

        对于程序中存在的错误和不一致性,通过在程序中包含错误检查代码和错误恢复代码,使得一旦错误发生,程序能撤销错误状态,恢复到一个已知的正确状态中去。

        try catch finailly

        实现策略:错误检测、破坏估计、错误恢复。

双机容错

软考-可靠性分析与设计_第6张图片

        双机热备模型 (主系统、备用系统)

        双机互备模式(同时提供不同的服务,心不跳则接管)

        双机双工模式(同时提供相同的服务,集群的一种)

集群技术

        可伸缩性、高可用性、可管理性、高性价比、高透明性

你可能感兴趣的:(软考,java,服务器,数据库)