考虑数据层的可扩展性和可靠性非常重要,因为它消耗大量资源并影响整个应用程序的性能。
Kubernetes 和微服务通常被视为最佳组合,尽管两者之间并无从属关系。您可以在没有 Kubernetes 编排的情况下开发微服务,也可以使用 Kubernetes 来构建不同架构的应用程序。但是,合理使用两者的优势,可以获得强大且广泛运用的软件开发和部署任何应用程序所需的持久数据层。
当架构师开始针对架构模型进行设计时,需要考量多个方面,包括安全性、成本、运营效率以及与其他服务和应用程序的集成。一个非常关键的考量点是数据层的可扩展性和可靠性,因为数据层消耗大量资源,并显著影响整个应用程序的性能,超过任何其他组件。
在很久以前,实时系统属于科幻小说的想象。近年来,公司开始开发昂贵且用途特定的系统,为某些特定工作场景提供实时支持。然而,随着实时数据平台的出现,软件架构师现在可以设计在几毫秒内读写数据库的系统,利用通用组件实现这一功能,这意味着任何应用程序,不论是本地部署还是云端,都可以提供实时查询响应,而无需依赖专用且昂贵的硬件。
这种新功能使您可以为服务加入新的客户体验,成为与其他应用程序区分或取得竞争优势的关键。
一些常见的使用场景包括:
- 个性化。能根据用户行为提供个性化推荐和定制优惠的应用程序,在后疫情时代已成为标准配置,甚至在疫情前的线上零售行业也是如此。
- 决策支持。使用实时数据进行决策的系统,在金融、工业和医疗保健领域执行交易、降低风险和提高患者结果方面非常有价值。
- 监控系统。这些可以是工业控制或网络安全系统,使管理员能够响应变化的信号,以减少停机时间或提高安全性,识别欺诈或异常模式,否则这些都将花费太多时间。
- 实时协作。人们需要快速响应的远程协作环境。疫情期间这种需求凸显,公司无论规模大小都需提供实时会议、文档访问和编辑。
- AI/ML 应用程序。向量数据库和在线特征存储为机器学习模型提供实时数据,包括支持聊天机器人、虚拟助手和文档搜索的大规模语言模型(LLM)。
任何这些实时数据的应用都可以通过洞察提供竞争优势,这些洞察过去需要几天才能取得,分析可以帮助企业做出更好的决策并提高客户结果。每个行业和细分市场都将从实时数据层中受益。
实时平台提供了令人难以置信的机遇,但也带来了与数据层运营和效率相关的一系列新挑战。
效率的含义是什么呢?
可用性?吞吐量?可扩展性?成本?答案很多。如您所见,这是一个具有两个主要组成部分的多维问题:性能和运营化。
性能指的是数据服务的响应速度。第二个维度运营化是指系统的灵活性、响应性和便于管理的程度。两者共同构成高效实时数据层的基础。
在今天快节奏和互联的系统中,用户希望与数字系统的交互能够立即响应。即使轻微的延迟也会导致中断并损害客户体验,进而导致业务损失和负面声誉。这些由延迟导致的延迟对游戏、视频会议、在线交易等许多应用程序至关重要。
用户会放弃他们认为缓慢的应用程序和网站。哪怕几秒钟的延迟也会显著影响用户体验。
您可能会想:"传统数据库与实时平台的影响有什么不同?这与微服务有什么关系?"
很高兴您提出这个问题。
在微服务架构中,有一组小型和独立的服务,通常松散耦合,旨在执行最小的功能集,因此得名"微服务"。这些微服务通过轻量级 API 连接以交换消息、接收和发送请求或回复。这些消息的有效负载是您需要在服务之间移动的数据层。
在使用实时数据平台设计微服务架构时,需要考虑哪些要点?
简单的答案是计划这两个主要方面:
- 性能
- 运营化
想象一下,如果您的应用程序的“认证服务”由于数据库无法处理登录风暴或从远程位置连接的用户而变慢,响应缓慢会损害应用程序的其他部分,消息将排队等待回复。
一些微服务将触发“重试”过程,导致更多流量。当用户无法登录您的服务时,您会流失客户和收入。
在设计微服务架构时,应考虑所有可能影响数据层性能的因素,例如:
- 数据模型。您的应用程序是否需要多种数据表示?字符串、列表或 JSON?
- 数据复制。您是否需要数据的多个副本来提高可用性?
- 活动-活动数据库。如果您有远程用户,是否需要地理分布式数据?
- 可扩展性。您的应用程序和数据层是否准备好应对意外或季节性需求?
通过了解这些要求并围绕它们设计架构,您可以优化实时数据层并构建可扩展和高性能的应用程序。
接下来要考虑的问题是如何运营这个复杂的架构。
分布式应用程序,包括云环境中的应用程序,具有继承的复杂性,这使管理员在管理解决方案不同组件时面临不一致的情况。在这种情况下,Kubernetes 提供了编排层,与微服务架构相结合的管理工具,可以将大型复杂系统分解为更容易管理的更小组件,具有可预测的可扩展性和一致的管理。
考虑部署和管理整个解决方案的同时监控、扩展和排查每个微服务的故障。通常,数据平台提供商提供称为 Kubernetes 操作员的工具。
选择适合数据模型并提供所需复制级别的实时数据平台后,可以使用 Kubernetes 为分布式应用程序提供高可用性和活动-活动地理复制。
研究数据平台的功能。如果它为 Kubernetes 提供 operator,您会感激自己的决定。