dot 未来速度的未来即将在您所在的城市举行活动。

加入我们在 Redis 发布会

Mutualink 如何使用 Redis 支持生命攸关的微服务架构

(当组织寻求对其应用程序进行现代化改造时,许多组织正在转向微服务架构,将他们的遗留应用程序分解为松散耦合服务的集合。这一深刻的变化促使我们联系了处于微服务架构旅程各个阶段的 Redis 客户。我们将在接下来的几周内在一系列博文中讲述他们的微服务故事。)

当 Mutualink 寻求对其 互操作响应和准备平台 (IRAPP)进行现代化改造时,该公司的 IT 团队转向微服务架构,以使数十个技术组件能够无缝地协同工作。这很重要,因为 Mutualink的使命是促进联邦、州和地方机构以及私人实体之间的合作,以解决危险事件。 

Mutualink 战略产品开发总监 Paul Kurmas 分享了微服务模式对他意味着什么:“它允许我们设计能够完成一项任务并将其做好,其回报是更简单的软件,速度更快、更可靠且易于支持。我们的微服务架构最大限度地提高了可用性,最大限度地减少了任何软件、系统或通信故障的范围,同时也帮助我们扩展,因为我们可以跨大量实例对来自各个客户端或内部服务的负载进行平衡。” 

所有这些都需要一个灵活且高效的中央数据存储,具有顶级的性能、轻松的可扩展性和高可用性。这就是 Mutualink 团队转向 Redis Enterprise 为其微服务架构中的数据层提供动力的原因。 

在低延迟能拯救生命的环境中实现顶级性能

Mutualink 的数万名用户期望每次在系统中使用系统来跟踪和报告事件期间的位置数据时都能获得即时响应;发送和接收文本、音频或视频消息;共享文件;等等。因此,IRAPP 的延迟必须尽可能低,并且架构必须即使在客户端需求扩展时也能保持其性能。在任何给定时间,平台可能包含数百个机构之间的活动协作,每个协作都通过事件流提供有关谁在何处在线以及哪些新内容可供订阅者使用的数据。

Mutualink 在虚拟机上运行 Redis Enterprise,这些虚拟机存储超过 32 TB 的数据,包括用户记录和对这些各种流的订阅。由于 Redis 能够在服务器之间自动扩展数据,因此 IRAPP 可以通过添加服务器或可用性区域来动态扩展,从而保持始终如一的高性能。这使 Mutualink 能够以亚毫秒的延迟处理大量并发数据请求。 

主动-主动复制确保高可用性和数据弹性

从一开始,Mutualink 就致力于实现高可用性,以便平台能够承受软件实例、计算节点甚至整个数据中心的丢失。团队实现这一目标的一种方法是通过 Redis Enterprise 的主动-主动复制,其中数据在多个数据中心之间自动同步以实现地理冗余。“我们对即时访问数据的关注至关重要。正是这一点使 Redis 成为我们应用程序的中央数据存储的理想解决方案,”Paul 指出。“主动-主动功能是我们使用 Redis Enterprise 的决定性因素,它为我的团队节省了无数的人力年,否则他们将花费大量时间来发明跨数据站点同步模型。”

Mutualink 的 Redis 数据模型支持近乎实时的最终一致性——例如,如果某个事件触发对公司波士顿地区服务器上数据的更改,则对触发事件的客户端的响应将立即返回,而数据将在其达拉斯地区的服务器上近乎实时地反映出来。其他客户端可以订阅 Redis 中的事件,无论哪个区域最接近。 

仔细观察,处理语音 over IP (VoIP) 信号的微服务必须即使在发生软件故障时也要维护数千个电话连接。Mutualink 将每个呼叫状态从平台导出并将其存储在 Redis 的多个区域中,以便平台保持无状态。然后,当该会话中的下一条消息准备就绪时,它可以有效地传递到该服务的任何实例。由于 Redis Enterprise 的无冲突复制数据类型 (CRDT),即使某些数据中心完全不可用,VoIP 服务也能提供不间断的可用性。凭借这种弹性,即使一个或多个单独的微服务发生故障,整个应用程序也可以继续执行读写操作。 

通过最大限度地减少服务之间的相互依赖性来建立团队自主性

虽然 Mutualink 最初计划仅将其微服务架构的一个中央组件用于 Redis,但团队很快发现将其他服务插入 Redis 以及使用其简单的 API 来维护自身数据是多么容易。与其让一项服务(他们称之为“世界”)充当平台所有数据的守门人,不如说 Mutualink 现在有 15-20 个不同的服务直接使用 Redis Enterprise 来满足各种需求。 

带有 Redis 的 Mutualink 微服务架构

Redis 的可扩展性和数据模型多样性帮助 Mutualink 团队避免供应商泛滥,因为其数据结构可以支持各种业务功能。Mutualink 使用 Redis 构建的功能包括: 

  • 在内容缓存中缓冲文本消息以进行异步传输
  • 使用 Redis 的地理空间索引维护客户端设备位置、存在状态和时间
  • 使用 Redis 字符串、集合和列表管理身份验证存储和搜索树
  • 通过使用 Redis 作为简单的消息队列 支持服务间通信(HTTP、POST、PATCH、GET 和 DELETE)。

Redis 帮助这些微服务中的每一个都能够转换数据,而无需对后端存储进行更改。Mutualink 受益于 Redis 中的通用但分散的数据层,所有服务都可以访问该数据层。此外,每项服务都可以使用适合当前任务的正确语言、数据库或其他开发工具。由于 Redis 支持多种数据格式,因此各个服务可以根据需要采用键值、图、层次结构、JSON、流、搜索或其他数据模型。

支持高效的遗留迁移和现代化

通过使 Mutualink 能够缓存常用的内容并驱逐不必要的数据(例如,过期的身份验证令牌或有关订阅、文本消息传递和 HTTP 直播服务的老化数据),Redis Enterprise 还确保了公司计算资源的最佳利用。例如,Redis 存储频繁的位置状态更新和 OAuth2 令牌,这些令牌会保持较短的超时时间。当客户端停止报告时,Redis 会自动删除其订阅和存在报告以释放内存。 

通过将 Redis 作为缓存层和主数据存储,Mutualink 可以更快地逐步淘汰其遗留架构,并将其替换为更高效的数据访问。“我们有一个 3-6 个月的窗口,可以将数千名用户迁移到我们新的基于微服务的新系统,”Paul 说。“由于 Redis 和微服务消除了我们旧架构的限制,因此它将在第一年内将我们的部署速度提高 2-3 倍。”

使用 Redis Enterprise 和微服务为架构保驾护航

现在 Mutualink 已为其现代微服务架构奠定了基础,Paul 期待构建更多功能齐全的软件组件。他预计 Redis Enterprise 将继续成为其团队扩展到更多实例、减轻故障影响以及对各个服务执行升级的关键资产。

了解有关 Mutualink 如何充分利用 Redis Enterprise 的更多信息。

加入我们: 在我们的 1 月 22 日网络研讨会中,详细了解 Mutualink 向微服务架构的迁移以及 Redis Enterprise 如何用于解决分布式系统中的几个关键问题。

特色图片来自 Nicholas Jeffries,Unsplash