如何构建用于实时数据的可扩展平台架构

随着 SaaS 行业的飞速发展,需要动态且适应性强的架构来处理实时数据的涌入。以下是如何构建它们。

译自 How To Build a Scalable Platform Architecture for Real-Time Data,作者 Christina Lin。

软件即服务 (SaaS) 行业呈现出不可阻挡的增长态势,预计 2024 年市场规模将达到 3175.55 亿美元,到 2032 年将几乎增长三倍,达到 12288.7 亿美元。这一增长凸显了对增强型稳健数据策略日益增长的需求。这一趋势是由企业生成的数据量、速度和多样性不断增加以及人工智能的集成所推动的。

然而,这种不断增长的态势带来了几个重要的挑战,例如管理峰值流量、实时从联机事务处理 (OLTP) 过渡到联机分析处理 (OLAP)、确保自助服务和解耦,以及实现云无关性和多区域部署。应对这些挑战需要一个复杂架构框架,该框架可确保高可用性和稳健故障转移机制,同时不影响系统性能。

本文中的参考架构详细介绍了如何构建可扩展、自动化、灵活的数据平台,以支持不断增长的 SaaS 行业。此架构支持处理大规模数据的技术需求,同时还与业务对敏捷性、成本效益和法规遵从性的需求保持一致。

数据密集型 SaaS 服务的技术挑战

随着对服务和数据量需求的不断增长,SaaS 行业出现了几个常见挑战。

处理峰值和突发流量对于有效分配资源以应对可变流量模式至关重要。这需要隔离工作负载,在峰值工作负载时进行扩展,并在非高峰时段减少计算资源,同时防止数据丢失。

实时维护 OLTP 到 OLAP意味着无缝支持 OLTP,它管理着大量快速事务,重点是数据完整性,以及支持快速分析见解的 OLAP 系统。这种双重支持对于支持复杂的分析查询和维持峰值性能至关重要。它还在为机器学习 (ML) 准备数据集方面发挥着关键作用。

启用自助服务和解耦需要通过自助服务功能来增强团队能力,以创建和管理主题和集群,而无需严重依赖中央 IT 团队。这可以加快开发速度,同时允许应用程序和服务解耦并实现独立的可扩展性。

促进云无关性和稳定性可以实现敏捷性,并能够在不同的云环境(如 AWSMicrosoft Azure 或

如何构建 SaaS 友好型架构

为了应对这些挑战,大型 SaaS 公司通常采用一种架构框架,其中包括运行多个集群,这些集群跨越多个区域,由定制开发的控制平面进行管理。控制平面的设计增强了底层基础设施的灵活性,同时简化了连接到它的应用程序的复杂性。

虽然此策略对于高可用性和稳健故障转移机制至关重要,但它也可能变得非常复杂,无法在地域分布的集群中维持统一的性能和数据完整性,更不用说在不影响性能或引入延迟的情况下扩展或缩减资源的挑战了。

此外,某些场景可能需要出于法规遵从性或安全考虑而在特定集群内隔离数据。为了帮助您构建一个稳健、灵活的架构,以避免这些复杂性,我将向您介绍一些建议。

1. 建立稳定基础

SaaS 服务面临的一个主要挑战是分配资源以处理各种流量模式,包括高频和大量在线查询、数据插入和内部数据交换。

将流量转换为异步进程是一种常见的解决方案,它允许更有效地扩展和快速分配计算资源。Apache Kafka 等数据流平台非常适合高效管理海量数据。但管理像 Kafka 这样的分布式数据平台会带来自己的一系列挑战。Kafka 的系统 以其技术复杂性而臭名昭著,因为它需要管理集群协调、同步和扩展,以及额外的安全和恢复协议。 Kafka 中的挑战

Kafka 中的 Java 虚拟机 (JVM) 也可能导致不可预测的延迟高峰,这主要是由于 JVM 的垃圾回收进程。管理 JVM 的内存分配和针对 Kafka 的高吞吐量要求进行调整是出了名的繁琐,并且会影响 Kafka 代理的整体稳定性。

另一个障碍是 Kafka 的数据策略管理。这包括管理数据保留策略、日志压缩和数据删除,同时在某种程度上平衡存储成本、性能和合规性。

简而言之,在 SaaS 环境中有效管理基于 Kafka 的系统很棘手。因此,许多 SaaS 公司正在转向 Kafka 替代方案,这些替代方案提供 高度可扩展的数据流,而无需外部依赖项,如 JVM 或 ZooKeeper。

2. 启用自助流数据

对于允许开发人员从开发到生产创建主题的自助服务解决方案的需求正在增长。基础设施或平台服务应提供具有集中控制的解决方案,提供登录详细信息并自动在各种平台和阶段快速创建和部署资源。

这就提出了对控制平面的需求,控制平面有多种形式。一些控制平面仅用于管理集群或主题的生命周期,并在流平台上分配权限。其他控制平面通过虚拟化目标并向用户和客户端隐藏基础设施详细信息来增加一层抽象。

当主题在自助数据平台的控制平面中注册时,将根据环境的阶段应用不同的计算资源优化策略。在开发中,主题通常与其他进程共享集群,较少强调数据保留,并且大多数数据会在几天内被丢弃。

然而,在生产中,必须根据流量量仔细规划资源分配。此规划包括确定消费者的分区数、设置数据保留策略、决定数据位置以及考虑是否需要针对特定用例使用专用集群。

对于控制平面来说,自动化流平台的生命周期管理流程非常有帮助。这使控制平面能够自主调试代理、监控性能指标,并启动或停止分区重新平衡,以大规模维护平台的可用性和稳定性。

3. 实时支持 OLTP 和 OLAP

从批处理转向实时分析使得将 OLAP 系统集成到现有基础设施中至关重要。但是,这些系统通常处理大量数据,并且需要复杂的数据模型进行深入的多维分析。

OLAP 依赖于多个数据源,并且根据公司的成熟度,通常有一个数据仓库或数据湖来存储数据,以及定期运行(通常在夜间)的批处理管道,以从数据源移动数据。此过程 合并数据 来自各种 OLTP 系统和其他来源——此过程在维护数据质量和一致性方面可能会变得复杂。

如今,OLAP 还将 AI 模型与大型数据集集成在一起。现在,大多数分布式数据处理引擎和流数据库都支持实时消费、聚合、汇总和分析来自 Kafka 或 Redpanda 等来源的流数据。这一趋势导致了实时数据的提取、转换、加载 (ETL) 和提取、加载、转换 (ELT) 管道的兴起,以及从数据库流式传输事件日志的变更数据捕获 (CDC) 管道。

通常在 JavaPythonGolang 中实现的实时管道需要细致的规划。为了优化这些管道的生命周期,SaaS 公司正在将管道生命周期管理嵌入到其控制平面中,以优化监控和资源对齐。

4. 了解(并优化)数据管道生命周期

第一步是选择技术堆栈并确定创建管道的用户享有的自由度和自定义级别。理想情况下,允许他们为不同的任务选择各种技术,并实施护栏来限制管道构建和扩展。

以下是管道生命周期中涉及的阶段的简要概述。

构建和测试

源代码被推送到 Git 存储库,要么直接由管道开发人员推送,要么通过控制平面的自定义工具推送。然后,此代码被编译成二进制代码或可执行程序,使用 C++、Java 或 C# 等语言。编译后,代码被打包到制品中,此过程还可能涉及捆绑授权的依赖项和配置文件。

然后,系统执行自动化测试以验证代码。在测试期间,控制平面专门为此目的创建临时主题,一旦测试完成,这些主题将立即被销毁。

部署

制品被部署到虚拟机(如 Kubernetes)或流数据库,具体取决于技术堆栈。一些平台提供了更具创意的发布策略方法,例如蓝/绿部署,它支持快速回滚并最大程度减少停机时间。另一种策略是金丝雀发布,其中新版本仅应用于一小部分数据,从而减少潜在问题的的影响。

这些策略的缺点是回滚可能具有挑战性,并且很难隔离受新版本影响的数据。有时,执行完整发布并回滚整个数据集会更简单。

扩展

许多平台支持自动扩展,例如根据 CPU 使用情况调整正在运行的实例数量,但自动化级别各不相同。一些平台固有地提供此功能,而另一些平台则需要手动配置,例如为每个作业设置最大并行任务或工作进程数。

在部署期间,控制平面根据预期的需求提供默认设置,但会继续密切监视指标。然后,它会根据需要扩展工作进程、任务或实例的数量,为主题分配额外的资源。

监视

监视管道中正确的指标并保持可观察性是及早发现问题的主要方法。以下是一些关键指标,你应该主动监视这些指标以确保数据处理管道的效率和可靠性。

资源指标

  • CPU 和内存使用对于了解资源如何被消耗至关重要。
  • 磁盘 I/O 对于评估数据存储和检索操作的效率非常重要。

吞吐量和延迟

  • 每秒输入/输出记录测量数据处理速率。
  • 每秒处理的记录表示系统的处理能力。
  • 端到端延迟是从数据输入到输出所花费的总时间,这对于实时处理性能至关重要。

反压和滞后

  • 这些有助于识别数据处理中的瓶颈并防止潜在的减速。

错误率

  • 跟踪错误率有助于维护数据完整性和系统可靠性

5. 提高可靠性、冗余性和弹性

企业优先考虑高可用性、灾难恢复和弹性,以便在中断期间维持持续运营。大多数数据流平台已经内置了强大的防护措施和部署策略,主要是通过将集群扩展到多个分区、数据中心和与云无关的可用性区域。

但是,它涉及权衡取舍,例如增加延迟、潜在的数据重复和更高的成本。以下是在规划高可用性、灾难恢复和弹性时的一些建议。

高可用性

由控制平面管理的自动化部署过程在建立 稳健的高可用性策略 中发挥着关键作用。此策略确保管道、连接器和流平台根据 云供应商 或数据中心在可用性区域或分区中进行战略性分布。

对于数据平台而言,将所有数据管道分布在多个可用性区域 (AZ) 以降低风险至关重要。在不同的 AZ 中运行管道的冗余副本支持连续性,以便在分区故障的情况下维持不间断的数据处理。

数据架构底层的流平台应效仿,自动跨多个 AZ 复制数据以提高弹性。Redpanda 等解决方案可以自动执行跨分区的数据分发,从而提高平台的可靠性和容错能力。

但是,请考虑潜在的关联网络带宽成本,同时考虑应用程序和服务的位置。例如,让管道靠近数据存储可以降低网络延迟和开销,同时降低成本。

灾难恢复

故障恢复速度更快会因数据复制增加而导致成本上升,从而导致更高的带宽开销,并要求始终处于开启状态(主动-主动)设置,使硬件使用量翻倍。并非所有流技术都提供此功能,但 Redpanda 等企业级平台支持将数据和集群元数据备份到云对象存储。

弹性

除了高可用性和灾难恢复之外,一些全球企业需要区域部署策略,以确保其数据存储和处理符合特定的地理法规。相反,希望在不同区域实时共享数据且管理最少化的公司通常会创建一个共享集群,使代理能够跨区域复制和分发数据。

但是,这种方法会导致巨大的网络成本和延迟,因为数据会持续传输到跟随分区。为了减轻数据流量,跟随者获取 指示数据使用者从地理位置最近的跟随分区读取数据。

此外,用于数据回填的扩展集群改进了跨数据中心负载平衡。这种可扩展性对于管理不断增长的数据量和网络流量至关重要,它帮助企业在不牺牲性能或可靠性的情况下进行扩展。

结论

随着公司通过数字化转型,实时数据在指导决策制定中变得越来越关键。这涉及从海量数据集提取更深入的见解,从而实现更精确的预测,简化自动决策制定流程并提供更个性化的服务——所有这些都在优化成本和运营的同时进行。

一种选择是采用参考架构,其中包含可扩展数据流平台,例如 Redpanda,一种用 C++ 实现的即插即用式 Kafka 替代品。它使公司能够通过促进无缝扩展、支持生命周期自动化的 管理 API、分层存储来 降低存储成本远程读取副本 来简化设置具有成本效益的只读集群以及无缝的地理分布来避开实时数据处理的复杂性。

借助合适的技术,SaaS 提供商可以增强其服务,改善客户体验,并在数字市场中提高其竞争优势。未来的策略应继续优化这些系统,以实现更高的效率和适应性,以便 SaaS 平台在数据驱动的世界中蓬勃发展。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注