【.com快译】如今,在各类应用项目中,业务规则越来越复杂,数据量也越来越大。这些都给应用后端的数据库带来了很大的压力。并且随着应用不断被越来越多的用户使用,你会逐渐发现数据库层已经成为整个系统的关键节点和性能瓶颈。因此,实现数据层的高可用成为我们在项目设计和运维过程中经常考虑和解决的问题。下面,我将以单站点和多站点、主备和多主模式为例,和大家一起探讨数据库的各种部署类型,各自的特点和在效率方面的优缺点,让大家设计一个具有高可用性和业务弹性的数据库架构。首先我们来看一下单站点数据库部署的类型:singlenode单站点单节点部署最基本的部署方式是单站点单节点架构。就业务连续性而言,这显然是最不利的部署模型。由于不能提供高可用性,其唯一的DR(灾难恢复)机制只能通过已有的备份文件来恢复数据库。可以看出,这种部署通常发生在不太关键的环境中。比如在CI/CD流水线技术中,自动化测试已经成为流程的一部分,那么在开发或者使用的时候,我们几乎可以使用CockroachDB、Oracle、SQLServer等所有的数据库都按照这种方式进行部署。单节点部署模式的好处是:由于只需要一个节点获得数据库许可,因此具有一定的成本效益。但如果在实际生产中采用这种模式,业务中断造成的损失以及由此带来的补救成本可能是天文数字。单节点部署方式的缺点是:缺乏HA(高可用性)。如果唯一的节点遇到错误或问题,则无法实现故障转移。因此,您必须在从备份恢复数据之前手动修复现有的故障节点。任何可能导致停机的维护都必须提前考虑如何转移数据流传输;系统的任何补丁或升级也会以某种形式影响客户或服务。多节点让我们看一下单个站点上的多节点架构。显然,在技术实现上,它会提高DR和HA。在这种部署方式中,我们一般可以选择master-passive模式,或者multi-master模式,配置两个或多个节点。此外,这些节点通常可以分布在不同的故障域中,例如:一个机架、一组网络交换机或磁盘。Master-by模式Master-by这种模式通常由一个主节点和n个从节点组成。这意味着如果主节点出现问题,应用程序可以立即指向从节点,从节点将提升为主节点。这个过程通常是自动完成的。但是,由于应用程序重新指向新节点所需的切换时间,可能会导致服务中断。可以看出,这种模式虽然比单节点架构要好,但对于生产环境来说仍然不是一个完美的部署方案。可以配置为主从模式的数据库包括:Oracle、SQLServer、MySQL、Postgres。主备模式的优点是:在你签了主库支持协议后,一些数据库提供商会免费让你在从节点上运行,所以这种模式还是比较划算的。与单节点架构相比,这种模式提供了更好的HA能力。master-quilt模式的缺点是:既然加入了slave节点,就必须运行在相应的硬件或虚拟资源上,需要额外付费。此外,它们只会在发生灾难或故障时使用。由于统一主控配置失败时需要重新同步所有服务器,运维成本相对较高。多主模式单站点多活模式在这种模式下,集群中的所有节点都可以同时进行读写操作。由于在多个活跃的集群中所有节点都是平等的,所以它们没有主从节点的概念。相应地,您不仅拥有可控的HA和DR功能,还具备了与生俱来的轻松扩展能力。目前支持这种模式部署的数据库有:CockroachDB、Cassandra、Couchbase。多主模式的优点是:读写操作都是可伸缩的。它的高可用性意味着系统可以在不停机的情况下执行升级和修补等维护任务。由于所有节点都处于活动状态并且一直在使用,因此它们在资源利用方面具有成本效益。虽然这会导致与预购许可证相关的成本更高,但此选项是市场上最具成本效益的选项。可以实现RPO(RecoveryDataPointObjective)为0,RTO(RecoveryTimeObjective)<10秒。multi-primary模式的缺点是:这种解决方案往往会因为网络流量成倍增加而影响系统的整体性能。不过这对单个站点影响不大,毕竟它的网速很快,带宽也很大。Cassandra等技术往往需要定期维护工作。也就是说,在完成恢复操作后,你应该检查并确保所有节点上的数据已经被复制并且是一致的。总的来说,在单个站点部署数据库的一般缺点是它无法处理整个站点或区域的中断。为此,我们往往需要使用下面讨论的多站点部署的模式。多站点多活模式多站点模式主要体现在不同的节点分布在不同的站点或区域。如果我们需要通过在线状态监控及时发现离线站点或区域,这种部署方式是非常适合的。也就是说,与单站点部署相比,多站点部署的最大优势是当一个或多个区域数据中心或站点中断时,您仍然可以提供原始数据服务。如前所述,在单个站点中,多主机与master-quite具有许多相同的优点和缺点。但是,对于多个站点,我们应该更多地考虑以下两个方面:网络延迟——由于每个站点通常在地理上是分散的,以提高服务的健壮性,由此产生的网络延迟往往会影响应用程序的响应时间。然而,像CockroachDB这样的数据库将允许你使用它的地理分区(Geo-Partitioning)功能来管理一些延迟。您可以通过阅读链接了解更多信息-https://www.cockroachlabs.com/docs/v19.1/demo-geo-partitioning。当然,你也要承担相应的维护区域数据中心稳健性的货币成本。容灾——您必须为集群中的所有节点实施备份,而不仅仅是针对单节点主备场景。当然,您可以根据应用的实际需要,选择其他更可靠的方案。小结正如我们在上述各部署方案的优缺点中所介绍的,无论选择哪种方案,都需要考虑并满足应用业务的连续性(如HA和DR)、总拥有成本(完整的TCO不仅包括初期建设支出,还包括运维和中断成本),以及综合性能要求。原标题:Active-PassivevsMulti-ActiveDatabaseTopologies,作者:DanielHolt
