桌面应用程序可靠性关注点 | |||
说明 | 桌面应用程序主要指在个人电脑上独立运行的应用程序,通常基于Windows平台,典型的桌面应用程序如Web浏览器,即时通讯客户端,IDE等 | ||
类别 | 场景 | 可靠性分析和要求 | |
数据可靠性 | 桌面应用程序的重点是对数据进行处理,保证数据文件的完整性是其最基本也最重要的可靠性要求 | 应用进程非正常退出、操作系统崩溃、宕机、掉电不破坏数据完整性。要求乒乓写、双写等机制,或通过日志机制支持数据恢复。 | |
文件系统被破坏,系统重装等 | 数据与系统、应用相分离,支持备份恢复(包括业务数据导出导入、服务器侧自动备份和恢复等) | ||
客户端数据发生变更,或与服务端数据不一致 | 支持数据一致性校验及自动同步 | ||
输入及环境 | 输入异常:配置、文件、消息、GUI接口等 | 对输入错乱、非法、消息丢失、连续点击等容错保护 | |
环境异常:操作系统/组件版本、环境变量、系统资源(如IP)等 | 支持有效性检查,能够快速定位 | ||
网络暂时性中断,服务器端重启或切换等 | 连接吊死检测及自动恢复;支持离线模式 | ||
进程重复启动,时间跳变(时钟同步调整,夏时制,闰秒) | 能正常处理 | ||
应用资源容错 | 部分功能异常,应不影响其他功能和整体 | 进程级资源物理隔离(类似浏览器的标签隔离,如IE8的LCIE,Firefox的OOPP),TLS(Thread Local Storage)线程资源隔离 | |
资源状态异常或吊死:线程、内存池、消息池、连接池 | 状态(退出或吊死)或占用率检测,超时释放 | ||
程序指针跑飞,或缓冲区溢出,在未标记为可执行的内存页运行代码 | 启用DEP/NX机制(Windows XP以上支持) | ||
插件管理 | 单个插件异常(资源占用超限,访问空指针等) | 故障检测与隔离,可参考Firefox的Multi-process plugin architecture,通过shim layer提供IPDL调用隔离插件运行环境与主进程 | |
单个插件管理及升级,应不影响其他功能 | 插件支持版本管理,在线升级 | ||
用户自定义脚本缺陷(变量定义超过容器能力,死循环等) | 对用户自定义脚本支持限额保护,状态检测及恢复等 | ||
故障恢复及定位 | 主进程异常退出 | 通过SEH捕获已知异常,通过SetUnhandledExceptionFilter捕获未知异常,通过DbgHelp.dll记录调用堆栈到DUMP文件 | |
主进程吊死或无响应 | 支持应用进程hang检测及恢复,配合RestarManager机制(Windows Vista以上支持) | ||
主进程异常重启,尽量恢复到故障前的工作状态 | 检查点技术:处理过程自动保存,故障后自动恢复,配合RestarManager机制恢复工作状态 | ||
远程发送错误报告 | 参考Windows错误报告机制(WER:Windows Error Reporting),可将程序异常的DMUP信息发送到指定的远程服务器 | ||
计划性活动 | 自动升级 | 支持最新版本检测,自动下载,自动或手动升级 | |
版本兼容性 | 程序与数据或配置之间跨版本兼容,或提供转换能力 | ||
错误配置回退,或按典型场景多份配置 | 支持配置回退,或配置导出/导入,多用户配置能力 |