分布式多主关系数据库的底线业务优势

news/2024/7/9 20:19:06 标签: 分布式, 数据库, postgresql, 云原生

当今的应用程序(包括企业应用程序)需要始终开启且始终可用,并且通常必须为全球用户提供服务,这些用户无论身在何处都希望获得几乎即时的响应时间。

应对这些挑战不仅仅意味着让用户更满意:每个能够解决低延迟和超高可用性的根本问题的企业都会获得直接的底线收益。由于数据库在每个应用程序技术堆栈中都发挥着基础作用,因此解决这些问题最合理的位置是数据库层。实现这一目标的最佳且最具成本效益的方法之一是在分布式关系数据库之上部署应用程序。

我们首先考虑数据延迟的问题。许多应用程序都使用位于单个数据中心或云区域的单个数据库实例运行。靠近数据库运行位置的用户将看到快速响应时间,但位于对面海岸或大洋彼岸的用户将看到更慢的响应时间。对于电子商务应用程序,页面加载缓慢会导致销售损失,因为买家会失去耐心并转到竞争对手的网站或重新考虑购买。对于 SaaS 应用程序,用户体验受损可能会导致客户流失。

分布式“多主”数据库可以配置为在地理上分布的节点集群中运行,每个节点都可以接受读写流量。这使得可以策略性地将数据库副本放置在更靠近用户连接网络的位置。这显着减少了数据延迟,始终实现更快的页面加载,并防止销售损失和客户流失。

现在让我们看看超高可用性。我们这么说是什么意思?显然,应该避免停机,因为这意味着客户的沮丧和业务的损失,具体取决于停机的时间和范围。如果应用程序能够在硬件和数据中心中断后继续运行,则该应用程序具有高可用性。许多应用程序和数据库架构师将在一个或多个地理上分离的数据中心中配置和读取其数据库的副本,以便在主系统停机时进行故障转移。

这种方法存在几个问题。首先,在云中,只读副本可能位于同一区域的附近可用区中。云提供商确实有时会出现整个区域发生数小时故障的情况。事实上,最近几周,AWS 的 us-east-1 区域(最大的)和 Google 的 europe-west-9 区域都发生了这种情况,导致完全依赖它们的应用程序出现数小时的停机时间。架构和实施多区域故障转移解决方案可能很困难,这是许多组织尚未这样做的主要原因。此外,对于许多流行的开源数据库(例如Postgres)来说,在不关闭整个系统的情况下不可能进行软件维护和升级。

完全分布式的多主数据库解决了这些缺点。由于有多个节点处理读取和写入流量,因此一个节点发生故障只需将数据库请求重定向到任何幸存的节点即可。由于系统被设计为地理分布式,因此跨多个区域运行非常简单。软件升级可以逐个节点执行,避免了可怕的“计划维护”窗口。

也许您一直处于尴尬的境地,必须向您的首席执行官或董事会解释为什么当您的云提供商发生区域中断时您的应用程序会关闭。当他们吸收了云区域的概念后,你不可避免地会被问到为什么应用程序无法跨多个区域运行。使用分布式多主数据库,可以简单且经济高效地实现这一点。顺便说一句,如果您是 SaaS 公司的首席执行官或董事会成员,您可能想询问您的团队该公司的应用程序是否可以承受云区域中断!

最后,为什么我们在这里专门讨论关系数据库呢?毫无疑问,分布式数据库的优势在 NoSQL 世界中已经存在很多年了。然而,许多现有的企业应用程序都是建立在关系数据库之上的,关系数据库更加灵活,并且有更多的工具和人才来支持它们。通过将现有应用程序重新部署到分布式关系数据库之上,通常只需对应用程序代码进行有限的更改,即可为现有应用程序带来上述好处。这种迁移可以与从昂贵的遗留数据库解决方案迁移到 Postgres 等开源数据库一起完成,从而节省大量许可费用。Postgres 现在是开发人员中最流行的开源数据库,因此这将使您的开发人员和用户都满意。

总而言之,将应用程序迁移到分布式多主关系数据库可以带来巨大的收益。这些好处的形式是通过降低延迟来减少销售损失和客户流失,或者通过多主分布式架构避免停机。而且,如果您也转向开源数据库,您将拥有更满意的用户和客户以及更满意的开发人员,这几乎是一个额外的好处。


作者:Michael Bogan

更多内容请关注公号【云原生数据库

squids.cn,云数据库RDS,迁移工具DBMotion,云备份DBTwin等数据库生态工具。


http://www.niftyadmin.cn/n/5146035.html

相关文章

课程学习前言

App逆向说明 app抓包分析可以看到有签名有加固,毕竟需要APK去访问服务、获取数据,都需要APK有完整的信息,而这些信息、代码经过各种加密,还是放在APK里面。说白了,就是门锁紧了,钥匙藏在门口某个地方&…

基于SSM的货物进销管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

命名数据网络(NDN)介绍

命名数据网络的由来 IP网络最开始其解决的问题是两个实体间点对点通信需求,实现资源共享。(简单知道即可) 随着互联网的发展,互联网用户对internet的需求现已经发生了巨大变化。目前面临着以下挑战 首先是随着以内容为中心&…

flutter dio^5.3.3实现刷新token

业务场景:并发请求A、B、C三个接口,但是这个三个接口都需要携带token才能请求到正确结果,所以我们的正确思维应该是,例如A接口请求到了,但是返回401没有权限,这个时候就需要拦截B和C两个接口不去执行&#…

使用 Selenium Python 检查元素是否存在

像 Selenium 这样的自动化工具使我们能够通过不同的语言和浏览器自动化 Web 流程并测试应用程序。 Python 是它支持的众多语言之一,并且是一种非常简单的语言。 它的Python客户端帮助我们通过Selenium工具与浏览器连接。 Web 测试对于开发 Web 应用程序至关重要&am…

STM32-HAL库08-TIM的输出比较模式(输出PWM的另一种方式)

STM32-HAL库08-TIM的输出比较模式(输出PWM的另一种方式) 一、所用材料: STM32F103C6T6最小系统板 STM32CUBEMX(HAL库软件) MDK5 示波器或者逻辑分析仪 二、所学内容: 通过定时器TIM的输出比较模式得到预…

【Echarts】玫瑰饼图数据交互

在学习echarts玫瑰饼图的过程中,了解到三种数据交互的方法,如果对您也有帮助,不胜欣喜。 一、官网教程 https://echarts.apache.org/examples/zh/editor.html?cpie-roseType-simple (该教程数据在代码中) import *…

代码随想录训练营第56天| ● 583. 两个字符串的删除操作 ● 72. 编辑距离

583. 两个字符串的删除操作 题目链接:https://leetcode.com/problems/delete-operation-for-two-strings 解法: 1. 确定dp数组(dp table)以及下标的含义 dp[i][j]:以i-1为结尾的字符串word1,和以j-1位结尾…