(随着组织寻求应用程序现代化,许多组织正转向微服务架构,将其遗留应用程序分解为松耦合服务的集合。这一深刻变革促使我们联系处于微服务架构转型不同阶段的 Redis 客户。我们将在未来几周内通过一系列博客文章讲述他们的微服务故事。)
当 Mutualink 寻求对其 互操作响应和准备平台 (IRAPP) 进行现代化改造时,公司的 IT 团队转向了微服务架构,以使数十个技术组件能够无缝协同工作。这很重要,因为 Mutualink 的任务是促进联邦、州、地方机构和私营实体之间的协作,以解决危险事件。
Mutualink 战略产品开发总监 Paul Kurmas 分享了他对微服务模式的理解:“它使我们能够设计只做一件事并且做得很好的组件,其回报是更简单、更快速、更可靠且易于支持的软件。我们的微服务架构最大程度地提高了可用性,并最大限度地缩小了任何软件、系统或通信故障的影响范围,同时也有助于我们扩展,因为我们可以将来自各种客户端或内部服务的工作负载平衡到大量实例上。”
所有这一切都需要一个灵活高效的中央数据存储,它具备卓越的性能、轻松的可扩展性和高可用性。这就是 Mutualink 团队选择 Redis Enterprise 来驱动其微服务架构数据层的原因。
Mutualink 数万用户期望在使用系统跟踪和报告事件期间的位置数据;发送和接收文本、音频或视频消息;共享文件等等时获得即时响应。因此,IRAPP 的延迟必须尽可能低,并且即使客户端需求扩展,架构也必须保持其性能。在任何给定时间,平台可能包含机构之间的数百个活动协作,每个协作都向事件流提供关于谁在线、在哪里以及有哪些新内容可供订阅者获取的数据。
Mutualink 在虚拟机上运行 Redis Enterprise,这些虚拟机存储着超过 32 TB 的数据,包括用户记录和对各种流的订阅。得益于 Redis 跨服务器自动扩展数据的能力,IRAPP 可以随着协作量的增加,通过添加服务器或可用区来动态扩展并保持持续的高性能。这使得 Mutualink 能够以亚毫秒级的延迟处理大量并发数据请求。
从一开始,Mutualink 就致力于实现高可用性,以便平台能够在一软件实例、计算节点甚至整个数据中心丢失的情况下幸存。团队实现这一点的一种方式是通过 Redis Enterprise 的双活(Active-Active)复制,其中数据在多个数据中心之间自动同步以实现地理冗余。“我们专注于即时访问数据,这至关重要。正是这一点让 Redis 成为我们应用程序中央数据存储的吸引人解决方案,”Paul 指出。“Active-Active 功能是我们决定使用 Redis Enterprise 的决定性因素,它为我的团队节省了尝试发明跨数据站点同步模型的许多许多人年的时间。”
Mutualink 的 Redis 数据模型支持近乎实时的最终一致性——例如,如果一个事件触发了公司在其波士顿区域服务器上数据的更改,对触发事件的客户端的响应是即时的,而数据则近乎实时地反映在其达拉斯区域的服务器上。其他客户端可以在最接近的区域订阅 Redis 中的事件。
更进一步看,处理互联网语音协议 (VoIP) 信令的微服务即使在发生软件故障时也必须维护数千个电话连接。Mutualink 将每个呼叫状态从平台导出并存储到多个区域的 Redis 中,从而使平台保持无状态。然后,当该会话中的下一条消息准备就绪时,可以高效地传递到服务的任何实例。得益于 Redis Enterprise 的无冲突复制数据类型 (CRDT),VoIP 服务即使在部分数据中心完全不可用时也能提供不间断的可用性。有了这种弹性,即使一个或多个独立的微服务发生故障,整个应用程序也能继续执行读写操作。
虽然 Mutualink 最初计划只在其微服务架构中将 Redis 用于一个核心组件,但团队很快发现将其他服务接入 Redis 并使用其简单的 API 来维护自己的数据是多么容易。Mutualink 没有让一个服务(他们称之为“世界”)充当平台所有数据的守门人,而是现在拥有 15 到 20 个不同的服务直接使用 Redis Enterprise 来满足各种需求。
Redis 的可扩展性和数据模型多样性帮助 Mutualink 团队避免了供应商蔓延,因为其数据结构可以支持广泛的业务能力。Mutualink 使用 Redis 构建的功能包括:
Redis 帮助每个微服务转换数据,而无需更改后端存储。Mutualink 得益于 Redis 中一个通用但去中心化的数据层,所有服务都可以访问。此外,每个服务都可以根据当前任务使用合适的语言、数据库或其他开发工具。由于 Redis 支持多种数据格式,各个服务可以根据需要采用键值、图、分层、JSON、流、搜索或其他数据模型。
通过让 Mutualink 缓存常用内容并驱逐不必要的数据(例如过期的认证令牌或关于订阅、短信和 HTTP 直播服务的老化数据),Redis Enterprise 还确保了公司计算资源的最佳利用。例如,Redis 存储频繁的位置状态更新和 OAuth2 令牌,这些都有短期超时。当客户端停止报告时,Redis 会自动移除其订阅和在线状态报告以释放内存。
通过将 Redis 用作缓存层和主要数据存储,Mutualink 可以更快地淘汰其遗留架构,并代之以更高效的数据访问。Paul 说:“我们有 3 到 6 个月的窗口期将数千名用户迁移到我们新的基于微服务的系统。由于 Redis 和微服务消除了旧架构的限制,第一年内我们的部署速度将提高 2 到 3 倍。”
既然 Mutualink 已经为其现代微服务架构奠定了基础,Paul 期待构建更多专门用途的软件组件。他预计,随着团队扩展到更多实例、减轻故障影响并对单个服务执行升级,Redis Enterprise 将继续是一项关键资产。
了解更多关于 Mutualink 如何充分利用 Redis Enterprise 的信息。
加入我们: 在我们1 月 22 日的网络研讨会中,了解更多关于 Mutualink 微服务架构之旅以及如何使用 Redis Enterprise 解决分布式系统中的几个关键问题。
特色图片作者:Nicholas Jeffries,来自 Unsplash