地理分布式应用程序与普通应用程序的比较和对比

128 阅读6分钟

是什么让地理分布式应用的架构变得不同?

在这篇文章中,请关注地理分布式应用程序与普通应用程序的比较和对比。

今天,我将比较和对比地理分布式应用和普通应用(你在一个数据中心或可用区域内部署的那种应用)。

为了了解两者的区别并找到相似之处,我需要深入了解一个典型的地理分布式应用的构建模块(架构)。所以,如果你和我一起踏上这段旅程,那么,正如海盗们常说的那样。"All Hand Hoy!"意思是,"大家都到甲板上!"

地理分布式应用的架构

地理分布式应用程序的主要构建模块(架构)是什么?答案会让你大吃一惊!

从根本上说,该架构与普通的应用程序是一样的。一个地理分布式应用程序带有数据和应用层,就像你在一个标准应用程序中得到的一样。它可能有一个专门的API层,由几个微服务组成,它也可能使用一个负载平衡器来更好地处理用户流量。它可以依靠一些中间件,而且这个清单还在不断地增加

那么,有什么大的区别呢?嗯,正确答案的关键是刻在地理分布式应用程序的定义中。

"地理分布式应用程序是一个跨越多个地理位置的应用程序,以实现 高可用性弹性合规性性能"。

所有这些构件和组件都必须具备粗体字的特征。为了简单起见,让我们回顾一下这些与数据层、应用层和负载平衡器有关的特征。一些视觉上的东西可能也有帮助! 地理分布式应用程序的用户生活在世界各地。根据应用程序的情况,你可能要处理居住在一个大陆(或其大部分)的用户,或者地球上其他地方的用户。在我们的例子中(上文),我们有三个用户。让我们称他们为蓝女士、绿先生和红先生。

这些用户打开他们的笔记本电脑,启动浏览器并进入互联网。他们在浏览器窗口中输入我们的应用程序地址,并期望在几秒钟内看到应用程序的页面,如果不是立即的话。如果页面没有在1-3秒内加载,他们会认为这个应用程序很慢(并可能去其他地方)那么,地理分布式的应用程序如何处理这个问题?

全球负载平衡器

我们插图中的地理分布式应用程序依赖于一个全球负载平衡器,它接收请求,找出发件人的位置,并将请求转发到离用户最近的应用程序实例

图中显示,蓝女士的请求被路由到运行在美国西部的应用实例,绿先生的请求被路由到欧洲的实例,而红先生的请求被路由到澳大利亚的实例。应用实例离用户越近,应用就能越快地处理他们的请求。这就是全局负载均衡器对这个地理分布的应用程序的性能特点的贡献。

但是,负载平衡器如何帮助实现高可用性和可靠性?

想象一下,美国西部地区变得不可用,而负载平衡器不能再将蓝女士的请求转发到那里。负载平衡器不会惊慌失措。相反,它将为蓝女士找出另一个最近的位置(应该是美国东部),并开始自动转发她的流量。

地理分布的应用层

好了,让我们转到架构的应用层。这是全球负载均衡器转发用户请求的地方。

在图片中,你可以看到应用层跨越了各大洲。该应用可以是一个单体,也可以拆分成几个微服务。这对现在来说并不重要。最重要的是,该应用程序的多个实例在全球范围内运行。我想这已经很明显了,为什么要这样做,所以让我们来回顾一下。

多个应用实例确保了地理分布的应用可以容忍各种云中断,包括重大事件。这使得应用层可靠且高度可用。最重要的是,有了多个实例,地理分布式应用可以在低延迟的情况下为用户请求提供服务,无论用户的位置如何。这就是应用层的性能。

横向可扩展的数据层

最后,被选中为用户请求服务的应用实例需要从数据层 (数据库)读取数据或将其写入数据 。对于地理分布式的应用程序,你通常使用一个可以水平扩展的分布式数据库。这就是为什么上图中的多个数据库节点分散在世界各地。

分布式数据库大大提高了地理分布式应用程序的可靠性和可用性。这些数据库存储了数据的冗余副本,允许应用程序在各种故障中保持运行。如果一个数据库节点由于云事件而变得不可用,应用程序的请求可以由活着的健康节点处理。

从性能的角度来看,用户数据离应用实例越近越好。你不希望悉尼的应用实例处理红先生的请求时,转到亚洲或南美洲的数据库节点,对吗?对!对!对有了分布式数据库,就有可能将数据安排在靠近用户位置的地方,将延迟降到最低。

重要的是,将用户数据放置在特定地点的能力也使地理分布式应用程序符合数据居住要求。GDPR是一个严肃的事情。因此,当全球负载均衡器将格林先生的请求转发给欧洲的应用程序实例时,该实例必须从部署在欧盟的数据库节点读取个人数据并将其写入。

这就是了。正如你所看到的,地理分布式应用程序的架构与你在常规应用程序中使用的组件相同--包括数据层、应用层和负载平衡器。唯一的区别是,在地理分布式应用程序的情况下,所有这些组件必须在几个遥远的地方发挥作用。

仍然感到困惑吗?有问题吗?请在评论中指点我,我们将一起把事情弄清楚。

在地平线上有什么?

好了:通过这篇文章,我已经完成了与地理分布式应用相关的基本概念的讨论。现在你知道什么是地理分布式应用程序,以及它包括哪些组件。

我们接下来会有什么呢?

好吧,我将向你介绍我的第一个地理分布式应用程序原型。它仍然是原始的,但只要有一个基础,这就可以了。 这是一个建立在Vaadin框架上的Java网络应用,部署在Heroku中。数据库是YugabyteDB。该原型在一个云区域内运作,但跨越多个可用区。