dot Redis 8 来了——而且它是开源的

了解更多

如何减少延迟和最大限度地减少中断

当我们讨论从客户端发出请求到接收响应之间的最大延迟时,问题不仅仅是延迟。你怎么知道这种延迟或缓慢实际上不是一次中断?或者它不会导致用户放弃,这又是另一种形式的“中断”?

我将以实时库存欺诈检测为例,说明如何减少延迟,从而消除中断。 

首先,特别是从疫情的角度来看,请考虑实时库存。在 COVID-19 期间,我们的购物习惯发生了变化;当我们不得不去商店时,我们会深思熟虑,并确保我们需要的东西确实有库存。我们的计划是去一家商店,进去,拿到东西,然后出来。

但是,如果商店的库存系统或其公开视图很慢,我可能会错误地认为我想要的东西有库存,然后径直前往商店。如果我想要的东西不在那里,我就会离开;毕竟,我去的目的是明确的。我也可能会去客服投诉,不仅抱怨系统慢,还抱怨库存不足。结果是收入损失以及浪费在投诉上的时间。在这种情况下,库存更新的延迟实际上就是该系统的一次中断。

欺诈检测得太晚

现在让我们转向欺诈检测。简而言之,欺诈系统运行在相对静态的数据上,并且是在需要将实时数据纳入风险计算之前开发的。如果我们考虑数字身份或用户画像,验证客户身份的想法可以被视为静态数据(例如邮寄地址)和动态数据(例如最近的购买记录)的组合。由于数据泄露,这些静态信息很可能不是秘密。不良行为者知道这一点,并可以制定策略来规避常见的欺诈检测策略。

欺诈最终可能会被检测到,但只有在交易完成后。实际上,这种延迟,即无法整合实时数据,意味着欺诈检测系统不可用。它遭遇了中断。

在这一点上,您可能会说:“等等。我们一直在对架构进行现代化改造(如图 1 所示)。为什么这仍然是个问题?”

architecture evolution graph
图 1:架构演进

我认为,随着架构的发展,我们已经解决了可用性问题,并实现了五个九的 SLA。我们最初使用关系型数据库,然后为了性能将数据分解到多个关系型数据库中,接着又引入了针对特定数据类型的存储来进一步提升性能。 

但多个数据存储也引入了多份数据副本,并带来了数据一致性的挑战。我们通过使用 Kafka 等消息总线的事件驱动架构解决了这个问题。因此,我们实现了五个九的可用性,并且以增加复杂性为代价减轻了所有系统之间数据一致性的挑战。但我们并没有从整体上解决延迟问题。与此同时,消费者越来越频繁地使用移动设备来获取信息,所有这些都比以往任何时候都更需要速度。 

数据存储中的延迟

如果我们将重点放在这种事件驱动的微服务架构中的数据存储上,我认为有许多工具可以解决延迟问题。作为 Redis 的解决方案架构师,我可以谈谈我在这种架构中使用的工具,它们可以实现亚毫秒级的延迟。Redis Enterprise 是一个内存数据库平台,它保持了开源 Redis 的高性能,并为在云端、本地和混合模式下运营业务的公司增加了企业级功能。这篇博客文章提供了更多详细信息,说明 Redis 如何通过线性扩展实现每秒数亿次操作的实时性能。 

例如,如果在我们的事件驱动微服务架构中利用 Redis Enterprise,我们可以降低整体数据存储的复杂性(见图 2)。

figure of event-driven microservices architecture
图 2:事件驱动的微服务架构

现在作为一个高性能系统,我们通过将动态信息纳入风险计算来满足对实时数据的需求,同时又不影响在交易中完成此步骤的要求。类似地,我们可以回到实时库存带来的“我在商店里需要的东西是否在那里”的问题,并且,假设只有一家商店或所有东西都是集中的,我们可以确信延迟不会产生错误的结果。

多系统带来的复杂性

这将我们带到下一个层面:当不止一家商店,并且没有集中化管理,而是有多个库存系统时,会发生什么?如果我们什么都不做,我们将面临新的数据一致性挑战。幸运的是,我们可以通过主动-主动地理复制来解决这个问题,并在所有系统中创建主数据。主动-主动(实现为无冲突复制数据库)如图 3 所示。它指的是使用至少两个数据中心,每个数据中心可以在任何时候为应用程序提供服务,即使部分网络或服务器意外发生故障,也能提供应用程序的可访问性。  有关更深入的探讨,请参阅主动-主动地理分布(基于 CRDTs)

figure of active-active geo-duplication
图 3:主动-主动地理复制

不幸的是,如果我的应用程序没有与数据共置,我仍然面临数据需要的位置和数据存储位置之间平均 100 毫秒的延迟(见图 4);延迟仍然可能是中断的根源。

figure of average latency between applications and data
图 4:应用程序与数据之间的平均延迟

我们可以通过将数据移近其使用位置来解决此挑战。如果公共云距离太远,延迟为 100 毫秒,那么我将利用Verizon 5G Edge 和 AWS Wavelength Zones 等网络边缘,将应用程序与数据之间的逻辑距离缩短至 50 毫秒(见图 5)。

figure of average latency of network edges
图 5:网络边缘的平均延迟

我们的分布式系统现已通过基于事件的微服务架构实现现代化,我们降低了数据存储的复杂性,通过主动-主动地理复制实现了数据一致性,并降低了延迟以满足实时需求。此外,我可以将该架构拉近到数据被消费的位置,减少延迟作为中断来源的影响。我可以利用带有主动-主动地理复制的网络边缘,从而确保数据存储的任何位置都与数据被使用的地方保持接近和一致。 

回到我们最初讨论的实时库存和欺诈检测问题,这意味着客户满意度提高,他们相信自己想买的商品在到店时会有库存。对于企业而言,这意味着通过减少支持互动来降低客户留存成本;对于金融机构而言,则能减轻欺诈损失,并管理实时交易分析带来的成本。延迟——以及中断的风险、感知或现实——被降到最低。

想试试这个吗?这篇5G Edge 教程是一个不错的起点。有兴趣了解更多关于在复杂分布式系统中减少延迟的现代方法吗?阅读下面链接的电子书。

关于 Robert Belson
Robert 于 2019 年 10 月加入 Verizon 的公司战略团队,主要负责领导 Verizon 边缘计算产品组合 5G Edge 的开发者关系工作。在此职位上,他担任公司工程博客的主编,设计开发者教程和培训模块,并与大型企业客户合作,利用自动化、混合网络和边缘云解决他们的业务挑战。在加入 Verizon 之前,他曾担任区块链基础设施项目的网络架构师,支持多项网络规划举措,以减轻网络安全风险。