如何实现应用程序的 24X7 小时可用性?

如何实现应用程序的 24X7 小时可用性?

我在一次采访中被问到这个问题:

我有一台 SQL 服务器和一个 asp.net 应用程序。我希望我的应用程序 24X7 小时可用,即使服务器崩溃。

在代码级别和更高级别(不是在代码级别)实现它有哪些不同的方法?

答案1

最终还是要归结为金钱。神话中的“五个九”(99.999% 的可用性,每年 5 分钟的停机时间)中的每个“九”都有成本,而这个成本是相当高。99.999% 可用性系统的成本高达数百万美元,并且必须涵盖硬件、软件许可证、专门训练有素的专业人员、培训、程序等。您必须考虑系统更新(操作系统和供应商补丁)、应用程序升级、各种维护程序(如数据库重新索引等)。

但对于一个非常粗略的答案,我会指出你高可用性解决方案概述

故障转移群集为整个 SQL Server 实例提供高可用性支持。故障转移群集是一个或多个节点或服务器与两个或多个共享磁盘的组合。每个应用程序都安装在 Microsoft 群集服务 (MSCS) 群集组(称为资源组)中。在任何时候,每个资源组都只由群集中的一个节点拥有。应用程序服务具有独立于节点名称的虚拟名称,称为故障转移群集实例名称。应用程序可以通过引用故障转移群集实例名称连接到故障转移群集实例。应用程序不必知道哪个节点托管故障转移群集实例。

数据库镜像主要是一种软件解决方案,通过支持几乎即时的故障转移来提高数据库可用性。数据库镜像可用于为相应的生产数据库(称为主数据库)维护单个备用数据库或镜像数据库。

与数据库镜像一样,日志传送在数据库级别运行。您可以使用日志传送来为相应的生产数据库(称为主数据库)维护一个或多个热备用数据库。备用数据库也称为辅助数据库。每个辅助数据库都是通过还原主数据库的数据库备份(无恢复或有备用)创建的。使用备用还原可让您使用生成的辅助数据库进行有限的报告。

复制使用发布-订阅模型。这允许主服务器(称为发布服务器)将数据分发到一个或多个辅助服务器(或订阅服务器)。复制可实现这些服务器之间的实时可用性和可扩展性。它支持筛选以在订阅服务器上提供数据子集,还允许分区更新。订阅服务器处于在线状态并可用于报告或其他功能,而无需查询恢复。SQL Server 提供三种类型的复制:快照、事务和合并。事务复制提供最低的延迟,通常用于高可用性。

答案2

我认为这里没有多少人会为你提供面试问题的答案来帮助你顺利通过面试,而且我确信这不是你的意思,所以这里有两个学习选择给你。

  • 谷歌搜索“High Availability asp.net”。(“High Availability” 是您要查找的术语)

  • 观看此视频

答案3

在代码层面上,你能做的不多:如果你的服务器崩溃了,它就崩溃了。在硬件方面,他们可能正在寻找这样的短语故障转移群集

答案4

具有容错 (FT) 的 VMware vSphere 或其他虚拟化产品的同等产品。此解决方案不限于 2 台服务器(一台发生故障,另一台承担负载),而是可以双向分布到多台服务器。这只是一个您想花多少钱的问题。

这是完全独立于操作系统的,这意味着您可以在 Windows Server 上运行应用程序,而数据库可以在 Linux RedHat 上运行,反之亦然。

相关内容