- 点击跳转专栏=>Unity3D特效百例
- 点击跳转专栏=>案例项目实战源码
- 点击跳转专栏=>游戏脚本-辅助自动化
- 点击跳转专栏=>Android控件全解手册
- 点击跳转专栏=>Scratch编程案例
- 点击跳转=>软考全系列
👉关于作者
专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎底部卡片私我,获取更多支持,交流让学习不再孤单。
👉实践过程
需要所有整理的文档可底部卡片联系我,直接发压缩包。
六 可靠性
6.1 定义
**可靠性:**是系统在规定的时间内及规定的环境条件下,完成规定功能的能力,也就是系统无故障运行的概率。
**可靠度:**系统在规定的条件下、规定的时间内不发生失效的概率。
**失效率:**又称风险函数,也可以称为条件失效强度,是指运行至此刻系统未出现失效的情况下,单位时间系统出现失效的概率。
6.2 检错技术
请给出检错技术的优缺点,并说明检测技术常见的实现方式和处理方式。
优点:检错技术实现的代价一般低于容错技术和冗余技术。
缺点:就是不能自动解决故障,出现故障后如果不进行人工干预,将最终导致软件系统不能正常运行。
实现方式:
- 判断返回结果,如果返回结果超出正常范围,则进行异常处理;
- 计算运行时间,如果某个模块或函数运行时间超过预期时间,可以判断出现故障;
- 置状态标志位。
**处理方式:**大多数都采用“査出故障-停止软件运行-报警”的处理方式。 但根据故障的不同情况,也有采用不停止或部分停止软件系统运行的情况,这一般由故障是否需要实时处理来决定。
6.3 可靠性的子特性
口决:成容(成龙)易依
- 成熟性:成熟性是指系统避免因错误的发生而导致失效的能力;
- 容错性:容错性是指在系统发生故障或违反指定接口的情况下,系统维持规定的性能级别的能力;
- 易恢复性:易恢复性是指系统发生失效的情况下,重建规定的性能级别并恢复受直接影响的数据的能力;
- 依从性:可靠性的依从性是指系统依附于与可靠性相关的标准、约定或规定的能力。
6.4 可靠性模型
- 时间模型
- 数据模型
- 故障植入模型
6.5 可靠性设计原则
- 软件可靠性设计是软件设计的一部分,必须在软件的总体设计框架中使用,并且不能与其他设计原则冲突。
- 软件可靠性设计在满足提高软件质量的前提下,以提高和保障软件可靠性为最终目标。(软件质量是前提,可靠性为最终目标)
- 软件可靠性设计应确定软件可靠性目标,不能无限扩大化,并且排在功能度、用户需求和开发费用之后考虑。
6.6 可靠性设计技术
- 容错设计(4后面的是我总结的)
-
N版本程序设计
-
恢复块设计
-
冗余设计
(1)时间冗余
执行出错时,循环执行几次,以避免因网络繁忙或抖动或资料被占用引起的失 败
(2)结构冗余(硬件冗余、软件冗余)
(3)信息冗余(校验码)
- 检错设计
- 降低复杂度设计
- 集群技术
- 避错设计/防卫式程序设计
- 双机容错
- 双机热备:主服务器正常时,备份服务器空闲
- 双机互备:同时提供不同的服务,心不跳则接管
- 双机双工:同时提供相同的服务,集群的一种
6.7 影响可靠性的因素
口决:剖规内开可
- 运行剖面(环境)
- 软件规模
- 软件内部结构
- 软件的开发方法和开发环境
- 软件的可靠性投入
6.8 可靠性分析技术
-
故障树分析方法
一种自项向下的软件可靠性分析方法,即从软件系统不希望发生的事件(顶事件),特别是对人员和设备的安全及可靠性产生重大影响的事件开始向下逐步追查导致事件发生的原因,直至基本事件(底事件)。从而确定软件故障原因的各种组合方式和发生概率。基本的步骤是软件故障树的建立、定性分析和定量分析。
-
失效模式与效应分析方法
在软件开发阶段的早期,通过识别软件失效模式分析造成的后果。研究分析各种失效模式生产的原因,寻找消除和减少其有害后果的方法。以便尽早发现潜在的问题,并采取相应措施,从而提高软件的可靠性和安全性。
七 数据库
7.1 反规范化技术
定义:
规范化设计后,数据库设计者希望牺牲部分规范化来提髙性能,这种从规范化设计的回退方法叫做反规范化技术。
优点:
反规范化设计允许保留或者新增一些冗余数据,从而减少数据查询中表连接的数目或简化计算过程,提高数据访问效率。
采用反规范化技术的益处:能够减少数据库查询时SQL连接的数目,从而减少磁盘I/O数据量,提高查询效率。
缺点:
数据的重复存储,浪费了磁盘空间;为了保障数据的一致性,增加了数据维护的复杂性。
常见的反规范化技术包括:
- 增加冗余列:在多个表中保留相同的列,通过增加数据冗余减少或避免查询时的连接操作;
- 增加派生列:在表中增加可以由本表或其他表中数据计算生成的列,减少查询时的连接操作并避免计算或使用集合函数;
- 表水平分割:根据一列或多列数据的值,把数据放到多个独立的表中,主要用于表数据规模很大、表中数据相对独立或数据需要存放到多个介质上时使用;
- 表垂直分割:对表进行分割,将主键与部分列放到一个表中,主键与其他列放到另一个表中,在查询时减少I/O次数。
7.2 NOSQL
优点:
- 支持高并发数据访问,性能较高。
- 存储结构松散,能够灵活支持多种类型的数据格式。
- 能够支持海量数据的存储,且易于横向扩展。
- 基于分布式数据存储,不存在单点故障和性能瓶颈,系统可用性高。
缺点:
- NoSQL数据库的现有产品不够成熟,大多数产品处于初创期。
- 并未形成一定的标准,产品种类繁多,缺乏官方支持。
- 不提供对SQL的支持,学习和应用迁移成本较高。
- 支持的特性不够丰富,现有产品提供的功能比较有限
7.3 主从复制
引入主从复制机制所带来的好处:
- 避免数据库单点故障,提升可用性
主服务器实时、异步复制数据到从服务器,当主数据库宕机时,可在从数据库中选择一个升级为主服务器,从而防止数据库单点故障。
- 读写分离,提高査询效率
根据系统数据库访问特点,可以使用主数据库进行数据的插入、删除及更新等写操作,而从数据库则专门用来进行数据査询操作,从而将査询操作分担到不同的从服务器以提高数据库访问效率。
- 可扩展性更优
如果采用单台数据库服务器,则访问量持续增加时,数据库瓶颈暴露,且无法迅速解决问题。而主从结构可以快速增加从服务器数量,以满足需求 - 负载均衡
一主多从分担任务,相当于负载均衡 - 提升数据安全性
系统中的数据冗余存放多份,不会因为某台机器硬件故障而导致数据丢失
八 WEB架构设计
8.1 REST
**定义:**REST 从资源的角度来定义整个网络系统结构,分布在各处的资源由统一资源标识符( URI)确定,客户端应用程序通过 URI 获取资源的表现,并通过获得资源表现使得其状态发生改变。
REST 中将资源、资源的表现和获取资源的动作三者进行分离
8.2 MVC
使用MVC设计表现层,具有以下优点:
- 允许多种用户界面的扩展。在MVC模式中,视图与模型没有必然的联系,都是通过控制器发生联系,如果增加新类型的用户界面,只需修改响应的控制器和视图即可,模型无需变动;
- 易于维护。控制器和视图随着模型的扩展而扩展,只要保持公共接口,控制器和视图的旧版本可以继续使用;
- 支持功能强大的用户界面。用户界面与模型方法调用组合起来,使程序的使用更清晰,可将友好的界面发布给用户。
8.3 负载均衡
负载均衡机制是大型Web应用解决高负荷访问和大量并发请求时常用的有效解决方法,典型的负载均衡机制包括基于DNS的负载均衡、基于反向代理的负载均衡等。
基于DNS的负载均衡机制通过DNS服务器实现,通常通过循环复用具有同一域名的多个主机地址的服务器实现负载均衡,可以看出,该机制具有实现简单、容易实施及低成本的特性。反向代理负载均衡则是将来自Internet的连接请求以反向代理的方式动态转发给内部网络上的多台服务器进行处理,从而达到负载均衡的目的。
从系统执行效率方面讲,基于DNS的负载均衡机制实现简单,但其通常不能区分服务器的差异,也不能反映服务器的当前运行状态。基于反向代理的则可以根据内部服务器的性能差异及实时负载情况进行动态负载均衡,当系统多个Web服务器性能存在明显差异或内部Web服务器出现故障时,负载均衡器可以更快做出响应,从而保证客户端的访问效率。采用基于反向代理的负载均衡机制,可在代理服务器中引入调速缓存机制,对Web服务器返回的静态页面或图片等静态资源进行缓存,由代理服务器承担对原始服务器的静态资源访问请求,从而进一步降低原始Web服务器的负载。
从安全性方面讲,采用基于反向代理的负载均衡机制,代理服务器屏蔽了客户端对真实Web服务器的直接访问,恶意用户无法对真实Web服务器进行攻击,且可以通过代理服务器为原本不安全的客户端与Web服务器之间的连接建立安全通道。因此采用基于反向代理的负载均衡机制可为系统提供更好的安全性保障。
九 构件
基于构件的软件开发中,可以通过不同的途径来获取构件,主要包括以下4种方法:
- 从现有构件中获得符合要求的构件,直接使用或做适应性修改,得到可复用的构件;
- 通过遗留工程(Legacy Engineering),将具有潜在复用价值的软件提取出来,得到可复用的构件;
- 从市场上购买现成的商业构件,BPCOTS(Commercial Off-The-Shell)构件;
- 开发新的符合要求的构件。
开发构件通常采取3种策略:
- 分区(partitioning):指的是将问题情景的空间分割成几乎可以独立研究的部分;
- 抽象(abstraction):是对在给定实践内执行指定计算的软/硬件申.元的一种抽象;
- 分割(segmentation):是将结构引入构件的行为,支持对行为性质进行时序推理。
当前主流构件标准有:
- CORBA:由OMG(对象管理集团)制定;
- COM/DCOM:由Microsoft制定;
- EJB:由SUN的Java企业Bean制定。
十 设计模式
创建型模式主要用于创建对象,为设计类实例化新对象提供指南。
- 单例(Singleton)模式:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。
- 原型(Prototype)模式:将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新实例。
- 工厂方法(FactoryMethod)模式:定义一个用于创建产品的接口,由子类决定生产什么产品。
- 抽象工厂(AbstractFactory)模式:提供一个创建产品族的接口,其每个子类可以生产一系列相关的产品。
- 建造者(Builder)模式:将一个复杂对象分解成多个相对简单的部分,然后根据不同需要分别创建它们,最后构建成该复杂对象。
结构型模式主要用于处理类或对象的组合,对类如何设计以形成更大的结构提供指南。
-
代理(Proxy)模式:为某对象提供一种代理以控制对该对象的访问。即客户端通过代理间接地访问该对象,从而限制、增强或修改该对象的一些特性。
-
适配器(Adapter)模式:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。
-
桥接(Bridge)模式:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现的,从而降低了抽象和实现这两个可变维度的耦合度。
-
装饰(Decorator)模式:动态地给对象增加一些职责,即增加其额外的功能。
-
外观(Facade)模式:为多个复杂的子系统提供一个一致的接口,使这些子系统更加容易被访问。
-
享元(Flyweight)模式:运用共享技术来有效地支持大量细粒度对象的复用。
-
组合(Composite)模式:将对象组合成树状层次结构,使用户对单个对象和组合对象具有一致的访问性。
行为型模式主要用于描述类或对象的交互以及职责的分配,对类之间交互以及分配责任的方式提供指南。
-
模板方法(Template Method)模式:定义一个操作中的算法骨架,将算法的一些步骤延迟到子类中,使得子类在可以不改变该算法结构的情况下重定义该算法的某些特定步骤。
-
策略(Strategy)模式:定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的改变不会影响使用算法的客户。
-
命令(Command)模式:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。
-
职责链(Chain of Responsibility)模式:把请求从链中的一个对象传到下一个对象,直到请求被响应为止。通过这种方式去除对象之间的耦合。
-
状态(State)模式:允许一个对象在其内部状态发生改变时改变其行为能力。
-
观察者(Observer)模式:多个对象间存在一对多关系,当一个对象发生改变时,把这种改变通知给其他多个对象,从而影响其他对象的行为。
-
中介者(Mediator)模式:定义一个中介对象来简化原有对象之间的交互关系,降低系统中对象间的耦合度,使原有对象之间不必相互了解。
-
迭代器(Iterator)模式:提供一种方法来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。
-
访问者(Visitor)模式:在不改变集合元素的前提下,为一个集合中的每个元素提供多种访问方式,即每个元素有多个访问者对象访问。
-
备忘录(Memento)模式:在不破坏封装性的前提下,获取并保存一个对象的内部状态,以便以后恢复它。
👉其他
📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。
温馨提示:点击下方卡片获取更多意想不到的资源。