软考架构师论文-论高可靠性系统中软件容错技术的应用
- 格式:docx
- 大小:24.56 KB
- 文档页数:4
计算机操作系统的容错性与可靠性分析在当今信息技术高速发展的时代,计算机操作系统是支撑各种应用的核心基础软件,其容错性和可靠性成为保障计算机系统正常运行的重要因素之一。
本文将对计算机操作系统的容错性与可靠性进行深入分析,探讨其相关概念、重要性以及实现方法。
一、容错性与可靠性的概念与重要性1. 容错性的概念与重要性容错性是指在计算机系统出现部分故障时,仍能保证系统的稳定性和可用性的能力。
当计算机操作系统在面对硬件故障、软件错误或恶意攻击等异常情况时,如果能够自动检测并纠正错误,或者通过备份和冗余机制进行自动切换和恢复,就可以体现出良好的容错性。
容错性的重要性在于,它能够降低系统崩溃的风险,提高系统的可用性和稳定性,从而保障用户的数据安全和业务的连续性运行。
2. 可靠性的概念与重要性可靠性是指计算机操作系统在长时间运行中保持稳定性和可用性的能力。
一个可靠的操作系统应该能够在面对大量用户并发访问、繁重的计算任务和复杂的网络环境等多种挑战下依然能够正常运行。
可靠性的重要性在于,它直接关系到系统是否能够提供高性能和高效率的服务,同时也影响到用户对操作系统的信任度和满意度。
二、计算机操作系统的容错性实现方法1. 错误检测与纠正为了实现容错性,计算机操作系统通常会引入各种错误检测和纠正机制。
例如,利用校验码和冗余校验等技术可以检测和纠正数据传输过程中的误码,减少传输错误的可能性;利用进程监控和心跳机制可以检测到进程的异常行为,并及时采取相应的纠正措施。
2. 备份与冗余备份与冗余技术是提高操作系统容错性的重要手段之一。
通过建立备份系统或者使用冗余的硬件设备,当主系统出现故障时,备份系统或冗余设备可以立即切换并接管工作,保证用户服务的连续性。
常见的备份与冗余技术包括备份服务器、热备份、冗余数组等。
3. 异常处理与恢复操作系统应该具备快速检测和处理异常情况的能力,及时恢复正常状态。
当系统发生异常时,操作系统可以通过调整资源分配、重启服务进程或者执行特定的容错算法来进行恢复。
软件测试中的安全容错性验证技术详解在软件开发过程中,安全容错性验证技术扮演着至关重要的角色。
这些技术的目标是确保在各种不可预测的情况下,软件系统能够保持稳定运行,并能抵御各种潜在的安全威胁。
本文将详细解释软件测试中的安全容错性验证技术,以及为什么这些技术对于确保软件系统的稳定性和安全性至关重要。
让我们来了解一下什么是安全容错性验证技术。
在软件测试过程中,安全容错性验证技术旨在检测系统是否具备适应各种潜在错误和非预期输入的能力,以及系统在遇到错误时是否能够恢复到一个可控状态。
这些错误可能是由于软件设计或实现中的缺陷、外部攻击或其他不可预测的因素引起的。
通过使用安全容错性验证技术,在软件系统部署之前,我们可以识别出潜在的安全威胁和系统漏洞,并对其进行修复和改进。
接下来,我们将讨论一些常见的安全容错性验证技术。
首先是异常处理技术。
异常处理是一种通过在代码中捕获和处理潜在的异常情况来确保系统稳定性的方法。
在软件测试中,我们通过模拟各种异常情况,如无效的输入、内存溢出和系统崩溃等,来测试系统对异常情况的反应。
这有助于识别系统在面对异常情况时是否能够正确处理并恢复到一个可控状态。
另一个重要的安全容错性验证技术是边界测试。
边界测试旨在测试系统对输入边界条件的处理能力。
输入边界条件是指各种可能的输入值的极限情况,如最小值、最大值、空值等。
通过对这些边界条件进行测试,我们可以验证系统在极端情况下是否能够正确处理输入,并确保系统不会因为输入边界情况而崩溃或产生安全漏洞。
安全容错性验证技术还包括内存安全性验证。
内存安全性是指确保程序在运行过程中不会出现内存泄漏、缓冲区溢出或访问非法内存等问题。
通过使用内存安全性验证技术,我们可以检测和预防这些潜在的内存安全问题,并确保系统在运行过程中能够稳定和安全。
还有一些其他的安全容错性验证技术,如输入验证、身份验证和访问控制。
输入验证技术用于确保系统能够正确验证和过滤用户输入,以防止潜在的安全漏洞和攻击。
2010年上半年 (4)试题一论软件维护及软件可维护性 (4)试题二论面向服务的企业应用集成技术及其应用 (4)试题三论快速应用开发在系统建模中的应用 (4)试题四论信息系统中的访问控制 (4)2009年上半年 (5)试题一论软件项目质量管理及其应用 (5)试题二论企业服务总线技术及其在应用集成中的作用 (5)试题三论工作流管理技术在CIM系统协作中的应用 (5)试题四论政务流程的优化与再造 (5)2008年下半年 (6)试题一论基于场景的软件体系结构评估方法 (6)试题二论敏捷开发方法的应用 (6)试题三论SOA在企业信息化中的应用 (7)试题四论SaaS(Software-as-a-Service,软件即服务)的关键技术 (7)2008年上半年 (7)试题一论软件体系结构风格及其应用 (7)试题二论软件项目估算的过程与方法 (8)试题三论信息资源规划的需求分析 (8)试题四论P2P计算关键技术与应用 (8)2007年下半年 (8)试题一论迭代式软件开发过程与方法 (8)试题二论工作流管理技术在BPR中的应用 (9)试题三论电子商务系统中的技术基础设施集成 (9)试题四论虚拟计算的应用 (9)2007年上半年 (9)试题一论企业软件过程改进的实施 (9)试题二论信息系统的可行性分析 (10)试题三论工作流管理系统的分析和实现 (10)试题四论动态语言在互联网应用中的作用 (10)2006年下半年 (10)试题一论有效的需求分析过程 (10)试题二论信息系统建设的网络规划 (11)试题三论面向服务的体系结构在系统集成中的应用 (11)试题四论计算机支持的协同工作技术的应用 (11)2006年上半年 (12)试题一论需求获取技术 (12)试题二论XML语言在Internet平台上的应用 (12)试题三论设计模式在软件开发中的应用 (12)试题四论控制系统的可视化技术 (12)2005年11月 (12)试题一论项目的风险管理 (12)试题二论Web应用程序的测试 (13)试题三论电子政务建设中政务内网和外网的划分 (13)试题四论高可靠性系统中软件容错技术的应用 (13)2005年5月 (14)试题一论企业信息系统的安全 (14)试题二论电子政务信息共享整合 (14)试题三论多层分布式结构系统的开发 (15)试题四论项目管理中的进度控制 (15)2004年11月 (15)试题一论企业内部网的安全策略 (15)试题二论应用系统开发范围和功能的确定 (16)试题三论嵌入式操作系统的功能与特性 (16)试题四论软件测试计划的制定 (16)2004年5月 (17)试题一论电子商务的安全 (17)试题二论用例的获取方法 (17)试题三论ERP的开发与应用 (17)试题四论软件开发成本估算 (18)2003年 (18)试题一论自由软件的合理使用 (18)试题二论软件开发的风险控制 (18)试题三论工作流相关技术 (19)试题四论Web Service技术的应用与发展趋势 (19)2002年 (19)试题1 论软件质量保证 (19)试题2 论数据仓库的设计与实现 (20)试题3 论中间件技术在软件开发中的作用 (20)试题4 论虚拟现实技术的应用与发展 (20)2001年 (21)试题1 论软件需求分析方法和工具的选用 (21)试题2 论Java技术在因特网平台上的应用 (21)试题3 论改进Web服务器性能的有关技术 (21)试题4 实时控制系统与企业信息系统的集成 (22)2000年 (22)试题1 论软件测试的策略与环境 (22)试题2 论基于Web的数据库应用系统的开发技术 (22)试题3 论企业网络计算的组成与特性 (23)试题4 论软件维护的组织与实施 (23)1999年 (23)试题1 论软件开发环境的选用和建立 (23)试题2 论企业内部网Intranet的系统集成技术 (24)试题3 论改进数据库应用系统的性能 (24)试题4 论软件开发过程中的配置管理技术 (24)1998年 (25)试题1 论软件的可重用性设计 (25)试题2 论数据库的安全性设计 (25)试题3 论建立企业内部网Intranet的策略 (25)试题4 论项目管理工具的选用 (26)1997年 (26)试题1 论信息管理系统的可行性研究 (26)试题2 论软件需求分析的方法与策略 (27)试题3 论数据库前端开发工具的选用 (27)试题4 论计算机网络的安全性 (27)1996年 (28)试题1 论系统的健壮性设计 (28)试题2 论系统集成技术的应用 (28)试题3 论面向对象开发技术及其应用 (28)试题4 论开放系统应用的直保作性技术 (29)1995年 (29)试题1 论软件开发范式的选用原则 (29)试题2 论软件测试的完成标准 (29)试题3 论信息管理系统的Client/Server结构 (30)试题4 论CASE工具的使用 (30)1994年 (31)试题1 论数据库设计技术 (31)试题2 论软件开发平台的演变与选用 (31)试题3 论应用软件的输入输出设计技术 (31)试题4 论信息系统集成技术 (32)1993年 (32)试题1 论软件的选用和二次开发 (32)试题2 论软件的质量保证 (32)试题3 论图形用户界面技术 (33)试题4 论结构化程序设计方法 (33)1992年 (33)试题1 论软件排错 (33)试题2 论软件项目的进度管理 (34)试题3 论面向对象的需求分析或设计 (34)试题4 论系统的安全与保密控制 (34)试题一论软件维护及软件可维护性本题是一道软件工程方向的论文试题。
软件架构的容错性设计在软件开发中,容错性设计是一项重要的工作,它能够确保系统在面对错误或故障时能够继续正常运行,从而提高系统的稳定性和可靠性。
软件架构的容错性设计不仅包含了具体的技术手段,还需要考虑各种可能的故障情况和应对策略。
本文将介绍软件架构的容错性设计原则,并探讨一些常见的容错性设计技术。
一、容错性设计原则1. 透明性:容错性设计应该对系统的正常操作不产生任何负面影响,用户不应该察觉到系统中发生了任何故障或错误。
2. 鲁棒性:系统应该能够在面对各种异常情况时保持平稳的运行状态,并尽可能地减少对用户产生影响。
3. 完整性:容错性设计应该覆盖到系统的各个层面,包括硬件、操作系统、中间件、应用程序等,确保整个系统能够在故障发生时进行快速恢复。
4. 可伸缩性:系统的容错性设计应该支持水平和垂直的扩展,以应对系统规模的变化和负载的增加。
二、容错性设计技术1. 冗余备份:通过在系统中引入冗余组件或节点,如备用服务器、冗余存储设备等,来实现容错性设计。
当主节点出现故障时,备用节点可以接替其工作,确保系统的连续可用性。
2. 事务处理:通过采用事务处理机制来保证数据操作的一致性和完整性。
当某个操作发生错误时,事务可以回滚到之前的状态,保证数据的一致性。
3. 异常处理:在系统中加入异常处理机制,对各种异常情况进行捕捉和处理。
例如,当网络连接断开时,系统可以自动尝试重新连接,以保持与外部系统的通信。
4. 监控与恢复:通过实时监控系统的运行状态,并及时发现和处理潜在的故障。
当系统发生故障时,容错性设计应该能够迅速进行故障恢复,并通知管理员进行相应的处理。
5. 负载均衡:通过在系统中引入负载均衡机制,将用户请求分散到不同的服务器上进行处理,以分摊系统的负载,提高系统的容错性和性能。
6. 缓存和代理:通过使用缓存和代理服务器来提高系统的响应速度和容错性。
缓存可以减轻数据库和服务器的负载,提高系统的性能和可用性。
7. 容错算法:在软件开发中,可以采用一些容错算法来增强系统的容错性,如冗余校验、纠错码等。
软件测试中的容错性与恢复性测试在软件开发过程中,软件测试是确保软件质量的重要环节之一。
而软件测试中的容错性与恢复性测试则是其中的两种关键测试方法。
本文将介绍容错性与恢复性测试的概念、目的和常用的测试技术,以及它们在软件开发中的重要性和应用。
一、容错性测试容错性测试是测试软件系统在面对异常情况时的反应和处理能力。
其主要目的是验证软件在错误或异常情况下是否能够正确地处理,并保证不中断或崩溃。
容错性测试可以帮助开发人员发现和解决潜在的错误,增强软件的可靠性和稳定性。
在容错性测试中,可以采用以下几种常见的测试技术:1. 错误注入技术:通过有目的地引入各种错误和异常情况,例如输入错误的数据、非法的操作和网络中断等,以测试软件的容错能力。
2. 异常处理测试:测试软件对各类异常情况的响应和处理能力,例如输入超出范围的数值、文件读写错误等。
3. 状态恢复测试:测试软件在崩溃后是否能够正确地从错误状态中恢复并继续正常运行。
容错性测试在软件开发过程中起着重要的作用。
一个具有良好容错性测试的软件能够在面对异常情况时保持稳定运行,避免用户数据的丢失和系统崩溃,提升用户体验。
二、恢复性测试恢复性测试是测试软件系统在发生错误或异常后是否能够快速地回复正常运行状态的能力。
其主要目的是验证软件对错误的识别和修复能力,以及用户数据的保护和恢复。
在恢复性测试中,可以采用以下几种常用的测试技术:1. 恢复机制测试:测试软件对各种错误的识别和处理能力,例如内存溢出、数据丢失等,以确定软件能够及时修复错误并恢复正常运行。
2. 数据保护测试:测试软件在崩溃或异常情况下能否有效地保护用户数据的安全,并能够在恢复后正确地读取和还原数据。
恢复性测试在软件开发过程中同样具有重要意义。
一个具备良好恢复性测试的软件能够通过快速修复错误和数据恢复,减少系统中断时间,提高软件的可靠性和用户满意度。
三、容错性与恢复性测试的重要性与应用容错性与恢复性测试在软件开发中的重要性不言而喻。
论高可靠性系统中软件容错技术的应用作者:吴义芝来源:《科学与财富》2020年第09期摘要:本文论述了养老管理信息综合系统中软件容错技术的应用,主要讨论了各种容错技术在系统中的应用,最后对整个系统的容错进行了总结。
关键词:容错,集群,主备,冗余目前我国已经进入到老龄化社会,老龄人口逐年增长,按照老龄办提供的数字,现在中国的老年人口已经达到 2.48 亿,与之增加的养老消费人均三千元左右,从整个养老产业的规模来看,估算在 2025年要增加到五万亿规模,市场前景巨大。
随着互联网的迅猛发展,各行各业都在进行着互联网+的尝试。
其中,养老领域更迫切需要解决养老专业化程度低、信息化不足、健康照护水平滞后等一系列亟待解决的问题。
由于我们公司在医疗行业领域有着丰富的成功经验,同时,近些年在养老领域也成功实施过很多成熟的案例。
一期投资方出资 3600 万,委托我司进行这款综合性养老管理平台的开发工作。
我在该项目中担任系统架构设计师,主要负责应用系统的软件架构设计和中间件选型。
该系统以养老为主线,其中包括养老档案、照护计划、服务审计、状况跟踪、费用管理、决策支持等方面的30多个业务功能模块组成。
经過前期对全国几十家养老机构和相关合作的医疗单位的调研分析,结合原有的经验,对整个系统业务进行详细规划和相关设备的初步选型,即我们内部所说的“两版三端”的方案,机构养老和社区养老两个子系统,同时能够在 PC 端,PAD 端,手机端三端进行呈现和交互。
提高软件系统可靠性技术主要分为容错技术和避错技术,容错技术的主要方式为冗余,冗余又分为结构冗余、时间冗余、信息冗余,冗余附加。
结构冗余又分为静态冗余、动态冗余和混合冗余。
软件容错技术主要有 N版本程序设计,恢复块方法,和防卫式程序设计。
结合互联网软件的性质,我主要采用了集群技术、数据库主从方式、和程序设计方面来进行软件的容错与避错处理。
下面就从以上三方面详细讨论我所采用的容错技术和方法。
软件容错处理机制与实现随着技术的不断发展,软件在我们生活中扮演着愈发重要的角色。
然而,由于各种原因,软件系统往往会出现错误,这可能会导致系统崩溃、数据丢失以及其他不可预见的问题。
因此,软件容错处理机制的设计和实现变得至关重要。
本文将介绍软件容错处理机制的概念、目的以及实现方式。
一、软件容错处理机制的概念和目的软件容错处理机制是指在软件设计和实施过程中采取的措施,旨在保证软件在出现错误时能够继续正常运行,并尽可能减少对用户的影响。
其目的主要有以下几点:1. 提高系统的可靠性:通过引入容错处理机制,能够避免软件系统因出现错误而导致的故障,从而提高系统的可靠性和稳定性。
2. 提升用户体验:容错处理机制能够减轻用户面对错误时的不便,确保用户能够持续使用软件而不受错误的干扰。
3. 保护数据完整性:容错处理机制可以防止数据丢失或损坏,保护用户的重要数据免受损害。
二、软件容错处理机制的实现方式为了实现软件容错处理机制,可以采用以下几种常见的方式:1. 异常处理:通过在代码中加入异常处理语句,以应对可能出现的错误情况。
当程序运行过程中发生异常时,异常处理机制将捕获并处理异常,防止系统直接崩溃,并通过合理的方式通知用户发生了错误。
2. 数据备份:通过定期进行数据备份,将数据存储在不同的位置或设备上,以防止数据丢失或损坏。
一旦发生错误,可以通过备份恢复数据,确保系统的正常运行。
3. 冗余设计:在关键组件或系统上引入冗余,即在系统中增加多个相同或类似的功能模块,以备份和替换出现故障的组件。
当一个组件出现错误时,系统可以自动切换到备用组件,从而保证系统的连续运行。
4. 安全检查:在软件运行过程中,可以使用安全检查来监测错误并采取相应措施。
例如,在网络通信中,可以使用校验和或冗余数据来验证数据的完整性,以减少错误的传输和解析。
5. 日志记录和分析:通过记录和分析系统的运行日志,可以及时发现和排查潜在错误,以便及时采取相应措施。
容错能力测试的重要性和方法容错能力测试是软件开发过程中非常重要的一环,它可以有效地测试软件在面对异常情况下的表现和处理能力。
在现实世界中,各种异常和错误是无法避免的,而一个优秀的软件应该具备强大的容错能力,以确保用户使用过程中的稳定性和可靠性。
本文将探讨容错能力测试的重要性,并提供相关的方法。
一、容错能力测试的重要性当今社会,软件广泛应用于各行各业,其功能和性能要求日益复杂。
而面对各种可能存在的问题和异常情况,软件必须具备良好的容错能力。
容错能力测试具有以下重要性:1. 用户体验:容错能力测试可以模拟各种用户操作错误、网络延迟、设备故障等情况,验证软件在不同异常场景下的表现。
通过测试,可以避免用户因为软件异常而产生困惑和不满,提高用户体验度。
2. 系统稳定性:容错能力测试可以检测系统在面对异常状况时是否能够正常工作,防止系统因为一点小错误而崩溃或者不稳定。
一旦系统崩溃,可能会导致数据丢失、业务中断等严重后果,使企业遭受巨大损失。
因此,通过容错能力测试,可以有效排查问题,提升系统的稳定性和可靠性。
3. 安全性保障:容错能力测试还可以检测系统在面对攻击、未授权访问等安全威胁时的表现。
面对外部威胁时,软件需要具备自我保护机制,保护用户数据和隐私的安全。
容错能力测试可以发现潜在的安全漏洞,为软件安全性提供保障。
二、容错能力测试的方法为了有效地测试软件的容错能力,我们可以采用以下方法:1. 异常情况模拟:通过模拟用户操作错误、网络异常、设备故障等情况,观察软件的反应和处理能力。
例如,模拟用户输入错误的数据,测试软件是否能够给出准确的错误提示信息,或者是否能够自动纠正错误。
2. 边界值测试:边界值测试是一种常用的容错能力测试方法。
在边界值处,软件容易出现异常情况,例如输入数字时,测试最小值、最大值、边界范围内和边界范围外的情况。
通过对边界值的测试,可以验证软件在极端情况下的容错能力。
3. 异常场景测试:在测试过程中,设计各种异常场景,例如硬件异常、网络异常、系统资源不足等。
高可用性软件架构设计和实现论文[五篇范文]第一篇:高可用性软件架构设计和实现论文摘要:硬件冗余可以极大地提高计算机应用系统的可用性,然而,一旦关键硬件出现故障或数据库宕机,正在进行中的业务流程通常会中断。
探讨了一种如何实现应用系统高可用性的软件架构的设计方案,以弥补纯硬件冗余应用系统的不足。
关键词:高可用性;软件容错;分布式数据库在业内,计算机应用系统的可用性定义为计算机应用系统保持正常运行时间的百分比,通常用表1所示的“9”的个数来划分可用性的类型。
通常,硬件冗余(容错计算机、双机或多机集群、磁盘阵列、SAN 等)、数据复制、合理的灾难备份和恢复策略都可以极大地提高计算机应用系统的可用性。
正因为如此,当前,对于计算机应用系统的高可用性、业务的可持续性要求,业内通常以硬件系统的高可用性来应对或代替。
常见的解决方案是双机(或多机)集群方案或直接采用容错计算机来保障系统的高可用性,应用软件的设计和开发往往仅注重业务流程的分析和过程控制。
在这种完全依赖硬件来保障整个系统的可用性的系统里,一旦关键硬件出现故障或数据库宕机,正在进行中的业务流程(如需较长执行时间的事务处理、后台批处理过程等)必然会中断,这是因为双机切换也需要时间。
对此,应用软件本身并无多少作为,该类业务必须等待系统重新恢复后全部或部分重做。
本文以基于大型数据库的应用系统为例,从“软件容错”设计的概念出发,参考“分布式”数据库结构设计,以“系统服务总线”为核心,给出了一种可行的高可用性软件架构的设计方案,可以极大地提高应用软件的可用性和业务系统的可持续性。
无论是传统的C/S架构,还是近年来流行的B/S架构,本文中给出的设计方案都有一定的参考意义。
1软件结构模型任何基于大型数据库的应用系统,都可以抽象为对数据的“读”和“写”操作。
至于客户端如何展现“读”到的数据,以及“客户端”与“服务端”基于何种通信协议通信,不在本文讨论之列。
软件结构的设计其实就是针对“读”和“写”的一系列流程的设计。
容错与避错技术及应用容错与避错技术是指在设计和实现软件或系统时,采取一系列方法和措施,以提高系统的可靠性和稳定性,从而减少错误的发生和传播,以及解决错误可能带来的影响和后果。
容错与避错技术被广泛应用于各种领域和行业,如航空航天、金融、电力、交通等,其主要目的是确保系统能够在错误或故障情况下继续正常运行或能够快速恢复。
容错技术主要包括硬件容错和软件容错。
硬件容错技术可以通过冗余机制来提高系统的可靠性,如冗余备份、冗余计算、冗余存储等。
软件容错技术则是通过软件设计和实现的方式来提高系统的可靠性和稳定性,如错误检测、错误修复、错误恢复等。
容错技术的核心思想是在系统设计和实现阶段就考虑到错误的可能性,并在系统运行期间对错误进行检测、诊断和处理,以保证系统能够继续工作或恢复到正确状态。
容错技术的应用范围十分广泛。
在航空航天领域,容错技术被用于确保飞行器的安全和可靠性。
例如,航空器中的飞行控制系统采用冗余计算和容错设计,以确保在某个计算单元出现错误的情况下能够及时切换到备用计算单元,从而避免飞行中的事故发生。
在金融领域,容错技术被用于保护交易系统的可靠性和数据的完整性。
例如,电子支付系统会采用容错技术来检测和恢复错误的交易,以防止用户的资金损失。
容错技术的核心在于错误检测和错误处理。
错误检测是指在系统运行期间对可能出现的错误进行检测和诊断。
例如,可以通过数据校验、输入验证等方式来检测异常或错误数据。
如果发现错误,可以采取相应的措施来处理错误,如数据的纠错、恢复等。
另外,在设计和实现阶段也可以采用一些措施来提高系统的容错性,如模块的独立性、错误处理机制的设计等。
避错技术是容错技术的一种补充和延伸。
避错技术主要通过预防错误的发生来提高系统的可靠性和稳定性。
例如,在软件开发过程中,可以采用代码规范、静态代码分析等方式来避免错误的引入。
此外,还可以采用代码复查、测试等方式来发现和修复已经存在的错误。
避错技术的目的是尽可能地减少错误的发生,从而降低系统的风险和故障率。
摘要:
2018年下半年,本人有幸参加了某汽车玻璃生产厂商的“产品质量追溯与条码管理系统”的开发建设工作。
该系统基于三层B/S架构,是以条码管理为基础、涵盖原材料采购、生产物料准备、生产制造执行、仓储管理、成品调拨销售为一体的综合性管理系统。
在该系统的建设中,本人作为系统架构负责人,主要负责需求分析与架构主体设计等工作。
本文以该系统的构建开发过程为例,首先探讨我们如何考虑容错问题,常用的容错技术的分类及具体的技术,然后着重探讨容错技术在该项目的建设过程中的应用及效果,包括数据库的主从复制、程序设计中的容错技术和应用的集群部署。
通过这些技术的使用,在该系统的可靠性和性能层面都达到了很好的效果,截至目前系统一直平稳运行,得到了客户的认可。
正文:
在汽车工业快速发展的今天,越来越多的汽车零部件生产企业意识到,实现产品可追溯是提高自身产品质量的有效保证。
随着汽车召回制度的颁布,快速召回有缺陷的产品并根据缺陷产品的条码标识追溯到产品的型号、批次、原材料信息甚至生产工序、生产人员、生产时间、生产设备等信息,可以为查找问题根源,快速解决产品缺陷带来极大便利。
2018年下半年,我公司受当地某汽车玻璃生产厂商的委托,开发“产品质量追溯与条码管理系统”。
该系统采用三层B/S架构并集群部署,数据库采用主从库方式进行部署。
该系统是基于条码管理的,涵盖该厂商整个生产过程的综合性管理系统。
该系统需要覆盖该厂商分布在全国各地的三家生产基地和十多家供货仓库。
客户希望通过该系统的建设达到如下几个目标:一是根据条码技术和生产数据的实时采集与记录,实现产品的可追溯属性;二是通过在生产过程中对条码的扫描核对,实现对生产过程的规范化控制,如批次控制、先进先出控制等;三是基于条码技术,实现物料防混,避免生产、发货过程中出现物料不一致的情况;由于现场车间采用3班倒24小时不间断的生产的制度,客户要求系统必须有较高的可靠性,不能出现影响现场生产的问题,另外系统涉及库存和账务信息传输时,必须保证数据正确和完整,不能出现问题。
作为该系统的架构负责人,本人主要负责需求分析与架构主体设计等工作。
在客户主体需求敲定,形成需求基线以后,我们开始着手结合需求和以往的设计经验,考虑应该采用什么样的容错技术和方法来满足系统的可靠性与实时性的要求。
提高系统的可靠性一般可以通过容错技术、避错技术和检错技术来实现。
容错技术可以通过N版本设计、恢复块设计、防卫式程序设计和冗余来实现。
其中N版本设计和恢复块设计虽然能够很好的提高系统的可靠性,但是成本代价较大,不太适合于一般的应用软件系统,所以常采用的冗余技术和技术为防卫式程序设计,其中冗余技术是指通过冗余结构、资源、信息等手段来提高可靠性,冗余技术可以分为结构冗余、时间冗余和信息冗余,其中结构冗余包括动态冗余、静态冗余和混合冗余,时间冗余是通过指令重复的执行来避免瞬时的错误,信息冗余是指为信息增加一部分冗余信息进行校验或者纠错。
防卫式程序设计是指在预见程序的什么位置可能会出现问题,然后当问题出现时执行一个防止损害的动作来使系统恢复正常。
在该系统的开发过程中,我们面对不同的需求场景综合使用了多种容错,下面我们将着重探讨“应用服务器的集群部署”、“数据库主从复制”以及“程序容错设计”这三种技术如何在系统中应用及其应用效果。
一、“应用服务器的集群部署”
我们通过对现场的调研了解到,该厂商拥有三家生产基地和十余家供货仓库分散在全国多个城市。
生产基地均采用3班倒24小时不间断生产的制度,这就要求系统必须拥有较高的可靠性来为生产基地和供货仓库提供服务,不能出现宕机等停止服务情况的发生,这会严重影响现场生产。
基于这种情况,我们决定采用应用服务器集群部署的方式来提高系统的可靠性。
应用服务器集群部署在多台应用服务器上,然后使用Nginx对三台服务器做负载均衡并提供统一的外部访问入口,Nginx采用最小连接数算法将请求平均分发到三台应用服务器上,通过这种处理,多台应用服务器即使某一到两台出现问题,从整体上仍然能够保证系统的可用,负载均衡技术降低了每台应用服务器的压力,提高了整个系统的实时性,从侧面也提高了系统的可靠性。
二、“数据库主从复制”
根据我们以往的设计经验,数据库的可靠性会从根本上影响应用系统整体的可靠性。
该厂商的三家工厂和十多家供货仓库会24小时不间断的通过应用系统与数据库进行交互,这就要求数据库必须有较高的可靠性与实时性,系统数据库中存储着大量的关键数据,必定要保证数据的完整性,如果采用单点方式进行部署的话,一旦硬盘由于电压等原因损坏或失窃,都会导致关键数据丢失,这是不能被接受的。
基于这种情况,我们决定采用主从部署的方式来提高数据库的可靠性。
在部署层面,我们对主库和从库采用多机分别部署的方式,并做数据的实时同步,主库主要承担写入操作,从库主要承担读取操作。
主库与从库通过软件进行相互监控,当主库或者从库中任意一台发生宕机等异常情况时,其他数据库就会接过宕机机器的职责。
通过这样的部署方式,首先可以提高整个数据库系统的可靠性,保证数据库系统可以持续提供服务,另外通过主从复制,做到了数据的异地备份,即使单台遗失,数据库管理员也能在最短的时间内通过备份来恢复数据,减少企业的损失。
三、“程序容错设计”
通过程序代码实现容错是提高系统可靠性的一种较为有效的方式,它可以应对很多程序运行时发生异常情况,其最常用的方式有防卫式程序设计和冗余设计。
在设计该系统时,我们也采用了这两种方式来提高系统的可靠性。
例如该在该系统的库存模块中,库存转移往往涉及到从某个子库出库同时再另一个子库入库,这两个动作必须保证同时可靠地完成,不然就会出现库存数据异常。
为应对这种情况,我们采用了防卫式的程序设计,使用Try/Catch机制包裹执行这两个动作的代码块,当其中任何一个动作出现问题时,就会进入Catch处理。
在Catch中,如果另一个动作尚未执行,我们会给前端返回提示,让用户再次进行尝试或联系系统管理员。
如果另一个动作已经执行完毕,那么我们会将其回滚,然后给前端返回提示。
生产基地间或供货仓库间采用https协议进行通信,在传递关键数据时,我们通过信息冗余的方式来提高系统的可靠性,这里具体的做法是在发送方请求头中增加CRC循环校验码,接收方接收到数据后,会使用CRC校验码对传输的内容进行纠错,保证信息传输的可靠性。
我们在该项目中使用了许多容错技术来提高系统的可靠性与实时性。
通过这
些技术的使用,不仅满足了客户对可靠性的要求,也对系统的性能和实时性的提升起到了一定的作用,获得了客户的认可,在相关行业内也赢得了良好的口碑。
经过这次实践,也使我们发现了自身的一些不足之处,比如防卫式程序设计的比较臃肿,许多可复用的代码也没有得到很好的复用,我们将在后续的工作与实践中继续磨练与提升。